刚开始使用 ZFS 时,对 ZFS 文件系统的使用率比较疑惑, 发现初始时每个已 mount 的 zfs 文件系统的 Size( df -Th
输出 ) 都一样.
zfs 对文件系统的处理有所不同, 每个数据集(dataset)都能使用整个池子的空间. 每个 dataset 的可使用最大值为所在池子剩余空间大小, 这和 LVM 的理念不同, 下面通过实验测试下:
1 创建文件
1 2
dd if =/dev/zero of =/tmp/file1 bs =1G count =1 dd if =/dev/zero of =/tmp/file2 bs =1G count =1
备注: 预先分配大小的文件也可用来创建 ZFS, 但不推荐使用, 这里仅用来做测试.
2 创建 zpool
1 2 3 4 5 6 7 8 9 10 11 12
root@francs:~ # zpool create zp1 /tmp/file1 /tmp/file2 root@francs:/data1 # zpool status zp1 pool: zp1 state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM zp1 ONLINE 0 0 0 /tmp/ file1 ONLINE 0 0 0 /tmp/ file2 ONLINE 0 0 0
备注:创建一个大小为 2.0 GB 的池子.
3 创建四个 dataset
1 2 3 4
root@francs :~ root@francs :~ root@francs :~ root@francs :~
4 查看文件系统
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
root@francs: ~ Filesystem Type Size Used Avail Capacity Mounted on zroot/ROOT/defaultzfs 16 G 3.4 G 12 G 22 % / devfs devfs 1.0K 1.0K 0B 100% /dev zroot/tmp zfs 12 G 704 K 12 G 0 % /tmp zroot/usr /home zfs 12G 156K 12G 0% /usr /home zroot/usr /ports zfs 13G 874M 12G 7% /usr /ports zroot/usr /src zfs 13G 545M 12G 4% /usr /src zroot/varzfs 13 G 636 M 12 G 5 % /var zroot/var /crash zfs 12G 148K 12G 0% /var /crash zroot/var /log zfs 12G 384K 12G 0% /var /log zroot/var /mail zfs 12G 152K 12G 0% /var /mail zroot/var /tmp zfs 12G 152K 12G 0% /var /tmp zp1 zfs 2.0G 31K 2.0G 0% /zp 1 zp1/data1 zfs 2.0 G 31 K 2.0 G 0 % /data1 zp1/data 2 zfs 2.0 G 31 K 2.0 G 0 % /data2 zp1/data 3 zfs 2.0 G 31 K 2.0 G 0 % /data3 zp1/data 4 zfs 2.0 G 31 K 2.0 G 0 % /data4
备注: 可以看到 /data1 ,/data2, /data3,/data4 四个已 mount 的目录. 每个目录的 Size 都为 2.0 GB.
5 向 /data1 目录写入数据
1 2 3 4
root@francs:/data1 # dd if =/dev/zero of =/data1/file_test.img bs =100M count =3 3+0 records in 3+0 records out 314572800 bytes transferred in 37.706116 secs (8342753 bytes/sec)
备注: 在 /data1 目录里写入一个 300 MB 的文件.
6 再次查看文件系统使用率
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
root@francs: /data1 Filesystem Type Size Used Avail Capacity Mounted on zroot/ROOT/defaultzfs 16 G 3.4 G 12 G 22 % / devfs devfs 1.0K 1.0K 0B 100% /dev zroot/tmp zfs 12 G 2.1 M 12 G 0 % /tmp zroot/usr /home zfs 12G 156K 12G 0% /usr /home zroot/usr /ports zfs 13G 874M 12G 7% /usr /ports zroot/usr /src zfs 13G 545M 12G 4% /usr /src zroot/varzfs 13 G 636 M 12 G 5 % /var zroot/var /crash zfs 12G 148K 12G 0% /var /crash zroot/var /log zfs 12G 384K 12G 0% /var /log zroot/var /mail zfs 12G 152K 12G 0% /var /mail zroot/var /tmp zfs 12G 152K 12G 0% /var /tmp zp1 zfs 1.7G 31K 1.7G 0% /zp 1 zp1/data1 zfs 2.0 G 300 M 1.7 G 15 % /data1 zp1/data 2 zfs 1.7 G 31 K 1.7 G 0 % /data2 zp1/data 3 zfs 1.7 G 31 K 1.7 G 0 % /data3 zp1/data 4 zfs 1.7 G 31 K 1.7 G 0 % /data4
备注:发现 /data2,/data3,/data4 目录的 SIze 都降为 1.7GB , 说明 zfs 文件目录的最大使用 Size 是会变化的, 每一个 zfs 目录都可以使用整个池子的容量.
7 接着往 /data2 目录写入一个 200M 的文件
1 2 3 4
root@francs:/data1 # dd if =/dev/zero of =/data2/file_test.img bs =100M count =2 2+0 records in 2+0 records out 209715200 bytes transferred in 19.487790 secs (10761364 bytes/sec)
8 再次查看文件系统使用率
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
root@francs: /data1 Filesystem Type Size Used Avail Capacity Mounted on zroot/ROOT/defaultzfs 16 G 3.4 G 12 G 22 % / devfs devfs 1.0K 1.0K 0B 100% /dev zroot/tmp zfs 12 G 2.8 M 12 G 0 % /tmp zroot/usr /home zfs 12G 156K 12G 0% /usr /home zroot/usr /ports zfs 13G 874M 12G 7% /usr /ports zroot/usr /src zfs 13G 545M 12G 4% /usr /src zroot/varzfs 13 G 636 M 12 G 5 % /var zroot/var /crash zfs 12G 148K 12G 0% /var /crash zroot/var /log zfs 12G 384K 12G 0% /var /log zroot/var /mail zfs 12G 152K 12G 0% /var /mail zroot/var /tmp zfs 12G 152K 12G 0% /var /tmp zp1 zfs 1.5G 31K 1.5G 0% /zp 1 zp1/data1 zfs 1.8 G 300 M 1.5 G 17 % /data1 zp1/data 2 zfs 1.7 G 200 M 1.5 G 12 % /data2 zp1/data 3 zfs 1.5 G 31 K 1.5 G 0 % /data3 zp1/data 4 zfs 1.5 G 31 K 1.5 G 0 % /data4
备注: 这时就比较清楚了. 池子好比是公共资源, 同一个池子的每一个目录都能使用这些资源, 先用先得。
9 查看 ZFS 空间使用
1 2 3 4 5 6 7 8
root@francs:~ capacity operations bandwidth pool alloc free read write read write ------------ ----- ----- ----- ----- ----- ----- zp1 501M 1.50G 0 2 21 94.8K /tmp/file1 251M 765M 0 1 10 47.5K /tmp/file2 250M 766M 0 1 11 47.3K ------------ ----- ----- ----- ----- ----- -----
备注: 数据均匀地写入到了文件 /tmp/file1 和 /tmp/file2。
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/database/238632.html