Linux中掛載詳解以及mount命令用法

掛載概念node

Linux中的根目錄之外的文件要想被訪問,須要將其「關聯」到根目錄下的某個目錄來實現,這種關聯操做就是「掛載」,這個目錄就是「掛載點」,解除次關聯關係的過程稱之爲「卸載」。linux

注意:「掛載點」的目錄須要如下幾個要求:bash

(1)目錄事先存在,能夠用mkdir命令新建目錄;app

(2)掛載點目錄不可被其餘進程使用到;異步

(3)掛載點下原有文件將被隱藏。async

 

掛載與卸載工具

掛載方法:mount DECE MOUNT_POINTui

    mount:經過查看/etc/mtab(文章最後會對/etc/mtab有個解釋)文件顯示當前系統已掛載的全部設備this

命令使用格式:mount [-fnrsvw] [-t vfstype] [-o options] device dirspa

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)掛載點有內容的文件夾,查看被掛載後其內容是否消失。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[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

wKiom1e7vF_iNNTXAAAo2-XXpTo662.gif

查看此文件可知

每行定義一個要掛載的文件系統;

其每行的格式以下

要掛載的設備或僞文件系統  掛載點  文件系統類型  掛載選項 轉儲頻率 自檢次序

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也能夠來獲取當前掛載信息 

相關文章
相關標籤/搜索