如何正确创建虚拟文件系统?


10

我的家庭作业中的一个任务要求我创建一个虚拟文件系统,将其挂载并对其执行一些操作。

我应该创建一个10 MB的文件,其所有位都设置为0,将其格式化为ext3并安装它。这就是我这样做的方式:

dd if=/dev/zero of=~/filesyst bs=10485760 count=1
sudo mkfs.ext3 ~/filesyst
sudo mount –o loop ~/filesyst /media/fuse

即使使用过/dev/zero,该文件仍然充满乱码(大多数是符号)。的权限/media/fusedrw-rw-rw-(还可以),但是其中的文件的权限是这样的:

d????????? ? ? ? ?          ? lost+found
-????????? ? ? ? ?          ? secret_bin

我哪里出问题了?


我认为问题与您的mkfs.ext3命令有关。IIRC,在文件而不是设备上执行此操作时需要使用不同的参数。
user606723,2011年

1
也许我错了,根据adamsinfo.com/…,您做得正确。您可以尝试按照此url上的确切命令查看是否仍然存在问题吗?
user606723,2011年

另外,请尝试mkfs.ext3 -F ~/filesyst
user606723 2011年

@ user606723谢谢,我解决了它。问题是bscount参数。如果我写的bs=1MiB count=10是您发布的那个链接中的,则可以正常工作。
保罗

1
顺便说一句,您实际上不需要用零填充文件。您可以使用创建一个任意大小的空文件truncate -s 400m filesyst。不同之处在于,除非您实际将数据写入文件,否则它不会占用磁盘空间,因此您可以制作一个比整个磁盘驱动器大的虚拟文件系统,只要您不尝试实际填充它即可。您可以看到文件实际使用了多少空间du -h filesyst
psusi 2011年

Answers:


6

嗯...正确的方法是:

dd if=/dev/zero of=./filesyst bs=10485760 count=1
sudo losetup /dev/loop0 ./filesyst
sudo mkfs.ext3 /dev/loop0
sudo mount /dev/loop0 /tmp/lalla

它的工作原理是:

(0)romano-asus:~/tmp% ls -l /tmp/lalla
total 12
drwx------ 2 root root 12288 2011-12-20 22:21 lost+found
(0)romano-asus:~/tmp% df /tmp/lalla
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/loop0                9911      1121      8278  12% /tmp/lalla

您应该使用来免费检查第一个循环设备losetup -f

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.