我正在尝试制作一个 40GB 的 ext3 本地环回文件系统。此环回文件系统存储在我的 NAS 上,该 NAS 使用 NFS 安装在 Ubuntu Precise 12.04 x64 机器上。该机器对 NAS 具有读写权限。
我已通过运行 创建了一个 40GB 的文件以供使用。该文件已成功创建,因此我通过运行dd if=/dev/zero of=/media/vps/Ironman.ext3 bs=1024 count=40000000
将其安装为 中的环回系统。/dev/loop0
sudo losetup /dev/loop0 /media/vps/Ironman.ext3
我现在尝试通过运行将其格式化为 ext3 文件系统sudo mkfs -t ext3 -q /media/vps/Ironman.ext3
。但是,每当我运行此命令时,我都会得到以下输出:
mke2fs 1.42 (29-Nov-2011)
/media/vps/Ironman.ext3 is not a block special device.
Proceed anyway? (y,n) y
/media/vps/Ironman.ext3: Permission denied while setting up superblock
我该如何解决这个问题,并将环回设备格式化为 ext3?
更新 1
我刚刚尝试使用环回设备对其进行格式化,如下所示。但是,我仍然被拒绝权限。您可以在第一组中看到该文件已被安装。
danielsgroves@precise64:/dev$ sudo losetup /dev/loop0
/dev/loop0: [0015]:26378243 (/media/vps/Ironman.ext3)
danielsgroves@precise64:/dev$ sudo mkfs -t ext3 -q /dev/loop0
/dev/loop0: Operation not permitted while setting up superblock
更新 2
带有详细输出
danielsgroves@precise64:/dev$ sudo mkfs -t ext3 -v /dev/loop0
mke2fs 1.42 (29-Nov-2011)
fs_types for mke2fs.conf resolution: 'ext3'
/dev/loop0: Operation not permitted while setting up superblock
答案1
您需要在循环设备上创建文件系统,而不是支持循环设备的文件。(这就是 mke2fs 发出的“不是块特殊设备”警告的原因。)支持文件只是内核中“循环设备”代码的考虑因素,除了在命令中,您不会直接使用它losetup
。“权限被拒绝”错误可能很可能是因为您试图直接修改当前活动循环设备的支持文件;这样做很容易造成各种破坏,因此内核可能会(理智地)阻止您以 root 身份执行此操作。
运行 后losetup
,改用sudo mkfs -t ext3 -q /dev/loop0
即可正常工作。然后挂载到/dev/loop0
您喜欢的任何位置(例如sudo mount /dev/loop0 /media/ironman
)。
如果您考虑 losetup 可用的其他选项,包括--offset
和--sizelimit
(查看手册页以获取更多示例),这可能会变得更加清晰。
答案2
2013 年可能还不是这样,但现在 mkfs.ext* 可以在非特权环境下运行文件。因此,在创建循环设备之前先格式化文件,然后创建循环设备并挂载它。
答案3
好的,这条消息很旧了,但没有答案。
我刚刚遇到了同样的问题。对我来说,问题是通过 NFS,root 用户没有读取和写入文件的特殊权限。
您可以做的一件事是将文件的所有者更改为 root,或者您可以将其放在 root 组中并使其可写。