接前文,CentOS下ext4、vfat文件系統(tǒng)創(chuàng)建、修改,以及swap分區(qū)管理
在Linux中,存儲(chǔ)設(shè)備的使用一般分三步,分區(qū),創(chuàng)建文件系統(tǒng)(格式化),掛載。
什么是掛載?個(gè)人理解,Linux通過(guò)倒樹(shù)形的根文件系統(tǒng)來(lái)管理所有的文件,內(nèi)核只能識(shí)別并管理根目錄/
所在的文件系統(tǒng)及其下的目錄和文件。因此其他文件系統(tǒng)想要使用,都需要為其指定在現(xiàn)存目錄下的訪問(wèn)入口。
將額外的文件系統(tǒng),與現(xiàn)存的Linux能夠識(shí)別的目錄,建立起映射關(guān)系,實(shí)現(xiàn)將現(xiàn)存目錄作為訪問(wèn)額外文件系統(tǒng)的入口的功能,這個(gè)過(guò)程稱(chēng)為掛載;用于訪問(wèn)額外文件系統(tǒng)的,現(xiàn)存文件系統(tǒng)中的指定目錄,稱(chēng)為掛載點(diǎn)。
掛載的逆過(guò)程,解除額外的文件系統(tǒng)與現(xiàn)存Linux能夠識(shí)別的目錄之間的映射關(guān)系,稱(chēng)為卸載。
一,查詢(xún)所有塊設(shè)備信息
掛載需要兩個(gè)參數(shù),掛載的設(shè)備或文件系統(tǒng),掛載點(diǎn);
1. 掛載點(diǎn),是現(xiàn)有文件系統(tǒng)下的某個(gè)目錄,是由我們自己指定的;
2. 要掛載的設(shè)備或文件系統(tǒng),其信息要如何獲得?
1. 如果要掛載的是磁盤(pán),可以嘗試用fdisk -l
命令配合df
和free
命令
為了更直觀的比較,可以加上grep以過(guò)濾顯示結(jié)果,例如:
從結(jié)果中可以看到,swap分區(qū)只有sda3,并且大小和現(xiàn)有swap大小基本一樣,可知swap分區(qū)已全部掛載。
已掛載磁盤(pán)只有sda1和sda2,sdb1沒(méi)有掛載。
2. 使用blkid -o format
命令
blkid命令用于顯示所有塊設(shè)備屬性,無(wú)論該設(shè)備有沒(méi)有被掛載
blkid -o format
的format常用值有
full:顯示設(shè)備名稱(chēng)、UUID和文件系統(tǒng)類(lèi)型
value:顯示UUID和文件系統(tǒng)類(lèi)型(不是像full里那樣的鍵值對(duì),而是逐一打印UUID和TYPE的值)
list:以對(duì)用戶較友好的格式輸出塊設(shè)備屬性
device:輸出設(shè)備名稱(chēng)其中,full顯示的內(nèi)容=device+value,list格式最常用,格式也更友好
在format的多個(gè)值中比較推薦list或full,full模式下會(huì)顯示設(shè)備名稱(chēng)、UUID和文件系統(tǒng)的類(lèi)型
而list模式更便于我們閱讀,此時(shí)會(huì)顯示設(shè)備名稱(chēng)、文件系統(tǒng)類(lèi)型、表現(xiàn)名稱(chēng)、掛載點(diǎn)(會(huì)顯示掛載點(diǎn)或未掛載狀態(tài))和UUID。如下圖,根據(jù)提示很容易可以看得出/dev/sdb1
和/dev/sr0
處于未掛載狀態(tài)。
3. 使用lsblk
命令
lsblk:list block devices,顯示塊設(shè)備信息
用法:
lsblk [選項(xiàng)] [<設(shè)備> ...]
常用選項(xiàng):
-f, --fs:輸出文件系統(tǒng)信息
-m, --perms:輸出權(quán)限信息
-p, --paths:打印完整設(shè)備路徑
例如,lsblk -fmp
,不指定設(shè)備則顯示所有塊設(shè)備信息,很容易看到sbd1和sr0沒(méi)有掛載點(diǎn),說(shuō)明他們處于未掛載狀態(tài)。
通過(guò)上面三種方法,我們可以了解到目前尚未掛載的設(shè)備信息,即有哪些設(shè)備可以掛載。
二,文件系統(tǒng)的掛載
1,掛載和卸載命令的參數(shù):
掛載使用mount
命令,設(shè)備、掛載點(diǎn) 兩者都需要指明
卸載使用umount
命令,設(shè)備、掛載點(diǎn) 兩者只需要指明其一
2,一般掛載
命令格式:mount [-nrw] [-t vfstype] [-o options] device dir
device:指明要掛載的設(shè)備或文件系統(tǒng),可以通過(guò)以下方式指定
1)設(shè)備文件名稱(chēng):例如/dev/sda5,默認(rèn)使用這種方式
2)卷標(biāo):-L 'LabelName',例如 -L 'MYDATA'
3)UUID:-U UUID,即使設(shè)備名稱(chēng)或者卷標(biāo)改了,也不影響識(shí)別
4)偽文件系統(tǒng)(暫不介紹):proc,sysfs,devtmpfs,configfs
dir:掛載點(diǎn)
1)事先存在,并建議使用空目錄,
2)如果是長(zhǎng)期掛載,盡量不要使用mnt和media目錄
3)處于busy狀態(tài)(例如正在被訪問(wèn)的目錄)的設(shè)備無(wú)法被卸載
mount命令本身選項(xiàng):
-r:readonly,只讀掛載(整個(gè)分區(qū)只讀);
-w:read and write, 讀寫(xiě)掛載;
-n:默認(rèn)情況下,設(shè)備掛載或卸載的操作會(huì)同步更新至/etc/mtab
文件中;
-n用于禁止此特性:掛載但不更新/etc/mtab
文件;
-t vfstype:指明要掛載的設(shè)備上的文件系統(tǒng)的類(lèi)型;多數(shù)情況下可省略,此時(shí)mount會(huì)通過(guò)blkid來(lái)判斷要掛載的設(shè)備的文件系統(tǒng)類(lèi)型;
-L LABEL:掛載時(shí)以卷標(biāo)的方式指明設(shè)備;
mount -L LABEL dir
-U UUID:掛載時(shí)以UUID的方式指明設(shè)備;
mount -U UUID dir
-o options:掛載選項(xiàng),多用于定義掛載時(shí)文件系統(tǒng)的特性
sync/async:同步/異步操作;
atime/noatime:文件或目錄在被訪問(wèn)時(shí)是否更新其訪問(wèn)時(shí)間戳;
diratime/nodiratime:目錄在被訪問(wèn)時(shí)是否更新其訪問(wèn)時(shí)間戳;
remount:重新掛載;
acl:支持使用facl功能;
# mount -o acl device dir
# tune2fs -o acl device
# mount -o remount,acl device dir
#重新掛載并增加acl特性
ro:只讀,-o ro 等效于 -r
rw:讀寫(xiě),-o rw 等效于 -w
dev/nodev:此設(shè)備上是否允許創(chuàng)建設(shè)備文件;
exec/noexec:是否允許運(yùn)行此設(shè)備上的程序文件;
auto/noauto:是否支持自動(dòng)掛載,即是否支持mount -a
,如果是noauto
,那么即使在fstab
中加入記錄,啟動(dòng)時(shí)也不會(huì)自動(dòng)掛載該設(shè)備;
user/nouser:是否允許普通用戶掛載此文件系統(tǒng);
suid/nosuid:是否允許程序文件上的suid和sgid特殊權(quán)限生效;
defaults:使用默認(rèn)掛載特性: rw, suid, dev, exec, auto, nouser, async, relatime(默認(rèn)特性和CentOS版本及內(nèi)核版本有關(guān))
特別的,如果指定的特性與defaults的默認(rèn)特性沖突,以額外指定的特性為準(zhǔn),例如mount -o defaults,noauto device dir
,默認(rèn)特性是auto
,額外指定noauto
,device實(shí)際表現(xiàn)的掛載特性是noauto
。
mount的特殊用法:
將一個(gè)目錄綁定至另一個(gè)目錄上,實(shí)現(xiàn)兩個(gè)不同路徑訪問(wèn)同一個(gè)目錄:
mount --bind 源目錄 目標(biāo)目錄
3,掛載可移動(dòng)設(shè)備或回環(huán)設(shè)備
-
掛載光盤(pán):
mount -r /dev/cdrom mount_point
光盤(pán)設(shè)備文件一般名稱(chēng)是/dev/cdrom
,/dev/dvd
,其實(shí)都是鏈接文件,例如我的虛擬機(jī)上/dev/cdrom
就指向/dev/sr0
/dev/cdrom其實(shí)是個(gè)鏈接文件 -
掛載U盤(pán):
事先識(shí)別U盤(pán)的設(shè)備文件;
掛載U盤(pán)的過(guò)程演示,U盤(pán)為FAT32文件系統(tǒng) 掛載本地的回環(huán)設(shè)備,例如iso鏡像或img鏡像文件:
# mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT
注意/PATH/TO/SOME_LOOP_FILE替換為鏡像文件的路徑和文件名,MOUNT_POINT替換為掛載點(diǎn)路徑
4,設(shè)置開(kāi)機(jī)后自動(dòng)掛載
修改配置文件/etc/fstab
,該文件中每一行定義一個(gè)要掛載的文件系統(tǒng)及相關(guān)屬性,每一行的內(nèi)容分為6個(gè)字段:
(1) 要掛載的設(shè)備,可以是以下內(nèi)容:
設(shè)備文件的名稱(chēng),如/dev/sda1
設(shè)備的LABEL
設(shè)備的UUID,CentOS 7中較多使用此種方式
偽文件系統(tǒng):如sysfs, proc, tmpfs等
(2) 掛載點(diǎn)路徑
如果是swap類(lèi)型的設(shè)備,掛載點(diǎn)就是swap
;
(3) 文件系統(tǒng)類(lèi)型,如ext4,xfs,btrfs,vfat等等;
(4) 掛載選項(xiàng),也就是mount -o
命令的那些選項(xiàng):
defaults:使用默認(rèn)掛載選項(xiàng);
如果要同時(shí)指明多個(gè)掛載選項(xiàng),彼此間以逗號(hào)分隔,如:defaults,acl,noatime,noexec
(5) 轉(zhuǎn)儲(chǔ)頻率,已經(jīng)很少使用:
0:從不備份;
1:每天備份;
2:每隔一天備份;
(6) 自檢次序:
0:不自檢;
1:首先自檢,通常只能是根文件系統(tǒng)可用1;
2:次級(jí)自檢;
自動(dòng)掛載和
mount -a
mount -a
命令將自動(dòng)掛載/etc/fstab
文件中配置的設(shè)備,可以認(rèn)為系統(tǒng)啟動(dòng)時(shí)會(huì)執(zhí)行一次該命令以掛載已配置的設(shè)備。
但自動(dòng)掛載有個(gè)條件——該設(shè)備的掛載選項(xiàng)中沒(méi)有noauto
。換句話說(shuō),掛載選項(xiàng)中有noauto
的設(shè)備在執(zhí)行mount -a
時(shí)不會(huì)被掛載。
三,查看已掛載的文件系統(tǒng)信息
1. 使用findmnt
命令
findmnt 命令將列出所有已掛載的文件系統(tǒng)或者搜索出某個(gè)文件系統(tǒng),是查看文件系統(tǒng)時(shí)很常用的命令之一。findmnt 命令能夠在 /etc/fstab
、/etc/mtab
或 /proc/self/mountinfo
這幾個(gè)文件中進(jìn)行搜索。
命令常用選項(xiàng):
-l:表示采用列表形式輸出結(jié)果,默認(rèn)采用樹(shù)形輸出結(jié)果
--df 或 -D:以df類(lèi)型輸出結(jié)果,顯示文件系統(tǒng)及設(shè)備空間使用情況
-t TYPE:只輸出文件類(lèi)型為T(mén)YPE的結(jié)果
參數(shù):
findmnt可以指定設(shè)備或掛載點(diǎn),輸出相關(guān)結(jié)果,不帶任何參數(shù)則輸出所有結(jié)果,例如:
findmnt /dev/sda1
findmnt /
2. 使用blkid
命令
blkid -o list
,在第一部分已經(jīng)簡(jiǎn)單介紹過(guò)該命令的用法,這里不再重復(fù)。
3. 使用lsblk
命令
lsblk -fp [device]
,第一部分也已經(jīng)介紹過(guò),這里不再重復(fù)。
4. 使用df
命令
常用df -hT
來(lái)查看已掛載設(shè)備的文件系統(tǒng)及其空間使用情況,-T
表示查看文件類(lèi)型,-h
表示以方便識(shí)別的方式輸出空間情況。
更多用法請(qǐng)看man手冊(cè)。
5. 使用mount
命令
直接使用mount
命令,不帶選項(xiàng)和參數(shù),會(huì)輸出所有已掛載的系統(tǒng)信息,里面可能有很多我們不需要的信息,常和grep一起使用以查看我們關(guān)注的內(nèi)容。
如:mount | grep -E "(sd)|(sr)"
6. 使用fdisk -l
命令
該命令是分區(qū)命令,因此只能看到能夠進(jìn)行分區(qū)操作的設(shè)備信息(比如光盤(pán)就不會(huì)顯示),同時(shí)無(wú)論分區(qū)有沒(méi)有掛載都會(huì)顯示。
上面的命令可以簡(jiǎn)單分為
可以查看設(shè)備信息:
blkid
,lsblk
,fdisk
只能查看設(shè)備信息:
findmnt
,df
,mount
四,文件系統(tǒng)的卸載
卸載使用命令umount
,設(shè)備或掛載點(diǎn)任意指定其中之一即可:umount device|dir
卸載時(shí)有可能會(huì)遇到掛載點(diǎn)正在被其他進(jìn)程訪問(wèn),無(wú)法卸載的情況:
按照系統(tǒng)提示的2個(gè)命令查看:
lsof /test
fuser -v /test
解決辦法有2個(gè):
1. 終止所有正在訪問(wèn)某掛載點(diǎn)的進(jìn)程,比如使用命令fuser -km /test
(這個(gè)命令有可能導(dǎo)致其他進(jìn)程出問(wèn)題,生產(chǎn)環(huán)境慎用),或者kill掉訪問(wèn)掛載點(diǎn)的進(jìn)程,然后再卸載。
2. 強(qiáng)制卸載:umount -l /test
,umount -l
會(huì)等到掛載點(diǎn)空閑后再卸載,相對(duì)讓人放心一些。