質問:Linuxとmdadmを使用して、インテルラピッドストレージテクノロジーRAID-0アレイ(NTFSとしてフォーマットされ、Windows 7がインストールされている)で使用されているハードディスクから作成されたディスクイメージからデータを読み書きするにはどうすればよいですかas files )?
問題:アレイ内のドライブの1つが故障しているので、ドライブを交換する(つまりアレイを破壊する)前に、できるだけ多くのデータをコピーしたいと思います。
彼らが私の問題を解決するなら、私はこの質問に対する代替の解決策を受け入れます。
まず、パーティションから64ビットのUbuntu 15.10を実行するためのUSB外部ドライブを入手しました。 LiveCDまたは小さなUSBサムドライブを使用した方が起動は簡単でしたが、外付けよりも遅くなりました(LiveCDは永続的なインストールではありません)。私はddrescueをインストールし、それを使用して各ハードディスクのイメージを作成しました。画像の作成に特筆すべき問題はありませんでした。
イメージを取得したら、aptを使用してmdadmをインストールしました。ただし、これにより2013年から古いバージョンのmdadmがインストールされました。最新バージョンの変更ログは、IMSMのサポートが優れていることを示したため、---(このガイド を使用してmdadm 3.4をコンパイルおよびインストールしました。 4.4.2。ここでの唯一の注目すべき問題は、一部のテストが成功しなかったことですが、ガイドはそれが許容できることを示しているようです。
その後、私は fewplaces を読み込みました。画像を使用するには、ループバックデバイスを使用する必要があります。問題なくディスクイメージを/ dev/loop0および/ dev/loop1としてマウントしました。
プロセスのこの時点での関連情報は次のとおりです...
mdadm --detail-platform:
$ Sudo mdadm --detail-platform
Platform : Intel(R) Rapid Storage Technology
Version : 10.1.0.1008
RAID Levels : raid0 raid1 raid5
Chunk Sizes : 4k 8k 16k 32k 64k 128k
2TB volumes : supported
2TB disks : not supported
Max Disks : 7
Max Volumes : 2 per array, 4 per controller
I/O Controller : /sys/devices/pci0000:00/0000:00:1f.2 (SATA)
Port0 : /dev/sda (W0Q6DV7Z)
Port3 : - non-disk device (HL-DT-ST DVD+-RW GS30N) -
Port1 : /dev/sdb (W0Q6CJM1)
Port2 : - no device attached -
Port4 : - no device attached -
Port5 : - no device attached -
fdisk -l:
$ Sudo fdisk -l
Disk /dev/loop0: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2bd2c32a
Device Boot Start End Sectors Size Id Type
/dev/loop0p1 * 2048 4196351 4194304 2G 7 HPFS/NTFS/exFAT
/dev/loop0p2 4196352 1250273279 1246076928 594.2G 7 HPFS/NTFS/exFAT
Disk /dev/loop1: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x2bd2c32a
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 4196351 4194304 2G 7 HPFS/NTFS/exFAT
/dev/sda2 4196352 1250273279 1246076928 594.2G 7 HPFS/NTFS/exFAT
Disk /dev/sdb: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
mdadm --examine --verbose/dev/sda:
$ Sudo mdadm --examine --verbose /dev/sda
/dev/sda:
Magic : Intel Raid ISM Cfg Sig.
Version : 1.0.00
Orig Family : 81bdf089
Family : 81bdf089
Generation : 00001796
Attributes : All supported
UUID : acf55f6b:49f936c5:787fa66e:620d7df0
Checksum : 6cf37d06 correct
MPB Sectors : 1
Disks : 2
RAID Devices : 1
[ARRAY]:
UUID : e4d3f954:2f449bfd:43495615:e040960c
RAID Level : 0
Members : 2
Slots : [_U]
Failed disk : 0
This Slot : ?
Array Size : 1250275328 (596.18 GiB 640.14 GB)
Per Dev Size : 625137928 (298.09 GiB 320.07 GB)
Sector Offset : 0
Num Stripes : 2441944
Chunk Size : 128 KiB
Reserved : 0
Migrate State : idle
Map State : normal
Dirty State : clean
Disk00 Serial : W0Q6DV7Z
State : active failed
Id : 00000000
Usable Size : 625136142 (298.09 GiB 320.07 GB)
Disk01 Serial : W0Q6CJM1
State : active
Id : 00010000
Usable Size : 625136142 (298.09 GiB 320.07 GB)
mdadm --examine --verbose/dev/sdb:
$ Sudo mdadm --examine --verbose /dev/sdb
/dev/sdb:
Magic : Intel Raid ISM Cfg Sig.
Version : 1.0.00
Orig Family : 81bdf089
Family : 81bdf089
Generation : 00001796
Attributes : All supported
UUID : acf55f6b:49f936c5:787fa66e:620d7df0
Checksum : 6cf37d06 correct
MPB Sectors : 1
Disks : 2
RAID Devices : 1
Disk01 Serial : W0Q6CJM1
State : active
Id : 00010000
Usable Size : 625137928 (298.09 GiB 320.07 GB)
[ARRAY]:
UUID : e4d3f954:2f449bfd:43495615:e040960c
RAID Level : 0
Members : 2
Slots : [_U]
Failed disk : 0
This Slot : 1
Array Size : 1250275328 (596.18 GiB 640.14 GB)
Per Dev Size : 625137928 (298.09 GiB 320.07 GB)
Sector Offset : 0
Num Stripes : 2441944
Chunk Size : 128 KiB
Reserved : 0
Migrate State : idle
Map State : normal
Dirty State : clean
Disk00 Serial : W0Q6DV7Z
State : active failed
Id : 00000000
Usable Size : 625137928 (298.09 GiB 320.07 GB)
ここで私は困難に遭遇しました。配列を組み立ててみました。
$ Sudo mdadm --assemble --verbose /dev/md0 /dev/loop0 /dev/loop1
mdadm: looking for devices for /dev/md0
mdadm: Cannot assemble mbr metadata on /dev/loop0
mdadm: /dev/loop0 has no superblock - Assembly aborted
--forceを使用するか、/ dev/loop0と/ dev/loop1を入れ替えても同じ結果が得られます。
IMSMはCONTAINERタイプのFakeRAIDであるため、コンテナーを組み立てるのではなく作成する必要があるという指摘がいくつかありました。私は試した...
$ Sudo mdadm -CR /dev/md/imsm -e imsm -n 2 /dev/loop[01]
mdadm: /dev/loop0 is not attached to Intel(R) RAID controller.
mdadm: /dev/loop0 is not suitable for this array.
mdadm: /dev/loop1 is not attached to Intel(R) RAID controller.
mdadm: /dev/loop1 is not suitable for this array.
mdadm: create aborted
fewmorethings を読んだ後、原因はIMSM_NO_PLATFORMとIMSM_DEVNAME_AS_SERIALであるように見えました。 Sudoを使用して環境変数を永続化しようと試みた後、私は試しました...
$ Sudo IMSM_NO_PLATFORM=1 IMSM_DEVNAME_AS_SERIAL=1 mdadm -CR /dev/md/imsm -e imsm -n 2 /dev/loop[01]
mdadm: /dev/loop0 appears to be part of a raid array:
level=container devices=0 ctime=Wed Dec 31 19:00:00 1969
mdadm: metadata will over-write last partition on /dev/loop0.
mdadm: /dev/loop1 appears to be part of a raid array:
level=container devices=0 ctime=Wed Dec 31 19:00:00 1969
mdadm: container /dev/md/imsm prepared.
それは何かです。よく見て...
$ ls -l /dev/md
total 0
lrwxrwxrwx 1 root root 8 Apr 2 05:32 imsm -> ../md126
lrwxrwxrwx 1 root root 8 Apr 2 05:20 imsm0 -> ../md127
/ dev/md/imsm0および/ dev/md127は、物理ディスクドライブ(/ dev/sdaおよび/ dev/sdb)に関連付けられています。/dev/md/imsm(/ dev/md126を指す)は、ループバックデバイスに基づいて新しく作成されたコンテナーです。よく見て...
$ Sudo IMSM_NO_PLATFORM=1 IMSM_DEVNAME_AS_SERIAL=1 mdadm -Ev /dev/md/imsm
/dev/md/imsm:
Magic : Intel Raid ISM Cfg Sig.
Version : 1.0.00
Orig Family : 00000000
Family : ff3cb556
Generation : 00000001
Attributes : All supported
UUID : 00000000:00000000:00000000:00000000
Checksum : 7edb0f81 correct
MPB Sectors : 1
Disks : 1
RAID Devices : 0
Disk00 Serial : /dev/loop0
State : spare
Id : 00000000
Usable Size : 625140238 (298.09 GiB 320.07 GB)
Disk Serial : /dev/loop1
State : spare
Id : 00000000
Usable Size : 625140238 (298.09 GiB 320.07 GB)
Disk Serial : /dev/loop0
State : spare
Id : 00000000
Usable Size : 625140238 (298.09 GiB 320.07 GB)
いいですね。アレイを起動してみましょう。コンテナを起動するためにインクリメンタルアセンブリモードを使用するとの情報( ここ および ここ )を見つけました。
$ Sudo IMSM_NO_PLATFORM=1 IMSM_DEVNAME_AS_SERIAL=1 mdadm -I /dev/md/imsm
それは私に何も与えませんでした。 verboseフラグを使用してみましょう。
$ Sudo IMSM_NO_PLATFORM=1 IMSM_DEVNAME_AS_SERIAL=1 mdadm -Iv /dev/md/imsm
mdadm: not enough devices to start the container
ああわざわざ。/proc/mdstatを確認してみましょう。
$ Sudo cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md126 : inactive loop1[1](S) loop0[0](S)
2210 blocks super external:imsm
md127 : inactive sdb[1](S) sda[0](S)
5413 blocks super external:imsm
unused devices: <none>
まあ、それは正しくありません-ブロックの数が一致しません。アセンブルを試みたときのメッセージをよく見ると、mdadmは「メタデータは/ dev/loop0の最後のパーティションを上書きするので、/ dev/loop0に関連付けられているイメージファイルがホースされていると思います」と言っているようです。ありがたいことに、私はこれらのイメージのバックアップコピーを持っているので、それらを取得して最初からやり直すことができますが、USB3を介しても300〜600GBを再コピーするには時間がかかります。
とにかく、この時点で、私は困惑しています。現時点で私が次に何を試すべきかわからないので、誰かがアイデアを持っていることを願っています。
これはこの問題に対処するための正しい道ですか、いくつかの設定を正しくする必要がありますか?または、IMSM RAID-0ディスクイメージをマウントするための上記のアプローチは完全に間違っていますか?
/dev/loop0
のパーティションテーブル、および/dev/loop0
と/dev/loop1
について報告されたディスクイメージサイズを見ると、2つのディスクが単純にボルトで固定されていて、パーティションテーブルが結果の仮想ディスク用に構築された:
Disk /dev/loop0: 298.1 GiB, 320072933376 bytes, 625142448 sectors Device Boot Start End Sectors Size Id Type /dev/loop0p1 * 2048 4196351 4194304 2G 7 HPFS/NTFS/exFAT /dev/loop0p2 4196352 1250273279 1246076928 594.2G 7 HPFS/NTFS/exFAT
そして
Disk /dev/loop1: 298.1 GiB, 320072933376 bytes, 625142448 sectors
2つのディスクを298.1 GiB and 298.1 GiBで取得すると、596.2 GiB合計になります。 2つのパーティション2G + 594.2Gのサイズも596.2 GiBになります(これは、「G」がGiBを示すと想定しています)。
スーパーブロック情報をmdadm
で認識できないことをすでに警告しているので、純粋にディスクパーティションラベルに基づいて、次のようにアレイを構築しようとします。
mdadm --build /dev/md0 --raid-devices=2 --level=0 --chunk=128 /dev/loop0 /dev/loop1
cat /proc/mdstat
128KiBのチャンクサイズを持っていますが、ディスク上にまだ存在するメタデータによって記述されたチャンクサイズと一致します。
それが機能する場合は、結果のRAID0のパーティションにアクセスできます。
ld=$(losetup --show --find --offset=$((4196352*512)) /dev/md0)
echo loop device is $ld
mkdir -p /mnt/dsk
mount -t ntfs -o ro $ld /mnt/dsk
すでにいくつかのループデバイスが使用されているため、次の空きループデバイスの名前を想定せず、代わりにlosetup
コマンドを使用して、使用されているデバイスを教えます。これは$ld
に入れられます。 4196532セクター(それぞれ512バイト)のオフセットは、2番目のパーティションのイメージへのオフセットに対応します。同様に、losetup
コマンドからオフセットを省略して、mount
オプションに追加することもできます。