什么是 Linux fstab 文件,它是如何工作的?
已发表: 2022-01-29如果您运行的是 Linux,那么您可能需要更改文件系统的某些选项。 熟悉 fstab 可以让整个过程变得容易很多,而且比你想象的要容易得多。
什么是 Fstab?
Fstab 是您操作系统的文件系统表。 如果您想查看文件系统,请务必查看我们的另一篇文章,HTG 说明:您应该选择哪种 Linux 文件系统? 在过去,这是系统自动挂载文件的主要方式。 如今,您可以插入任何类型的 USB 驱动器,它会像在 Windows 和 Mac OS 中一样在 Nautilus 中弹出,但曾几何时,您必须使用“挂载”命令。 这适用于 DVD、CD 甚至软盘(还记得那些吗?)。
那时,您唯一的选择是告诉计算机,只要插入特定设备,它就应该自动安装在特定位置。 这就是 fstab 的用武之地,它很棒。 假设您交换了 IDE 或 SCSI 控制器上的硬盘。 计算机可能会以不同的顺序加载文件系统,这可能会搞砸事情。 Fstab 被配置为查找特定的文件系统,并每次都以所需的方式自动挂载它们,从而防止发生无数的灾难。
您的 Fstab 文件
fstab 文件位于:
/etc/fstab
让我们看看我的 fstab 文件,好吗?
您肯定会看到差异,但如果您想使用自己的 fstab,只需将此命令弹出到终端:
如果您对 nano 不满意,也可以使用 gedit。
显而易见的选择
您会注意到所有条目都以 UUID 开头。 您可能还记得在我们之前的一篇文章“如何为您的 Linux PC 选择分区方案”中看到过这一点,但无论如何我们都会再次解释它。 在格式化期间,每个文件系统都被分配了一个通用唯一标识符,并将其带入坟墓。 由于无法更改,因此这是选择要挂载的文件系统的理想方式,尤其是对于重要的文件系统。 假设您的 /home 分区位于第二个硬盘驱动器上,而您最终将其移动到外部硬盘驱动器上; fstab 仍会找到该分区并正确挂载它,从而避免启动失败。 如果您切换到(或被卡住)使用设备标识符来选择分区的旧方法(即 /dev/sda1),则此优势将消失,因为硬盘驱动器和分区是由它们的控制器计算的,因此可以更改。
编辑:在 fstab 文件中使用 UUID,虽然对大多数家庭用户来说很方便,但确实有一些重要的警告。 这在使用“组装”或“基于网络”的设备时不起作用。 如果您是高级用户,或者计划将来使用软件 RAID 之类的东西,最好不要使用 UUID。
fstab 的下一部分与所有后续部分一样,由空格或制表符或它们的组合分隔。 在这里,您将找到挂载点。 如您所见,我有一个根 (/) 挂载点、一个交换空间和两个手动添加的共享网络存储驱动器。 如果要向 fstab 添加条目,则必须在重新启动计算机之前手动创建挂载点(更改生效)。
接下来是识别分区上文件系统类型的部分。 很多,比如 ext2/3/4、ReiserFS、jFS 等都是 Linux 原生读取的。 您的特定系统可能仍需要安装特定的软件包才能读取和写入它们。 完美的例子是我的 NTFS 分区; 你可以看到我正在使用 ntfs-3g 驱动程序来访问它们。
更可怕的东西
接下来的几个部分通常会吓跑新手,但它们实际上并没有那么复杂。 有很多可用的选项,但也有一些非常常见的选项。 让我们来看看它们。 (默认选项是第一个,然后是替代选项,但由于 Linux 发行版可能非常不同,您的里程可能会有所不同。)
- auto/noauto:指定分区是否应在启动时自动挂载。 您可以使用“noauto”阻止特定分区在启动时挂载。
- exec/noexec:指定分区是否可以执行二进制文件。 如果您有一个可以编译的暂存分区,那么这将很有用,或者如果您在单独的文件系统上有 /home 的话。 如果您担心安全性,请将其更改为“noexec”。
- ro/rw:“ro”是只读的,“rw”是读写的。 如果您希望能够以用户而不是 root 用户身份写入文件系统,则需要指定“rw”。
- 同步/异步:这个很有趣。 “同步”强制在执行命令时立即发生写入,这对于软盘(你是多少个极客?)和 USB 驱动器来说是理想的,但对于内部硬盘来说并非完全必要。 “异步”所做的是允许命令在经过的时间段内执行,可能是当用户活动停止等时。 是否曾经收到一条消息,询问您“等待将更改写入驱动器”? 这通常是原因。
- nouser/user:这允许用户拥有挂载和卸载权限。 一个重要的注意事项是“user”自动暗示“noexec”,因此如果您需要执行二进制文件并仍然以用户身份挂载,请务必明确使用“exec”作为选项。
这些选项用逗号分隔,没有空格,可以按任意顺序排列。 如果您不确定默认值,可以明确说明您的选项。 从临时位置(如 USB)挂载的东西不会遵循这个基本模式,除非您在 fstab 中为它们创建条目(通过 UUID)。 当您希望外部硬盘驱动器始终以特定方式安装时,这很方便,因为普通的拇指驱动器等不会受到影响。
可以看到我的两个存储驱动器都开启了用户挂载权限,开启了读写权限,并且开启了自动挂载。 我编译的软件不多,但当我编译时,我会在列表末尾添加“exec”选项。
倾倒和 Fscking
下一个选项是二进制值(“0”表示假,“1”表示真)用于“倾销”。 对于系统出现故障的情况,这是一种非常过时的备份方法。 您应该将其保留为“0”。

最后一个选项是“通过”的数值。 这告诉系统 fsck 的顺序(发音为你喜欢的),或执行文件系统检查。 如果磁盘的选项为“0”,它将被跳过,就像我的 NTFS 格式的存储驱动器一样。 根文件系统应始终为“1”,其他文件系统可以放在后面。 这最适用于 ext3/4 和 ReiserFS 等日志文件系统。 FAT16/32 和 ext2 等较旧的文件系统可能需要一段时间,因此最好关闭它们的 fscking 并自己定期进行。
既然您知道自己在做什么,那么您可以疯狂地使用自动安装等。 当您有大量需要管理的分区时,这非常方便。 永远记得做备份,以防出现问题,但玩得开心,一定要在评论中留下你的经验!
Linux 命令 | ||
文件 | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look ·字符串·类型·重命名· zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm | |
流程 | 别名· screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat ·超时·墙·是·杀死·睡眠· sudo · su ·时间· groupadd · usermod ·组· lshw ·关机·重启·暂停·关机· passwd · lscpu · crontab ·日期· bg · fg | |
联网 | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
相关:适合开发人员和爱好者的最佳 Linux 笔记本电脑