Linux

看不到 ZFS 數據集上的正確空間和已用空間

  • November 4, 2020

我已經用 debian buster 和 ZFS 建立了一個 vm。最初機器從第一個硬碟驅動器啟動,但添加了 x4 20Gb hd 並將系統轉移到 zfs 以進行測試。

它有效,所以我添加了一些數據集來看看它是如何增長的。但是在查詢已用/可用空間時,它不會顯示實數。好像什麼都沒發生。也測試達到配額,結果是一樣的,

我做錯了什麼?

謝謝。

磁碟佈局

root@debzfs:~# fdisk -l | grep sd | sort
/dev/sda1      2048 40892415 40890368 19.5G Solaris /usr & Apple ZFS
/dev/sda9  40892416 41943006  1050591  513M BIOS boot
/dev/sdb1      2048 40892415 40890368 19.5G Solaris /usr & Apple ZFS
/dev/sdb9  40892416 41943006  1050591  513M BIOS boot
/dev/sdc1      2048 40892415 40890368 19.5G Solaris /usr & Apple ZFS
/dev/sdc9  40892416 41943006  1050591  513M BIOS boot
/dev/sdd1      2048 40892415 40890368 19.5G Solaris /usr & Apple ZFS
/dev/sdd9  40892416 41943006  1050591  513M BIOS boot
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdd: 20 GiB, 21474836480 bytes, 41943040 sectors

根池和數據集(已複製原始系統的位置)

zpool create -d -o feature@async_destroy=enabled -o feature@empty_bpobj=enabled -o feature@lz4_compress=enabled -o ashift=12 -O compression=lz4 rpool raidz2 /dev/sd[a-d]1 -f
zfs create rpool/root
zfs set quota=10gb rpool/root

# The new datasets
zfs create rpool/smalldb
zfs set quota=5gb rpool/smalldb
zfs create rpool/greatdb
zfs set quota=20gb rpool/greatdb

創建數據集後的目前磁碟佈局

root@debzfs:~# zpool status
 pool: rpool
state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
       still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
       the pool may no longer be accessible by software that does not support
       the features. See zpool-features(5) for details.
 scan: none requested
config:

       NAME        STATE     READ WRITE CKSUM
       rpool       ONLINE       0     0     0
         raidz2-0  ONLINE       0     0     0
           sda1    ONLINE       0     0     0
           sdb1    ONLINE       0     0     0
           sdc1    ONLINE       0     0     0
           sdd1    ONLINE       0     0     0

errors: No known data errors

root@debzfs:~# zpool list
NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
rpool  77.5G  3.04G  74.5G         -      -     3%  1.00x  ONLINE  -
root@debzfs:~# zfs list
NAME            USED  AVAIL  REFER  MOUNTPOINT
rpool          1.47G  34.9G   244K  /rpool
rpool/greatdb   198K  20.0G   198K  /rpool/greatdb
rpool/root     1.47G  8.53G  1.47G  /
rpool/smalldb   198K  5.00G   198K  /rpool/smalldb

測試命令和輸出(錯誤)。預期的目前大小和可用空間。但似乎什麼也沒發生。

truncate -s 2G /rpool/smalldb/smalldb.log
truncate -s 8G /rpool/smalldb/limitdb.log      #what ? if ls the file is there !!
truncate -s 10G /rpool/greatdb/greatdb.log

root@debzfs:~# zpool list
NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
rpool  77.5G  3.03G  74.5G         -      -     3%  1.00x  ONLINE  -

root@debzfs:~# zfs list
NAME            USED  AVAIL  REFER  MOUNTPOINT
rpool          1.47G  34.9G   244K  /rpool
rpool/greatdb   209K  20.0G   209K  /rpool/greatdb
rpool/root     1.47G  8.53G  1.47G  /
rpool/smalldb   209K  5.00G   209K  /rpool/smalldb

root@debzfs:~# ls -lh /rpool/smalldb/ /rpool/greatdb/
/rpool/greatdb/:
total 512
-rw-r--r-- 1 root root 10G Nov  4 00:11 greatdb.log

/rpool/smalldb/:
total 1.0K
-rw-r--r-- 1 root root 8.0G Nov  4 00:14 limitdb.log
-rw-r--r-- 1 root root 2.0G Nov  4 00:09 smalldb.log
root@debzfs:~#

不要使用截斷。這將創建一個充滿空字節的文件。空字節不消耗任何磁碟空間,該文件是一個稀疏文件。當心/dev/zero也。

使用任何其他方法。ddhead或者你喜歡 python 腳本。但不要創建稀疏文件。

引用自:https://serverfault.com/questions/1041199