/etc/fstab 官方文档
- 1什么是fstab
- 2fstab文件示例
- 3fstab 文件组成
- 4文件系统标识
- 4.1Kernel naming
- 4.2UUID
- 4.3Label
- 5建议
- 5.1atime 参数
- 5.2tmpfs
- 5.2.1修正因 /var 分区造成关机异常问题
- 5.3解决包含有空格的路径名无法使用的问题
- 5.4外部设备
- 6用fstab自动挂载FAT32和NTFS分区
- 7相关内容
- 8参考资料
什么是fstab
文件fstab包含了你的电脑上的存储设备及其文件系统的信息。它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的唯一文件。
这个文件的全路径是/etc/fstab。它只是一个文本文件,你能够用你喜欢的编辑器打开它,但是必须是root用户才能编辑它。同时fsck、mount、umount的等命令都利用该程序。
具体来说: 用fstab可以自动挂载各种文件系统格式的硬盘、分区、可移动设备和远程设备等。 对于Windows与arch双操作系统用户,用fstab挂载FAT格式和NTFS格式的分区,可以在Linux中共享windows系统下的资源。
fstab文件示例
现在让我们看一下一个典型的fstab文件:
# <file system> <dir> <type> <options> <dump> <pass> none /dev/pts devpts defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/cdrom /media/cd iso9660 ro,user,noauto,unhide 0 0 /dev/dvd /media/dvd udf ro,user,noauto,unhide 0 0 /dev/fd0 /media/fl auto user,noauto 0 0 /dev/hda1 swap swap defaults 0 0 /dev/hda4 / ext3 defaults 0 1 /dev/hda3 /home xfs rw,suid,exec,auto,nouser,async 0 2
下面是另外一个例子,其中使用了更多的挂载选项,并以 LABEL= 的方法来作为可挂载设备的标识。
proc /proc proc rw,relatime 0 0 udev /dev devtmpfs rw,nosuid,relatime,size=10240k,nr_inodes=94876,mode=755 0 0 sys /sys sysfs rw,relatime 0 0 devpts /dev/pts devpts rw,relatime,mode=600,ptmxmode=000 0 0 none /dev/shm tmpfs defaults,rw,relatime,size=400M 0 0 tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 LABEL=BOOT /boot ext2 defaults 0 1 LABEL=ROOT / ext4 defaults,noatime 0 1 LABEL=USR /usr ext4 defaults,noatime 0 0 LABEL=VAR /var ext4 defaults,noatime 0 0 LABEL=OPT /opt ext4 defaults,noatime 0 0 LABEL=HOME /home ext4 defaults,noatime 0 0
fstab 文件组成
让我们对fstab的用法进行一个详细的了解。/etc/fstab由下面的 fields 组成 (fields之间以空格或tab分开):
<file system> <dir> <type> <options> <dump> <pass>
- <file systems> - 存储设备的标识 (i.e. /dev/sda1).
- <dir> - 告诉 mount 命令应该将文件设备挂载到哪里。
- <type> - 定义了要挂载的设备或是分区的文件系统类型,支持许多种不同的文件系统,如 ext2, ext3, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap 以及 auto。 'auto' 类型使 mount 命令对这文件系统类型进行猜测,这对于如 CDROM 和 DVD 之类的可移动设备是非常有用的。
- <options> - 定义了不同文件系统的特殊参数,不同文件系统的参数不尽相同。其中一些比较通用的参数有以下这些:
-
- auto - 文件系统将在启动时,或被键入了 'mount -a' 的命令时自动被挂载。
- noauto - 文件系统只在你的命令下被挂载。
- exec - 允许执行此分区的二进制文件(默认值)。
- noexec - 不允许此文件系统上的二进制文件被执行。
- ro - 以只读模式挂载文件系统。
- rw - 以读写模式挂载文件系统。
- sync - I/O 同步进行。
- async - I/O 异步进行。
- flush - 指定 FAT 格式更加频繁地刷新数据,使得如复制对话框或是进度条持续到文件被写入到磁盘中。
- user - 允许任意用户来挂载这一设备(同时有 noexec, nosuid, nodev 参数的属性)。
- nouser - 只能被 root 挂载(默认值)。
- defaults - 默认的挂载设置(即 rw, suid, dev, exec, auto, nouser, async)。
- suid - 允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限。
- nosuid - 禁止 suid 操作和 sgid 位。
- noatime - 不要更新文件系统上 inode access 记录,可以提升性能(参见 atime_options)。
- nodiratime - 不要更新文件系统上 directory access inode 的记录,可以提升性能(参见 atime_options)。
- relatime - 实时更新 inode access 记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断如 mutt 或其它程序探测文件在上次访问后是否被修改的进程。),可以提升性能(参见atime_options)。
- <dump> dump utility 用来决定何时作备份. 安装之后 ( ArchLinux 默认未安装 ), dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 <dump> 应设为 0。
- <pass> fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。
文件系统标识
在 /etc/fstab配 置文件中你可以以三种不同的方法表示文件系统:通过 kernal naming 描述, 通过 UUID 或者通过 label。使用 UUID 或是 label 的好处在于它们与磁盘顺序无关。如果你在 BIOS 中改变了你的存储设备顺序,或是重新拔插了存储设备,或是因为一些 BIOS 可能会随机地改变存储设备的顺序,那么用 UUID 或是 label 来表示将更有效。
Kernel naming
你可以使用 fdisk 来获得 kernal naming 表示:
# fdisk -l ... Device Boot Start End Blocks Id System /dev/sda1 * 1 2550 20482843+ b W95 FAT32 /dev/sda2 2551 5100 20482875 83 Linux /dev/sda3 5101 7650 20482875 83 Linux /dev/sda4 7651 121601 915311407+ 5 Extended /dev/sda5 7651 10200 20482843+ 83 Linux /dev/sda6 10201 17849 61440561 83 Linux /dev/sda7 17850 18104 2048256 82 Linux swap / Solaris /dev/sda8 18105 18113 72261 83 Linux /dev/sda9 18114 121601 831267328+ 7 HPFS/NTFS
UUID
UUID 由生成工具 (mkfs.*) 在创建文件系统时生成。blkid 命令将显示已挂载设备的 UUID 值:
# blkid /dev/sda1: UUID="76E4F702E4F6C401" LABEL="vista" TYPE="ntfs" /dev/sda2: LABEL="Root" UUID="24f28fc6-717e-4bcd-a5f7-32b959024e26" TYPE="ext4" /dev/sda6: LABEL="Home" UUID="03ec5dd3-45c0-4f95-a363-61ff321a09ff" TYPE="ext4" /dev/sda7: LABEL="swap" UUID="4209c845-f495-4c43-8a03-5363dd433153" TYPE="swap" /dev/sda10: UUID="0ea7a93f-537c-4868-9201-0dc090c050e4" TYPE="crypto_LUKS" /dev/mapper/sda10: UUID="d3560bbb-b5d5-46c5-a7a8-434c885217c7" UUID_SUB="425ab275-d520-4636-8d16-55fb2b957971" TYPE="btrfs"
一个使用 UUID 标识的 /etc/fstab 配置文件例子如下所示:
# <file system> <dir> <type> <options> <dump> <pass> none /dev/pts devpts defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/cdrom /media/cd iso9660 ro,user,noauto,unhide 0 0 /dev/dvd /media/dvd udf ro,user,noauto,unhide 0 0 /dev/fd0 /media/fl auto user,noauto 0 0 UUID=24f28fc6-717e-4bcd-a5f7-32b959024e26 / ext4 defaults,noatime 0 1 UUID=03ec5dd3-45c0-4f95-a363-61ff321a09ff /home ext4 defaults,noatime 0 2 UUID=4209c845-f495-4c43-8a03-5363dd433153 swap swap defaults 0 0
Label
使用这一方法,设备或是分区一定要被标识。标识设备你可以使用一些通用工具,如 e2label 对 ext2,ext3, ext4分区进行标记。gparted也是一个不错的工具。需要注意的是,并不是所有格式的分区都支持标记 (如 FAT 文件系统就不支持标记)。
在尝试对设备进行标识时设备不能被挂载。你可以通过一个 LiveCD/DVD/USB 启动,用如 gparted 或是e2label 来对设备进行标识。
e2label /dev/<disk-or-partition> Arch_Linux
label 最多可以有 16 个字符长。理论上 label 可以包含空格,但是如果这样做将无法让 fstab 或是 GRUB 配置文件识别出来。
label 命名应该足够清晰以防止可能的冲突。在 fstab 中以 label 来标识设备如下例所示:
# <file system> <dir> <type> <options> <dump> <pass> none /dev/pts devpts defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/cdrom /media/cd iso9660 ro,user,noauto,unhide 0 0 /dev/dvd /media/dvd udf ro,user,noauto,unhide 0 0 /dev/fd0 /media/fl auto user,noauto 0 0 LABEL=Arch_Linux / ext4 defaults,noatime 0 1 LABEL=Arch_Swap swap swap defaults 0 0
建议
atime 参数
使用 noatime,nodiratime orrelatime 可以提升 ext2, ext3 及 ext4 格式磁盘的性能。 Linux 在默认情况下每次在磁盘上读取(或写入)数据时都会产生一个记录。这是在 Linux 用于服务器而设计的,在桌面使用中意义不大。这些参数对于大部分的程序来说都是有效的。但对于 mutt (它需要这些记录信息),你应该仅仅使用realtime 选项。
tmpfs
Tmpfs 是一个临时文件系统,驻留于你的交换分区或是内存中(取决于你的使用情况)。它的意义在于提高系统一些部分的速度,并能在重启时自动清除一些文件。
tmpfs 可以被安全使用在的目录有 /tmp, /var/lock and /var/run. 不要将之使用于 /var/tmp, 因为这一目录中的临时文件在重启过程中还是被保留。
默认情况下, tmpfs 分区被设置为你总的内存的一半,当然你可以自由设定这一值。注意实际中内存和交换分区的使用情况取决于你的使用情况,而 tmpfs 分区在其真正使用前是不会占用存储空间的。
要在 /tmp,/var/lock 和 /var/run 下使用 tmpfs,在 /etc/fstab 中添加如下几行:
tmpfs /tmp tmpfs defaults,nodev,nosuid,mode=1777 0 0 tmpfs /var/lock tmpfs defaults,nodev,nosuid,noexec,mode=1777,size=10m 0 0 tmpfs /var/run tmpfs defaults,nodev,nosuid,noexec,mode=0755,size=10m 0 0
你可以在这里指定其大小,但是在这种情况下你应该突出 mode 部分,以确保它们可以有正确的权限设置。在上面的例子中, /tmp 将会占用你的一半内存,其它的两个目录被设置为各占用 10 MB 大小。
参阅 mount 命令 man 手册以获得更多的内容。
重启后方能生产。注意尽管这样做非常地诱人和有效,但是千万不要直接执行 mount -a 命令,因为可能造成当下这些目录的不可访问 (比如你应该保证 lockfiles 的正常存在)。然而,如果它们都是空的,那么就可以直接执行mount -a 而不必重启电脑。在重启前你可以执行 mount /tmp 等来激活其中一些选项,其余的则要在重启后生效。
在进行了如上面的改动后,要检验它是否如愿起作用你可以用 df 命令( df -h):
tmpfs 2.0G 20K 2.0G 1% /tmp tmpfs 10M 0 10M 0% /var/lock tmpfs 10M 48K 10M 1% /var/run
修正因 /var 分区造成关机异常问题
将 /var/lock 和 /var/run 挂载为 tmpfs 时, 如果是一个独立的分区 /var 将不能在关机时被卸载。这是因为 tmpfs 文件系统不被 rc.shutdown 所卸载。
要修复这一问题,需要创建 /etc/rc.d/functions.d/clean_umount 文件,在其中加入
clean_umount() { umount /var/lock umount /var/run } add_hook shutdown_postkillall clean_umount # vim: set ft=sh :
这将使 /var/lock 和 /var/run 在所有进程和守护进程结束后,在卸载 /var 之前被卸载。
解决包含有空格的路径名无法使用的问题
你可以使用 "\040" 转义字符来表示空格(以三位八进制数来进行表示)
/dev/sda7 /home/username/Camera\040Picures ext4 defaults,noatime 0 2 UUID=7D4500B3071E18B2 /media/100\040GB\040(Storage) ntfs defaults,noatime,user 0 0
外部设备
外部设备可以被即时地挂载,但是如果加入了 nofail 选项将被忽略。这用于阻止启动时的报错。
/dev/sdg1 /media/backup jfs noauto,nofail,rw,noatime,nodiratime 0 2
用fstab自动挂载FAT32和NTFS分区
1.先在用fdisk -l(可能需要在root权限下)得到硬盘信息表,例如:
# Device Boot Start End Blocks Id System /dev/sda1 * 1 2397 19253871 b W95 FAT32 /dev/sda2 2398 3144 6000277+ 83 Linux /dev/sda3 3145 9729 52894012+ 5 Extended /dev/sda5 3145 3152 64228+ 83 Linux /dev/sda6 3153 3276 995998+ 82 Linux swap / Solaris /dev/sda7 3277 7340 32644048+ 83 Linux /dev/sda8 7341 9729 19189611 7 HPFS/NTFS
从上面知道,这台电脑上只有一个硬盘,其中分区sda1和sda8为NTFS格式,sda1为可以启动的,因而可能为window的系统所在盘。 下面把系统盘以只读方式持载上去,非系统盘sda8以读写方式挂载上去(不能挂载在"/"及其以下的任何目录)。
2.用你喜欢的编辑器在终端中打开/etc/fstab,例如: nano /etc/fstab
在文件末尾加入:
/dev/sda1 /mnt/WindowsC vfat defaults,codepage=936,iocharset=cp936,umask=0222 0 0 /dev/sda8 /mnt/WindowsD ntfs defaults,iocharset=utf8,umask=000,nls=utf8 0 0
保存,退出。
相关内容
- Persistent block device naming
- Writing on a FAT32 partition as a normal user
- NTFS Write Support
- Speed-up Firefox using tmpfs
参考资料
- Full device listing including block device
- how to fstab
- Filesystem Hierarchy Standard
- tmpfs on Wikipedia
- 30x Faster Web-Site Speed (Detailed tmpfs)
转载于:https://www.cnblogs.com/pengdonglin137/articles/3805457.html
/etc/fstab 官方文档相关推荐
- k8s多master建议用几个_Kubernetes 教程之跟着官方文档从零搭建 K8S
前言 本文将带领读者一起, 参照者 Kubernetes 官方文档, 对其安装部署进行讲解. Kubernetes 更新迭代很快, 书上.网上等教程可能并不能适用于新版本, 但官方文档能. 阅读这篇文 ...
- 从LFS官方文档构建完整Linux系统
这不是新手教程!!! Parallels Desktop (为防止找不到网卡 NIC Type设成Intel(R) PRO/1000 MT). kali-linux-2.0-amd64(i386).i ...
- Kubernetes教程之跟着官方文档从零搭建K8S
本文将带领读者一起, 参照着 Kubernetes 官方文档,对其安装部署进行讲解.Kubernetes更新迭代很快,书上.网上等教程可能并不能适用于新版本,但官方文可以. Kubernetes 教程 ...
- Centos 7.6 服务器安装oracle 11gR2(参考官方文档)
Centos 7.6 服务器安装oracle 11gR2 说来气人,项目需要所以得在服务器上安装Oracle. 像往常一样,打开浏览器 -> 搜索 - > 找博客 -> 安装. 但是 ...
- OpenCV-Python官方文档学习笔记(上)
整理自OpenCV-Python官方文档 一. OpenCV-Python Tutorials 1 安装及验证 2 图片读写,展示 3 视频读写,展示 4 绘图功能(绘制几何形状:线.圆.椭圆.矩形. ...
- Ant Design 入门-参照官方文档使用组件
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 先来一个按钮组件使用的对比,官方文档的(不能直接用)和实际能用的. 官网demo: import { Tabl ...
- 坑爹的微软官方文档:SQL无人值守安装
我在部署项目的时候,需要用批处理无人值守安装SQLserver,.Net等组件. 于是查了微软官方文档,其中一项内容如下: http://msdn.microsoft.com/zh-cn/librar ...
- Tomcat官方文档关于数据源配置的内容
虽然有网上有网友自己总结的文章,但说明得总是不够清晰,还是参考官方文档理解得比较透彻: http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html h ...
- python-66:BS4实例--下载BS4官方文档
2019独角兽企业重金招聘Python工程师标准>>> 前面已经对BS4有了简单的认识和讲解,该讲的都讲了,原本也已经想好了一个实例,但是现在想往后推一推,因为我实在受不了了,我们前 ...
最新文章
- linux下c md5函数
- 算法工程师如何改进豆瓣电影
- 浅析 Mybatis 与 Hibernate 的区别与用途
- Android 线程 thread 两种实现方法!
- 使用Emit反射建立运行时实体模型
- 工厂方法源码解析(jdk+logback)
- 视频光端机各种视频接口的传输距离是多少?
- SVN+AnkhSVN端配置
- linux编译动态库之fPIC
- 《如何搭建小微企业风控模型》第八节 反欺诈策略 节选
- hibernate课程 初探单表映射1-2 ORM定义
- 验证码图片 java_验证码图片
- linux mysql emoji_Linux宝塔面板MySQL存储emoji,非服务器命令方法
- 老罗Android开发视频教程 (android常用布局介绍)5集集合
- 模拟退火算法及MATLAB代码
- 2021-08-26小白笔记2
- 如何在ArcGIS中打开卫星影像
- 全向轮三轮小车的搭建(一)
- C++ Primer Plus(第六版)第四章编程练习参考答案
- When Observable completes without emitting, toPromise() will successfully resolve with undefined.
热门文章
- android文本框自动补全,[Android]AutoCompleteTextView自动补全文本框
- mysql数据库诊断_MySQL数据库诊断——InnoDB关机问题 【转】
- 监听关闭页面事件 ajax,Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
- Deep Q-learning
- 轻量级数据交换格式JSON
- Python自动化运维开发----基础(十二)函数
- 前端面试js-手写事件委托(一点小改进)
- 共识指数榜单0904
- Uber 宣布将香港最低打车费用上涨 80%, 最低 45 港币
- Maven + Docker