linux中的fstab文件是什么,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
專(zhuān)注于為中小企業(yè)提供做網(wǎng)站、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)察哈爾右翼中旗免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
/etc/fstab是用來(lái)存放文件系統(tǒng)的靜態(tài)信息的文件。位于/etc/目錄下,可以用命令less /etc/fstab 來(lái)查看,如果要修改的話(huà),則用命令 vi /etc/fstab 來(lái)修改。
當(dāng)系統(tǒng)啟動(dòng)的時(shí)候,系統(tǒng)會(huì)自動(dòng)地從這個(gè)文件讀取信息,并且會(huì)自動(dòng)將此文件中指定的文件系統(tǒng)掛載到指定的目錄。下面我來(lái)介紹如何在此文件下填寫(xiě)信息。
一個(gè)簡(jiǎn)單的 /etc/fstab
,使用內(nèi)核名稱(chēng)標(biāo)識(shí)磁盤(pán):
/etc/fstab
#tmpfs /tmp tmpfs nodev,nosuid 0 0 /dev/sda1 / ext4 defaults,noatime 0 1 /dev/sda2 none swap defaults 0 0 /dev/sda3 /home ext4 defaults,noatime 0 2
/etc/fstab
文件包含了如下字段,通過(guò)空格或 Tab 分隔:
ext2
, ext3
, ext4
, reiserfs
, xfs
, jfs
, smbfs
, iso9660
, vfat
, ntfs
, swap
及 auto
。 設(shè)置成auto
類(lèi)型,mount 命令會(huì)猜測(cè)使用的文件系統(tǒng)類(lèi)型,對(duì) CDROM 和 DVD 等移動(dòng)設(shè)備是非常有用的。
auto
- 在啟動(dòng)時(shí)或鍵入了 mount -a
命令時(shí)自動(dòng)掛載。
noauto
- 只在你的命令下被掛載。
exec
- 允許執(zhí)行此分區(qū)的二進(jìn)制文件。
noexec
- 不允許執(zhí)行此文件系統(tǒng)上的二進(jìn)制文件。
ro
- 以只讀模式掛載文件系統(tǒng)。
rw
- 以讀寫(xiě)模式掛載文件系統(tǒng)。
user
- 允許任意用戶(hù)掛載此文件系統(tǒng),若無(wú)顯示定義,隱含啟用 noexec
, nosuid
, nodev
參數(shù)。
users
- 允許所有 users 組中的用戶(hù)掛載文件系統(tǒng).
nouser
- 只能被 root 掛載。
owner
- 允許設(shè)備所有者掛載.
sync
- I/O 同步進(jìn)行。
async
- I/O 異步進(jìn)行。
dev
- 解析文件系統(tǒng)上的塊特殊設(shè)備。
nodev
- 不解析文件系統(tǒng)上的塊特殊設(shè)備。
suid
- 允許 suid 操作和設(shè)定 sgid 位。這一參數(shù)通常用于一些特殊任務(wù),使一般用戶(hù)運(yùn)行程序時(shí)臨時(shí)提升權(quán)限。
nosuid
- 禁止 suid 操作和設(shè)定 sgid 位。
noatime
- 不更新文件系統(tǒng)上 inode 訪(fǎng)問(wèn)記錄,可以提升性能(參見(jiàn) atime 參數(shù))。
nodiratime
- 不更新文件系統(tǒng)上的目錄 inode 訪(fǎng)問(wèn)記錄,可以提升性能(參見(jiàn) atime 參數(shù))。
relatime
- 實(shí)時(shí)更新 inode access 記錄。只有在記錄中的訪(fǎng)問(wèn)時(shí)間早于當(dāng)前訪(fǎng)問(wèn)才會(huì)被更新。(與 noatime 相似,但不會(huì)打斷如 mutt 或其它程序探測(cè)文件在上次訪(fǎng)問(wèn)后是否被修改的進(jìn)程。),可以提升性能(參見(jiàn) atime 參數(shù))。
flush
- vfat
的選項(xiàng),更頻繁的刷新數(shù)據(jù),復(fù)制對(duì)話(huà)框或進(jìn)度條在全部數(shù)據(jù)都寫(xiě)入后才消失。
defaults
- 使用文件系統(tǒng)的默認(rèn)掛載參數(shù),例如 ext4
的默認(rèn)參數(shù)為:rw
, suid
, dev
, exec
, auto
, nouser
, async
.
在 /etc/fstab
配置文件中你可以以三種不同的方法表示文件系統(tǒng):內(nèi)核名稱(chēng)、UUID 或者 label。使用 UUID 或是 label 的好處在于它們與磁盤(pán)順序無(wú)關(guān)。如果你在 BIOS 中改變了你的存儲(chǔ)設(shè)備順序,或是重新拔插了存儲(chǔ)設(shè)備,或是因?yàn)橐恍?BIOS 可能會(huì)隨機(jī)地改變存儲(chǔ)設(shè)備的順序,那么用 UUID 或是 label 來(lái)表示將更有效。參見(jiàn) 持久化塊設(shè)備名稱(chēng) 。
要顯示分區(qū)的基本信息請(qǐng)運(yùn)行:
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 Arch_Linux 978e3e81-8048-4ae1-8a06-aa727458e8ff / ├─sda2 ntfs Windows 6C1093E61093B594 └─sda3 ext4 Storage f838b24e-3a66-4d02-86f4-a2e73e454336 /media/Storage sdb ├─sdb1 ntfs Games 9E68F00568EFD9D3 └─sdb2 ext4 Backup 14d50a6c-e083-42f2-b9c4-bc8bae38d274 /media/Backup sdc └─sdc1 vfat Camera 47FA-4071 /media/Camera
你可以使用 fdisk -l
來(lái)獲得內(nèi)核名稱(chēng),前綴是 dev
.
注意:使用這一方法,每一個(gè)標(biāo)簽必須是唯一的.
要顯示所有設(shè)備的標(biāo)簽,可以使用 lsblk -f
命令。在 /etc/fstab
中使用 LABEL=
作為設(shè)備名的開(kāi)頭 :
/etc/fstab
#tmpfs /tmp tmpfs nodev,nosuid 0 0 LABEL=Arch_Linux / ext4 defaults,noatime 0 1 LABEL=Arch_Swap none swap defaults 0 0
所有分區(qū)和設(shè)備都有唯一的 UUID。它們由文件系統(tǒng)生成工具 (mkfs.*
) 在創(chuàng)建文件系統(tǒng)時(shí)生成。
lsblk -f
命令將顯示所有設(shè)備的 UUID 值。/etc/fstab
中使用 UUID=
前綴:
/etc/fstab
#tmpfs /tmp tmpfs nodev,nosuid 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 none swap defaults 0 0
如果 /home
分區(qū)較大,可以讓不依賴(lài) /home
分區(qū)的服務(wù)先啟動(dòng)。把下面的參數(shù)添加到 /etc/fstab
文件中 /home
項(xiàng)目的參數(shù)部分即可:
noauto,x-systemd.automount
這樣 /home
分區(qū)只有需要訪(fǎng)問(wèn)時(shí)才會(huì)被掛載。內(nèi)核會(huì)緩存所有的文件操作,直到 /home
分區(qū)準(zhǔn)備完成。
注意:這樣做會(huì)使
/home
的文件系統(tǒng)類(lèi)型被識(shí)別為
autofs
,造成
mlocate 查詢(xún)時(shí)忽略該目錄。實(shí)際加速效果因配置而異,所以請(qǐng)自己權(quán)衡是否需要。
掛載遠(yuǎn)程文件系統(tǒng)也是同理。如果你僅想在需要的時(shí)候才掛載,也可以添加 noauto,x-systemd.automount
參數(shù)。另外,可以設(shè)置 x-systemd.device-timeout=#
參數(shù),設(shè)置超時(shí)時(shí)間,以防止網(wǎng)絡(luò)資源不能訪(fǎng)問(wèn)的時(shí)候浪費(fèi)時(shí)間。
如果你的加密文件系統(tǒng)需要密鑰,則需要添加 noauto
參數(shù)到 /etc/crypttab
文件中的對(duì)應(yīng)位置。systemd 開(kāi)機(jī)的時(shí)候就不會(huì)打開(kāi)這個(gè)加密設(shè)備,會(huì)一直等待到設(shè)備被訪(fǎng)問(wèn)時(shí)再使用密鑰文件掛載。比如在使用加密RAID設(shè)備的時(shí)候可以節(jié)省一定的時(shí)間,因?yàn)?systemd 不必等到設(shè)備可用后才能訪(fǎng)問(wèn)。例如:
/etc/crypttab
data /dev/md0 /root/key noauto
如果交換分區(qū)沒(méi)有 UUID,可以手動(dòng)加入。如果使用 lsblk -f
命令沒(méi)有列出交換分區(qū)的 UUID 就說(shuō)明發(fā)生了這種情況。下面是為交換分區(qū)指定 UUID 的步驟:
確定交換分區(qū):
# swapon -s
禁用交換分區(qū):
# swapoff /dev/sda7
用新 UUID 重新創(chuàng)建交換分區(qū):
# mkswap -U random /dev/sda7
激活交換分區(qū):
# swapon /dev/sda7
如果掛載的路徑中有空格,可以使用 "\040" 轉(zhuǎn)義字符來(lái)表示空格(以三位八進(jìn)制數(shù)來(lái)進(jìn)行表示)
/etc/fstab
UUID=47FA-4071 /home/username/Camera\040Pictures vfat defaults,noatime 0 2 /dev/sda7 /media/100\040GB\040(Storage) ext4 defaults,noatime,user 0 0
.....}}
外部設(shè)備在插入時(shí)掛載,在未插入時(shí)忽略。這需要 nofail
選項(xiàng),可以在啟動(dòng)時(shí)若設(shè)備不存在直接忽略它而不報(bào)錯(cuò).
/etc/fstab
/dev/sdg1 /media/backup jfs defaults,nofail 0 2
使用 noatime
, nodiratime
或 relatime
可以提升 ext2, ext3 及 ext4 格式磁盤(pán)的性能。 Linux 在默認(rèn)情況下使用atime
選項(xiàng),每次在磁盤(pán)上讀取(或?qū)懭耄?shù)據(jù)時(shí)都會(huì)產(chǎn)生一個(gè)記錄。這是為服務(wù)器設(shè)計(jì)的,在桌面使用中意義不大。默認(rèn)的 atime
選項(xiàng)最大的問(wèn)題在于即使從頁(yè)面緩存讀取文件(從內(nèi)存而不是磁盤(pán)讀取),也會(huì)產(chǎn)生磁盤(pán)寫(xiě)操作!
使用 noatime
選項(xiàng)阻止了讀文件時(shí)的寫(xiě)操作。大部分應(yīng)用程序都能很好工作。只有少數(shù)程序如 Mutt 需要這些信息。Mutt 的用戶(hù)應(yīng)該使用 relatime
選項(xiàng)。使用 relatime
選項(xiàng)后,只有文件被修改時(shí)才會(huì)產(chǎn)生文件訪(fǎng)問(wèn)時(shí)間寫(xiě)操作。nodiratime
選項(xiàng)僅對(duì)目錄禁用了文件訪(fǎng)問(wèn)時(shí)間。relatime
是比較好的折衷,Mutt 等程序還能工作,但是仍然能夠通過(guò)減少訪(fǎng)問(wèn)時(shí)間更新提升系統(tǒng)性能。
注意:
noatime
已經(jīng)包含了
nodiratime
。不需要同時(shí)指定。
tmpfs 是一個(gè)臨時(shí)文件系統(tǒng),駐留于你的交換分區(qū)或是內(nèi)存中(取決于你的使用情況)。使用它可以提高文件訪(fǎng)問(wèn)速度,并能保證重啟時(shí)會(huì)自動(dòng)清除這些文件。
經(jīng)常使用 tmpfs 的目錄有 /tmp, /var/lock and /var/run. 不要將之使用于 /var/tmp, 因?yàn)檫@一目錄中的臨時(shí)文件在重啟過(guò)程中需要被保留。使用 tmpfs /run
目錄,/var/run
和 /var/lock
是為了兼容老版本建立的鏈接。默認(rèn) /etc/fstab
中的的/tmp
也是 tmpfs.
默認(rèn)情況下, tmpfs 分區(qū)被設(shè)置為你總的內(nèi)存的一半,當(dāng)然你可以自由設(shè)定這一值。注意實(shí)際中內(nèi)存和交換分區(qū)的使用情況取決于你的使用情況,而 tmpfs 分區(qū)在其真正使用前是不會(huì)占用存儲(chǔ)空間的。
要將 /tmp
放到 tmpfs,將下行加入 /etc/fstab
:
/etc/fstab
..... tmpfs /tmp tmpfs nodev,nosuid 0 0 .....
可以指定大小,但不要修改 mode
選項(xiàng),以保證文件具有正確的訪(fǎng)問(wèn)權(quán)限(1777)。在上例中 /tmp
將最多使用一半內(nèi)存,要指定最大空間,使用 size
掛載選項(xiàng):
/etc/fstab
..... tmpfs /tmp tmpfs nodev,nosuid,size=2G 0 0 .....
這里有一個(gè)更高級(jí)的例子,展示如何為用戶(hù)添加 tmpfs 掛載。這對(duì)于網(wǎng)站、MySQL 臨時(shí)文件, ~/.vim/
, 和其他情況很有用。嘗試并獲得理想的掛載選項(xiàng)來(lái)完成目標(biāo)是很重要的。目標(biāo)是盡量采用安全的策略來(lái)防止濫用。限制大小,同時(shí)指定 uid 和 gid 加上 mode 是非常安全的。更多信息.
/etc/fstab
tmpfs /www/cache tmpfs rw,size=1G,nr_inodes=5k,noexec,nodev,nosuid,uid=648,gid=648,mode=1700 0 0
參閱 mount命令 man 手冊(cè)以獲得更多的內(nèi)容。
重啟后方能生效。注意不要直接執(zhí)行 mount -a
命令,因?yàn)榭赡茉斐蔁o(wú)法訪(fǎng)問(wèn)當(dāng)前目錄中的文件(比如你應(yīng)該保證 lockfiles 的正常存在)。然而,如果它們都是空的,那么就可以直接執(zhí)行 mount -a
而不必重啟電腦。
應(yīng)用更改后,可以通過(guò) findmnt
檢查是否生效:
$ findmnt --target /tmp
TARGET SOURCE FSTYPE OPTIONS /tmp tmpfs tmpfs rw,nosuid,nodev,relatime
一般需要大量讀寫(xiě)操作的程序在使用 tmpfs 時(shí)都會(huì)提升性能。有些程序把共享內(nèi)存放到 tmpfs 上時(shí)性能會(huì)大幅提升,例如將 Firefox Profile 文件夾放到內(nèi)存后,F(xiàn)irefox 性能大幅提升。
Note:tmpfs 目錄(
/tmp
) 掛載時(shí)需要去掉
noexec
參數(shù),否則有些編譯程序無(wú)法執(zhí)行,此外,tmpfs 的默認(rèn)大小是內(nèi)存的一般,可能會(huì)產(chǎn)生空間不夠的問(wèn)題。
下面命令可以讓makepkg在tmpfs目錄進(jìn)行編輯,也可以在在/etc/makepkg.conf
中進(jìn)行設(shè)置:
$ BUILDDIR=/tmp/makepkg makepkg
為了取得對(duì) FAT32 分區(qū)的寫(xiě)權(quán)限,你必須修改/etc/fstab
文件。
/etc/fstab
/dev/sdxY /mnt/some_folder vfat user,rw,umask=000 0 0
“users”標(biāo)簽的意思是任何用戶(hù)(甚至非 root 用戶(hù))都可以?huà)燧d或卸載分區(qū) '/dev/sdX'。“rw”標(biāo)簽則分配讀寫(xiě)的使用權(quán)。但我不知道“umask”標(biāo)簽的意義(umask 是權(quán)限掩碼命令 umask=000 指任何人沒(méi)有特權(quán),且權(quán)限為777,即所有人都可以讀、寫(xiě)、執(zhí)行)。我曾試圖在“man mount”中查詢(xún),但是沒(méi)有什么結(jié)果。
比如你的 FAT32 分區(qū)在 '/dev/sda9',你想將其掛載到 '/mnt/fat32',那么你需要輸入并運(yùn)行
/etc/fstab
/dev/sda9 /mnt/fat32 vfat user,rw,umask=111,dmask=000 0 0
關(guān)于linux中的fstab文件是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。