
我有一些幾年前就出現故障的舊硬件,但裡面仍然有 2 個 HDD,它們都配置為 JBOD。
有沒有一種方法可以將這些驅動器轉儲到一個 HDD 上,並在實際硬體不再可用的情況下刪除/重建 JBOD?
JBOD 是基於 Promise 20579 晶片(適用於 AMD 64 的 MSI 主機板 K8T Neo)構建。
答案1
您的磁碟有可能只是串聯的成一本大卷。對於 JBOD 來說,這是最簡單的解決方案。如果只有硬體人員跟隨的話KISS原則,您使用軟體而不是硬體存取/轉儲資料將沒有問題。
在 Linux 中,正確的工具是dmsetup
,但如果您只想將磁碟轉儲到映像(或另一個磁碟),那麼簡單的工具cat
就足夠了。
調查
首先你需要知道JBOD中磁碟的原始順序。應該很容易識別第一個磁碟;棘手的部分是訂購其餘的。在您的情況下,有兩個硬碟驅動器,應該沒有問題。第一個磁碟具有有效的 MBR 分割區表或有效的 GPT(主磁碟,但不是輔助磁碟),用於描述分割區全部的JBOD。除非您使用的 JBOD 沒有任何分割表,否則此方法將有效。檢查您的磁碟gdisk -l
並識別第一個磁碟。
準備
在我的範例中,正確的順序是/dev/sdb
, /dev/sdc
。根據您的需求更改以下變數定義。
device1=/dev/sdb
device2=/dev/sdc
這樣您就可以使用後面的 Bash 命令而無需進行任何更改。
要將磁碟轉儲到映像,這應該足夠了(注意:從現在開始您可能需要sudo
):
cat "$device1" "$device2" > image.raw
如果您想實際使用 JBOD,則需要做更多準備。您需要將裝置的大小儲存在 512 位元組磁區中。檢索大小的指令類似於blockdev --getsz /dev/sdX
,所以
size1="$(blockdev --getsz "$device1")"
size2="$(blockdev --getsz "$device2")"
確認echo "$size1" "$size2"
您有兩個號碼。 (健全性檢查:如果將它們乘以 512,您應該得到磁碟的大小。)
映射設備創建
是時候創建一個虛擬串聯設備了。下面這段程式碼使用這裡的文檔語法以提高可讀性。如果您不使用 Bash,則可能需要調整它。另一方面,對於 Bash,它應該只需貼上到終端即可工作。
dmsetup create mydevice << EOF
0 $size1 linear $device1 0
$size1 $size2 linear $device2 0
EOF
注意mydevice
是任意名稱。第二行和第三行建立設備映射dmsetup
。請參閱man dmsetup
以了解更多資訊。
現在您應該可以/dev/mapper/mydevice
使用了;這是你的 JBOD。 (我不是 100% 確定 的每個實作dmsetup
都會在 中建立節點/dev/mapper/
;儘管如此,它mydevice
應該出現在某處。)像使用任何其他裝置一樣使用它。
安裝
讀我的另一個答案。整個安裝其中的部分適用於您的情況。
打掃
摧毀/dev/mapper/mydevice
:
dmsetup remove /dev/mapper/mydevice
當然,您應該umount
首先對其進行分區。