linux系统中fstab配置文件解读/etc/fstab是拿来储存文件系统的静态信息的文件。坐落/etc/目录下,可以用命令less/etc/fstab来查看,假如要更改的话,则用命令vi/etc/fstab来更改。
当系统启动的时侯,系统会手动地从这个文件读取信息,但是会手动将此文件手指定的文件系统挂载到指定的目录。下边我来介绍怎样在此文件下填写信息。
文件示例
一个简单的/etc/fstab,使用内核名称标示c盘:
/etc/fstab
tmpfs/tmptmpfsnodev,nosuid00
/dev/sda1/ext4defaults,noatime01
/dev/sda2noneswapdefaults00
/dev/sda3/homeext4defaults,noatime02
数组定义
/etc/fstab文件包含了如下数组,通过空格或Tab分隔:
-要挂载的分区或储存设备.
-的挂载位置。
-要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:ext2,ext3,ext4,reiserfs,xfs,jfs,smbfs,iso9660,vfat,ntfs,swap及auto。设置成auto类型,mount命令会猜想使用的文件系统类型,对CDROM和DVD等联通设备是十分有用的。
-挂载时使用的参数,注意有些mount参数是特定文件系统才有的。一些比较常用的参数有:
auto-在启动时或键入了mount-a命令时手动挂载。
noauto-只在你的命令下被挂载。
exec-容许执行此分区的二补码文件。
noexec-不容许执行此文件系统上的二补码文件。
ro-以只读模式挂载文件系统。
rw-以读写模式挂载文件系统。
user-容许任意用户挂载此文件系统,若无显示定义,蕴涵启用noexec,nosuid,nodev参数。
users-容许所有users组中的用户挂载文件系统.
nouser-只能被root挂载。
owner-容许设备所有者挂载.
sync-I/O同步进行。
async-I/O异步进行。
dev-解析文件系统上的块特殊设备。
nodev-不解析文件系统上的块特殊设备。
suid-容许suid操作和设定sgid位。这一参数一般用于一些特殊任务,使通常用户运行程序时临时提高权限。
nosuid-严禁suid操作和设定sgid位。
noatime-不更新文件系统上inode访问记录,可以提高性能(参见atime参数)。
nodiratime-不更新文件系统上的目录inode访问记录,可以提高性能(参见atime参数)。
relatime-实时更新inodeaccess记录。只有在记录中的访问时间早于当前访问才能被更新。(与noatime相像,但不会打断如mutt或其它程序侦测文件在先前访问后是否被更改的进程。),可以提高性能(参见atime参数)。
flush-vfat的选项qq linux,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失。
defaults-使用文件系统的默认挂载参数,比如ext4的默认参数为:rw,suid,dev,exec,auto,nouser,async.
dump工具通过它决定何时作备份.dump会检测其内容,并用数字来决定是否对这个文件系统进行备份。容许的数字是0和1。0表示忽视,1则进行备份。大部份的用户是没有安装dump的,对她们而言应设为0。
fsck读取
的数值来决定须要检测的文件系统的检测次序。容许的数字是0,1,和2。根目录应该获得最高的优先权1,其它所有须要被检测的设备设置为2.0表示设备不会被fsck所检测。
文件系统标示
在/etc/fstab配置文件中你可以以三种不同的方式表示文件系统:内核名称、UUID或则label。使用UUID或是label的用处在于它们与c盘次序无关。假如你在BIOS中改变了你的储存设备次序,或是重新插拔了储存设备,或是由于一些BIOS可能会随机地改变储存设备的次序,这么用UUID或是label来表示将更有效。参见持久化块设备名称。
要显示分区的基本信息请运行:
$lsblk-f
NAMEFSTYPELABELUUIDMOUNTPOINT
sda
├─sda1ext4Arch_Linux978e3e81-8048-4ae1-8a06-aa727458e8ff/
├─sda2ntfsWindows6C1093E61093B594
└─sda3ext4Storagef838b24e-3a66-4d02-86f4-a2e73e454336/media/Storage
sdb
├─sdb1ntfsGames9E68F00568EFD9D3
└─sdb2ext4Backup14d50a6c-e083-42f2-b9c4-bc8bae38d274/media/Backup
sdc
└─sdc1vfatCamera47FA-4071/media/Camera
内核名称
你可以使用fdisk-l来获得内核名称,前缀是dev.
标签
注意:使用这一方式,每一个标签必须是惟一的.
要显示所有设备的标签,可以使用lsblk-f命令。在/etc/fstab中使用LABEL=作为设备名的开头:
/etc/fstab
tmpfs/tmptmpfsnodev,nosuid00
LABEL=Arch_Linux/ext4defaults,noatime01
LABEL=Arch_Swapnoneswapdefaults00
UUID
所有分区和设备都有惟一的UUID。它们由文件系统生成工具(mkfs.*)在创建文件系统时生成。
lsblk-f命令将显示所有设备的UUID值。/etc/fstab中使用UUID=前缀:
/etc/fstab
tmpfs/tmptmpfsnodev,nosuid00
UUID=24f28fc6-717e-4bcd-a5f7-32b959024e26/ext4defaults,noatime01
UUID=03ec5dd3-45c0-4f95-a363-61ff321a09ff/homeext4defaults,noatime02
UUID=4209c845-f495-4c43-8a03-5363dd433153noneswapdefaults00
提示和方法
手动挂载
假如/home分区较大,可以让不依赖/home分区的服务先启动。把下边的参数添加到/etc/fstab文件中/home项目的参数部份即可:
noauto,x-systemd.automount
这样/home分区只有须要访问时就会被挂载。内核会缓存所有的文件操作,直至/home分区打算完成。
注意:这样做会使/home的文件系统类型被辨识为autofs,导致mlocate查询时忽视该目录。实际加速疗效因配置而异,所以请自己权衡是否须要。
挂载远程文件系统也是同理。假如你仅想在须要的时侯才挂载,也可以添加noauto,x-systemd.automount参数。另外,可以设置x-systemd.device-timeout=#参数,设置超时时间,以避免网路资源不能访问的时侯浪费时间。
假如你的加密文件系统须要秘钥,则须要添加noauto参数到/etc/crypttab文件中的对应位置。systemd开机的时侯就不会打开这个加密设备,会仍然等待到设备被访问时再使用秘钥文件挂载。例如在使用加密RAID设备的时侯可以节约一定的时间,由于systemd毋须等到设备可用后才会访问。诸如:
/etc/crypttab
data/dev/md0/root/keynoauto
交换分区UUID
假如交换分区没有UUID,可以自动加入。假如使用lsblk-f命令没有列举交换分区的UUID就说明发生了这些情况。下边是为交换分区指定UUID的步骤:
确定交换分区:
#swapon-s
禁用交换分区:
#swapoff/dev/sda7
用新UUID重新创建交换分区:
#mkswap-Urandom/dev/sda7
激活交换分区:
#swapon/dev/sda7
路径名有空格
假如挂载的路径中有空格,可以使用"40"通配符字符来表示空格(以三位八补码数来进行表示)
/etc/fstab
UUID=47FA-4071/home/username/Camera40Picturesvfatdefaults,noatime02
/dev/sda7/media/10040GB40(Storage)ext4defaults,noatime,user00
.....}}
外部设备
外部设备在插入时挂载,在未插入时忽视。这须要nofail选项,可以在启动时若设备不存在直接忽视它而不报错.
/etc/fstab
/dev/sdg1/media/backupjfsdefaults,nofail02
atime参数
使用noatime,nodiratime或relatime可以提高ext2,ext3及ext4格式c盘的性能。Linux在默认情况下使用atime选项,每次在c盘上读取(或写入)数据时就会形成一个记录。这是为服务器设计的,在桌面使用中意义不大。默认的atime选项最大的问题在于虽然从页面缓存读取文件(从显存而不是c盘读取),也会形成c盘写操作!
使用noatime选项制止了读文件时的写操作。大部份应用程序都能挺好工作。只有少数程序如Mutt须要这种信息。Mutt的用户应当使用relatime选项。使用relatime选项后,只有文件被更改时就会形成文件访问时间写操作。nodiratime选项仅对目录禁用了文件访问时间。relatime是比较好的折衷,Mutt等程序能够工作,并且一直才能通过降低访问时间更新提高系统性能。
注意:noatime早已包含了nodiratime。不须要同时指定。
tmpfs
tmpfs是一个临时文件系统,留驻于你的交换分区或是显存中(取决于你的使用情况)。使用它可以增强文件访问速率,并能保证重启时会手动消除这种文件。
常常使用tmpfs的目录有/tmp,/var/lockand/var/run.不要将之使用于/var/tmp,由于这一目录中的临时文件在重启过程中须要被保留。使用tmpfs/run目录,/var/run和/var/lock是为了兼容老版本构建的链接。默认/etc/fstab中的的/tmp也是tmpfs.
默认情况下,tmpfs分区被设置为你总的显存的一半,其实你可以自由设定这一值。注意实际中显存和交换分区的使用情况取决于你的使用情况,而tmpfs分区在其真正使用前是不会占用储存空间的。
要将/tmp放在tmpfs,将下行加入/etc/fstab:
/etc/fstab
.....
tmpfs/tmptmpfsnodev,nosuid00
.....
可以指定大小,但不要更改mode选项,以保证文件具有正确的访问权限(1777)。在上例中/tmp将最多使用一半显存,要指定最大空间,使用size挂载选项:
/etc/fstab
.....
tmpfs/tmptmpfsnodev,nosuid,size=2G00
.....
这儿有一个更中级的反例,展示怎样为用户添加tmpfs挂载。这对于网站、MySQL临时文件,~/.vim/,和其他情况很有用。尝试并获得理想的挂载选项来完成目标是很重要的。目标是尽量采用安全的策略来避免滥用。限制大小,同时指定uid和gid加上mode是十分安全的。更多信息.
/etc/fstab
tmpfs/www/cachetmpfsrw,size=1G,nr_inodes=5k,noexec,nodev,nosuid,uid=648,gid=648,mode=170000
参阅mount命令man指南以获得更多的内容。
重启后方能生效。注意不要直接执行mount-a命令,由于可能导致难以访问当前目录中的文件(例如你应当保证lockfiles的正常存在)。但是,假若它们都是空的,这么就可以直接执行mount-a而毋须重启笔记本。
应用修改后,可以通过findmnt检测是否生效:
$findmnt--target/tmp
TARGETSOURCEFSTYPEOPTIONS
/tmptmpfstmpfsrw,nosuid,nodev,relatime
使用
通常须要大量读写操作的程序在使用tmpfs时就会提高性能。有些程序把共享显存放在tmpfs上时性能会急剧提高,比如将FirefoxProfile文件夹放在显存后,Firefox性能急剧提高。
Note:tmpfs目录(/tmp)挂载时须要除去noexec参数,否则有些编译程序没法执行,再者,tmpfs的默认大小是显存的通常,可能会形成空间不够的问题。
下边命令可以让makepkg在tmpfs目录进行编辑,也可以在在/etc/makepkg.conf中进行设置:
$BUILDDIR=makepkg
普通用户读写FAT32
为了取得对FAT32分区的写权限,你必须更改/etc/fstab文件。
/etc/fstab
/dev/sdxY/mnt/some_foldervfatuser,rw,umask=00000
“users”标签的意思是任何用户(甚至非root用户)都可以挂载或卸载分区'/dev/sdX'。“rw”标签则分配读写的使用权。但我不晓得“umask”标签的意义(umask是权限网段命令umask=000指任何人没有特权linux启动修改fstab,且权限为777,即所有人都可以读、写、执行)。我曾企图在“manmount”中查询,而且没有哪些结果。
例如你的FAT32分区在'/dev/sda9'linux培训班,你想将其挂载到'/mnt/fat32'linux启动修改fstab,这么你须要输入并运行
/etc/fstab
/dev/sda9/mnt/fat32vfatuser,rw,umask=111,dmask=00000
页:[1]
文章评论