Linux

創建 zfs 池,允許用稍小的磁碟替換其中一個磁碟

  • March 31, 2017

這是關於 Linux (CentOS 7) 上的 zfs 的問題。我有一個非常簡單的設置,有兩個 8 TB 磁碟,一個磁碟鏡像另一個。

zpool create -f -o ashift=12 $ zpoolName mirror $ disksById

根據 zpool 手冊頁,如果需要更換其中一個磁碟,則替換磁碟的大小必須等於或大於配置中兩個磁碟中最小的一個。據我了解,不同品牌和型號(和型號修訂)的驅動器之間的確切大小通常會有所不同,即使它們都標記為 8 TB。但是,我希望能夠用任何其他 8 TB 磁碟替換它,不一定要使用相同的品牌和型號。

我如何實現這一目標?

我本來希望 zpool create 命令有一個選項,以便不是整個磁碟都用於池,而是留下一些鬆弛,但是我找不到這樣的選項。我看到的唯一建議是在創建池之前對磁碟進行分區,創建一個“池”分區和一個“鬆弛”分區,但我讀過這會影響磁碟性能,因為磁碟記憶體無法正確使用zfs,所以我想我想避免這種情況。

我看到的唯一建議是在創建池之前對磁碟進行分區,創建一個“池”分區和一個“鬆弛”分區

這是正確的答案。

但我讀過這會影響磁碟性能,因為 zfs 無法正確使用磁碟記憶體。

這是一種誤解。如果分區未對齊,則使用分區而不是完整磁碟只會影響性能,如果您使用模糊的現代分區編輯器,這通常需要使用者做出一些真正的決定。Linux 和 BSD fdisk、sfdisk 和 gparted 都了解分區邊界並在其中工作,除非完全被迫不這樣做。

此外,如果您仔細查看已被整個饋送到 zfs 的磁碟,您會注意到zfs實際上已經對其自身進行了分區。例子:

root@banshee:~# zpool status data
 pool: data
state: ONLINE
 scan: scrub repaired 0 in 27h54m with 0 errors on Mon Mar 13 05:18:20 2017
config:

   NAME                                           STATE     READ WRITE CKSUM
   data                                           ONLINE       0     0     0
     mirror-0                                     ONLINE       0     0     0
       wwn-0x50014ee206fd9549  ONLINE       0     0     0
       wwn-0x50014ee2afb368a9    ONLINE       0     0     0
     mirror-1                                     ONLINE       0     0     0
       wwn-0x50014ee25d2510d4  ONLINE       0     0     0
       wwn-0x5001517bb29d5333  ONLINE       0     0     0

errors: No known data errors

root@banshee:~# ls -l /dev/disk/by-id | grep 510d4
lrwxrwxrwx 1 root root  9 Mar 22 15:57 wwn-0x50014ee25d2510d4 -> ../../sdd
lrwxrwxrwx 1 root root 10 Mar 22 15:57 wwn-0x50014ee25d2510d4-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 Mar 22 15:57 wwn-0x50014ee25d2510d4-part9 -> ../../sdd9

如您所見,ZFS 已經對池中的原始磁碟進行了分區。池使用分區 1;分區 9 保持鬆弛。

root@banshee:~# sfdisk -d /dev/sdd
label: gpt
label-id: B2DED677-DB67-974C-80A6-070B72EB8CFB
device: /dev/sdd
unit: sectors
first-lba: 34
last-lba: 3907029134

/dev/sdd1 : start=        2048, size=  3907010560, type=6A898CC3-1DD2-11B2-99A6-080020736631, uuid=A570D0A4-EA32-F64F-80D8-7479D918924B, name="zfs"
/dev/sdd9 : start=  3907012608, size=       16384, type=6A945A3B-1DD2-11B2-99A6-080020736631, uuid=85D0957B-65AF-6B4A-9F1B-F902FE539170

sdd9是 16384 個扇區。這是一個 4K 磁碟,因此大小為 64M,任何比現有磁碟小不超過 63M 的磁碟都可以作為該磁碟的替代品,如果它發生故障的話。

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