生活哲学

使用 fstab 控制 Linux 系统

在本文中,我将向您展示如何使用 fstab 来控制您的 Linux 系统。

了解 fstab

/etc/fstab 文件允许您控制在您的 Linux 系统启动时挂载的文件系统,包括 Windows 分区和网络共享。您还可以使用它来控制外部存储设备(如 USB 和外部硬盘驱动器)的连接点。在本文中,我将向您展示如何使用它来控制您的 Linux 系统。

/etc/fstab-适用于所有 Linux 计算机,控制此处挂载的 Linux 文件系统。

它的教程页面,man fstab,以信息开头:

fstab是其他程序只读的程序,不允许写;系统管理员应负责正确创建和维护此文件。

然而,如今 fstab 通常由安装程序或程序创建。所以你不应该太担心你的“责任”。

但如果你想深入研究fstab,你还是需要了解如何以及如何调整它。

一个典型的 fstab

大多数现代 Linux 发行版安装的 fstab 文件看起来有点吓人。这是来自 Ubuntu 系统的 fstab 文件:

 #/etc/fstab:静态文件系统信息。 
#
# 使用 'blkid-o value-s UUID' 打印设备的通用唯一标识符
# ;服装 này được sử dụng với UUID=như một thêm robust để để tên
# devices mà hoạt động hiện thời nếu đĩa này thêm và gỡ bỏ。参见 fstab (5)。
#
#
proc/proc proc defaults 0 0
#/was on/dev/sda6 during installation
UUID=2ad9188b-9d1c-4102-bf24-4b5ad456a701/ext3 errors=remount-ro 0 1
#/boot was on/dev/sda1 during installation
UUID=3943c247-16e9-405b-9fda-87684b02cc4e/boot ext2 defaults 0 2
# swap was on/dev/sda7 during安装
UUID=15825096-aef7-41d6-b53a-c86aec2ebde8 none swap sw 0 0
/dev/scd0/media/cdrom0 udf, iso9660 user, noauto, exec, utf8 0 0

下图1显示了各列的含义。

使用fstab控制Linux系统的图片1
图1

设备和 UUID

让我们从设备开始:UUID=2ad9188b-9d1c-4102-bf24-4b5ad456a701。这是什么意思?

以前,fstab 设备字段要简单得多,比如/dev/hda3 用于第一个 IDE 磁盘上的第三个分区。

然而,系统正变得越来越复杂。 USB 和 SATA 磁盘都使用最初为 SCSI 编写的 sd 磁盘驱动程序。但是,无法预测它们的顺序。如果有多个 USB 和 SATA 驱动器,或者如果您经常添加或移除驱动器,您可能会发现您的原始文件系统今天出现在 sda2 上,但第二天出现在 sdc2 上.

为了克服这种混淆,fstab 可以使用“通用唯一标识符”来识别每个文件系统。

但是,我能找出哪个磁盘分区是用UUID映射的吗?可以在 fstab 中看到一些注释:

 #/was on/dev/sda6 during installation 
UUID=2ad9188b-9d1c-4102-bf24-4b5ad456a701/ext3 errors=remount-ro 0 1

但是,您不应该完全信任这些注释。很可能你的分区在sda6上,但不确定。

为了安全,我们需要用blkid命令检查当前值:

 $ blkid 
/dev/sda1: UUID="702be669-1Aee-4128-8c57-60b58bc91f59" TYPE="ext2"
/dev/sda3: UUID="615aaed5-0dba-4204-9717-c9a00ff411ea" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda5: UUID="0c5121ff-331a-4ae2-b8be-e0b10bcae62f" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda6 : UUID="d2a1e4aa-6589-4846-ba58-107d32a25375" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda7: UUID="1533cdc3-635f-4552-818b-1fadce9ea7f8" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda8: UUID="b24fd645-7c28-431b-883d-0a6cf03340ed" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda9: TYPE="swap"

$ blkid-o value-s UUID/dev/sda8
b24fd645-7c28-431b-883d-0a6cf03340ed

你也可以使用/dev/disk/by-uuid

 $ ls-l/dev/disk/by-uuid 
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 0c5121ff-331a-4ae2-b8be-e0b10bcae62f->././sda5
lrwxrwxrwx 1 根 10 2010-04-18 09:06 615aaed5-0dba-4204-9717-c9a00ff411ea->././sda3
lrwxrwxrwx 1 根 10 2010-04-18 09:06 1533cdc3-635f-4552-818b-1fadce9ea7f8->././sda7
lrwxrwxrwx 1 root 10 2010-04-18 09:06 b24fd645-7c28-431b-883d-0a6cf03340ed->././sda8
lrwxrwxrwx 1 根 10 2010-04-18 09:06 ca8ec122-33c7-4765-bd65-78a15c58def3->././sda2
lrwxrwxrwx 1 根 10 2010-04-18 09:06 d2a1e4aa-6589-4846-ba58-107d32a25375->././sda6
lrwxrwxrwx 1 根 10 2010-04-18 09:06 702be669-1Aee-4128-8c57-60b58bc91f59->././sda1

有些发行版不使用 UUID,而是可以标记(label)每个文件系统:

 LABEL=//ext3 默认 1 1 

这种方法更容易阅读,但有点混乱。如果您在不同的分区上安装一些 Linux 发行版,您可能会遇到一些具有相同标签的分区。那么如何区分哪个分区被标注了呢?

对 UUID 和标签感到困惑?您不必使用它们。如果有一个简单的磁盘设置,简单的语法仍然有效:

/dev/sda6/ext3 错误=remount-ro 0 1 

安装点和文件系统类型

接下来的两个区域非常简单。挂载点是你想尝试文件系统的任何地方:/、/home、/boot 或任何地方。它必须是首先存在的空目录。如果没有,当你在上面安装东西时,里面的任何东西都会被隐藏起来。

Type (type) 是文件系统类型,如 ext2, ext3 , Windows 的文件系统 vfatntfsiso9660 用于 CD。您也可以使用 auto 命令,Linux 会尝试猜测文件系统类型。 man filesystems 有一个支持的文件系统列表。

选项

options 部分是最复杂的部分。这是您指定“其他问题”的地方-任何不适合其他部分的内容。如果没有具体的选项,只需要使用默认即可。

您可以根据需要列出许多选项,用逗号区分它们。例如,CDROM 可以使用 ro、user、noauto、exec,其中:

  1. ro 是只读设置。
  2. 用户表示它不需要root权限来挂载:任何用户都可以键入mount/media/cdrom0,如果你没有附加任何服务的话。
  3. noauto 表示系统在启动时不会尝试挂载它-对于外部设备来说这是个好主意。
  4. exec 指示系统允许您从该文件系统运行程序。否则,它将在 CDROM 和 Windows 文件系统上被禁用。

在 Windows FAT 文件系统上,如果你使用 exec,你可能想要 fmask=111: Windows 文件系统没有权限,所以如果你想运行程序,请确保设置了可执行位.

把它们放在一起,你可以在不自动连接 USB 设备的系统上创建一个有用的条目:

/dev/sdb1/stuff vfat user, noauto, exec, fmask=111 0 0 

如果您的设备显示在/dev/sdb1以外的地方,请根据需要进行调整。然后 sudo mkdir/stuff,现在每当你插入相机、mp3 播放器或 USB 时,你都可以通过输入 mount/stuff 来挂载它。

要获取完整的选项列表,请参阅 man mount 并找到 FILESYSTEM INDEPENDENT MOUNT OPTIONS 和 FILESYSTEM SPECIFIC MOUNT OPTIONS 部分。

转储并通过

Dump 表示您希望文件系统备份的频率。大多数人不使用此字段,但如果您正在运行自动备份软件,则可能需要使用它。

Pass 表示在挂载前应检查设备的 fsck 时间和时间。一般来说,你应该使用 1 来表示根文件系统,2 来表示所有其他挂载的文件系统,0 来表示默认未挂载的文件系统。

查看更多:

  1. 4 在 Linux 中快速访问终端
  2. Linux 用户网络操作指南:要知道的 11 个命令

相关资讯

评论

回复