CentOS掛載詳解

接前文,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命令配合dffree命令

為了更直觀的比較,可以加上grep以過(guò)濾顯示結(jié)果,例如:


fdisk配合df和free查看磁盤(pán)掛載情況

從結(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)型

blkid -o full

而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)。

blkid -o list

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 /

結(jié)果如圖所示

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)"

mount和grep結(jié)合使用一例

6. 使用fdisk -l命令
  該命令是分區(qū)命令,因此只能看到能夠進(jìn)行分區(qū)操作的設(shè)備信息(比如光盤(pán)就不會(huì)顯示),同時(shí)無(wú)論分區(qū)有沒(méi)有掛載都會(huì)顯示。
  
上面的命令可以簡(jiǎn)單分為
  可以查看\color{red}{未掛載}設(shè)備信息:blkidlsblkfdisk
  只能查看\color{red}{已掛載}設(shè)備信息:findmntdfmount


四,文件系統(tǒng)的卸載

卸載使用命令umount,設(shè)備或掛載點(diǎn)任意指定其中之一即可:umount device|dir
  
  卸載時(shí)有可能會(huì)遇到掛載點(diǎn)正在被其他進(jìn)程訪問(wèn),無(wú)法卸載的情況:

掛載點(diǎn)被其他進(jìn)程訪問(wèn),無(wú)法卸載

  按照系統(tǒng)提示的2個(gè)命令查看:
    lsof /test
    fuser -v /test
查看掛載點(diǎn)正被哪些進(jìn)程訪問(wèn)

解決辦法有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 /testumount -l會(huì)等到掛載點(diǎn)空閑后再卸載,相對(duì)讓人放心一些。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,922評(píng)論 0 5
  • 參考文檔 https://www.linuxidc.com/Linux/2017-09/146760.htmhtt...
    三杯水Plus閱讀 4,355評(píng)論 0 8
  • 一.分區(qū)工具fdisk (1)分區(qū)工具fdisk工具的使用:fdisk -l -u :查看分區(qū)表,該命令是在磁盤(pán)上...
    楠人幫閱讀 765評(píng)論 0 1
  • 目錄磁盤(pán)結(jié)構(gòu)磁盤(pán)分區(qū)磁盤(pán)分區(qū)管理文件系統(tǒng)管理掛載 一、磁盤(pán)結(jié)構(gòu) (一)設(shè)備文件 設(shè)備文件:linux系統(tǒng)下一切皆文...
    哈嘍別樣閱讀 1,021評(píng)論 0 0
  • 今天,無(wú)意發(fā)現(xiàn)小家伙寫(xiě)的一篇作文,感覺(jué)挺有意思的,發(fā)出來(lái)和大家分享一下,原文如下: 秋天的夜色籠罩了天空,一輪明月...
    紫墨zm閱讀 1,109評(píng)論 9 20