ZFS df

1 minute read

背景

使用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

Flag Counter

digoal’s 大量PostgreSQL文章入口