Articles of zfsonlinux

为什么ZFS比ext4和btrfs慢得多?

问题 我最近安装了一个新的磁盘并在其上创build了一个zpool: /# zpool create morez /dev/sdb 使用一段时间后,我注意到它很慢: /morez# fio –name rw –rw rw –size 10G read: IOPS=19.6k, BW=76.6MiB/s (80.3MB/s)(5120MiB/66834msec) write: IOPS=19.6k, BW=76.6MiB/s (80.3MB/s)(5120MiB/66834msec) 这个testing与我的实际使用情况非常相似。 我正在从磁盘读取中等数量(〜10k)的图像(每个〜2个MiB)。 当磁盘大部分是空的时候,它们都是一次写入的,所以我不认为它们会被分割。 为了比较,我testing了ext4: /# gdisk /dev/sdb … /# mkfs.ext4 -f /dev/sdb1 && mount /dev/sdb1 /mnt && cd /mnt /mnt# fio –name rw –rw rw –size 10G read: IOPS=48.3k, BW=189MiB/s (198MB/s)(5120MiB/27135msec) […]

Linux上的ZFS(ZoL)和实时复制

我想了解什么是通过10 GbE链接连接的Linux(ZoL)盒子上的两个ZFS之间的实时复制的最佳解决scheme。 目标是将其用于虚拟机; 一次只有一个盒子会运行虚拟机和ZFS文件系统本身。 快照需要在第一个(活动)框中可能。 我打算使用企业/近线级别的SATA磁盘,所以双端口SAS磁盘是没有问题的。 我想在以下可能性: 使用iSCSI导出远程磁盘,并在本地盒子的ZFS磁盘和远程iSCSI磁盘之间build立镜像。 这个解决scheme更大的吸引力在于它的简单性,因为它使用ZFS自己的镜像。 另一方面,ZFS不会优先考虑远程磁盘上的本地磁盘,这可能会导致性能下降(我认为这与10 GbEnetworking几乎没有关系)。 而且,引起更大关注的是,在两个盒子之间的networking链路丢失的情况下,ZFS将如何performance。 当远程机器可用时是否会重新同步arrays,还是需要手动干预? 使用DRBD同步两个ZVOLS并在DRBD设备的顶部放置ZFS 。 换句话说,我正在谈论一个堆叠的ZVOL + DRBD + ZFS解决scheme。 这似乎是我的首选方法,因为DRBD 8.4非常稳定并得到证实。 然而,许多I / O层在这里玩,性能可能会受到影响。 顶部使用普通的ZFS + GlusterFS 。 从ZFS的angular度来看,这是更简单/更好的解决scheme,因为所有的复制stream量都被委托给GlusterFS。 你觉得GlusterFS足够稳定吗? 你觉得更好的方法是什么? 谢谢。

ZFS L2ARC用于镜像池

我正在阅读关于我的ZFS的L2ARC。 我目前有两个池,一个用于数据,另一个用于Linux容器和虚拟机。 我想要一些帮助L2ARC,我知道如何添加它,但不知道是否会使我受益。 我正在运行带有6-8个LXC容器的Ubuntu 16.04,有时候还有一个虚拟机或两个虚拟机,我想知道是否添加L2ARC将有助于我的虚拟机和LXC容器的性能。 当前设置 pool: black state: ONLINE scan: scrub repaired 0 in 3h57m with 0 errors on Mon Jul 11 04:12:35 2016 config: NAME STATE READ WRITE CKSUM black ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ata-WDC_WD10JFCX-68N6GN0_WD-WX91A65P0T3Z ONLINE 0 0 0 ata-WDC_WD10JFCX-68N6GN0_WD-WXA1EA4CSNJF ONLINE 0 0 0 errors: No known data […]

为什么我的ZFS池不能在Linux上使用ZFS扩展?

我有一个内核2.6.32-431.11.2.el6.x86_64 Linux下的ZFS zpool,它有一个单独的vdev。 vdev是SAN设备。 我扩大了SAN的大小,即使重新启动机器,导出/导入池以及使用zpool online -e ,尽pipezpool autoexpand设置为on ,但我无法获取池扩展。 我相信vdev更大,因为fdisk显示它已经从215GiB增加到250 GiB。 以下是我所做的一个示例: [root@timestandstill ~]# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT dfbackup 214G 207G 7.49G 96% 1.00x ONLINE – [root@timestandstill ~]# zpool import -d /dev/disk/by-id/ pool: dfbackup id: 12129781223864362535 state: ONLINE action: The pool can be imported using its name or […]

从zfs-0.6.2-1.el6.x86_64更新到zfs-0.6.3-1.el6.x86_64由zpool所做的不可读

运行# yum update zfs并ZFS on Linux系统ZFS on Linux重新启动我的CentOS 6 ZFS on Linux将无法再看到zpools或与其进行交互。 # zpool status no pools available # zpool import zpool: ../../lib/libzfs/libzfs_import.c:356: Assertion `nvlist_lookup_uint64(zhp->zpool_config, ZPOOL_CONFIG_POOL_GUID, &theguid) == 0' failed. Aborted # dmesg | grep -i spl SPL: Loaded module v0.6.2-1 SPL: using hostid 0x43a4c8a0 这是一个金丝雀系统,所以我不担心它的内容,但我有其他机器,我最终希望安全升级。 我做错了什么,更重要的是我怎样才能为重要的系统做好准备?

使用ZFS头节点作为数据库服务器?

我正在使用基于Nexenta推荐架构的双头ZFS支持的NAS来实现高可用性群集共享存储,如下所示: 1 JBOD中的磁盘将存储单个4 TB Postgres数据库的数据库文件,以及其他JBOD存储20 TB大型原始二进制平面文件(用于大型恒星物体碰撞模拟的聚类结果)中的磁盘。 换句话说,支持Postgres文件的JBOD将主要处理随机工作负载,而支持仿真结果的JBOD将主要处理串行工作负载。 两个头节点都有256 GB的内存和16个内核。 该集群有大约200个核心,每个维护一个Postgres会话,所以我预计大约200个并发会话。 我想知道在我的设置中是否明智地让ZFS头节点同时作为我的群集的一对Postgres数据库服务器? 我能看到的唯一缺点是: 缩小基础设施的灵活性较差。 略低的冗余水平。 Postgres的内存和CPU资源有限。 然而,我看到的好处是,ZFS对于自动故障转移是非常愚蠢的,无需花费大量的工作就可以让每个Postgres数据库服务器找出头节点是否失败,因为它会与头部一起失败节点。

ZFS – Zpool磁盘replace会导致重新启动重启进程永不结束

我用已经在我的游泳池中使用过的typesreplace了一个坏的驱动器一段时间。 我面临的问题是重启过程似乎卡在重启循环中。 每当我检查zpool status我都会看到几秒钟前启动的重启过程。 进度百分比停留在0% 例如 扫描:自2017年4月1日09:13:27以来进展顺利 扫描:自2017年6月1日09:15:10以来进展顺利 扫描:自2017年4月1日09:18:11以来进展顺利 … 我不知道出了什么问题,从来没有遇到过这个问题。 我将不胜感激来自社区的build议。 root@nas:~# dmesg | grep ZFS [5.224533] ZFS: Loaded module v0.7.0-rc4_36_g2d82116e8, ZFS pool version 5000, ZFS filesystem version 5 root@nas:~# uname -a Linux nas 4.9.0-0.bpo.3-amd64 #1 SMP Debian 4.9.25-1~bpo8+1 (2017-05-19) x86_64 GNU/Linux root@nas:~# zpool status [code] pool: naspool state: DEGRADED status: One or more […]

完整性和压力testing

DevOps同事build议我们开始将生产环境转换为使用btrfs。 我们主要使用ext4文件系统,尽pipe一些使用ZFS的低使用率服务器(在Linux上)。 作为决策者之一,作为一个负责我们整体环境的人,我对基于Web上制作网站上的btrfs的评论和文章数量感到犹豫不决。 为了反驳这种说法,Oracle已经发布了支持btrfs的Enterprise Linux,SLES 12( https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12/ )也指出它将使用btrfs,并且有证据像Facebook这样的公司也在受控的生产环境中使用它。 关于为什么朝着这个方向前进(采用btrfs)将是一件好事,我总体上同意他们,但是,我想要谨慎,做尽职调查,并获得更多的操作上的熟悉和在进一步扩大规模之前,在“小生产”或登台环境中login小时。 是否有任何工具可以帮助我构build案例 – 如在压力testing之后进行数据完整性检查或者其他方面的工作? 除了没有看到像这样的语句:“问:btrfs是稳定的吗?简单的回答:不,它仍然被认为是实验性的。 在btrfs维基上我还能做些什么来获得更暖和的模糊?

为什么`zfs list -t snapshot`要比`ls .zfs / snapshot`慢几个数量级呢?

使用所有ZFS-on-Linux版本,我尝试过使用zfs list来列出文件系统或volum的所有快照( zfs list -r -t snapshot -H -o name pool/filesystem )总是需要多个数量级运行时间比ls .zfs/snapshot ,这是直接的: $ time ls -1 /srv/vz/subvol-300-disk-1/.zfs/snapshot [list of 1797 snapshots here] real 0m0.023s user 0m0.008s sys 0m0.014s # time zfs list -r -t snapshot -H -o name vz/subvol-300-disk-1 [same list of 1797 snapshots] real 1m23.092s user 0m0.110s sys 0m0.758s 这个bug是特定于ZFS-on-Linux的吗? 任何有Solaris或FreeBSD ZFS盒子的人都可以执行类似的testing(在一个文件系统上有数百个旋转硬盘快照)? […]

ZFS报告(在FreeBSD和Linux上通过ZoL)

由于长期使用mdadm的用户刚刚遇到磁盘错误,并且记得我为磁盘错误configuration了mdadm的自动邮件报告。 因此,我只需要在/etc/mdadm/mdadm.conf中插入我的邮件地址 MAILADDR [email protected] 但是我真的错过了FreeBSD上的那一个。 而且就像我的ZFS RAID6现在运行了半年以上,我想如果磁盘遇到故障会发生什么? 我从来没有configuration任何外部邮件地址。 有没有简单的方法来完成和testing呢? 像在mdadm上一样: sudo mdadm –monitor –scan –test 而我将如何在Linux上使用ZoL(Linux上的ZFS)呢? 编辑:对不起,我的意思是自动报告。 没有预定。 我知道我可以build立一个脚本并且每分钟parsingzpool状态-X。 但我认为这不是完成报告问题的非常优雅的方法。 最好立即通知磁盘故障(如mdadm) 编辑[2]:感谢您的build议,但没有我卡住了一些脚本问题,有人可以帮我在/ bin / sh我的循环问题在这里 – > PASTEBIN 编辑[3]:得到我的循环问题。 :)(更新在PASTEBIN ) 还有什么更多的build议为我的脚本?