Linux中掛載詳解以及mount命令用法
掛載概念
Linux中的根目錄以外的檔案要想被訪問,需要將其“關聯”到根目錄下的某個目錄來實現,這種關聯操作就是“掛載”,這個目錄就是“掛載點”,解除次關聯關係的過程稱之為“解除安裝”。
注意:“掛載點”的目錄需要以下幾個要求:
(1)目錄事先存在,可以用mkdir命令新建目錄;
(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 |
|
通過上述演示,說明了如下事實:1)沒有指定檔案系統,塊裝置也可以正常掛載;2)指定與塊裝置不一致的檔案系統型別則命令報錯;3)掛載點有內容的資料夾,在掛載後內容消失,解除安裝後內容重現,也就是說掛載後會將原檔案內容掩蓋,但並不對其進行其他操作。
………………………………………………………………………………………………………………………
2、演示內容:1)指定卷標並以只讀方式掛載;2)對目錄進行掛載操作,檢視其與硬連結與軟連結有何不同。
[[email protected] device]# blkid /dev/sdb6
/dev/sdb6: LABEL="sdb6" UUID="8284450c-8cb9-45d7-a8b8-ed9ed9ef9e52" TYPE="xfs" [[email protected] device]# mount -L 'sdb6' -r /device/ [[email protected] device]# touch /device/33 touch: 無法建立"/device/33": 只讀檔案系統 [[email protected] device]# umount /device/ [[email protected] /]# mount -B /etc/ /device/ [[email protected] /]# 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
[[email protected] ~]# 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. 正在同步磁碟。 [[email protected] ~]# mkswap /dev/sdb9 正在設定交換空間版本 1,大小 = 102396 KiB 無標籤,UUID=74bf2766-a01b-48ea-9082-2fad6b8e06a9
2、掛載交換分割槽:啟用與禁用
[[email protected] ~]# free total used free shared buff/cache available Mem: 1001332 101756 535892 13424 363684 720328 Swap: 2097148 0 2097148 [[email protected] ~]# swapon /dev/sdb9 [[email protected] ~]# free total used free shared buff/cache available Mem: 1001332 101716 535924 13424 363692 720368 Swap: 2199544 0 2199544 [[email protected] ~]# swapoff /dev/sdb9 [[email protected] ~]# 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也可以來獲取當前掛載資訊