【问题标题】:Make an ext2 filesystem out of a directory to use as ramdisk从目录中创建一个 ext2 文件系统以用作 ramdisk
【发布时间】:2013-02-06 20:44:01
【问题描述】:

我正在尝试自动确定目录将创建的 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。

【问题讨论】:

  • 我不明白| grep 'fs$' 在做什么。你的意思是使用du -s
  • 我的错我的意思是tail -1

标签: filesystems block ext4 ramdisk ext2


【解决方案1】:

我认为一般来说没有什么好的方法可以做到这一点。通常,文件系统中的超级块、inode 表、块位图和各种其他结构的大小会根据文件系统的大小和其中的内容而有所不同。即使文件占用的空间(由du 计算)在源文件系统和目标文件系统上也可能不同。

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

【讨论】:

  • 确实是只读的,我将通过nfs挂载可写部分,更改fs类型是否需要修改内核?
  • 我决定让文件系统在设备内可写会很方便,所以我只在 du 的输出上留出 100K 的额外空间。我希望这不会在以后破坏
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 2015-01-31
  • 2011-02-10
  • 2021-01-10
  • 2012-04-14
  • 2015-07-07
  • 2019-01-07
相关资源
最近更新 更多