Articles of ZFS

zfs破坏后恢复数据

在Debian 8.7上我有一个zfs池。 (显然在Linux上使用ZFS,而不是Oracle或Solaris zfs) 需要将ZFS池从2个磁盘上的镜像扩展到4个磁盘上的RAID。 我做了备份(一份数据 – 这是我的第一个错误) 我以为zpool destroy将不会工作,直到我删除所有数据集(卷),所以我做了zfs destroy (这是我的第二个错误)。 之后,我发布了“zpool destroy”,重新分区了所有4个磁盘,发现备份已损坏。 所以我开始了我的恢复冒险:关于ZFS的第一件好事就是它能够导入被破坏的池。 在zpool destroy yourPoolName您可以调用zpool import -D来查看已销毁池的列表。 然后你可以使用zpool import -D yourPoolName来修改它,或者如果你已经销毁了几个同名的池,那么你可以通过由zpool import -D显示的id来导入它。 zpool import -D需要分区在原来的位置。 它必须精确到部门。 我已经使用fdisk创build了具有确切的开始和结束扇区号的分区。 我已经使用cfdisk来设置分区types(因为它更友好:))然后,你应该调用partprobe ,以确保操作系统知道更改分区。 zpool import -D工作就像一个魅力,我有我的池在线健康再次完美!..但由于zfs destroy全部后果 – 所有的数据丢失。 ZFS将事务中的文件和文件系统更改存储到事务组(TXG)中的磁盘上。我的进一步研究表明,我必须回滚最后一个事务组。 有两种方法可以回滚ZFS事务组 : 使用带-T选项的特殊zpool import 使用zfs_revert-0.1.py 首先你需要find最后一个好的TXG。 zpool history -il帮助了我。 根据第一种方法,你应该调用类似于: zpool import -o readonly=on -D […]

将Raid 5装载到Ganeti VM

我运行一个节点Ganeti服务器Supermicro MBD-X10SDV-6C + -TLN4F-O与英特尔至强D-1528和32 GB的RAM我有以下设置: OS Ubuntu 16.04.2 Raid 1中的2X 250GB固态硬盘 – >实例的操作系统和LVM的ext4分区 raid 5中的3X 1TB WD Red安装在/ data – > ext4 1X 2TB WD Red安装在/ Backup – > ext4 现在对于我的NextCloud,我想保持数据与实例磁盘分离,只需将Raid 5设备挂载到NextCloud实例以存储数据,以便随时replaceGaneti Instance,而不会丢失数据。 其他实例(OpenVpn,dnsmaq,Radius等)不需要访问Raid设备,因此我将使用configurationpipe理。 什么是最好的方式来实现这一点,是更好的只是将其挂载为NFS或可能将ext4转换为ZFS和NFS挂载? 有没有其他的方法? 先谢谢了

FreeBSD:如何扩展encryption的ZFS zroot池

我安装了一个vanilla FreeBSD 11.0(amd64)并select了安装选项“ZFS on /(encrypted)”(或者真的叫它)。 现在我有一个很好的ZFS池: root@storage:~ # zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT zroot 5.44T 943M 5.44T – 0% 0% 1.00x ONLINE – root@storage:~ # df -ah Filesystem Size Used Avail Capacity Mounted on zroot/ROOT/default 5.3T 299M 5.3T 0% / devfs 1.0K 1.0K 0B 100% /dev zroot/tmp 5.3T […]

如何将zfs池中的驱动器引用从/ dev / sdX更改为/ dev / disk / by-id(ata-XXXXXX)

在下面的示例中,如何更改第二个镜像中的设备,以便它们引用/dev/disk/by-id而不是/dev/sdX ? user@pc:~$ sudo zpool status pool: storage state: ONLINE scan: scrub repaired 0 in 8h30m with 0 errors on Sun May 28 08:54:48 2017 config: NAME STATE READ WRITE CKSUM storage ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ata-ST2000AS0002-1NA12Z_Z840MHWP ONLINE 0 0 0 ata-ST2000AS0002-1NA12Z_Z840MHTQ ONLINE 0 0 0 mirror-1 ONLINE 0 0 […]

为什么从控制器报告的WWN和Linux系统之间有一个转变?

我正在设置大量磁盘的ZFS存储系统。 我想使用WWN号码来识别设备(别名在vdev_id.conf中),但是当试图获取WWN号码时,我注意到LSI控制器报告的WWN(LSI MegaRAID SAS 9380-8e,所有磁盘都在JBOD模式)和/ dev / disk / by-id中显示的WWN: $ storcli64 /c0/e72/s0 show all | grep 5008472696 WWN = 5000C5008472696C 0 Active 6.0Gb/s 0x5000c5008472696d 1 Active 6.0Gb/s 0x5000c5008472696e $ ll /dev/disk/by-id/wwn-0x* | grep 5008472696 /dev/disk/by-id/wwn-0x5000c5008472696f -> ../../sdn 在这组硬件(磁盘,JBOD,控制器)上,模式似乎是一致的(移位3)。 我有一个'感觉',这是由双重链接造成的,但我无法find一个合适的解释这种行为。 任何build议将不胜感激。 编辑: 另一个样本是 WWN = 5000C50084726B78 0 Active 6.0Gb/s 0x5000c50084726b79 1 Active 6.0Gb/s 0x5000c50084726b7a 控制器报告0x5000c50084726b7b […]

SATA端口倍增器连接的磁盘性能不佳

我在Ubuntu Server 16.04.2上的zfs池中有三个磁盘组成RAID-Z vdev,它们通过廉价的PCIE SATA卡,单个eSATA电缆和另一端的端口倍增器连接。 iostat显示这些磁盘性能非常差,如下所示: 但我正在努力理解为什么。 控制器( Syba SI-PEX40064 )和端口倍增器( 带有SiI3726芯片组的无品牌 )都支持端口倍增和FIS。 如果是单个磁盘故障,我认为只有一个磁盘上的等待时间很慢,而不是所有的三个都通过端口倍增器连接。 这些磁盘是相对新安装在这种configuration(2-3周),这个问题只发生在最后几个小时,尽pipe不断使用池。 我不确定ZFS是如何工作的,我想这是可能的,到现在为止还没有写入这些磁盘? 任何build议什么调查,或潜在的因素,可能导致这将不胜感激! DD速度testing root@server:~# dd if=/dev/sdi of=/dev/null bs=1M count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0.00211904 s, 4.9 GB/s root@server:~# dd if=/dev/sdi of=/dev/null bs=1M count=10 iflag=direct 10+0 records in 10+0 records out 10485760 […]

如何共享一个zfs文件系统,包括通过nfs的子文件系统? 尝试的方法未能共享子文件系统

如何通过nfs共享整个zpool(包括子文件系统)? 使用belowzfs文件系统: NAME USED AVAIL REFER MOUNTPOINT backup 7.22T 6.83T 3.94T /backup backup/compressed 3.28T 6.83T 3.28T /backup/compressed 当使用nfs-kernel-server直接共享backup ,它的内容可以从nfs-clients获得。 不幸的是,'压缩文件夹'( backup/compressed )显示,但它的内容不。 如果使用sudo zfs set sharenfs=on backup/compressed或nfs-kernel-server sudo zfs set sharenfs=on backup/compressed共享sudo zfs set sharenfs=on backup/compressed ,则该文件夹仍然无法访问。 我已经确认这两个文件系统已被共享: showmount -e Export list for node1: /backup/compressed * /backup * 如何使用nfs共享zfs文件系统及其子文件系统? 更新: cat /proc/fs/nfsd/exports返回: # Version 1.1 […]

Solaris 11池的增长没有任何明显的原因

我的一个zfs池正在变得非常大: NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT zonepool01 556G 535G 21.2G 96% 1.00x ONLINE – df -h显示该池中最大的挂载点在目录中有6个文件,所以文件不是问题。 我寻找旧的快照: zfs list -t snapshot -o name -S creation | grep 2015 | grep zonepool01 zonepool01/server06/rpool/ROOT/solaris-3@2015-09-24-03:10:49 zonepool01/server06/rpool/ROOT/solaris-3/var@2015-09-24-03:10:49 zonepool01/server05/rpool/ROOT/solaris-3@2015-09-24-03:10:45 […] zonepool01/server28/rpool/ROOT/solaris-3@2015-08-12-17:02:10 zonepool01/server27/rpool/ROOT/solaris-0/var@2015-08-12-16:55:37 zonepool01/server27/rpool/ROOT/solaris-3@2015-08-12-16:55:37 上一次我试图删除快照,我搞砸了我的启动和系统。 为了防止这个,我需要知道: 我怎么知道什么是旧的和过时的? 我怎么知道什么是不被其他捕捉引用? 如何停止此自动捕捉function?

FreeBSD 10无法启动ZFS池 – “未知文件系统”

我有一个FreeBSD 10.3服务器,我突然无法重启。 服务器已经运行良好超过6个月,但大约5个月前没有重新启动,直到现在。 我最终在“mountroot”与unknown file system错误。 当我启动进入“Rescue”(服务器位于Hetzner.de并且还有KVM)时,我可以使用以下命令装载整个池: zpool import -o altroot=/mnt zroot 。 看来泳池很好。 以下所有命令都是在zpool导入后从Rescue运行的: [root@rescue /mnt]# cat /mnt/boot/loader.conf kern.geom.label.gptid.enable="0" zfs_load="YES" vfs.root.mountfrom="zfs:zroot/ROOT/default" [root@rescue /mnt/boot]# mount zroot/ROOT/default on /mnt (zfs, local, noatime, nfsv4acls) zroot/tmp on /mnt/tmp (zfs, local, noatime, nosuid, nfsv4acls) zroot/usr/home on /mnt/usr/home (zfs, local, noatime, nfsv4acls) zroot/usr/ports on /mnt/usr/ports (zfs, local, noatime, nosuid, nfsv4acls) […]

zfs通过一个sctp连接发送

我正在build立一个文件服务器与zfs发送(使用zrep)同步数据到奴隶。 这个想法是,我可以手动故障转移到奴隶,如果需要的话。 服务器有多个networking接口,三个被configuration为两个服务器之间的私有连接,使用专用的vlan,可能通过不同的交换机路由,但我不确定(他们位于单独的build筑物和networking不属于我的责任)。 聚合这些接口似乎是有意义的,并通过聚合接口发送zfs发送stream。 但是,我不能控制交换机,所以不能configurationLACP或其他任何需要的东西。 Solaris链接汇聚是否需要在三个接口之间正确平衡数据? 据推测IPMP不会帮助很多,因为只有传出的数据分布在三个接口上,从站上的传入数据将不得不在一个接口上进行,对吧? 另一种select可能是使用SCTP连接,利用多宿主在三个链路上传播数据。 有没有人试过这个? 有一个现有的程序来创build这样的连接? socat和ncat似乎能够build立sctp连接,但从他们的manpages是否可以build立多宿主连接还不清楚。 最后,有没有人尝试configuration用于zfs发送/接收的networking接口的巨型数据包? 我倾向于认为它会提高吞吐量,但会呢? 或者,由于延长的延迟,这是一个坏主意?