web-dev-qa-db-ja.com

JBODを再構築できますか?

何年も前に故障した古いハードウェアがいくつかありますが、まだ2台のHDDがあり、どちらもJBODとして構成されています。

これらのドライブを1台のHDDにダンプし、実際のハードウェアが使用できなくなった状態でJBODを削除/再構築する方法はありますか?

JBODは、Promise 20579チップ– AMD64用のMSIメインボードK8TNeo上に構築されました。

1
Timo Schäfer

ディスクが1つの大きなボリュームに連結される可能性があります。 JBODに関しては、これが最も簡単なソリューションです。 ハードウェア担当者のみが従った場合 KISS原則 )ハードウェアではなくソフトウェアを使用してデータにアクセス/ダンプすることに問題はありません。

Linuxでは適切なツールはdmsetupですが、ディスクをイメージ(または別のディスク)にのみダンプする場合は、単純なcatで十分な場合があります。

調査

最初に、JBOD内のディスクの元の順序を知る必要があります。最初のディスクを簡単に識別できるはずです。トリッキーな部分はそれらの残りを注文することです。 HDDが2台ある場合は問題ありません。最初のディスクには、全体JBOD上のパーティションを記述する有効なMBRパーティションテーブルまたは有効なGPT(プライマリですがセカンダリではありません)があります。パーティションテーブルなしで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"で2つの番号があることを確認します。 (サニティチェック:それらに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のすべての実装が/dev/mapper/にノードを作成するかどうかは100%わかりませんが、mydeviceはどこかに表示されるはずです。)他のデバイスと同じように操作します。

実装

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

クリーニング

/dev/mapper/mydeviceを破壊するには:

dmsetup remove /dev/mapper/mydevice

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

1