ZFS df
背景
使用zfs的话, df输出的数据Size那列是会变的, 指当前dataset的空间占用加上整个pool的剩余空间. 所以使用比率也是动态变化的. 如果nagios使用了类似以下监控, 也不会存在问题. (例如你可能担心每个dataset如果使用均衡, 使用比率 dataset_size/zpool_size 永远达不到100%的情况, 那么nagios监控将不能达到目的.)
command[check_hda3]=/usr/local/nagios/libexec/check_disk -w 50% -c 10% -p /data01
command[check_hda3.1]=/usr/local/nagios/libexec/check_disk -w 50% -c 10% -p /data01
command[check_hda4]=/usr/local/nagios/libexec/check_disk -w 50% -c 10% -p /data02
command[check_hda4.1]=/usr/local/nagios/libexec/check_disk -w 50% -c 10% -p /data02
例如 :
[root@db-172-16-3-150 ssd4]# zpool create zp1 /ssd4/zfs.log1 /ssd4/zfs.log2
[root@db-172-16-3-150 ssd4]# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
zp1 15.9G 92.5K 15.9G 0% 1.00x ONLINE -
[root@db-172-16-3-150 ssd4]# zfs create -o mountpoint=/data01 zp1/data01
[root@db-172-16-3-150 ssd4]# zfs create -o mountpoint=/data02 zp1/data02
当前可用容量都是16G
[root@db-172-16-3-150 ssd4]# df -h
Filesystem Size Used Avail Use% Mounted on
zp1/data01 16G 0 16G 0% /data01
zp1/data02 16G 0 16G 0% /data02
[root@db-172-16-3-150 data01]# dd if=/dev/zero of=./test bs=4096k count=2048
2048+0 records in
2048+0 records out
8589934592 bytes (8.6 GB) copied, 24.4038 s, 352 MB/s
往/data01写入8G数据后, 注意两个目录的可用容量发生了变化, 其实就是当前DS占用空间加ZPOOL的剩余可用空间.
[root@db-172-16-3-150 data01]# df -h
Filesystem Size Used Avail Use% Mounted on
zp1/data01 16G 7.8G 7.9G 50% /data01
zp1/data02 7.9G 0 7.9G 0% /data02
[root@db-172-16-3-150 data01]# cd /data02
[root@db-172-16-3-150 data02]# dd if=/dev/zero of=./test bs=4096k count=1024
1024+0 records in
1024+0 records out
4294967296 bytes (4.3 GB) copied, 15.4017 s, 279 MB/s
往/data02写入数据后, Size又发生了变化, 其实就是当前DS占用空间加ZPOOL的剩余可用空间.
Filesystem Size Used Avail Use% Mounted on
zp1/data01 12G 8.1G 3.8G 69% /data01
zp1/data02 7.7G 4.0G 3.8G 52% /data02
参考
1. man zfs