6

Linux命令--自动挂载文件/etc/fstab详解和应用

 2 years ago
source link: https://www.cnblogs.com/ylnic/archive/2011/05/17/2048885.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

环境:CentOS 6.5 & CentOS 7.5
一、/etc/fstab文件的作用
  某些时候当Linux系统下增加新的磁盘或划分了新的分区后,磁盘分区被手动挂载之后需要把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新手动挂载。Linux系统开机时会主动读取 /etc/fstab 这个文件中的内容,根据文件里面的配置自动挂载磁盘。只要将磁盘的挂载信息写入这个文件中,每次开机启动后会自动进行挂载。
  Linux的文件结构是单个的树状结构。最顶部的为根目录,即/。在根目录下,分为多个子目录,包括/bin、/boot、/dev、/etc、/home、/lib、/media、/mnt、/opt、/proc、/root、/sbin、/tmp、/usr 和 /var等。因此 Linux 分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作,而fstab正是负责这一配置。显然,根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。Linux分区交换也需要独立使用一个分区,因此,安装一个Linux至少需要两个分区。(事实上,只使用一个分区安装Linux也是可能的,而且,如果电脑的物理内存足够大,交换分区并不是必须的)。

二、挂载的限制
  1、根目录 / 是必须挂载的,而且一定要先于其他mount point被挂载。因为mount是所有目录的根目录,其他目录都是由根目录 / 衍生出来的;
  2、挂载点必须是已经存在的目录;
  3、挂载点的指定可以任意,但必须遵守必要的系统目录架构原则;
  4、所有挂载点在同一时间只能被挂载一次;
  5、所有分区在同一时间只能挂载一次;
  6、若进行卸载,必须将工作目录退出挂载点(及其子目录)之外。

三、/etc/fstab 文件中的参数

[root@localhost ~]#cat /etc/fstab

CentOS 6.5中 /etc/fstab 文件的内容:

复制代码
#
# /etc/fstab
# Created by anaconda on Wed Apr 18 18:04:25 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=90395c67-e4c2-4ce7-83e0-55d20c5b8f17 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_home /home                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
复制代码

CentOS 7.5中 /etc/fstab 文件的内容:

复制代码
#
# /etc/fstab
# Created by anaconda on Wed Jun  6 23:29:36 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=7070f200-e9f2-4711-bfea-374aab5f1579 /                       xfs     defaults        0 0
UUID=d2da1caf-e361-47c8-9be1-6096c1dc7181 /boot                   xfs     defaults        0 0
UUID=6981-15EA          /boot/efi               vfat    umask=0077,shortname=winnt 0 0
UUID=ed17d9e7-9597-4ad4-a1a9-e31b8963cfed /home                   xfs     defaults        0 0
UUID=44c4c32f-c1b1-458e-b35d-9f33befad0db swap                    swap    defaults        0 0
/dev/sda    /data1      xfs     defaults,noatime,nodiratime,nobarrier  0 0
/dev/sdb    /data2      xfs     defaults,noatime,nodiratime,nobarrier  0 0
复制代码

 文件 /etc/fstab 中的内容共有六列:

第一列:Device,磁盘设备文件或者该设备的Label或者UUID
  查看UUID的命令是blkid /dev/sda 或 
ls -l /dev/disk/by-uuid/ |grep sda |awk '{print $9}' (ls不需要root权限)

[root@localhost ~]# blkid
/dev/sda1: UUID="90395c67-e4c2-4ce7-83e0-55d20c5b8f17" TYPE="ext4" 
/dev/sda2: UUID="L2l3F7-PcM9-7dEd-BL3Y-NayF-twdR-oRXI5m" TYPE="LVM2_member" 
/dev/mapper/VolGroup-lv_root: UUID="8585329f-3d8f-40cb-90d1-61f09dc417dd" TYPE="ext4" 
/dev/mapper/VolGroup-lv_swap: UUID="aeced0d8-13b4-43f2-8b84-48aa5a443d5c" TYPE="swap" 
/dev/mapper/VolGroup-lv_home: UUID="7e229443-1bd9-433b-9518-53bf80604f65" TYPE="ext4" 

  使用设备名称(/dev/sda)来挂载分区时是被固定死的,一旦磁盘的插槽顺序发生了变化,就会出现名称不对应的问题。因为这个名称是会改变的。至于UUID,每个分区被格式化以后都会有一个UUID作为唯一的标识号。使用UUID挂载的话就不用担心会发生错乱的问题。
  UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得)。

第二列:Mount point,设备的挂载点,就是要挂载到哪个目录下;
第三列:filesystem,磁盘文件系统的格式,包括ext2ext3reiserfsnfsvfat

第四列:parameters,文件系统的参数,通常这个参数的值是defaults;

Async/sync

设置是否为同步方式运行,默认为async

auto/noauto 

 此文件系统是否被自动挂载。默认为auto

rw/ro        

 是否以读写模式或者只读模式挂载

exec/noexec        

 限制此文件系统内是否能够进行"执行"的操作

user/nouser

是否允许用户使用mount命令挂载

suid/nosuid

是否允许SUID的存在

Usrquota

启动文件系统支持磁盘配额模式

Grpquota

启动文件系统对群组磁盘配额模式的支持

Defaults

同时具有rw,suid,dev,exec,auto,nouser,async 等默认参数的设置

 

第五列:能否被dump备份命令作用,dump是一个用来作为备份的命令,通常这个参数的值为 或者 1;

         0

代表不要做dump备份

         1

代表要每天进行dump的操作

         2

代表不定日期的进行dump操作

 

第六列是否检验扇区,开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean),通常这个参数的值为 0 或 2;

0

不要检验

1

最早检验(一般根目录会选择)

2

1级别检验完成之后进行检验


四、修改/etc/fstab文件很关键,如果修改错误,很可能就无法正常启动进入系统。
  因此,如果希望将新分区 /dev/sda3 (用UUID代替)挂载在 /home/data 目录下,则只需在fstab文件中加入一行:
/dev/sda3       /home/data              ext4      defaults      0       0

参考或来源:
http://blog.51cto.com/ckc620/394238


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK