Storage

如何將 2 設備條帶鏡像附加到池?

  • February 27, 2018

我有一個由 2TB 硬碟組成的單驅動器池。我有兩個可以在鏡像中使用的 1TB 驅動器 - 我想為我的池添加冗餘。

如何將這兩個驅動器連接為一個設備,以便它們可以用作條帶鏡像?

我們稱我的 2TB 驅動器為sda,空白的 1TB 驅動器為sdbsdc

我試過了:zfs attach tank sda sdb sdc但那說too many arguments.

我試過了:zfs attach tank sda sdb但那說device is too small

我試過了:zfs attach tank sda sdb+sdc但那說no such device in /dev

我試過了:zfs attach tank sda sdb,sdc但那說no such device in /dev

我已經閱讀了手冊並蒐索了網路 - 我沒有想法。

我想我可以嘗試從這兩個 1TB 驅動器創建一個新的條帶池,在裡面創建一個 zvol 並將其用作我的主池的鏡像,但這可能會給我沒有足夠的容量來創建鏡像,再加上一個很多不必要的成本。

我怎樣才能做到這一點?

這不能通過 ZFS 直接完成。從手冊頁

虛擬設備不能嵌套,因此鏡像或 raidz 虛擬設備只能包含文件或磁碟。不允許鏡子的鏡子(或其他組合)。

我的建議是創建一個包含兩個 1 TB 磁碟的新池,並使用一些東西作為syncoid來頻繁地將第一個池的內容髮送到新池。

— 警告:下面笨拙的解決方法!如果不確定,請勿使用!!!—

無論如何,如果您確實想將兩個 1 TB 磁碟添加為前 2 TB 磁碟的鏡像,可以嘗試一種解決方法。您可以使用 device-mapper(以其 LVM 形式)連接兩個磁碟並將生成的捲附加到 2 TB 設備。例如:

pvcreate /dev/sdb
pvcreate /dev/sdc
vgcreate zvg /dev/sdb
vgextend zvg /dev/sdc
lvcreate zvg --name zdev -l +100%FREE
zpool attach tank /dev/sda /dev/zvg/zdev
zpool status

您可以使用 mdadm 獲得類似(甚至更好)的結果,創建一個 RAID0 設備並將其附加到 zpool:

mdadm --create md127 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
zpool attach tank /dev/sda /dev/md127
zpool status

推薦這種方法。需要您自擔風險使用它。

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