/etc/fstab是用來存放文件系統的靜態信息的文件。位於/etc/目錄下,能夠用命令less /etc/fstab 來查看,若是要修改的話,則用命令 vi /etc/fstab 來修改。php
當系統啓動的時候,系統會自動地從這個文件讀取信息,而且會自動將此文件中指定的文件系統掛載到指定的目錄。下面我來介紹如何在此文件下填寫信息。node
一個簡單的 /etc/fstab
,使用內核名稱標識磁盤:mysql
/etc/fstab
# <file system> <dir> <type> <options> <dump> <pass> 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
文件包含了以下字段,經過空格或 Tab 分隔:linux
<file system> <dir> <type> <options> <dump> <pass>
ext2
, ext3
, ext4
, reiserfs
, xfs
, jfs
, smbfs
, iso9660
, vfat
, ntfs
, swap
及 auto
。 設置成auto
類型,mount 命令會猜想使用的文件系統類型,對 CDROM 和 DVD 等移動設備是很是有用的。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
- 實時更新 inode access 記錄。只有在記錄中的訪問時間早於當前訪問纔會被更新。(與 noatime 類似,但不會打斷如 mutt 或其它程序探測文件在上次訪問後是否被修改的進程。),能夠提高性能(參見 atime 參數)。flush
- vfat
的選項,更頻繁的刷新數據,複製對話框或進度條在所有數據都寫入後才消失。defaults
- 使用文件系統的默認掛載參數,例如 ext4
的默認參數爲:rw
, suid
, dev
, exec
, auto
, nouser
, async
.在 /etc/fstab
配置文件中你能夠以三種不一樣的方法表示文件系統:內核名稱、UUID 或者 label。使用 UUID 或是 label 的好處在於它們與磁盤順序無關。若是你在 BIOS 中改變了你的存儲設備順序,或是從新拔插了存儲設備,或是由於一些 BIOS 可能會隨機地改變存儲設備的順序,那麼用 UUID 或是 label 來表示將更有效。參見 持久化塊設備名稱 。sql
要顯示分區的基本信息請運行:vim
$ 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
來得到內核名稱,前綴是 dev
.緩存
要顯示全部設備的標籤,可使用 lsblk -f
命令。在 /etc/fstab
中使用 LABEL=
做爲設備名的開頭 :安全
/etc/fstab
# <file system> <dir> <type> <options> <dump> <pass> tmpfs /tmp tmpfs nodev,nosuid 0 0 LABEL=Arch_Linux / ext4 defaults,noatime 0 1 LABEL=Arch_Swap none swap defaults 0 0
全部分區和設備都有惟一的 UUID。它們由文件系統生成工具 (mkfs.*
) 在建立文件系統時生成。服務器
lsblk -f
命令將顯示全部設備的 UUID 值。/etc/fstab
中使用 UUID=
前綴:網絡
/etc/fstab
# <file system> <dir> <type> <options> <dump> <pass> 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
分區較大,可讓不依賴 /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/key noauto
若是交換分區沒有 UUID,能夠手動加入。若是使用 lsblk -f
命令沒有列出交換分區的 UUID 就說明發生了這種狀況。下面是爲交換分區指定 UUID 的步驟:
肯定交換分區:
# swapon -s
禁用交換分區:
# swapoff /dev/sda7
用新 UUID 從新建立交換分區:
# mkswap -U random /dev/sda7
激活交換分區:
# swapon /dev/sda7
若是掛載的路徑中有空格,可使用 "\040" 轉義字符來表示空格(以三位八進制數來進行表示)
/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
.....</nowiki>}}
外部設備在插入時掛載,在未插入時忽略。這須要 nofail
選項,能夠在啓動時若設備不存在直接忽略它而不報錯.
/etc/fstab
/dev/sdg1 /media/backup jfs defaults,nofail 0 2
使用 noatime
, nodiratime
或 relatime
能夠提高 ext2, ext3 及 ext4 格式磁盤的性能。 Linux 在默認狀況下使用atime
選項,每次在磁盤上讀取(或寫入)數據時都會產生一個記錄。這是爲服務器設計的,在桌面使用中意義不大。默認的 atime
選項最大的問題在於即便從頁面緩存讀取文件(從內存而不是磁盤讀取),也會產生磁盤寫操做!
使用 noatime
選項阻止了讀文件時的寫操做。大部分應用程序都能很好工做。只有少數程序如 Mutt 須要這些信息。Mutt 的用戶應該使用 relatime
選項。使用 relatime
選項後,只有文件被修改時纔會產生文件訪問時間寫操做。nodiratime
選項僅對目錄禁用了文件訪問時間。relatime
是比較好的折衷,Mutt 等程序還能工做,可是仍然可以經過減小訪問時間更新提高系統性能。
noatime
已經包含了
nodiratime
。不須要同時指定。
tmpfs 是一個臨時文件系統,駐留於你的交換分區或是內存中(取決於你的使用狀況)。使用它能夠提升文件訪問速度,並能保證重啓時會自動清除這些文件。
常用 tmpfs 的目錄有 /tmp, /var/lock and /var/run. 不要將之使用於 /var/tmp, 由於這一目錄中的臨時文件在重啓過程當中須要被保留。使用 tmpfs /run
目錄,/var/run
和 /var/lock
是爲了兼容老版本創建的連接。默認 /etc/fstab
中的的/tmp
也是 tmpfs.
默認狀況下, tmpfs 分區被設置爲你總的內存的一半,固然你能夠自由設定這一值。注意實際中內存和交換分區的使用狀況取決於你的使用狀況,而 tmpfs 分區在其真正使用前是不會佔用存儲空間的。
要將 /tmp
放到 tmpfs,將下行加入 /etc/fstab
:
/etc/fstab
..... tmpfs /tmp tmpfs nodev,nosuid 0 0 .....
能夠指定大小,但不要修改 mode
選項,以保證文件具備正確的訪問權限(1777)。在上例中 /tmp
將最多使用一半內存,要指定最大空間,使用 size
掛載選項:
/etc/fstab
..... tmpfs /tmp tmpfs nodev,nosuid,size=2G 0 0 .....
這裏有一個更高級的例子,展現如何爲用戶添加 tmpfs 掛載。這對於網站、mysql 臨時文件, ~/.vim/
, 和其餘狀況頗有用。嘗試並得到理想的掛載選項來完成目標是很重要的。目標是儘可能採用安全的策略來防止濫用。限制大小,同時指定 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 手冊以得到更多的內容。
重啓後方能生效。注意不要直接執行 mount -a
命令,由於可能形成沒法訪問當前目錄中的文件(好比你應該保證 lockfiles 的正常存在)。然而,若是它們都是空的,那麼就能夠直接執行 mount -a
而沒必要重啓電腦。
應用更改後,能夠經過 findmnt
檢查是否生效:
$ findmnt --target /tmp
TARGET SOURCE FSTYPE OPTIONS /tmp tmpfs tmpfs rw,nosuid,nodev,relatime
通常須要大量讀寫操做的程序在使用 tmpfs 時都會提高性能。有些程序把共享內存放到 tmpfs 上時性能會大幅提高,例如將 Firefox Profile 文件夾放到內存後,Firefox 性能大幅提高。
/tmp
) 掛載時須要去掉
noexec
參數,不然有些編譯程序沒法執行,此外,tmpfs 的默認大小是內存的通常,可能會產生空間不夠的問題。
下面命令可讓makepkg在tmpfs目錄進行編輯,也能夠在在/etc/makepkg.conf
中進行設置:
$ BUILDDIR=/tmp/makepkg makepkg
爲了取得對 FAT32 分區的寫權限,你必須修改/etc/fstab
文件。
/etc/fstab
/dev/sdxY /mnt/some_folder vfat user,rw,umask=000 0 0
「users」標籤的意思是任何用戶(甚至非 root 用戶)均可以掛載或卸載分區 '/dev/sdX'。「rw」標籤則分配讀寫的使用權。但我不知道「umask」標籤的意義(umask 是權限掩碼命令 umask=000 指任何人沒有特權,且權限爲777,即全部人均可以讀、寫、執行)。我曾試圖在「man mount」中查詢,可是沒有什麼結果。
好比你的 FAT32 分區在 '/dev/sda9',你想將其掛載到 '/mnt/fat32',那麼你須要輸入並運行
/etc/fstab
/dev/sda9 /mnt/fat32 vfat user,rw,umask=111,dmask=000 0 0
參考自:https://wiki.archlinux.org/index.php/Fstab
轉自:https://blog.csdn.net/richerg85/article/details/17917129