• 1
  • 2
  • 3
  • 4
  • 5
Linux操作系统运维问题 首 页  »  帮助中心  »  云服务器  »  Linux操作系统运维问题
ECS-CentOS /etc/fstab格式简介
发布日期:2015-12-23 10:12:0

  /etc/fstab格式简介

  UUID=2cf9a36f-eafe-4f5a-ada1-cf3994dcd11f / ext4defaults,barrier=0 1 1

  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

  none /proc/xen xenfs defaults 0 0

  /dev/xvdb1 /mnt ext3 defaults 0 0

  1、 常见的类型

  1)磁盘分区

  # ll /dev/xvdb1

  brw-rw---- 1 root disk 202, 17 Aug 24 18:39 /dev/xvdb1

  这一列是块特殊文件(b开头)面向块的设备,而非我们通常理解的文件系统

  2)proc

  /proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。

  3)devpts

  也是内核虚拟文件,和proc类似,是Linux提供给管理员通过文件系统和内核进行沟通(读\写)的一种渠道。pts是远程虚拟终端。devpts即远程虚拟终端文件设备。通过/dev/pts可以了解目前远程虚拟终端的基本情况。因为这个设备文件并不代表真正的硬件,只是存在于内存中的虚拟设备。通过访问这样的文件,可以达到和内核即使通信的目的(读/写)。

  4)tmpfs

  tmpfs是一种虚拟内存文件系统,而不是块设备。是基于内存的文件系统,创建时不需要使用mkfs等初始化。它最大的特点就是它的存储空间在VM(virtual memory),VM是由linux内核里面的vm子系统管理的。linux下面VM的大小由RM(Real Memory)和swap组成,RM的大小就是物理内存的大小,而Swap的大小是由自己决定的。

  5)UUID

  UUID=2cf9a36f-eafe-4f5a-ada1-cf3994dcd11f / ext4defaults,barrier=0 1 1

  UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。

  如何查看本机的UID

  # cat /boot/grub/menu.lst |grep UUID|awk '{print$4}'|sort -u

  root=UUID=2cf9a36f-eafe-4f5a-ada1-cf3994dcd11f

  6)sysfs(这个本身是一个非常深奥的概念,在这里只能简单的介绍)

  Sysfs 是 Linux 2.6 所提供的一种虚拟文件系统。这个文件系统不仅可以把设备(devices)和驱动程序(drivers) 的信息从内核输出到 用户空间,也可以用来对设备和驱动程序做设置。sysfs 的目的是把一些原本在 procfs 中的,关于设备的部份,独立出来,以‘设备层次结构架构’(device tree)的形式呈现。这个文件系统由 Patrick Mochel 所写,稍后 Maneesh Soni 撰写 "sysfs backing store path",以降低在大型系统中对存储器的需求量。

  2、第二列

  这个没什么好陈述的就是将其加入至哪个目录位置,如/home或/,这其实就是在安装时提示的挂入点,这个挂载是受后续的type限制的,所以不能为所欲为的,比如:type 是proc 你就只能挂载到/proc目录

  3、第三列,这列是文件系统类型

  之前列举的 第3-6的文件类型是需要严格遵守的,UUID和磁盘分区的type是自定义的,常见的Linux的文件系统类型是ext2,ext3,ext4,xfs,fs, smbfs, iso9660, vfat, ntfs, swap和auto等, 'auto' 不是一个文件系统,而是让mount命令自动判断文件类型,特别对于可移动设备,软盘,DVD驱动器,这样做是很有必要的,因为可能每次挂载的文件类型不一致。文件系统是磁盘分区格式化后得到的 常见的mkfs命令比如:mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.msdos mkfs.vfat

  4、 可通过“man mount“看到完整版

  这部分是最有用的设置,也是最容易出问题的分区,需小心谨慎。

  它能使你所挂载的设备在开机时自动加载、使中文显示不出现乱码、限制对挂载分区读写权限。它是与mount命令的用法相关的,要想得到一个完整的列表,参考mount manpage.

  当前的挂载情况可以通过如下命令查看

  # cat /proc/mounts

  rootfs / rootfs rw 0 0

  proc /proc proc rw,relatime 0 0

  sysfs /sys sysfs rw,relatime 0 0

  devtmpfs /dev devtmpfs rw,relatime,size=497792k,nr_inodes=124448,mode=7550 0

  devpts /dev/pts devptsrw,relatime,gid=5,mode=620,ptmxmode=000 0 0

  tmpfs /dev/shm tmpfs rw,relatime 0 0

  /dev/xvda1 / ext4 rw,relatime,nobarrier,data=ordered 0 0

  none /proc/xen xenfs rw,relatime 0 0

  none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0

  /dev/mapper/vgbo-lvbo /mnt ext4 rw,relatime,data=ordered0 0

  常用的设置如下(defaults 使用默认设置。等于rw,suid,dev,exec,auto,nouser,async)

  noatime 关闭atime特性,提高性能,这是一个很老的特性,放心关闭,还能减少loadcycle

  defaults 使用默认设置。等于rw,suid,dev,exec,auto,nouser,async,具体含义看下面的解释。

  自动与手动挂载:

  auto 在启动或在终端中输入mount -a时自动挂载

  noauto 设备(分区)只能手动挂载

  读写权限:

  ro 挂载为只读权限

  rw 挂载为读写权限

  可执行:

  exec 是一个默认设置项,它使在那个分区中的可执行的二进制文件能够执行

  noexec 二进制文件不允许执行。千万不要在你的root分区中用这个选项!!!

  I/O同步:

  sync 所有的I/O将以同步方式进行

  async 所有的I/O将以非同步方式进行

  用户挂载权限:

  user 允许任何用户挂载设备。 Impliesnoexec,nosuid,nodev unless overridden.

  nouser 只允许root用户挂载。这是默认设置。

  ext2和ext3的设置下如下(官方介绍)

  ext2

  这是最传统的Linux标准文件系统。

  大多数选项的默认值都由文件系统的超级块(superblock)决定,并可以使用 tune2fs(8) 工具调整。

  acl|noacl

  是否支持 POSIX Access Control Lists(需要内核开启CONFIG_EXT2_FS_POSIX_ACL)

  bsddf|minixdf

  设置系统调用 statfs 的行为。

  minixdf 表示在"f_blocks"字段返回文件系统的总块数,

  bsddf(默认值)则表示要减去被 ext2 文件系统所用而无法再存储文件的块数。

  因此会出现如下的差异:

  % mount/k -o minixdf; df /k; umount /k

  Filesystem 1024-blocks Used Available Capacity Mounted on

  /dev/sda6 2630655 86954 2412169 3% /k

  % mount/k -o bsddf; df /k; umount /k

  Filesystem 1024-blocks Used Available Capacity Mounted on

  /dev/sda6 2543714 13 2412169 0% /k

  debug 在每次 (re)mount 的时候输出调试信息。

  errors={continue|remount-ro|panic}

  定义遇到错误时的行为:

  continue表示忽略错误,只将文件系统标记为不正确的,然后继续;

  remount-ro 重新只读挂载它;

  panic 则挂起系统。

  grpid|nogrpid

  定义新创建的文件应该获得怎样的GID。默认值是"nogrpid"。

  grpid 表示使用其父目录的GID;

  nogrpid 的含义如下:

  (1)如果新建文件的父目录没有 setgid 位,那么使用创建此文件的进程的GID。

  (2)如果新建文件的父目录带有 setgid 位,那么使用其父目录的GID;

  (3)并且如果新建的是目录时,还要同样设置 setgid 位。

  nouid32

  禁用 32-bit UID/GID 以保持与旧版内核互操作

  oldalloc|orlov

  oldalloc表示使用旧的块分配算法,orlov(默认)表示使用新的更快速的Orlov块分配算法。

  resgid=n

  resuid=n

  ext2会保留一定比例的可用空间(默认5%,参见mke2fs(8)和tune2fs(8))。

  这些选项决定了谁(拥有指定UID或者属于指定GID组的用户)可以使用这些保留的空间。

  sb=n 使用第 n 块而不是第一块作为超级块。在文件系统被损坏时,这样很有用。

  以前,超块在每8192个块处都会复制一个:1, 8193, 16385 ...如果文件系统很大,将被复制很多次。

  后来 mke2fs 便默认使用 -s(稀疏超块)选项,可以减少超块备份的数量。

  这样做意味着使用较新的 mke2fs 创建的ext2文件系统无法在 Linux-2.0.* 中以读写方式挂载。

  这里块编号的单位是1k。因此,如果想使用以4k为单位的文件系统中的第32768块,应当用"sb=131072"。

  user_xattr|nouser_xattr

  是否支持"user."扩展属性(需要内核开启CONFIG_EXT2_FS_XATTR)

  xip 如果可能尽量使用就地执行(execute in place)特性

  ext3

  ext3是ext2的日志加强版,除了上述ext2选项外,它还支持以下额外的选项

  journal=update

  更新 ext3 文件系统的日志为当前的格式。

  journal=inum

  如果一个日志已存在,这个选项将被忽略。否则,将用指定编号的inode保存日志文件,

  ext3将创建一个新日志,覆盖inode编号为inum的文件的原有内容。

  journal_dev=devnum/journal_path=path

  当外部日志设备的主/次设备号变化的时候,这个选项可以让用户重新指定日志的存储位置。

  这个位置既可以是"XXxx"十六进制形式表示的设备,也可以是 path 指定的设备节点文件。

  norecovery/noload

  在挂载时不读取 ext3 文件系统的日志。用于挂载已经损坏的文件系统。

  但是跳过文件系统日志重放,可能会导致各种错误。

  data={journal|ordered|writeback}

  指定文件数据的日志模式。元数据(metadata)总是被记入日志。

  要在根文件系统上指定日志模式,那么就必须使用例如"rootflags=data=journal"这样的内核引导参数

  journal

  在写入文件系统之前,所有数据都首先被提交到日志中。这是最安全、性能最低的模式。

  ordered

  这是默认的模式,所有数据在它的元数据被提交给日志之前,被强制直接写入文件系统。

  writeback

  写入顺序不定,数据可能在元数据已被提交给日志之后写入文件系统。这是效率最高的方式。

  它保证了文件系统内部的一致性,但是在崩溃和恢复后文件内可能出现旧数据。

  data_err={ignore|abort}

  在 ordered 日志模式下,遇到文件内容的数据出错时如何处理。

  默认值 ignore 忽略错误,但是打印出错误消息,而 abort 则直接退出。

  barrier=0 / barrier=1

  开启/关闭barrier特性。barrier=0 关闭,barrier=1 开启。ext3 默认关闭此特性。

  磁盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,

  因此文件系统必须在日志数据写入磁盘之后才能写 commit 记录,

  若 commit 记录写入在先,而日志有可能损坏,那么就会影响数据完整性。

  barrier 强制日志以正确的次序提交到磁盘,这样就可安全的使用磁盘上的内部缓存,代价是降低一些性能。

  除非你的硬盘有后备电池之类的装载,请务必开启 barrier 特性,否则意外掉电可能会造成数据错误。

  commit=nrsec

  每 nrsec 秒向磁盘上刷新一次数据和 metadata ,默认值是5秒,0表示默认值。

  这样,即使忽然掉电,你也最多只损失最近 nrsec 秒的数据。较大的 nrsec 值带来更好的性能。

  5 秒或者更小的数字对性能有显著的不利影响,但是能让损失降到最低。

  5、备份命令:dump utility用来决定是否做备份的. dump会检查entry并用数字来决定是否对这个文件系统进行备份。允许的数字是0和1。如果是0,dump就会忽略这个文件系统,如果是1,dump就会作一个备份。大部分的用户是没有安装dump的,所以对他们而言这个entry应该写为0。

  6、是否以fsck检验扇区:启动的过程中,系统默认会以fsck检验我们的 filesystem 是否完整 (clean)。 不过,某些 filesystem 是不需要检验的,例如内存置换空间 (swap) ,或者是特殊文件系统例如 /proc 与 /sys 等等。fsck会检查这个头目下的数字来决定检查文件系统的顺序,允许的数字是0, 1, 和2。0 是不要检验, 1 表示最早检验(一般只有根目录会配置为 1), 2 也是要检验,一般建议,根目录配置为1,其他的要检验的filesystem都配置为 2 即可。