JBOD を再構築できますか?

JBOD を再構築できますか?

数年前に故障した古いハードウェアがいくつかあり、そこにはまだ 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 行目は のデバイス マップを作成しますdmsetupman dmsetup詳細については、 を参照してください。

これで、 が/dev/mapper/mydevice利用可能になり、使用できる状態になります。これが JBOD です。( のすべての実装がdmsetupにノードを作成するかどうかは 100% 確信していません/dev/mapper/が、それでもmydeviceどこかに表示されるはずです。) 他のデバイスと同様に操作します。

取り付け

読む私のもう一つの答え。 全体取り付けその中のセクションがあなたのケースに適用されます。

クリーニング

破壊する/dev/mapper/mydevice

dmsetup remove /dev/mapper/mydevice

もちろん、umount最初にパーティションを作成する必要があります。

関連情報