首頁 > 軟體

Linux基礎知識之掛載詳解(mount,umount及開機自動掛載)

2020-06-16 17:34:42

掛載概念簡述

根檔案系統之外的其他檔案要想能夠被存取,都必須通過“關聯”至根檔案系統上的某個目錄來實現,此關聯操作即為“掛載”,此目錄即為“掛載點”,解除此關聯關係的過程稱之為“解除安裝

1.掛載:根檔案系統外通過關聯至根檔案系統上的某個目錄來實現存取

2.掛載點:mount_point,用於作為另一個檔案系統的存取入口;

(1) 事先存在;

(2) 應該使用未被或不會被其它進程使用到的目錄;

(3) 掛載點下原有的檔案將會被隱藏;


 

掛載與解除安裝

掛載方法: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、指定檔案系統將塊裝置掛載至指定空資料夾內:演示內容: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)掛載點有內容的資料夾,在掛載後內容消失,解除安裝後內容重現,也就是說掛載後會將原檔案內容掩蓋,但並不對其進行其他操作。

………………………………………………………………………………………………………………………

2、演示內容: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、交換分割區的建立: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

2、掛載交換分割區:啟用與禁用

[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也可以來獲取當前掛載資訊 

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-08/134666.htm


IT145.com E-mail:sddin#qq.com