大容量ファイルを分割せずに2つのディスクに保存する方法は?

大容量ファイルを分割せずに2つのディスクに保存する方法は?

100GBのファイルと72GBのディスクが2つあるサーバーがあります。

サーバーはディスクにext4があり、LVMを持たないUbuntu Linuxを実行しています。

72 + 72 GBのディスクを持つサーバーに100 GBのファイルを保存する方法は?

ファイルシステムを変更することはできず、ファイルを分割することもできません。ファイルは読み取り可能でなければなりません。

ベストアンサー1

各ディスクに1つずつ、それぞれ約50GBのファイルを2つ作成できます。次に、losetupそれをループデバイスにマッピングするために使用します。これで、mdraid raid0などの2つのループデバイスを組み合わせることができます。これで、そのアレイにファイルシステムを作成し、最後にそのアレイにファイルを配置できます。

少し複雑ですが、正しい方法は両方のディスクでLVMおよび/またはmdraidを使用することです(両方のディスクを1つのディスクとして扱う場合)。

たとえば、より小さな画像を使用する場合(明らかにここでは私のように合理的なパスを使用する必要があります。おそらく/tmp「test」よりも良い配列名です):

root@Zia:/tmp# dd if=/dev/zero of=/tmp/img1 bs=1024k count=1024
root@Zia:/tmp# dd if=/dev/zero of=/tmp/img2 bs=1024k count=1024
root@Zia:/tmp# losetup --show -f /tmp/img1
/dev/loop0
root@Zia:/tmp# losetup -f /tmp/img2
/dev/loop1
root@Zia:/tmp# mdadm -C /dev/md/test -l 0 -n 2 /dev/loop0 /dev/loop1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/test started.
root@Zia:/tmp# mkfs.ext4 -Tlargefile4 /dev/md/test 
root@Zia:/tmp# mount /dev/md/test /mnt/tmp
root@Zia:/tmp# df -h /mnt/tmp/
Filesystem      Size  Used Avail Use% Mounted on
/dev/md126      2.0G  3.0M  1.9G   1% /mnt/tmp

そして起動時に再クリーンアップするには、次のようにします(もちろんスクリプトを作成する必要があります)。

root@Zia:/tmp# losetup --show -f /tmp/img1 
/dev/loop0
root@Zia:/tmp# losetup --show -f /tmp/img2
/dev/loop1
root@Zia:/tmp# mdadm --assemble /dev/loop0 /dev/loop1
mdadm: device /dev/loop0 exists but is not an md array.
root@Zia:/tmp# mdadm --assemble /dev/md/test /dev/loop0 /dev/loop1
mdadm: /dev/md/test has been started with 2 drives.
root@Zia:/tmp# mount /dev/md/test /mnt/tmp

再起動/終了する前に削除すると効果があるかもしれませんが、2サイクルumountデバイスでは削除できます。mdadm --stop /dev/md/testlosetup -d

おすすめ記事