Zfs
增加 ZFS 分區以使用整個磁碟
我有一個目前佔用 100Gb 的 ZFS 池。我將磁碟大小增加到 150Gb,但似乎無法讓 ZFS 使用整個磁碟。
昨天我在另一台伺服器上遇到了同樣的問題,並且有一定的混合
zpool set autoexpand=on
,zpool export|import
和zpool online -e
重新啟動允許我修復它。但是無論我做什麼,它在目前伺服器上都不起作用有問題的設備是 sdb,您可以從下面的 lsblk 中看到,該分區在可用的 150Gb 中只有 100Gb。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 150G 0 disk ├─sdb1 8:17 0 100G 0 part └─sdb9 8:25 0 8M 0 part root@http-server-2:/home# parted -l Model: Google PersistentDisk (scsi) Disk /dev/sdb: 161GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 107GB 107GB zfs zfs-01a59d03c9294944 9 107GB 107GB 8389kB
更新
更多數據:
zpool 列表
# zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT lxd 13.9G 394K 13.9G - 0% 0% 1.00x ONLINE - zdata 99.5G 82.7G 16.8G - 49% 83% 1.00x ONLINE -
zpool 狀態
# zpool status pool: lxd state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM lxd ONLINE 0 0 0 /var/lib/lxd/disks/lxd.img ONLINE 0 0 0 errors: No known data errors pool: zdata state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM zdata ONLINE 0 0 0 sdb ONLINE 0 0 0
自動展開
# zpool get autoexpand NAME PROPERTY VALUE SOURCE lxd autoexpand off default zdata autoexpand on local
展開
# zpool get expandsize zdata NAME PROPERTY VALUE SOURCE zdata expandsize - -
磁碟
# fdisk -l /dev/sdb Disk /dev/sdb: 150 GiB, 161061273600 bytes, 314572800 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: 0DA2A1D7-9A44-2E4C-856A-BB9EAEB283E0 Device Start End Sectors Size Type /dev/sdb1 2048 209696767 209694720 100G Solaris /usr & Apple ZFS /dev/sdb9 209696768 209713151 16384 8M Solaris reserved 1
我在Google云上,這是一個 ubuntu VM 實例,zfs 在我通過“Google云平台 - 計算引擎”連接到伺服器的第二個磁碟上。
在這種情況下擴展 ZFS 分區的正確方法是什麼?
解決方案
最終,我按照下面的@ewwhite 回答讓它開始工作。為了完整起見,這裡是如何刪除額外的分區#9:
parted /dev/sdb rm 9 parted /dev/sdb resizepart 1 100%
然後一堆zpool online -e => export pool => import pool。它奏效了!
ZFS中有1/9分區是正常的。如果 ZFS 認為它正在使用“整個磁碟”,則創建分區。這是處理非多路徑完整磁碟的方式。
這個 8MB 緩衝空間的原因是允許在物理設置中使用稍微不同的磁碟容量。這不是您在使用該
zpool online -e
實用程序時需要擔心的事情,因為它會在擴展期間重寫分區表。Disk /dev/nvme0n1: 960.2 GB, 960197124096 bytes, 1875385008 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: gpt Disk identifier: E63B403D-D140-A84B-99EB-56DEDC8B91E4 # Start End Size Type Name 1 2048 1875367935 894.3G Solaris /usr & zfs-aaba011d48bf00f6 9 1875367936 1875384319 8M Solaris reserve
順序應該是這樣的:
- 重新掃描您的磁碟:類似
echo 1 > /sys/block/sdb/device/rescan
.partprobe
zpool online -e poolname sdb
- 重新啟動或重新載入 ZFS 模組。
zpool list
- 查看 的值
EXPANDSZ
。zpool online -e poolname sdb
如果此順序不起作用,只需刪除分區 #9 並重複上述操作。