
数年前に故障した古いハードウェアがいくつかあり、そこにはまだ 2 台の HDD があり、両方とも JBOD として構成されています。
これらのドライブを 1 つの HDD にダンプし、実際のハードウェアが使用できなくなった状態で JBOD を削除/再構築する方法はありますか?
JBOD は、Promise 20579 チップ (AMD 64 用 MSI メインボード K8T Neo) 上に構築されました。
答え1
ディスクが連結された1 つの大きなボリュームにまとめます。JBOD に関しては、これが最もシンプルなソリューションです。ハードウェアの人たちも従ってくれればKISS原則ハードウェアではなくソフトウェアを使用してデータにアクセスしたりダンプしたりしても問題はありません。
Linux では適切なツールは ですdmsetup
が、ディスクをイメージ (または別のディスク) にのみダンプする場合は、単純な でcat
十分でしょう。
調査
まず、JBOD 内のディスクの元の順序を知る必要があります。最初のディスクを特定するのは簡単ですが、残りのディスクを順序付けるのは難しいです。HDD が 2 つある場合、問題はないはずです。最初のディスクには、有効な 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")"
2 つの数字があることを確認しますecho "$size1" "$size2"
。(健全性チェック: これらを 512 倍すると、ディスクのサイズが得られます。)
マッピングされたデバイスの作成
仮想連結デバイスを作成する時が来ました。次のコードはここに文書読みやすくするために構文を調整する必要があります。Bash を使用しない場合は調整する必要があるかもしれません。一方、Bash の場合は、ターミナルに貼り付けるだけで動作するはずです。
dmsetup create mydevice << EOF
0 $size1 linear $device1 0
$size1 $size2 linear $device2 0
EOF
注:mydevice
は任意の名前です。2 行目と 3 行目は のデバイス マップを作成しますdmsetup
。man dmsetup
詳細については、 を参照してください。
これで、 が/dev/mapper/mydevice
利用可能になり、使用できる状態になります。これが JBOD です。( のすべての実装がdmsetup
にノードを作成するかどうかは 100% 確信していません/dev/mapper/
が、それでもmydevice
どこかに表示されるはずです。) 他のデバイスと同様に操作します。
取り付け
読む私のもう一つの答え。 全体取り付けその中のセクションがあなたのケースに適用されます。
クリーニング
破壊する/dev/mapper/mydevice
:
dmsetup remove /dev/mapper/mydevice
もちろん、umount
最初にパーティションを作成する必要があります。