Articles of zfsonlinux

为什么ZFS ARC的命中率高于实际performance?

我们ZFS on Linux安装了带有ZFS on Linux Debian Wheezy主机。它仅用于通过http提供大型文件。 用户活动主要以大量随机阅读为特征。 我们已经注意到~95% ARC命中率给我们提供了~80 MByte/s hdd的读取活动,整体~160 MByte/s服务器输出。 我已经检查过ARC并且L2 prefetch选项被禁用。 Linux预读这个数组默认设置为512 ,改变这个值不会产生任何明显的影响。 这种差异的原因是什么,有什么办法来获得真正的ARC使用适当的统计数据?

如何在不同的主机上导入损坏的zpool镜像的子项?

我有一个硬盘,它曾经属于Ubuntu 12.04服务器上的一个3磁盘ZFS镜像池,名为d510 。 磁盘已正确分离,但其文件系统tank0未导出。 现在我想通过将其安装在不同的Xubuntu 14.04桌面系统上,从这个磁盘上恢复一些文件。 在这个桌面系统上,磁盘被看作是: $ ls /dev/disk/by-id/ … ata-WDC_WD10EADS-00M2B0_WD-WCAV51264701 ata-WDC_WD10EADS-00M2B0_WD-WCAV51264701-part1 ata-WDC_WD10EADS-00M2B0_WD-WCAV51264701-part9 … 由于part9非常小,因此数据看起来完全在part1分区上。 但是, zdb命令显示此特定磁盘分区曾经是child 2,并在Ubuntu 12.04服务器上以不同方式调用,即scsi-SATA_WDC_WD10EADS-00_WD-WCAV51264701-part1 。 $ sudo zdb -l /dev/disk/by-id/ata-WDC_WD10EADS-00M2B0_WD-WCAV51264701-part1 ——————————————– LABEL 0 ——————————————– version: 5000 name: 'tank0' state: 0 txg: 0 pool_guid: 8764435549195071605 hostname: 'd510' top_guid: 4212287141343472152 guid: 10584802241354722513 vdev_children: 1 vdev_tree: type: 'mirror' id: 0 guid: 4212287141343472152 […]

如何在Ubuntu服务器上升级并保留我的ZFS池?

我有一台运行4年的Ubuntu 12.04 LTS的服务器 ,在机器上安装了zfsonlinux , 并且安装了1.5TB的镜像驱动器。 Ubuntu 16.04 LTS没有升级path,所以我将不得不重新映像启动驱动器,但它具有原生支持ZFS。 升级过程中需要做些什么来确保升级后的机器仍然可以访问这些池?

放大图像后ZFS问题

我使用下面的命令创build了一个新的img: truncate -s 250G disk.img 我使用(lxd.img为2G)replace了我用于zpool的现有映像: zpool replace lxd lxd.img disk.img 我将autoexpand设置为打开 sudo zpool set autoexpand=on lxd 但是尺寸仍然是2GB,我有一个EXPANDSZ属性,指出新图像的大小。 NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT lxd 1.98G 1.82G 170M 248G 69% 91% 1.00x ONLINE – 我怎样才能解决这个问题?

/ root和user目录下setuid和setgid的最佳实践

ZFS允许创buildclosuressetuid的数据集,其中(AFAIK)意味着setuid位不能在这些数据集中存储的文件上设置。 现在假设有两个数据集,一个用于/root ,一个用于/home目录。 在这两个数据集的任何一个上放置setuid是否有意义? 我的理解是,不,因为: 当然,root可以用root权限执行任何二进制文件。 所以,setuid在/root似乎没有提供太多。 但是,如果一个文件由另一个用户拥有,并且设置了setuid标志,那么当root执行该文件时,它将被执行,就像该用户所拥有的一样,而不是root。 因此,在/home存储/安装的二进制文件中设置setuid可能从根的angular度来看是有意义的,但是用户是否会感到困扰呢? 还有更好的技术来执行二进制作为另一个用户,无论如何可以使用root。 在用户的home文件夹中setuid的唯一用法我可以想象的是,如果该用户必须能够执行具有root权限的二进制文件,而该权限不能被系统范围安装并且访问权限将被限制,例如在一个文件夹不能被其他用户浏览。 但似乎有点牵强。

Linux上的ZFS:如何正确configurationvdev_id.conf文件并触发vdev别名?

我一直在试图让Linux上的ZFS读取/处理vdev_id.conf文件并给我一个/ dev / disk / by-vdev目录,但是没有用。 我有一个SAS HBA与多个硬盘驱动器的冗余连接。 我已经阅读了文档,但是我不太清楚要在PCI_ID列中放置什么。 我已经把所有的东西都默认出来了,而且我甚至没有看到目录“by-vdev”。 我运行命令“udevadm触发器”,但我得到错误或输出,只是一个回报。 这是我的文件: multipath yes # PCI_SLOT HBA PORT CHANNEL NAME channel 85:00.0 1 A channel 85:00.0 0 B channel 86:00.0 1 A channel 86:00.0 0 B 我启用了multipathd,使用“mpathconf –enable”命令删除了blacklist-all指令,并在/ dev / mapper中获得了mpath设备。 不知道从哪里去填充by-vdev目录。 OS是内核4.8的CentOS 7.3 感谢您的帮助!

在重新启动后在centos上找不到zfs模块

在我重新启动CentOS服务器之后,ZFS不起作用: $ sudo zfs list The ZFS modules are not loaded. Try running '/sbin/modprobe zfs' as root to load them. $ sudo modprobe zfs modprobe: FATAL: Module zfs not found. 我的操作系统版本是CentOS Linux release 7.2.1511 (Core)和uname -r打印3.10.0-327.18.2.el7.x86_64 。 我注意到一些软件包似乎在机器启动时自动更新 – 我在/var/log/yum.logfind以下条目: Feb 28 10:11:17 Updated: epel-release-7-9.noarch Feb 28 10:11:29 Updated: openblas-openmp64-0.2.19-4.el7.x86_64 Feb 28 10:11:30 Updated: openblas-threads64_-0.2.19-4.el7.x86_64 […]

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 […]

如何将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 […]

如何共享一个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 […]