磁盤的掛載與卸載node
掛載:將系統額外的文件系統經過根下的目錄與根文件系統創建起關聯關係,將該目錄成爲進入新磁盤分區(即文件系統)的入口操做。vim
卸載:解除此關聯關係的過程。bash
掛載點 mount point:設備掛載的目錄異步
注意:掛載點在掛載後,其目錄下的原有文件和目錄將會暫時隱藏,等新分區卸載後,原有文件和目錄會再次顯示出來。因此建議 掛載點使用空目錄。socket
掛載 mount:async
mount [-l] 經過讀取/etc/mtab文件來顯示當前系統全部已經掛載的設備ide
[root@localhost test]# mount proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) /dev/sda3 on / type ext4 (rw,relatime,seclabel,data=ordered) /dev/sda2 on /usr type ext4 (rw,relatime,seclabel,data=ordered) ....省略... debugfs on /sys/kernel/debug type debugfs (rw,relatime) /dev/sda1 on /boot type ext4 (rw,relatime,seclabel,data=ordered) /dev/sda5 on /home type ext4 (rw,relatime,seclabel,data=ordered)
mount -a: 按照配置文件/etc/fstab的數據掛載全部沒有掛載的磁盤oop
mount [-fnrsvw] [-t vfstype] [-o options] device mount_pointui
device :要掛載的設備spa
1 設備文件: /dev/sdb5
2 卷標: -L ‘label’
3 uuid: -U ‘uuid’
4 僞文件系統
5 文件路徑:綁定掛載
mount_point :掛載點
建議空目錄
選項:
-l:顯示當前掛載信息時,增長Label列的顯示
-n:不寫入/etc/mtab,默認狀況下,將實際掛載狀況實時寫入/etc/mtab中
此時,若是想查看掛載的全部文件系統:cat /proc/mounts
-t:指定將要掛載的文件系統類型
-L : 經過指定卷標label掛載
-r:以只讀方式掛載
-a:掛載在/etc/fstab中的全部文件系統
-f : 跳過系統掛載,試運行
-B:綁定一個目錄到另一個目錄上
-o options 主要用來描述設備或檔案的掛接方式。
參數:
loop:用來把一個文件當成硬盤分區掛接上系統
ro:採用只讀方式掛接設備
rw:採用讀寫方式掛接設備
iocharset:指定訪問文件系統所用字符集
async:文件系統使用異步寫入
sync:文件系統使用同步寫入
auto,noauto:容許分區被使用mount -a 自動掛載
dev,nodev:是否容許此分區上建立設備文件
suid,nosuid:是否容許此分區上有suid/sgid的文件格式
user,nouser:是否容許在此分區下任何用戶執行mount
defaults:默認值rw, suid, dev, exec, auto, nouser, and async.
remount:從新掛載,多在系統出錯時,或更新參數時使用
示例
#按指定卷標掛載 -L [root@localhost ~]# mount -L 'mytest' /mnt/test1 [root@localhost ~]# mount | grep '/dev/sdb.' 30:/dev/sdb1 on /root/test_mount/test1 type ext4 (rw,relatime,seclabel,data=ordered) #只讀方式掛載分區 [root@localhost ~]# mount -r /dev/sdb5 /mnt/test2 [root@localhost ~]# mount | grep '/dev/sdb.' 30:/dev/sdb1 on /root/test_mount/test1 type ext4 (rw,relatime,seclabel,data=ordered) 31:/dev/sdb5 on /root/test_mount/test2 type ext4 (ro,relatime,seclabel,data=ordered) [root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on ....省略... /dev/sdb1 999320 2564 927944 1% /mnt/test1 /dev/sdb5 499656 784 462176 1% /mnt/test2 #將/home目錄掛載到/mnt/test3下面 [root@localhost mnt]# mount -B /home/ /mnt/test3/ [root@localhost mnt]# ll /home/ /mnt/test3/ /home/: total 32 drwx------. 2 hadoop hadoop 4096 Sep 9 08:04 hadoop drwx------. 2 root root 16384 Aug 20 06:12 lost+found drwx------. 2 roger roger 4096 Aug 20 06:34 roger drwx------. 3 test1 test1 4096 Sep 7 04:28 test1 drwx------. 2 testuser1 testuser1 4096 Sep 13 18:03 testuser1 /mnt/test3/: total 32 drwx------. 2 hadoop hadoop 4096 Sep 9 08:04 hadoop drwx------. 2 root root 16384 Aug 20 06:12 lost+found drwx------. 2 roger roger 4096 Aug 20 06:34 roger drwx------. 3 test1 test1 4096 Sep 7 04:28 test1 drwx------. 2 testuser1 testuser1 4096 Sep 13 18:03 testuser1
umount:卸載命令
umount [-fn] DEVICE
DEVICE 設備文件名
umount [-fn] MOUNT_POINT
MOUNT_POINT 掛載點
參數:
-f:強制卸載
-n:不更新/etc/mtab的狀況下卸載
示例:
#設備名稱卸載 [root@localhost ~]# umount /dev/sdb1 #由於掛載的是目錄,因此只能同過掛載點卸載 [root@localhost ~]# umount /mnt/test3/
卸載時遇到設備被佔用
[root@localhost ~]# umount /dev/sdb1 umount: /mnt/test3: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
查看正在訪問指定掛載點的進程:
# fuser -v MOUNT_POINT
[root@localhost ~]# fuser -v /mnt/test3/ USER PID ACCESS COMMAND /mnt/test3: root kernel mount /mnt/test3 root 3356 ..c.. bash
終止全部正在訪問指定的掛載點的進程:
# fuser -km MOUNT_POINT
[root@localhost ~]# fuser -km /mnt/test3/ /mnt/test3: 3356c #成功卸載 [root@localhost ~]# umount /dev/sdb1
補充說明:
fuser命令:顯示全部正在使用着指定的file, file system 或者 sockets的進程信息
fuser [-fuv] [-a|-s] [-4|-6] [-c|-m|-n space] [ -k [-i] [-M] [-w] [-SIGNAL] ] 文件名/文件系統/sockets
參數:
-k,--kill:殺死正在訪問的文件的進程
-i:交互模式 殺死進程前進行確認
-m:後面接的那個文件名會主動上提到該文件系統的最頂層,對umount不成功頗有效
-u :進程號後圓括號中顯示進程擁有者
-v:輸出進程詳細信息
默認狀況下,每一個進程號後面都跟隨一個字母,該字母指示進程如何使用文件。
c 文件做爲當前目錄
e 文件做爲程序的可執行對象
r 文件做爲根目錄
m 文件做爲mmap文件或共享庫
示例:
[root@localhost ~]# fuser /mnt/ /mnt: 3427c [root@localhost ~]# fuser -u /mnt/ /mnt: 3427c(root) [root@localhost ~]# fuser -v /mnt/ USER PID ACCESS COMMAND /mnt: root 3427 ..c.. bash [root@localhost ~]# fuser -ki /mnt/ /mnt: 3427c Kill process 3427 ? (y/N) n
掛載相關配置文件:
/etc/fstab (file system table)
記錄是系統準備裝載文件系統,用來設置 開機掛載
[root@localhost ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Thu Aug 20 06:13:01 2015 # # 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 # UUID=8306bbdb-4c6b-4975-8596-c3721eeb6998 / ext4 defaults 1 1 UUID=4bfd1d98-b114-4685-84a0-d44130fb3128 /boot ext4 defaults 1 2 UUID=86be1f1b-e7b0-4d86-a743-7cc99ba332ec /home ext4 defaults 1 2 UUID=cc4474b4-402e-4e99-9b04-f55327d94faa /usr ext4 defaults 1 2 UUID=f885b330-d561-454f-90d2-259c4a81a5f9 swap swap defaults 0 0
/etc/fstab文件中每一行定義一個文件系統
每行有6個字段:
要掛載的設備或僞文件系統 掛載點 文件系統類型 掛載選項 轉儲頻率 自檢次序
要掛載的設備
設備名/dev/sda5, UUID=, Label=, 僞文件系統名
掛載點:
目錄
文件系統類型:
ext2/ext3/ext4, xfs...
掛載選項:
defaults,rw/ro, nouser,async/sync, auto/noauto...
轉儲頻率:
0表明不作備份
1表明天天進行dump操做
2表明不按期進行dump操做
自檢次序:fsck檢驗扇區
0表示不自檢
1表示最先自檢
2 優先級比1低
示例:
#編輯 /etc/fstab [root@localhost ~]# vim /etc/fstab /dev/sdb1 /mnt/test3 ext4 defaults 0 0 # 掛載 [root@localhost ~]# mount -a #查看 [root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 9947976 554736 8864856 6% / devtmpfs 493016 0 493016 0% /dev ..... /dev/sdb1 999320 2564 927944 1% /mnt/test3
/etc/mtab文件:
記錄當前系統已經裝載的文件系統,包括操做系統創建的虛擬文件等;
[root@localhost ~]# cat /etc/mtab rootfs / rootfs rw 0 0 proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0 devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=493016k,nr_inodes=123254,mode=755 0 0 securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0 tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0 devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 tmpfs /run tmpfs rw,seclabel,nosuid,nodev,mode=755 0 0 tmpfs /sys/fs/cgroup tmpfs rw,seclabel,nosuid,nodev,noexec,mode=755 0 0 ....
當 mount 掛載分區、umount 卸載分區,都會實時更新 mtab,mtab 老是保持着當前系統中已掛載的分區信息,fdisk、df 這類程序,必需要讀取 mtab 文件,才能得到當前系統中的分區掛載狀況。還能夠經過讀取/proc/mount也能夠來獲取當前掛載信息。
若有錯誤,敬請指正!
謝謝!