码迷,mamicode.com
首页 > 系统相关 > 详细

Linux磁盘和文件系统管理(3)_磁盘挂载 卸载

时间:2015-09-15 20:14:20      阅读:449      评论:0      收藏:0      [点我收藏+]

标签:linux   文件系统 挂载 卸载   

磁盘的挂载与卸载

    挂载:将系统额外的文件系统通过根下的目录与根文件系统建立起关联关系,将该目录成为进入新磁盘分区(即文件系统)的入口操作。

    卸载:解除此关联关系的过程。

    挂载点 mount point:设备挂载的目录

注意:挂载点在挂载后,其目录下的原有文件和目录将会暂时隐藏,等新分区卸载后,原有文件和目录会再次显示出来。所以建议 挂载点使用空目录。


挂载 mount:

    mount [-l] 通过读取/etc/mtab文件来显示当前系统所有已经挂载的设备

[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的数据挂载所有没有挂载的磁盘

     mount [-fnrsvw] [-t vfstype] [-o options] device mount_point

     device :要挂载的设备

        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也可以来获取当前挂载信息。

      
如有错误,敬请指正!

谢谢!

Linux磁盘和文件系统管理(3)_磁盘挂载 卸载

标签:linux   文件系统 挂载 卸载   

原文地址:http://rogerwang.blog.51cto.com/5326353/1695067

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!