让我们想象一下情况: 有一个大数据文件和默认logging大小(128kb)。 问题: 1)如果我从该文件读取一个字节,zfs会做什么? 它会读整个logging(128kb)并给我请求的字节? 如果打开压缩,zfs是否会改变它的行为? 2)如果我重写该文件中的一个字节,zfs会做什么? 或者,例如,在该文件的中间添加一个字节? 它会创造全新的logging(128kb)? 如果打开压缩,zfs是否会改变它的行为? 谢谢。 Ps我尝试了解zfs如何与RDBMS(postgresql) Ps我使用zfsonlinux( https://github.com/zfsonlinux/zfs )
我按照Edmund White的精彩描述设置了一个HA-ZFS集群(请参阅https://github.com/ewwhite/zfs-ha/wiki )。 有两个不同RAID级别的ZFS池(实际上是一个RAIDZ3和一个镜像)。 相应池中的设备使用fence_scsi进行防护,并且想法是,在正常操作下,每个节点导出一个池,而在错误情况下,一个节点导出两个池。 将一个节点放入维护之后,所有资源成功地重新定位到另一个节点,并在维护完成后手动触发pcs resource relocate run group-scratch的重定位( pcs resource relocate run group-scratch ),将其移回其原始节点。 现在pcs status如下所示: Cluster name: zfs-cluster Stack: corosync Current DC: pgsbfiler03 (version 1.1.16-12.el7_4.2-94ff4df) – partition with quorum Last updated: Tue Nov 14 16:21:49 2017 Last change: Tue Nov 14 15:58:48 2017 by root via cibadmin on pgsbfiler03 2 nodes configured […]
自从我们的客户从Ubuntu 12.04升级到Ubuntu 14.04后,我们遇到了麻烦。 行为: 在客户端AI上更改nfs共享上的现有文件foo。 在客户端BI上做一个猫富。 第一次安装后,它的工作。 猫显示foo的内容。 但是,如果我再次更改客户端A上的foo,并在BI上执行cat获取错误:cat:foo:No such file or directory 对B做一个ls解决这个问题, cat foo再次显示新的内容。 但是,如果我再次更改客户端A上的foo,客户端B上的猫将无法工作。 分析: 如果B上的程序首先调用“stat”,则一切正常。 但是如果像猫这样的程序直接使用系统调用打开它不会find文件! 使用tcpdump和wireshark,我可以看到Ubuntu 12.04使用正确的(更新后的)文件句柄在“PUTFH”下的NFS分区中调用,但是在14.04中,文件句柄是错误的(等同于在系统A上更改之前的旧文件句柄)。 现在非常有趣的部分:如果我在服务器站点上的nfs共享驻留在ext4文件系统上,并通过/ etc / exports共享,则nfs服务器将返回错误代码NFS4ERR_STALE。 客户端(B)会用正确的文件句柄做第二个请求,一切工作正常。 甚至在14.04。 如果服务器站点上的nfs共享驻留在ZFS文件系统(ZoL 0.6.4.1,CentOS 7和Ubuntu 14.04)上,并通过sharefs选项或/ etx / exports共享,则nfs服务器将回答错误代码NFS4ERR_NOENT。 客户端将失败。 问题:1.如何获得较新的客户端(14.04+),像在12.04上一样正确地更新文件句柄2.(或者)如何让服务器在ZFS文件系统上使用NFS4ERR_STALE进行回答? 或者,服务器应该如何按照规范来回答? 问候Joerg
我有一台基于Debian GNU / Linux 7(wheezy)的运行OpenMediaVault 2.1.18(Stone刻录机)的HP Microserver。 前几天,我需要从一个USB驱动器复制大量的文件,用NTFS格式化。 我连接它,装上它,开始复制,然后完成。 一天之后,我发现它几乎没有复制任何东西,而且我的NAS性能也一塌糊涂。 调查发现,页面缓冲区和缓冲区caching现在占用了超过3/4的系统内存(一起使用的时间通常less于10%),ZFS ARC现在被挤压到剩余的内存中(小于正常大小的1/4 )。 当我意识到出了什么问题的时候,我停止了拷贝,卸载并拔掉了驱动器,很快caching恢复到了正常的大小,然后ARC开始恢复到正常的水平。 所以,如果将来需要做更多的直接复制,我该如何防止挂载ntfs驱动器,导致大量的内存消耗,使得我所需要的内存不足ZFS ARC? 注意:正如shodanshok所 build议的 ,我尝试运行echo 3 > /proc/sys/vm/drop_caches (根据man 5 proc “free pagecache,dentries and inodes”),但是这也冲刷了我的ARC(除了需要caching的内存L2ARC标题)。 因此,我的系统有很多可用的内存,但是由于事情只能在ARC或L2ARC中caching,所以我的系统花了很多时间来驱动硬盘来重新填充ARC,而不是一个理想的状态。 在这张图片中,你可以看到5号开始时的ZFS饥饿,当我开始我的NTFS拷贝时,在6号早期卸载NTFS驱动器时,事情恢复正常,最后ARC被清除(并重build)在7日下午使用drop_caches。
我写了一个小脚本来处理我的zfs备份。 当我手工运行它,它运作良好: /root/bin/zfs-backup -k 7 -p zfs-auto-snap_daily -r vm/containers tank/backups 但是像这样在cron中运行它会抛出一个错误“文件系统”vm / containers“不存在”。 30 0 * * * root /root/bin/zfs-backup -k 7 -p zfs-auto-snap_daily -r vm/containers tank/backups
使用以下zfs-auto-snapshot命令,如何指定保存52个每周快照和无限数量的每月快照? sudo zfs set com.sun:auto-snapshot=true storage sudo zfs set com.sun:auto-snapshot:weekly=true storage sudo zfs set com.sun:auto-snapshot:monthly=true storage 当我将它指定为关键字或参数时,它都失败了: sudo zfs set com.sun:auto-snapshot:weekly=true storage keep=52 cannot open 'keep=52': invalid dataset name sudo zfs set com.sun:auto-snapshot:weekly=true storage –keep=52 cannot open '–keep=52': invalid dataset name
我无法设置池的安装点。 # zpool import pool: wd-black id: 18120690490361195109 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: wd-black ONLINE crypted-wd ONLINE 游泳池通常是可见的,我可以将它导入一些direcotory。 但是我不能设置也不能获得挂载点: # zfs set mountpoint=/ wd-black cannot open 'wd-black': dataset does not exist 你能说我为什么有这个问题吗? 先谢谢你。
我正在使用Ubuntu Xenial,zfs和PostgreSQL 9.5以及所有可用的atm更新。 所有的testing都在EC2 m4.xlarge(8GB RAM)和表格大小〜4GB上完成。 PostgreSQL effective_cache_size = 6GB。 第一个版本:primarycache =元数据,arc_max_size = 1GB(testing4和6GB),arc_size =〜160mb,但Ubuntu不使用buff / cache进行顺序扫描(free -m表示buff / cache = 200MB,不增长)而是每次执行查询时从磁盘读取数据。 所以查询非常缓慢。 第二种情况:primarycache = all,arc_max_size = 4GB。 顺序读取被caching,但是无论何时更改数据库(Postgres从主服务器接收到更新),caching都将变为无效(我看到Postgres从磁盘读取数据)。 我做错了什么? PS cat /etc/modprobe.d/zfs.conf options zfs zfs_prefetch_disable=1 options zfs zfs_nocacheflush=1 options zfs zfs_arc_max=7073741824
zfs-auto-snapshot已安装,并已应用以下设置: # zfs get all backup NAME PROPERTY VALUE SOURCE backup com.sun:auto-snapshot true local backup com.sun:auto-snapshot:monthly true local backup com.sun:auto-snapshot:weekly true local backup com.sun:auto-snapshot:hourly true local backup com.sun:auto-snapshot:frequent true local backup com.sun:auto-snapshot:daily true local 已经安装了半个星期,并且在检查快照时,只有四个最常见的快照存在: # zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT backup@zfs-auto-snap_frequent-2017-06-17-0645 3.06M – 123G – backup@zfs-auto-snap_frequent-2017-06-17-0700 1.57M – 123G – […]
我们运行的群集大约有50个映射为Linux组的用户组。 每个组都有一个从通过NFS导出的ZFS存储服务器分配的文件系统。 这会导致需要通过NFS客户机节点挂载的很长的挂载点列表。 同样, df -h的输出也很长,列出了每个用户组的所有挂载点。 有没有办法通过某种方式来重build或重新configurationZFS服务器,同时仍然有效地pipe理用户组,例如配额,访问权限等。 以下是zfs list命令的部分输出: ~]# zfs list NAME USED AVAIL REFER MOUNTPOINT intp1 43.7G 47.9T 219K /zfs/1 intp1/sam 43.7G 47.9T 219K /zfs/1/sam intp1/harry 219K 4.00T 219K /zfs/1/harry intp1/rick 219K 4.00T 219K /zfs/1/rick intp1/kim 43.7G 3.96T 43.7G /zfs/1/kim intp2 252G 47.7T 252G /zfs/2 intp2/johnson 219K 8.00T 219K /zfs/2/johnson intp2/hoekstra 219K 8.00T […]