磁盘挂载与卸载 mount

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了磁盘挂载与卸载 mount相关的知识,希望对你有一定的参考价值。

磁盘挂载与卸载

磁盘分区完之后需要格式化,格式化之后需要挂载磁盘。

格式化后的磁盘恰是是一个块设备文件,类型为b。

(扩展:LINUX中的七种文件类型

d.  目录文件。

l.  符号链接(指向另一个文件,类似于瘟下的快捷方式)。

s.  套接字文件。

b . 块设备文件,二进制文件

c.  字符设备文件。

p.  命名管道文件。

- . 普通文件,或更准确地说,不属于以上几种类型的文件

在挂载某个分区前需要先建立一个挂载点,这个挂载点是以目录的形式出现的。一旦把某个分区挂载到了这个挂载点(目录)下,那么再往这个目录写数据时,则会写到该分区中。需要注意!

在挂载该分区前,挂载点(目录)下必须是个空目录。其实目录不为空并不影响所挂载分区的使用。但是一旦挂载上了,那么该目录下以前的东西就看不到了。只有卸载掉该分区后才能看到。

命令mount

  • 单一文件系统不应该被重复挂载在不同的挂载点中

  • 单一目录不应该重复挂载多个文件系统

  • 作为挂载点的目录理论上应该都是空目录

语法:mount [-t vfstype] [-o options] device dir

1.-t vfstype 指定文件系统的类型,通常不必指定。

2.-o options 主要用来描述设备或档案的挂接方式。

3.device 要挂接(mount)的设备。

4.dir设备在系统上的挂接点(mount point)。

选项:

-a:依照配置文件/etc/fstab 的数据将所有未挂载的磁盘都挂载上来

-l:单纯输入mount会显示目前挂在信息,加上-l 可增列LABEL名称

-t:可加上文件系统种类来指定欲挂载的类型

-n:在默认情况下,系统会将实际挂载的情况实时写人/etc/mtab中,以利其他系统运行,但在某些情况下欲避免问题,会刻意不写入,此时就要加-n选项。

-L:系统除了可以利用设备文件名之外,还可以利用文件系统的卷标名称来进行挂载

-o:后面可以接一些挂载时额外加上的参数:

常用的选项有:-a-t-o.

如果不加任何选项,直接运行mount命令,会显示如下信息:

[[email protected] ~]# mount

/dev/sda3 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sda1 on /boot type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

mount命令可以查看当前系统已经挂载的所有分区,以及分区文件系统的类型,挂载点和一些选项等信息。所以如果想知道某个分区的文件系统类型直接用该命令查看即可。

例:

建一个空目录,然后在目录里建一个空白文档。

[[email protected] ~]# mkdir /newdir

[[email protected] ~]# touch /newdir/newfile.txt

[[email protected] ~]# ls /newdir/newfile.txt

/newdir/newfile.txt

然后把格式化的 /dev/sdb5挂载到 /newdir上。

mount: wrong fs type, bad option, bad superblock on /dev/sdb5,

missing codepage or helper program, or other error

In some cases useful info is found in syslog - try

dmesg | tail  or so

不能完成挂载,根据以上挂载错误的提示:

[[email protected] ~]# dmesg |tail

Adding 2097144k swap on /dev/sda2.  Priority:-1 extents:1 across:2097144k

NET: Registered protocol family 10

lo: Disabled Privacy Extensions

ip6_tables: (C) 2000-2006 Netfilter Core Team

nf_conntrack version 0.5.0 (16100 buckets, 64400 max)

ip_tables: (C) 2000-2006 Netfilter Core Team

eth0: link up

eth0: no IPv6 routers present

EXT4-fs (sdb5): bad block size 8192

EXT4-fs (sdb5): bad block size 8192

可以看到,我的/dev/sdb5指定的块值8192不合法,所以只能重新格式化磁盘。

[[email protected] ~]# mke2fs -t ext4 -L TEST /dev/sdb5

使用默认块值即可。继续挂载sdb5。

[[email protected] ~]#  mount /dev/sdb5 /newdir/

[[email protected] ~]# ls /newdir/

lost+found

[[email protected] ~]# df -h

文件系统       容量   已用   可用 已用%   挂载点

Filesystem     Size  Used Avail Use% Mounted on

/dev/sda3       7.8G  2.0G  5.5G  27%         /

tmpfs              504M     0  504M     0%     /dev/shm

/dev/sda1        97M   26M   67M  29%       boot

/dev/sdb5       989M   18M  921M   2%      /newdir

把/dev/sdb5挂载到/newdir后,原来在/neddir下的newfile.txt被覆盖了,通过df -h可以看到刚才挂载的分区,我们也可以使用LABEL的方式挂载分区:

[[email protected] ~]# umount /newdir/

[[email protected] ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       7.8G  2.0G  5.5G  27% /

tmpfs           504M     0  504M   0% /dev/shm

/dev/sda1        97M   26M   67M  29% /boot

[[email protected] ~]# mount LABEL=TEST /newdir

[[email protected] ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       7.8G  2.0G  5.5G  27% /

tmpfs           504M     0  504M   0% /dev/shm

/dev/sda1        97M   26M   67M  29% /boot

/dev/sdb5       989M   18M  921M   2% /newdir

日常运维工作中会遇到这样的情况,一台服务器上新装了两块磁盘,磁盘a(在服务器上显示为sdc)和磁盘b(在服务器上显示为sdd)。又一次把这两块磁盘都拔掉了,然后再重新插上,重启机器,结果磁盘编号调换了。a变成了sdd,b变化才能了sdc(这是应为把磁盘差错了卡槽)。

通过上面的学习,挂载磁盘是通过/dev/hdb1这样的分区名字来挂载的,如果先前加入到了/etc/fstab中,结果系统启动后则会挂载错分区。

如何避免这种情况发生?这就要用到UUID,可以通过blkid命令获取各分区的UUID

blkid命令 获取文件系统类型UUID

在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询

[[email protected] ~]# blkid

/dev/sda1: UUID="37d8fe31-1cd8-4179-9aaa-1ee58284891d" TYPE="ext4"

/dev/sda2: UUID="1ac357d6-a735-468f-ba6c-1eabad6aa0f2" TYPE="swap"

/dev/sda3: UUID="51a8587e-7445-4ea8-85ef-bad6a1336748" TYPE="ext4"

/dev/sdb5: LABEL="TEST" UUID="b45f5443-75e4-4994-8743-4ba7fb25311e" TYPE="ext4"

这样可以获得全部磁盘分区的UUID,如果格式化的时候指定了LABLE则该命令也会显示LABEL值,甚至连文件系统类型也会显示。当然这个命令后面也可以指定哪个分区:

[[email protected] ~]# blkid /dev/sdb5

/dev/sdb5: LABEL="TEST" UUID="b45f5443-75e4-4994-8743-4ba7fb25311e" TYPE="ext4"

获得UUID之后的使用方法:

[[email protected] ~]# umount /newdir

[[email protected] ~]# mount UUID="b45f5443-75e4-4994-8743-4ba7fb25311e" /newdir

[[email protected] ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       7.8G  2.0G  5.5G  27% /

tmpfs           504M     0  504M   0% /dev/shm

/dev/sda1        97M   26M   67M  29% /boot

/dev/sdb5       989M   18M  921M   2% /newdir

也可以把下面这行写到/etc/fstab中

UUID=b45f5443-75e4-4994-8743-4ba7fb25311e         /newdir        ext4       defa      ults       00

如果想让某个分区开机后就自动挂载,有两个办法可以实现:在/etc/fstab中添加一行。如上例中那行;把挂载命令写到/etc/re.d/rc.local文件中去,我会经常把想要开机启动的命令加到这个文件中。系统启动后会执行这个文件中的命令,所以只要想开机后运行什么命令统统写入到这个文件下面,直接放到最后面即可,把挂载的命令放在文件最后一行:

[[email protected] ~]# cat /etc/rc.d/rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don‘t

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

[[email protected] ~]# vi /etc/rc.d/rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don‘t

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

mount UUID="b45f5443-75e4-4994-8743-4ba7fb25311e" /newdir

~

按esc退出,输入:wq,保存退出即可

以上两种方法任选其一。

建议挂载磁盘分区的时候尽量使用UUID或者LABEL这两种方法。    

命令:umount  

选项-l,(非常有用,遇到不能卸载的情况用-l)

在上面的例子中,多次用到这个命令。

umount后面可以跟挂载点,也可以跟分区名(/dev/hdb1).

但是不可以跟LABEL和UUID

[[email protected] ~]# umount /dev/sdb5

[[email protected] ~]# mount UUID="b45f5443-75e4-4994-8743-4ba7fb25311e" /newdir

[[email protected] ~]# umount /newdir

[[email protected] ~]# mount UUID="b45f5443-75e4-4994-8743-4ba7fb25311e" /newdir

[[email protected] ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       7.8G  2.0G  5.5G  27% /

tmpfs           504M     0  504M   0% /dev/shm

/dev/sda1        97M   26M   67M  29% /boot

                           


本文出自 “12350027” 博客,谢绝转载!

以上是关于磁盘挂载与卸载 mount的主要内容,如果未能解决你的问题,请参考以下文章

磁盘挂载与卸载

Linux 磁盘挂载

Linux命令(磁盘的卸载与挂载)

磁盘挂载与卸载

磁盘挂载与卸载

linux 磁盘管理三部曲——mount挂载,/etc/fstab配置文件