Linux
如何在不拆分的情況下將大文件放在兩個磁碟上?
我有一個 100gb 大小的文件和一個帶有兩個 72gb 磁碟的伺服器。
伺服器執行 Ubuntu Linux,磁碟上有 ext4,沒有 LVM。
如何將 100gb 文件放在具有 72+72gb 磁碟的伺服器上?
我無法更改文件系統,也無法拆分文件;該文件必須是可讀的。
您可以創建兩個約 50GB 的文件,每個磁碟一個。然後使用
losetup
將它們映射到循環設備。您現在可以組合這兩個循環設備,例如,與 mdraid raid0。現在您可以在該陣列上創建一個文件系統,最後將您的文件放在那裡。這有點令人費解,但是,如果您想將它們視為一個磁碟,那麼正確的方法是在兩個磁碟上使用 LVM 和/或 mdraid。
範例,使用小得多的圖像(顯然你需要在這裡使用健全的路徑,而不是
/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
在重新啟動/關閉之前將其拆下可能會起作用,但是您使用
umount
它,然後mdadm --stop /dev/md/test
,然後losetup -d
在兩個循環設備上。