RAID mdadm 仮想ディスクが小さすぎます。

RAID mdadm 仮想ディスクが小さすぎます。
sudo mdadm --build /dev/md0 --level=linear --raid-devices=3 /dev/loop0 /dev/sda1 /dev/sda2

上記のコマンドを実行した後、++/dev/md0未満です。なぜこれが起こるのか、そして/dev/loop0/dev/sda1/dev/sda2どうすれば正確なサイズにすることができますか?? Windowsが正しく起動するために、/dev/sda1Windows 7パーティションに必要な非常に小さいパーティションです。次のコマンドを使用して作成されたループバックデバイス。 boot.mbrは、最初のパーティションが始まる前にディスクの先頭に表示される最初の2048セクタのコピーであるイメージファイルです。このセクタにはGrubブートローダが含まれています。イメージファイルを生成するために実行したコマンドは次のとおりです。同じサイズでなければならない理由は、Grubブートローダと2つのパーティションレイアウトを模倣するために仮想ハードディスクを設定しようとしましたが、最後のパーティションを設定しようとしてバイトが不足していたためです。ディスクのバイトが不足しています。より多くの背景情報が必要な場合は、私がこれを行った理由を説明する別の質問へのリンクがあります。/dev/sda2/dev/loop0sudo losetup /dev/loop0 boot.mbr/dev/sda/dev/sda1dd if=/dev/zero of=boot.mbr count=2048/dev/md0/dev/md0https://superuser.com/questions/931645/with-linux-mint-as-main-os-dual-boot-windows-7-and-have-a-windows-7-virtual-mac/937491#937491

技術仕様:

  • Linux Mint 17.2 64ビット(Cinnamonを含む)
  • mdadm-v3.2.5
  • dd(コアユーティリティ)8.21

詳しくは:

fdiskは/dev/sda11572864000バイトを表示します。/dev/sda2229318000128バイトとして表示されます。私のファイルシステムにはboot.mbrが1048576として表示されます。したがって、これらの3つの数字を合わせると、/dev/md0ドライブのサイズは少なくとも230891912704バイトでなければなりません。ただし、fdiskは/ dev / md0が230891847680バイトであることを示しています。したがって、/dev/md065024バイトは必要以上に小さくなります。

推測:

ループバックデバイスに問題があるようです/dev/loop0。ただし、fdisk -l /dev/loop0ディスプレイデバイスのサイズは1048576バイトなので、画像ファイルのサイズと一致します。しかし、fdiskは/dev/loop0シリンダーがないと文句を言います。これが問題になる可能性がありますか?私はここでジプラを握っているだけです。

/dev/md0ソフトウェアRAIDで作成された仮想ハー​​ドディスクとはどういう意味ですか?まず、データはどこに保存されますか?もしメモリやストレージスペースが足りないのではないだろうか?

答え1

通常、Linux mdadmRAIDデバイスは、MDデバイスがメタデータを格納するため、常にコンポーネントデバイスのサイズ(またはRAID 0の場合はその合計)より小さくなります。

この例では、--buildメタデータを使用しない手動アセンブリモードを呼び出すことを使用しました。しかしながら、MDデバイスはブロックサイズを使用するので、ラインアレイはコンポーネントデバイスのサイズの合計よりも小さくてもよい。コマンドから取得する必要がある次または類似の出力に注意してください。

mdadm: chunk size defaults to 64K
mdadm: array /dev/md0 started.

これは、配列が65536バイトのブロックを処理できることを意味します。たとえば、RAID0アレイ(そうでない)の場合、データは1つのコンポーネントで65536バイト、次のコンポーネントで65536バイトなどにインターリーブされます。

完全なブロックを作成しない追加のバイトが最後にある場合、配列はそれを使用できません。

リニアモードでは、MDが各コンポーネントのサイズを65536バイトの最も近い倍数に下げるのか、それとも配列全体のサイズを下げるのかはわかりません。どちらのコンポーネントの1つのサイズは65536バイト(他の2バイト)の倍数ではないため、65024バイトに切り捨てられます。これはまさにあなたが見ている違いです。

ブロックデバイスの正確なサイズを表示する最良の方法は次のとおりです。

blockdev --getsize64 /dev/sda1

したがって、次の合計を計算すると:

blockdev --getsize64 /dev/sda1
blockdev --getsize64 /dev/sda2
blockdev --getsize64 /dev/loop0

結果の配列の利用可能なサイズは、以下を使用して見ることができます。

blockdev --getsize64 /dev/md0

しかし、ここで構築しようとしている配列は非常に奇妙で潜在的に危険である可能性があると思います。 2つの物理ブロックデバイスとファイル対応仮想ブロックデバイスで構成されるアレイの有用性は奇妙です。さらに重要なことは、次のように言います。

/dev/sda1/dev/sda2Windowsが正しく起動するために、Windows 7パーティションに必要な非常に小さいパーティションです。

Windows 7がクラッシュするように聞こえますが、そのパーティションをLinux MD RAIDデバイスで上書きすると、Windowsでは使用できなくなります。

関連情報