Zfs

使用 zpool add 擴展鏡像 ZFS 池中的可用空間?

  • May 24, 2022

我的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

請注意,設備md2md3沒有冗餘。您的池容易受到以下三種故障中的任何一種的影響: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

引用自:https://unix.stackexchange.com/questions/703685