2016-8-30新增:node
/etc/fstab配置文件設置錯誤形成的開機故障linux
掛載概念簡述:centos
根文件系統以外的其餘文件要想可以被訪問,都必須經過「關聯」至根文件系統上的某個目錄來實現,此關聯操做即爲「掛載」,此目錄即爲「掛載點」,解除此關聯關係的過程稱之爲「卸載」bash
1.掛載:根文件系統外經過關聯至根文件系統上的某個目錄來實現訪問app
2.掛載點:mount_point,用於做爲另外一個文件系統的訪問入口;異步
(1) 事先存在;async
(2) 應該使用未被或不會被其它進程使用到的目錄;ide
(3) 掛載點下原有的文件將會被隱藏;工具
實驗環境CentOS7.2ui
掛載與卸載
掛載方法:mount DECE MOUNT_POINT
mount:經過查看/etc/mtab(文章最後會對/etc/mtab有個解釋)文件顯示當前系統已掛載的全部設備
命令使用格式:mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要掛載的設備;(被掛載的設備可用如下四種之一表示)
(1) 設備文件:例如/dev/sda5
(2) 卷標:-L 'LABEL', 例如 -L 'MYDATA'
(3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
(4) 僞文件系統名稱:proc, sysfs, devtmpfs, configfs
dir:掛載點
事先存在;建議使用空目錄;(若非空則掛載後原文件會被隱藏,卸載後方能顯示出來)
進程正在使用中的設備沒法被卸載;
經常使用命令選項:
-t vsftype:指定要掛載的設備上的文件系統類型;
-r: readonly,只讀掛載;
-w: read and write, 讀寫掛載;
-n: 不更新/etc/mtab;
-a:自動掛載全部支持自動掛載的設備;(定義在了/etc/fstab文件中,且掛載選項中有「自動掛載」功能)
-L 'LABEL': 以卷標指定掛載設備;
-U 'UUID': 以UUID指定要掛載的設備;
-B, --bind: 綁定目錄到另外一個目錄上;
注意:查看內核追蹤到的已掛載的全部設備:cat /proc/mounts
………………………………………………………………………………………………………………………
-o options:(掛載文件系統的選項)
async:異步模式;
sync:同步模式;
atime/noatime:包含目錄和文件;
diratime/nodiratime:目錄的訪問時間戳
auto/noauto:是否支持自動掛載
exec/noexec:是否支持將文件系統上應用程序運行爲進程
dev/nodev:是否支持在此文件系統上使用設備文件;
suid/nosuid:是否支持在此文件系統上使用特殊權限
remount:從新掛載
ro:只讀
rw:讀寫
user/nouser:是否容許普通用戶掛載此設備
acl:啓用此文件系統上的acl功能
注意:上述選項可多個同時使用,彼此使用逗號分隔;
默認掛載選項:defaults:rw, suid, dev, exec, auto, nouser, and async
上述信息能夠經過查看超級塊信息看到,這裏再也不對其進行演示。
………………………………………………………………………………………………………………………
命令演示:
一、指定文件系統將塊設備掛載至指定空文件夾內:演示內容:1)沒有指定文件系統,命令是否能正確執行;2)指定錯誤文件系統,命令是否能正確執行;3)掛載點有內容的文件夾,查看被掛載後其內容是否消失。
[root@localhost /]# fdisk -l ... 設備 Boot Start End Blocks Id System /dev/sdb1 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 4196351 1048576 5 Extended /dev/sdb5 2101248 2306047 102400 83 Linux /dev/sdb6 2308096 2512895 102400 83 Linux /dev/sdb7 2514944 2719743 102400 83 Linux /dev/sdb8 2721792 2926591 102400 83 Linux ... [root@localhost /]# mount /dev/sdb8 /device [root@localhost /]# df 文件系統 1K-塊 已用 可用 已用% 掛載點 /dev/mapper/centos-root 18307072 4724136 13582936 26% / devtmpfs 485368 0 485368 0% /dev tmpfs 500664 84 500580 1% /dev/shm tmpfs 500664 7160 493504 2% /run tmpfs 500664 0 500664 0% /sys/fs/cgroup /dev/sda1 508588 142620 365968 29% /boot tmpfs 100136 20 100116 1% /run/user/42 tmpfs 100136 0 100136 0% /run/user/0 /dev/sdb8 98988 5280 93708 6% /device [root@localhost /]# blkid /dev/sdb8 /dev/sdb8: UUID="a3c4bf06-3695-45e8-8a07-a063498f0578" TYPE="xfs" [root@localhost /]# umount /device [root@localhost /]# mount -t ext2 /dev/sdb8 /device mount: 文件系統類型錯誤、選項錯誤、/dev/sdb8 上有壞超級塊、 缺乏代碼頁或助手程序,或其餘錯誤 [root@localhost /]# cd /device/ [root@localhost device]# ll 總用量 0 [root@localhost device]# touch 11 22 [root@localhost device]# ll 總用量 0 -rw-r--r--. 1 root root 0 8月 23 10:14 11 -rw-r--r--. 1 root root 0 8月 23 10:14 22 [root@localhost device]# ll 總用量 0 [root@localhost device]# ll -a 總用量 4 drwxr-xr-x. 2 root root 6 8月 23 09:27 . dr-xr-xr-x. 21 root root 4096 8月 23 09:29 .. [root@localhost device]# cd .. [root@localhost /]# umount /device/ [root@localhost /]# cd /device/ [root@localhost device]# ll 總用量 0 -rw-r--r--. 1 root root 0 8月 23 10:14 11 -rw-r--r--. 1 root root 0 8月 23 10:14 22
經過上述演示,說明了以下事實:1)沒有指定文件系統,塊設備也能夠正常掛載;2)指定與塊設備不一致的文件系統類型則命令報錯;3)掛載點有內容的文件夾,在掛載後內容消失,卸載後內容重現,也就是說掛載後會將原文件內容掩蓋,但並不對其進行其餘操做。
………………………………………………………………………………………………………………………
二、演示內容:1)指定卷標並以只讀方式掛載;2)對目錄進行掛載操做,查看其與硬連接與軟連接有何不一樣。
[root@localhost device]# blkid /dev/sdb6
/dev/sdb6: LABEL="sdb6" UUID="8284450c-8cb9-45d7-a8b8-ed9ed9ef9e52" TYPE="xfs" [root@localhost device]# mount -L 'sdb6' -r /device/ [root@localhost device]# touch /device/33 touch: 沒法建立"/device/33": 只讀文件系統 [root@localhost device]# umount /device/ [root@localhost /]# mount -B /etc/ /device/ [root@localhost /]# ll -i / 總用量 64 11341 lrwxrwxrwx. 1 root root 7 7月 19 23:54 bin -> usr/bin 128 dr-xr-xr-x. 4 root root 4096 8月 2 10:09 boot 3 drwxr-xr-x. 19 root root 3300 8月 23 09:10 dev 33554561 drwxr-xr-x. 129 root root 8192 8月 23 09:38 device 33554561 drwxr-xr-x. 129 root root 8192 8月 23 09:38 etc 158 drwxr-xr-x. 42 root root 4096 8月 22 09:00 home
經過上述演示,說明了以下事實:1)指定卷標掛載可行,以只讀方式掛載後,沒法對掛載點中的內容進行修改、建立等操做;2)目錄的掛載實質上是硬連接,掛載後能夠對裏面的文件內容進行修改與刪除。
注:文件夾的掛載在df中並不顯示
………………………………………………………………………………………………………………………
卸載命令:umount
命令使用格式:
# umount DEVICE
# umount MOUNT_POINT
上面已經演示過umount的使用
fuser:查看正在訪問指定文件系統的進程:
命令使用格式:
# fuser -v MOUNT_POINT
終止全部在正訪問指定的文件系統的進程:慎用
# fuser -km MOUNT_POINT
交換分區swap
這裏介紹下交換分區,經過實驗演示交換分區的建立及掛載
掛載交換分區:
啓用:swapon
swapon [OPTION]... [DEVICE]
-a:激活全部的交換分區;
-p PRIORITY:指定優先級;
禁用:swapoff [OPTION]... [DEVICE]
實驗演示:
一、交換分區的建立:1)新建立一分區,2)修改新分區的類型,改成swap號碼爲82,3)格式化爲swap
[root@localhost ~]# fdisk /dev/sdb 歡迎使用 fdisk (util-linux 2.23.2)。 更改將停留在內存中,直到您決定將更改寫入磁盤。 使用寫入命令前請三思。 命令(輸入 m 獲取幫助):n Partition type: p primary (1 primary, 1 extended, 2 free) l logical (numbered from 5) Select (default p): l 添加邏輯分區 9 起始 扇區 (2928640-4196351,默認爲 2928640): 將使用默認值 2928640 Last 扇區, +扇區 or +size{K,M,G} (2928640-4196351,默認爲 4196351):+100M 分區 9 已設置爲 Linux 類型,大小設爲 100 MiB 命令(輸入 m 獲取幫助):p 磁盤 /dev/sdb:5368 MB, 5368709120 字節,10485760 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標籤類型:dos 磁盤標識符:0xd391e822 設備 Boot Start End Blocks Id System /dev/sdb1 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 4196351 1048576 5 Extended /dev/sdb5 2101248 2306047 102400 83 Linux /dev/sdb6 2308096 2512895 102400 83 Linux /dev/sdb7 2514944 2719743 102400 83 Linux /dev/sdb8 2721792 2926591 102400 83 Linux /dev/sdb9 2928640 3133439 102400 83 Linux 命令(輸入 m 獲取幫助):t 分區號 (1,2,5-9,默認 9):9 Hex 代碼(輸入 L 列出全部代碼):82 已將分區「Linux」的類型更改成「Linux swap / Solaris」 命令(輸入 m 獲取幫助):p 磁盤 /dev/sdb:5368 MB, 5368709120 字節,10485760 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標籤類型:dos 磁盤標識符:0xd391e822 設備 Boot Start End Blocks Id System /dev/sdb1 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 4196351 1048576 5 Extended /dev/sdb5 2101248 2306047 102400 83 Linux /dev/sdb6 2308096 2512895 102400 83 Linux /dev/sdb7 2514944 2719743 102400 83 Linux /dev/sdb8 2721792 2926591 102400 83 Linux /dev/sdb9 2928640 3133439 102400 82 Linux swap / Solaris 命令(輸入 m 獲取幫助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盤。 [root@localhost ~]# mkswap /dev/sdb9 正在設置交換空間版本 1,大小 = 102396 KiB 無標籤,UUID=74bf2766-a01b-48ea-9082-2fad6b8e06a9
二、掛載交換分區:啓用與禁用
[root@localhost ~]# free total used free shared buff/cache available Mem: 1001332 101756 535892 13424 363684 720328 Swap: 2097148 0 2097148 [root@localhost ~]# swapon /dev/sdb9 [root@localhost ~]# free total used free shared buff/cache available Mem: 1001332 101716 535924 13424 363692 720368 Swap: 2199544 0 2199544 [root@localhost ~]# swapoff /dev/sdb9 [root@localhost ~]# free total used free shared buff/cache available Mem: 1001332 102492 535152 13424 363688 719592 Swap: 2097148 0 2097148
實驗涉及到的命令小結:
內存空間使用狀態:free [OPTION]
-m: 以MB爲單位
-g: 以GB爲單位
文件系統空間佔用等信息的查看工具:df
-h: human-readable
-i:inodes instead of blocks
-P: 以Posix兼容的格式輸出;
查看某目錄整體空間佔用狀態:du
du [OPTION]... DIR
-h: human-readable
-s: summary
命令總結:mount, umount, free, df, du, swapon, swapoff, fuser
開機自動掛載
若是咱們想實現開機自動掛載某設備,只要修改/etc/fstab文件便可。
文件掛載的配置文件:/etc/fstab
查看此文件可知
每行定義一個要掛載的文件系統;
其每行的格式以下
要掛載的設備或僞文件系統 掛載點 文件系統類型 掛載選項 轉儲頻率 自檢次序
UUID=6efb8a23-bae1-427c-ab10-3caca95250b1 /boot xfs defaults 0 0
要掛載的設備或僞文件系統:設備文件、LABEL(LABEL="")、UUID(UUID="")、僞文件系統名稱(proc, sysfs)
掛載點:指定的文件夾
掛載選項:defaults,通常沒有特殊要求設置爲默認
轉儲頻率:
0:不作備份
1:天天轉儲
2:每隔一天轉儲
自檢次序:
0:不自檢
1:首先自檢;通常只有rootfs才用1;
/etc/fstab和/etc/mtab的區別
/etc/fstab文件的做用:
記錄了計算機上硬盤分區的相關信息,啓動 Linux 的時候,檢查分區的 fsck 命令,和掛載分區的 mount 命令,都須要 fstab 中的信息,來正確的檢查和掛載硬盤。
/etc/mtab文件的做用:
先看它的英文是:
This changes continuously as the file /proc/mount changes. In other words, when filesystems are mounted and unmounted, the change is immediately reflected in this file.
記載的是如今系統已經裝載的文件系統,包括操做系統創建的虛擬文件等;而/etc/fstab是系統準備裝載的。 每當 mount 掛載分區、umount 卸載分區,都會動態更新 mtab,mtab 老是保持着當前系統中已掛載的分區信息,fdisk、df 這類程序,必需要讀取 mtab 文件,才能得到當前系統中的分區掛載狀況。固然咱們本身還能夠經過讀取/proc/mount也能夠來獲取當前掛載信息
/etc/fstab文件配置異常致使的開機故障及其解決方法
模擬該故障的環境準備:
一、掛載目錄/mountdir存在
二、要掛載的設備存在且已作好格式化,這裏用的是/dev/sdb1,1G大小文件系統爲ext4.
三、設置/dev/sdb1卷標爲label
編輯/etc/fstab文件,指定設備的UUID或卷標表明掛載設備,並故意寫錯UUID或卷標,以後在自檢次序選項中設置爲大於0的數,這次實驗設置爲3
[root@localhost ~]# blkid /dev/sdb1 /dev/sdb1: LABEL="label" UUID="1633ca8a-b750-4231-a226-f58d7976c72c" TYPE="ext4"
設置完畢後重啓
重啓後加載/etc/fstab文件後發現要掛載的設備不對,因而進行檢查,以下圖
檢查完畢仍是掛在不了因而要求進入緊急救援模式,進行修繕。進入該模式須要輸入root的密碼
進入/etc/fstab文件後,要想讓機器正常啓動,能夠修改以下兩處:
一、將卷標修改正確,好比改成label;二、將開機自檢設置爲0.
修改完畢後重啓,機器正常啓動。
注:開機自動掛載最好設置UUID其次使用卷標,由於有的時候卷設備名會發生變化,致使開機啓動出現異常,好比上面這種狀況。
在CentOS6中略有不一樣,在CentOS6進入緊急救援模式以後它沒法直接更改/etc/fstab文件,由於它沒有寫權限,須要先df查看根掛載所在,以後使用mount -o rw,remount /mountdevice /mountpoint 從新掛載並賦予寫的權限便可。
/etc/fstab和/etc/mtab的區別 此內容參看以下博客
http://blog.163.com/qimeizhen8808@126/blog/static/165119518201281892121501/