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/sda1
Windows 7パーティションに必要な非常に小さいパーティションです。次のコマンドを使用して作成されたループバックデバイス。 boot.mbrは、最初のパーティションが始まる前にディスクの先頭に表示される最初の2048セクタのコピーであるイメージファイルです。このセクタにはGrubブートローダが含まれています。イメージファイルを生成するために実行したコマンドは次のとおりです。同じサイズでなければならない理由は、Grubブートローダと2つのパーティションレイアウトを模倣するために仮想ハードディスクを設定しようとしましたが、最後のパーティションを設定しようとしてバイトが不足していたためです。ディスクのバイトが不足しています。より多くの背景情報が必要な場合は、私がこれを行った理由を説明する別の質問へのリンクがあります。/dev/sda2
/dev/loop0
sudo losetup /dev/loop0 boot.mbr
/dev/sda
/dev/sda1
dd if=/dev/zero of=boot.mbr count=2048
/dev/md0
/dev/md0
https://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/sda1
1572864000バイトを表示します。/dev/sda2
229318000128バイトとして表示されます。私のファイルシステムにはboot.mbrが1048576として表示されます。したがって、これらの3つの数字を合わせると、/dev/md0
ドライブのサイズは少なくとも230891912704バイトでなければなりません。ただし、fdiskは/ dev / md0が230891847680バイトであることを示しています。したがって、/dev/md0
65024バイトは必要以上に小さくなります。
推測:
ループバックデバイスに問題があるようです/dev/loop0
。ただし、fdisk -l /dev/loop0
ディスプレイデバイスのサイズは1048576バイトなので、画像ファイルのサイズと一致します。しかし、fdiskは/dev/loop0
シリンダーがないと文句を言います。これが問題になる可能性がありますか?私はここでジプラを握っているだけです。
/dev/md0
ソフトウェアRAIDで作成された仮想ハードディスクとはどういう意味ですか?まず、データはどこに保存されますか?もしメモリやストレージスペースが足りないのではないだろうか?
答え1
通常、Linux mdadm
RAIDデバイスは、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/sda2
Windowsが正しく起動するために、Windows 7パーティションに必要な非常に小さいパーティションです。
Windows 7がクラッシュするように聞こえますが、そのパーティションをLinux MD RAIDデバイスで上書きすると、Windowsでは使用できなくなります。