从目录中创建一个ext2文件系统以用作ramdisk

时间:2013-02-21 13:40:02

标签: filesystems block ext4 ramdisk ext2

我正在尝试自动确定目录将生成的ext2 ramdisk文件系统的大小。我目前正在做的是:

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_DIR装入ramdisk.img时,我会收到类似这样的消息

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

我确定在我的特定情况下,将BLOCK_COUNT增加48个块正是我需要多少操作才能成功。我需要一种方法来为任意目录大小找到这个数字。

请注意,我的主机文件系统是ext4。

1 个答案:

答案 0 :(得分:2)

我认为一般来说这不是一个好方法。通常,文件系统中的超级块,inode表,块位图和各种其他结构的大小会有所不同,具体取决于文件系统的确切大小和文件系统的大小。即使文件占用的空间(由du计算)在源文件系统上也可能与目标文件系统上的空间不同。

我想知道你为什么要创建一个大小与其内容完全相同的文件系统。由于这个文件系统在构建后总是会满的,所以你不能添加任何东西(除非你先删除东西),这让我觉得它可能是只读的。如果它是只读的,那么为什么不使用专门用于此类应用程序的文件系统类型,如cramfssquashfs