Linux磁盤和文件系統管理(3)_磁盤掛載 卸載

磁盤的掛載與卸載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也能夠來獲取當前掛載信息。

      
若有錯誤,敬請指正!

謝謝!

相關文章
相關標籤/搜索