我有一個由 2TB HDD 組成的單驅動器池。我有兩個 1TB 硬碟可以在鏡像中使用 - 我想在我的池中添加冗餘。
如何將這兩個驅動器連接為單一設備,以便它們可以用作條帶鏡像?
我們將我的 2TB 硬碟稱為sda
,空白的 1TB 硬碟稱為sdb
和sdc
。
我嘗試過: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 並將其用作我的主池的鏡像,但這可能無論如何都不會為我提供足夠的鏡像容量,再加上一個很多不必要的開銷。
我怎樣才能做到這一點?
答案1
這不能透過 ZFS 直接完成。來自手冊頁:
虛擬設備不能嵌套,因此鏡像或 raidz 虛擬設備只能包含檔案或磁碟。不允許使用鏡子的鏡子(或其他組合)。
我的建議是創建一個包含兩個 1 TB 磁碟的新池,並使用以下內容:暈厥頻繁地將第一個池的內容傳送到新池。
--- 警告:下面有笨拙的解決方法!如果不確定,請勿使用! ---
無論如何,如果你真的如果想要新增兩個 1 TB 磁碟作為前 2 TB 磁碟的映像,可以嘗試解決方法。您可以使用裝置映射器(以其 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
這種方法是不是受到推崇的。需要您自擔風險使用它。
答案2
要將兩個新磁碟新增至池中,您可以使用,zpool add tank mirror sdb sdc
但這會將新磁碟對新增為鏡像,並使用現有磁碟對其進行條帶化。 (這不會增加任何冗餘)。
您需要使用該zpool attach
命令將磁碟附加到現有的 vdev,但不能使用鏡像對來支援單一磁碟,您必須新增一個新的 2TB 磁碟以使其成為鏡像對。