Zfs
使用 zpool add 擴展鏡像 ZFS 池中的可用空間?
我的Debian上有一個帶有兩個設備( )的鏡像池。
sda, sdb
現在我插入了兩個額外的設備(
sdc, sdd
),所以我可以將目錄中的可用空間增加一倍。/mnt/data/
是由just完成的
sudo zpool add backup-pool mirror sdc sdd
嗎?我有點害怕,所以我想確認一下。對不起菜鳥問題。
以下是我的游泳池的詳細資訊:
須藤 zfs 列表
NAME USED AVAIL REFER MOUNTPOINT backup-pool 1.47T 1.17T 96K /backup-pool backup-pool/data 1.47T 1.17T 1.47T /mnt/data
須藤 zpool 列表
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT backup-pool 2.72T 1.47T 1.25T - - 11% 53% 1.00x ONLINE -
須藤 fdisk -l
Disk /dev/sdc: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors Disk model: WDC WD30EFAX-68J Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk /dev/sdd: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors Disk model: WDC WD30EFAX-68J Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk /dev/sdb: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors Disk model: WDC WD30EFAX-68J 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: ABB57994-974B-734A-A2A9-2BA616368A52 Device Start End Sectors Size Type /dev/sdb1 2048 5860515839 5860513792 2.7T Solaris /usr & Apple ZFS /dev/sdb9 5860515840 5860532223 16384 8M Solaris reserved 1 Disk /dev/sda: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors Disk model: WDC WD30EFAX-68J 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: DCDDA5ED-CB54-C042-9AF6-076F07F44E96 Device Start End Sectors Size Type /dev/sda1 2048 5860515839 5860513792 2.7T Solaris /usr & Apple ZFS /dev/sda9 5860515840 5860532223 16384 8M Solaris reserved 1
謝謝!
簡短的回答:
是由just完成的
sudo zpool add backup-pool mirror sdc sdd
嗎?是的。
長答案:
我有點害怕,所以我想確認一下。
使用非關鍵設備(例如小型虛擬記憶體磁碟或在本例中為文件支持的虛擬磁碟)進行測試通常比人們想像的要簡單。
這是在 FreeBSD 上,但 Linux 有工具可以做同樣的事情。
我將創建四個 1G 的文件,並將每個文件用作文件支持的虛擬磁碟:
# for i in $(jot 4 0) > do > truncate -s1G md$i > mdconfig -f md$i > done
我現在有驅動器
/dev/md0
可以/dev/md3
玩。/dev/md0
我將通過鏡像和創建您擁有的原始單 VDEV 池/dev/md1
:# zpool create tank mirror md0 md1 # zpool status tank pool: tank state: ONLINE config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 md0 ONLINE 0 0 0 md1 ONLINE 0 0 0 errors: No known data errors
錯誤的方法:
如果您嘗試將下一個磁碟添加
md2
到池中,zpool
則會警告您正在降級池的冗餘:# zpool add tank md2 invalid vdev specification use '-f' to override the following errors: mismatched replication level: pool uses mirror and new vdev is disk
實際上,如果您確實強制執行此操作,並且同樣強制添加,
md3
您將得到:# zpool add -f tank md2 # zpool status tank pool: tank state: ONLINE config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 md0 ONLINE 0 0 0 md1 ONLINE 0 0 0 md2 ONLINE 0 0 0 errors: No known data errors # zpool add -f tank md3 # zpool status tank pool: tank state: ONLINE config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 md0 ONLINE 0 0 0 md1 ONLINE 0 0 0 md2 ONLINE 0 0 0 md3 ONLINE 0 0 0 errors: No known data errors
請注意,設備
md2
並md3
沒有冗餘。您的池容易受到以下三種故障中的任何一種的影響:1)如果鏡像的兩半都失敗;2)如果磁碟md2
發生故障;或 3) 如果磁碟md3
發生故障。這三個事件中的任何一個都會使您的池無法使用。更好的方法:
我上面的例子只是為了說明當你以錯誤的方式做事時會發生什麼。更好的方法,確實是我相信您正在尋找的方法,是將兩個新驅動器添加為第二個鏡像,與第一個鏡像連接。
為了提高冗餘,告訴
zpool
您要向現有池添加鏡像:# zpool status tank pool: tank state: ONLINE config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 md0 ONLINE 0 0 0 md1 ONLINE 0 0 0 errors: No known data errors # zpool add tank mirror md2 md3 # zpool status tank pool: tank state: ONLINE config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 md0 ONLINE 0 0 0 md1 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 md2 ONLINE 0 0 0 md3 ONLINE 0 0 0 errors: No known data errors