我有一个安装了 Ubuntu 14.04.5 的设备,它有一个带有 ext4 文件系统的硬盘驱动器。
通过阅读Ext4 Filesystem文档,我了解到默认数据模式ordered
仅保护元数据。在我的项目中,我们希望将其更改journal
为同时保护文件数据,因为数据安全具有更高的价值。
我尝试的第一件事是修改/etc/fstab
文件。我试图改变
UUID=<UUID> / ext4 errors=remount-ro 0 1
至
UUID=<UUID> / ext4 errors=remount-ro,data=journal 0 1
通过附加data=journal
到选项字段。
但是,当我重新启动设备时,我最终收到一条错误消息,说cannot change data mode on remount
. 我检查并看到了有关使用数据模式dmesg
安装驱动器的较早消息。ordered
在很长一段时间内,我认为/etc/fstab
它是用来覆盖默认安装选项的,因此驱动器只安装一次。但现在看起来不对:驱动器是使用其默认安装选项安装的,然后/etc/fstab
被拾取重新安装。
我的问题是:
- 这个“mount-remout”过程是系统的设计吗?我阅读了
Fstab
wiki 页面,但没有看到它提到“mount-remount”的事情。 - 如果
/etc/fstab
真的是用来重挂载的,第一次挂载是在引导过程的哪一步?它在 中实施/etc/init.d
吗?我确实在/etc/init.d
调用umountfs
和中看到了一些脚本umountroot
,但是,浏览它们的内容,它们看起来并不相关。
来自
man ext4
:data=ordered
从您的 fstab 行中删除并改为/etc/default/grub
编辑。在/etc/default/grub
换行至
运行
sudo update-grub
并重新启动。使用 /etc/fstab 时
如果您运行
sudo strace -e open,openat mount -o remount,rw /
,您会看到该命令实际上是 open/etc/fstab
。这是您将看到的最常见的命令,经常在有关使用恢复 shell 的文章中引用。还要引用sourcejedi的答案(来自
mount(8)
手册):但是,这并不意味着
/etc/fstab
总是使用它。特别是当您还指定设备文件时;参考mount(8)
手册:这是有道理的,因为
/dir
可能是任意的 - 将设备重新安装到不同的安装点。在引导
/etc/fstab
时挂载文件系统时也没有引用/
内核对/etc/fstab
. 引用psusi 的回答:不需要 fstab 的文件系统
另请注意,Linux 内核还有其他驻留在内存中的文件系统——这些文件系统通常对用户不可用,其中一些根本没有挂载点,而有些则向用户公开。内核不必参考
/etc/fstab
这些。这方面的例子是/proc
- 它是一个虚拟文件系统,主要公开有关进程的信息,以及一些关于硬件和系统的真正应该存在的东西/sys
- 另一个虚拟文件系统。