4.文件系統
本章同步視頻:https://edu.51cto.com/sd/e4874
4.6 分區、格式化與掛載
4.6.6 掛載
什麼是掛載?Linux通過倒樹形的根文件系統來管理所有的文件,內核只能識別並管理根目錄/所在的文件系統及其下的目錄和文件。因此其他文件系統想要使用,都需要爲其指定在現存目錄下的訪問入口。
將額外的文件系統,與現存的Linux能夠識別的目錄,建立起映射關係,實現將現存目錄作爲訪問額外文件系統的入口的功能,這個過程稱爲掛載;用於訪問額外文件系統的,現存文件系統中的指定目錄,稱爲掛載點。
掛載的逆過程,解除額外的文件系統與現存Linux能夠識別的目錄之間的映射關係,稱爲卸載。
糾正一個誤區,並不是根目錄下任何一個目錄都可以作爲掛載點,由於掛載操作會使得原有目錄中文件被隱藏,因此根目錄以及系統原有目錄都不要作爲掛載點,會造成系統異常甚至崩潰,掛載點最好是新建的空目錄。
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
/dev/mapper/rhel-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
[root@localhost ~]# ls /lib/modules/$(uname -r)/kernel/fs
binfmt_misc.ko cramfs fat isofs nfs pstore
btrfs dlm fscache jbd2 nfs_common squashfs
cachefiles exofs fuse lockd nfsd udf
cifs ext4 gfs2 mbcache.ko nls xfs
[root@study ~]# mount [-t 檔案系統] LABEL='' 掛載點
[root@study ~]# mount [-t 檔案系統] UUID='' 掛載點#
[root@study ~]# mount [-t 檔案系統] 裝置檔名 掛載點
-a :依照設定檔 /etc/fstab 的資料將所有未掛載的磁碟都掛載上來
-l :單純的輸入 mount 會顯示目前掛載的信息。加上 -l 可增列 Label 名稱!
-t :可以加上檔案系統種類來指定欲掛載的類型。常見的 Linux 支援類型有:xfs, ext3, ext4, reiserfs, vfat, iso9660(光盤格式), nfs, cifs, smbfs (後三種爲網絡檔案系統類型)
-n :在預設的情況下,系統會將實際掛載的情況實時寫入 /etc/mtab 中,以利其他程序的運作。但在某些情況下(例如單人維護模式)爲了避免問題會刻意不寫入。此時就得要使用 -n 選項。
-o :後面可以接一些掛載時額外加上的參數!比方說賬號、密碼、讀寫權限等:
參數 | 內容意義 |
async/sync 異步/同步 | 設定磁碟是否以異步方式運作!預設爲 async(效能較佳) |
auto/noauto 自動/非自動 | 當下達 mount -a 時,此檔案系統是否會被主動測試掛載。預設爲 auto。 |
rw/ro 可讀寫/唯讀 | 讓該分割槽以可讀寫或者是唯讀的型態掛載上來。 |
exec/noexec 可執行/不可執行 | 限制在此檔案系統內是否可以進行『執行』的工作?如果是純粹用來儲存資料的目錄, 那麼可以設定爲 noexec 會比較安全。不過,這個參數也不能隨便使用,因爲你不知道該目錄下是否預設會有執行檔。 |
user/nouser 允許/不允許使用者掛載 | 是否允許使用者使用 mount 指令來掛載。一般而言,我們當然不希望一般身份的 user 能使用 mount ,因此這裏應該要設定爲 nouser 囉! |
suid/nosuid 具有/不具有 suid 權限 | 該檔案系統是否允許 SUID 的存在?如果不是執行檔放置目錄,也可以設定爲 nosuid 來取消這個功能! |
defaults | 同時具有 rw, suid, dev, exec, auto, nouser, async 等參數。 基本上,預設情況使用 defaults 設定即可! |
[root@localhost ~]# mkdir /mnt/sda3 #創建掛載點
[root@localhost ~]# mount /dev/sda3 /mnt/sda3/ #掛載
[root@localhost sda3]# df -h #查看掛載結果
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 9.8G 4.1G 5.8G 42% /
tmpfs 914M 140K 914M 1% /dev/shm
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/mapper/rhel-home 2.0G 33M 2.0G 2% /home
/dev/sda1 497M 119M 379M 24% /boot
/dev/sda3 197M 11M 187M 6% /mnt/sda3
[root@localhost ~]# blkid #查看設備的UUID
/dev/sda1: UUID="decc164a-f28b-4b7f-ae37-9fc38a347d94" TYPE="xfs"
/dev/sda2: UUID="Ijm3mK-onGH-ht6u-tGqw-qYYS-QrmH-dxbqkr" TYPE="LVM2_member"
/dev/mapper/rhel-root: UUID="f02db577-90a3-4ae2-a434-b43c4ab34d7e" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="145d4801-311d-4efe-b188-7620c7a9ada9" TYPE="swap"
/dev/mapper/rhel-home: UUID="6ef1eb27-38b9-46bd-b6d4-abc3557b8f8c" TYPE="xfs"
/dev/sda3: UUID="3bb235a9-a7e5-4a9a-828c-e60428cc97ca" TYPE="xfs"
[root@localhost ~]# mount UUID="3bb235a9-a7e5-4a9a-828c-e60428cc97ca" /mnt/sda3 #通過UUID掛載
[root@localhost sda3]# df -h #查看掛載結果
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
#[root@localhost ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom
#如果提示mount: no medium found on /dev/sr0,請看視頻。
[root@localhost ~]# mkdir /mnt/usb
[root@localhost ~]# mount /dev/sda4 /mnt/usb
#如果提示mount: special device /dev/sda4 does not exist,請看視頻
[root@localhost ~]# mount -o remount,rw /
[root@localhost ~]# mount --bind /etc/ /mnt/etc/
[root@study ~]# umount [-fn] 裝置檔名或掛載點
-f :強制卸載!可用在類似網絡檔案系統 (NFS) 無法讀取到的情況下;
[root@localhost ~]# umount /dev/sr0
[root@localhost ~]# umount UUID="2014-05-07-03-58-46-00"
[root@localhost ~]# umount /mnt/usb/
[root@localhost cdrom]# umount /dev/sr0
umount: /mnt/cdrom: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[root@localhost ~]# cat /etc/fstab
# Created by anaconda on Fri Feb 28 14:53:55 2020
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=decc164a-f28b-4b7f-ae37-9fc38a347d94 /boot xfs defaults 1 2
/dev/mapper/rhel-home /home xfs defaults 1 2
/dev/mapper/rhel-swap swap swap defaults 0 0
修改配置文件/etc/fstab,該文件中每一行定義一個要掛載的文件系統及相關屬性,每一行的內容分爲6個字段:
(3) 文件系統類型,如ext4,xfs,btrfs,vfat等等;
mount -a命令將自動掛載/etc/fstab文件中配置的設備,可以認爲系統啓動時會執行一次該命令以掛載已配置的設備。
但自動掛載有個條件——該設備的掛載選項中沒有noauto。換句話說,掛載選項中有noauto的設備在執行mount -a時不會被掛載。
u 根目錄 / 是必須掛載的﹐而且一定要先於其它 mount point 被掛載進來。
u 其它 mount point 必須爲已建立的目錄﹐可任意指定﹐但一定要遵守必須的系統目錄架構原則 (FHS)
u 所有 mount point 在同一時間之內﹐只能掛載一次。
u 所有 partition 在同一時間之內﹐只能掛載一次。
u 如若進行卸載﹐您必須先將工作目錄移到 mount point(及其子目錄) 之外。