2012-05-11 84 views
1

我相信/ images/backups正在使用/ images中的空格嗎?如何從已經存在的分區創建循環分區

/dev/sdb1    820G 645G 135G 83% /images 
/dev/loop0   296G 296G  0 100% /images/backups 

我有一個類似類型的分區在另一臺機器/這是500G免費的圖片,我想拿出爲350G /圖片/備份,怎麼辦呢?

是對的,它是一個簡單的循環掛載,它可以給出指定的空間量,或者我們應該創建一個所需大小和掛載的NULL文件?如果是這樣,應該使用什麼安裝選項來指定大小?

+1

這實際上不是足夠的信息,知道那裏的文件後備的/ dev /迴路0是 - 它可能或可能不是/圖像。 「losetup」命令會告訴你這一點。 –

+0

losetup/dev/loop0 /dev/loop0:[0811]:45585(/images/backups.img),所以它是一個在該分區中創建的NULL文件? – user379997

+0

沒有什麼'NULL',但是,它居住在/圖像然後。 –

回答

3

您需要創建具有固定大小的目標,但可以使用實際上沒有寫入任何塊的「稀疏文件」(並且因此在寫入之前它實際上並不消耗空間到它)。

例如:

dd if=/dev/zero of=file.img bs=1 count=0 seek=20G 

將創建預分配20GB的稀疏文件。也就是說,事實上在寫入前將20GB的零寫入磁盤(使文件非稀疏)將會更快,並且導致更少的碎片化。

這可以附加到與losetup命令迴環設備,有一個文件系統創建和安裝:

losetup /dev/loop1 file.img 
mke2fs -j /dev/loop1 
mount /dev/loop1 /mnt/somewhere 

如果你想知道,如果現有文件是稀疏的,下面將做招(與GNU工具的系統上,一些下面沒有在純POSIX環境支持):

{ 
    read block_count block_size file_size 
    if ((block_count * block_size < file_size)) ; then 
     echo "Sparse" 
    else 
     echo "Non-Sparse" 
    fi 
} < <(stat --format='%b %B %s'$'\n' /images/backups.img)