我正在构建一个为用户提供一定数量磁盘空间的系统。我这样做的方式是:
- 使用 dd 创建文件
- 在文件内创建一个 ext4 文件系统
- 挂载文件并告诉用户程序使用挂载点作为其工作目录
我不想使用 Linux 配额系统,因为我不希望用户成为本地系统用户。
上述方法工作正常,但它浪费了空间,因为用户没有使用所有的限额,但整个限额已经被分配了。
是否有命令可以执行与 dd 相同的操作,但不会一次分配整个文件?所以我可以创建一个 20gb 的文件,当它安装时它会报告 20gb 的空间,但它只会物理占用已写入的内容?
答案1
您可以使用seek
的参数dd
来创建稀疏文件:
dd if=/dev/zero of=filesystem.img bs=1k seek=1024M count=1
将创建一个最大可达 1G 的文件,但仅占用必要的空间。
答案2
答案3
在 CentOS 中,您可以使用 qemu 工具,如下所示;
qemu-img create -f raw the_filename 5G