複数のimgファイルをシングルループデバイスとしてマウントする

複数のimgファイルをシングルループデバイスとしてマウントする

ディスクimgファイルを複数の部分に分割してシングルループデバイスとしてマウントする方法はありますか?

答え1

内部でこれを行うことはできないようですが、十分なスペースがある場合は、次のようにします。

# Create the files that will hold your data
dd if=/dev/zero of=part-00 bs=1M count=4k
dd if=/dev/zero of=part-01 bs=1M count=4k

# Create the loop devices
losetup /dev/loop0 part-00
losetup /dev/loop1 part-01

# Create a RAID array
mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1

# Copy the original filesystem
dd if=original-file-00 of=/dev/md0 bs=512
# Look at the records written value
dd if=original-file-01 of=/dev/md0 bs=512 seek=<sum of records written values so far>

# Mount the new filesystem
mount /dev/md0 /mnt

RAIDディスクには、ディスクの数、RAIDレベルなどの情報を格納する特定のヘッダーがあるため、rawファイルからRAIDアレイを作成することはできません。これにより、元のファイルの一部が上書きされます。

を使用してメタデータなしで配列を作成できますが、mdadm --buildまずバックアップを作成する必要があります。または読み取り専用マウントで十分な場合:

losetup -r /dev/loop0 original-00
losetup -r /dev/loop1 original-11
mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
mount /dev/md0 /mnt

なぜこれを行うのですか?ファイルシステムが4 GBを超えるファイルを処理できない場合は、通常のファイルシステムに切り替える必要があります。

答え2

分割ディスクイメージ(またはパーティションイメージ)をインストールするには、affuse現在ここで維持されているafftoolsを使用する必要があります。https://github.com/sshock/AFFLIBv3

したがって、ファイルがある場合は、複数のサブファイルに分割してください。test_img.000, test_img.001, test_img.002, test_img.003, test_img.004, test_img.005, test_img.006, test_img.007, test_img.008, test_img.009

その後、仮想的に参加できます。affuse

# affuse test_img.000 /mnt/combine
# ls -lh /mnt/combine
total 0
-r--r--r-- 1 root root 2.0G 1969-12-31 16:00 test_img.000.raw

(これにより、ファイル000から始まり、001、002などのすべてのファイルが一緒にグループ化されます。)

その後、画像をマウントします。

mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test

使用法が説明されています。ここそしていくつかの例ここ。コンパイルおよびインストール後にマンページを使用することもできます。ここ

PS:私にとって、これはaffuse分割ファイルのサイズが512バイトの倍数の場合にのみ機能します。

答え3

独自のブロックストレージ拡張(ヒューズなどの拡張)を作成し、アドレスに基づいて照会を実行できます。

ここでは、ヒューズの使用方法の例を見つけることができます。 https://github.com/libfuse/python-fuse/blob/master/example/hello.py

答え4

BSDでは、統合オプションを使用してマウントできます。 Linux では UnionFS を試すことができます。

関連情報