Linux基础系列(二)文件系统挂载命令

在介绍文件挂载以前,咱们先来了解什么是LINUX的文件结构?node


WINDOWS的文件结构是多个并列的树状结构,它的分区是以不一样的磁盘为基准,好比咱们所熟悉的CDEF盘。而LINUX的文件结构则是单个的树状结构,即“/“根目录,在这个目录下包含有:/dev, /boot, /bin, /sbin, /lib, /mnt, /root, /proc, /var, /usr,/media等目录。目前LINUX支持主流的文件系统有:NTFSFAT EXT2 EXT3EXT4 REISERFS, Swap交换分区。安全


挂载的定义:将额外的根文件系统某现存的目录创建起关系,进而使得此目录作为其它文件访问入口的行为称之为挂载,它的挂载方法为:Mount Device Mount_Pointbash


“Device”:指明要挂载的设备。如设备文件、UUID号、卷标,前面咱们了解过,可使用命令“blkie”查看这些信息,如执行命令“blkid /dev/sdb1”,获得结果以下:异步

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="Loadstation1" UUID="6b679696-1114-4e3e-b0b3-250cafef6179" TYPE="ext4" 
[root@localhost ~]# ^C

它的经常使用选项以下:
async

 -tvsftype: 指定要挂载的设备上的文件系统类型;ide

 -rreadonly; 只读挂载;性能

 -wread and write,读写挂载;ui

 -n: 不更新/etc/mtabspa

 -a: 自动挂载全部支持自动挂载的设备(定义在了/etc/fstab中,且挂载选项中有“自动挂载”功能orm

 -L “label”: 以卷标指定挂载设备;

 -U ‘UUID’: UUID指定要挂载的设备;

 -B --bind: 绑定目录到另外一个目录上


因此,咱们能够经过如下几种方式去设置文件系统挂载:


经过直接指明哪一个设备,如“/dev/sdb1”、“/dev/sda1”


首先,咱们查看一下所要的设备信息,执行命令“fdisk -l /dev/sda1”,也能够写成“fdisk -l /dev/sda[a-z]”表明查看全部分区,以下:

[root@localhost ~]# fdisk -l /dev/sd[a-z]
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000217d1
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4810751     2097152   82  Linux swap / Solaris
/dev/sda3         4810752    41943039    18566144   83  Linux
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x1224d107
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux

这里,咱们以设备“dev/sdb1”来进行挂载,先经过如下命令格式化分区:

[root@localhost ~]# mke2fs -t ext4 -b 2048 -L "Loadstation1" /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=Loadstation1
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=273678336
320 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 
2048000, 3981312
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="Loadstation1" UUID="a0f579be-aa34-4f92-b200-ed37b9e393ed" TYPE="ext4"

建立好一个目录,而后将分区“dev/sdb1”挂载至该目录下,执行以下命令

[root@localhost ~]# mkdir /Mydata
[root@localhost ~]# mount /dev/sdb1 /Mydata/

经过执行“mount”便可查看是否挂载成功:

[root@localhost ~]# mount
/dev/sdb1 on /Mydata type ext4 (rw,relatime,seclabel,data=ordered)

一样,执行如下任意一个命令均可以查看全部的挂载信息:

[root@localhost ~]# cat /etc/mtab
[root@localhost ~]# cat /proc/mounts
/dev/sdb1 /Mydata ext4 rw,seclabel,relatime,data=ordered 0 0

经过“卷标”进行挂载操做:

咱们格式化“/dev/sdb1”时设置的卷标为“Loadstation1”,以下:

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="Loadstation1" UUID="a0f579be-aa34-4f92-b200-ed37b9e393ed" TYPE="ext4"

则挂载的命令为:

[root@localhost ~]# mount -r -L "Loadstation1" /Mydata

经过“UUID”进行挂载操做命令:

[root@localhost ~]# mount -r -U "a520743f-9f72-4344-bdd5-b23bc9e8c4f6" /Mydata

一样,咱们也能够利用文件“-t”选项用文件系统格式进行挂载,命令为:“mount -t ext4 /dev/sdb1 /mydata”


以上只是简单挂载文件系统,它自己也包含一些独立的选项,其中:

Async: 异步模式:

Sync: 同步模式;数据可靠、安全性好,性能较差

Atime/noatime: 

Exec/noexec: 是否支持将文件系统上应用程序运行为进程

Dev/nodev: 是否支持在此文件系统上使用设备文件

Suid/nosuid: 

Remount: 从新挂载 

Ro:只读

Rw:读写

User/nouser: 是否容许普通用户挂载此设备

Acl: 启用此文件系统上的ACL(访问控制列表)功能


默认是Default选项,包含:“rw, suid, dev, exec, auto, nouser, and async”

注意:上述选项可多个同时使用,彼此使用逗号分隔;


例如:先用Mount查看当前挂载的是只读,再运行挂载时添加选项“-rw”,再运行“Mount”就变成读写权限

[root@localhost ~]# mount
/dev/sdb1 on /Mydata type ext4 (ro,relatime,seclabel,data=ordered)
[root@localhost ~]# mount -r -U "a520743f-9f72-4344-bdd5-b23bc9e8c4f6" /Mydata -rw
[root@localhost ~]# mount
/dev/sdb1 on /Mydata type ext4 (rw,relatime,seclabel,data=ordered)

Mount卸载操做,咱们称“解除某些关联关系的过程”为卸载,格式为:

# umount device
# umount Mount_point

例如:直接执行命令:

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

注意:有时执行卸载命令时,系统会提示“目标设备忙”,如:

@localhost Mydata]# umount /dev/sdb1
umount: /Mydata: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

这时,咱们能够利用命令“fuser”查看目录是哪一个用户在使用,以下:

[root@localhost Mydata]# fuser -v /Mydata
                  USER     PID ACCESS COMMAND
/Mydata:             root     kernel mount /Mydata
                  root     3479 ..c.. bash

那咱们确实要运行卸载命令应该怎么办呢,这里有两种方法:

1、好比当前咱们是在“/Mydata”目录,咱们用命令“cd”退出访问,再运行umount;

2、利用命令:“#fuser -km/mydata/”,它会清除整个Root进程,因此不要适用这个命令;

 

以上就是利用Mount命令进行手动挂载的操做,针对的是主要分区,固然, 咱们也能够对扩展分区(交换分区)进行挂载,使用到的命令为“mkswap”,在命令执行前,咱们须要启动交换分区挂载:


启用命令:Swapon  [option]...device 如:#swapon /dev/sdb1

禁用命令:Swapoff  [option]...device  如:#swapoff /dev/sdb1

执行挂载wgwy :#mkswap device


以上就是手动执行Mount挂载的全部内容,其中有个事情须要注意:

1)挂载的目录建议为空目录,不然挂载成功后原目录的内容会被隐藏;

2)系统重启以后,原先设置的挂载分区会丢失,只有将要挂载的内容写入至“/etc/fstab”文件里面,挂载才会永远有效 

相关文章
相关标签/搜索