Linux

如何在不拆分的情況下將大文件放在兩個磁碟上?

  • March 14, 2013

我有一個 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在兩個循環設備上。

引用自:https://unix.stackexchange.com/questions/67984