2013-02-21 56 views
0

我試圖自動確定目錄將創建的ext2虛擬硬盤文件系統的大小。什麼我目前做的是:使ext2文件系統脫離目錄以用作虛擬硬盤

BLOCK_COUNT=`du $RAMDISK_FS_DIR| tail -1 |awk '{print $1}' 

dd if=/dev/zero of=ramdisk.img bs=1024 count=$BLOCK_COUNT 
mke2fs -F ramdisk.img -L "ramdisk" -b 1024 -m 0 
tune2fs ramdisk.img -i 0 

但是,當我安裝和cp -r$RAMDISK_FS_DIRramdisk.img我得到這樣的

cp: cannot create directory `ramdisk/var/www': No space left on device 

我確定的消息,在我這個特定情況下增加了48塊BLOCK_COUNT正是我需要多少操作才能成功。我需要一種方法來查找任意目錄大小的這個數字。

請注意,我的主機文件系統是ext4。

+1

我不明白是什麼'| | grep'fs $''在做。你的意思是使用du -s嗎? – Celada 2013-02-21 13:55:27

+0

我的壞我meand'tail -1' – fakedrake 2013-02-21 14:06:32

回答

2

我不認爲有一個很好的方法來做到這一點。通常,文件系統中的超級塊,inode表,塊位圖以及其他各種結構的大小會有所不同,具體取決於文件系統的大小及其內容。甚至文件佔用的空間(如du所計算的)在源文件系統上可能與目標文件系統上的不同。

我想知道爲什麼你要製作一個大小與其內容完全相同的文件系統。由於這個文件系統在構建完成後將始終保持完整狀態,因此不能向其中添加任何內容(除非先刪除內容),這使我認爲它可能只是只讀的。如果它是隻讀的,購買它,爲什麼不使用文件系統類型,如cramfssquashfs專門用於此類應用程序?

+0

事實上,它的目的是隻讀,我會通過NFS掛載可寫部分,會改變fs類型需要內核修改? – fakedrake 2013-02-21 14:13:16

+0

我決定將文件系統從設備中寫入是很方便的,所以我只是在du的輸出上留下了100K的額外空間。我希望這不會稍後中斷 – fakedrake 2013-02-21 15:07:42