Linux基础知识之挂载详解(mount,umount及开机自动挂载)
掛載概念簡述:
根文件系統之外的其他文件要想能夠被訪問,都必須通過“關聯”至根文件系統上的某個目錄來實現,此關聯操作即為“掛載”,此目錄即為“掛載點”,解除此關聯關系的過程稱之為“卸載”
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
注:文件夾的掛載在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 ? ?00
? ? 要掛載的設備或偽文件系統:設備文件、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
總結
以上是生活随笔為你收集整理的Linux基础知识之挂载详解(mount,umount及开机自动挂载)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Linux] killall 、kil
- 下一篇: 你真的懂select Socket模型吗