Linux
看不到 ZFS 數據集上的正確空間和已用空間
我已經用 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
也。使用任何其他方法。
dd
,head
或者你喜歡 python 腳本。但不要創建稀疏文件。