磁盘挂载与卸载

2016-07-23

磁盘挂载与卸载

在挂载某个分区前需要先建立一个挂载点,这个挂载点是以目录的形式出现的。一旦把某个分区挂载到这个目录下,那么再往这个目录里写数据时,则都会写到该分区中。在挂载该分区前,挂载点下最好是个空目录,不为空也不影响该分区的使用,但是会把以前的东西遮挡住看不到了,只有再卸载了才能看到。

命令:mount

常用选项:-a , -t , -o

如果不加任何选项,直接运行 mount 命令。会查看当前系统已经挂载的所有分区,以及文件系统的类型,挂载点和一些选项等信息。

[root@localhost ~]# 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)

建立一个空目录,以及一个空白文档。

[root@localhost ~]# mkdir /newdir

[root@localhost ~]# touch /newdir/newfile.txt

[root@localhost ~]# ls !$

ls /newdir/newfile.txt

/newdir/newfile.txt

然后挂载/dev/sdb5

[root@localhost ~]# mount /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

不能完成挂载,根据提示可以查看一下错误信息:

[root@localhost ~]# dmesg |tail

ip6_tables: (C) 2000-2006 Netfilter Core Team

nf_conntrack version 0.5.0 (7909 buckets, 31636 max)

ip_tables: (C) 2000-2006 Netfilter Core Team

e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None

type=1305 audit(1463181232.556:3): audit_pid=1201 old=0 auid=4294967295 ses=4294967295 res=1

eth0: no IPv6 routers present

sd 0:0:1:0: [sdb] Cache data unavailable

sd 0:0:1:0: [sdb] Assuming drive cache: write through

 sdb: sdb1 < sdb5 sdb6 >

EXT4-fs (sdb5): bad block size 8192

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

[root@localhost ~]# mke2fs -t ext4 -L TEST /dev/sdb5

继续挂载磁盘:

[root@localhost ~]# mount /dev/sdb5 /newdir/

[root@localhost ~]# ls /newdir/

lost+found                                              //原来的newfile.txt被覆盖了

[root@localhost ~]# df -h 

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        18G  1.6G   15G  10% /

tmpfs           495M     0  495M   0% /dev/shm

/dev/sda1       190M   27M  154M  15% /boot

/dev/sdb5       988M  1.3M  935M   1% /newdir

我们用 umount 命令卸载磁盘分区,然后用 LABEL 的方式挂载分区:

[root@localhost ~]# umount /newdir/

[root@localhost ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        18G  1.6G   15G  10% /

tmpfs           495M     0  495M   0% /dev/shm

/dev/sda1       190M   27M  154M  15% /boot

[root@localhost ~]# mount LABEL=TEST /newdir

[root@localhost ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        18G  1.6G   15G  10% /

tmpfs           495M     0  495M   0% /dev/shm

/dev/sda1       190M   27M  154M  15% /boot

/dev/sdb5       988M  1.3M  935M   1% /newdir

使用 UUID 进行挂载,通过 blkid 命令获取各分区的 UUID

[root@localhost ~]# blkid

/dev/sda1: UUID="82d89195-8a63-4d3f-944f-03b308893c3f" TYPE="ext4"

/dev/sda2: UUID="38631717-1603-4987-a781-9e378950bc48" TYPE="swap"

/dev/sda3: UUID="f77b4c47-ca03-43f9-b420-cc0be633446a" TYPE="ext4"

/dev/sdb5: LABEL="TEST" UUID="9b16b8cb-b854-4964-a126-9f9d31955c22" TYPE="ext4"

也可以指定哪个分区使用

[root@localhost ~]# blkid /dev/sdb5

/dev/sdb5: LABEL="TEST" UUID="9b16b8cb-b854-4964-a126-9f9d31955c22" TYPE="ext4"

挂载:

[root@localhost ~]# umount /newdir

[root@localhost ~]# mount UUID="9b16b8cb-b854-4964-a126-9f9d31955c22" /newdir

[root@localhost ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        18G  1.6G   15G  10% /

tmpfs           495M     0  495M   0% /dev/shm

/dev/sda1       190M   27M  154M  15% /boot

/dev/sdb5       988M  1.3M  935M   1% /newdir

如果想让某个分区开机后就自动挂载,有两个办法可以实现:在/etc/fstab 中添加一行,如上例中那行;把挂载命令写到/etc/rc.d/rc.local 文件中去,系统启动完后会执行这个文件中的命令。

[root@localhost ~]# 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

挂载磁盘时最好使用 UUID 或 LABEL 这两种方法。

命令:umount

这个命令后面可以跟挂载点也可以跟分区名,但是不能跟 LABEL 和 UUID

[root@localhost ~]# umount /dev/sdb5

[root@localhost ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        18G  1.6G   15G  10% /

tmpfs           495M     0  495M   0% /dev/shm

/dev/sda1       190M   27M  154M  15% /boot

[root@localhost ~]# mount UUID="9b16b8cb-b854-4964-a126-9f9d31955c22" /newdir

[root@localhost ~]# umount /newdir

[root@localhost ~]# mount UUID="9b16b8cb-b854-4964-a126-9f9d31955c22" /newdir

umount 命令有一个非常有用的选项 -l ,有时会遇到不能卸载的情况:

[root@localhost newdir]# umount /newdir

umount: /newdir: device is busy.

        (In some cases useful info about processes that use

         the device is found by lsof(8) or fuser(1))

这是因为当前目录在要卸载的分区上。解决方法两种:一是到其他目录,二是使用 -l 选项:

[root@localhost newdir]# umount -l /newdir

[root@localhost newdir]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        18G  1.6G   15G  10% /

tmpfs           495M     0  495M   0% /dev/shm

/dev/sda1       190M   27M  154M  15% /boot

标题:磁盘挂载与卸载
作者:散宜生
地址:https://17kblog.com/articles/2016/07/23/1469287927856.html