挂载就是把设备文件名和早已构建的空目录链接上去的过程,就称作挂载。

1、mount命令基本格式

linux所有储存设备都必须挂载就能使用,包括硬碟。

命令的具体格式如下:

#查询系统中已经挂我的设备,-l会显示卷标名称
[root@localhost ~ ] # mount [-l]

2、练习:

直接输入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,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
其中只有
/dev/sda3 on / type ext4 (rw)-->/dev/sda3挂载到根目录下,文件系统是ext4,权限是读写。
/dev/sda1 on /boot type ext4 (rw)
有用,其他都是干扰项.
还要注意,swap分区是不需要挂载点的,是给系统内核直接访问的分区,mount命令是查看不到的。

3、mount-a命令

#依据配置文件/etc/fstab的内容,自动挂载
[root@localhost ~ ] # mount -a

-a的a是auto,手动的意思。

Linux系统的硬碟是开机手动挂载的。并且光碟和U盘这类联通储存设备,是不推荐开机手动挂载的。

假如光碟和U盘这类联通储存设备设置了开机手动挂载,开机时一旦你忘掉放光碟或则U盘,系统还会无条件的找寻这个分区,假如找不到的话,还会系统启动错误。这样的错误当然修补上去并不难linux查看操作系统,而且一定要在本机上进行操作。

Linux系统手动挂载就是根据/etc/fstab文件进行手动挂载的。这个文件是一个极其脆软的文件,一旦这个文件弄错,系统会启动报错。

linux下nfs挂载命令_linux挂载zfs_linux挂载sr0

[root@linuxcool~]#vim/etc/fstab

linux挂载zfs_linux挂载sr0_linux下nfs挂载命令

而mount-a命令可以看作是扫描一下/etc/fstab文件,瞧瞧里面的内容有没有弄错,假如弄错会报错。

在RedHat6之后的Linux系统中,/etc/fstab文件的容错性显著的提高了。RedHat5曾经出现一个字母的拼写错误都是不行的,RedHat6之后不仅关键位置的信息不能有错误,其他的出现错误也不会报错,所以有时侯用mount-a命令扫描,不一定会出现错误,,所以不能盲目信任mount-a命令的结果。这个记住就好。(前面会说假如该文件有错误如何修补)

4、mount命令格式

[root@localhost ~ ] # mount [-t 文件系统] [-L卷标名] [-o特殊选项]  
设备文件名 挂载点
注意:在Linux系统中 的意思表示换行符, 代表上边两行是一行内容。
选项:
-t文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统。(不写也没事,Linux系统默认光盘U盘都能自动识别)。
-L卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载。(现在基本上用不到了,可以不关注。)
-o特殊选项:可以指定挂载的额外选项,比如读写权限、同步异步等,如果不指定则默认值生效。

举例

[root@localhost ~ ] # mount -t iso9660 /dev/sr0 /mnt/cdrom/

-o特殊选项说明

我们先查看一下下篇文章说的/etc/fstab文件,Linux系统的手动挂载配置文件。

linux挂载sr0_linux下nfs挂载命令_linux挂载zfs

上图中红框内就是分区挂载的默认权限。下边详尽说明一下挂载的权限。

linux挂载zfs_linux挂载sr0_linux下nfs挂载命令

说明:

defaults权限代表最左边7种权限中,有一个是默认值。这个默认值通常不须要进行更改,默认选项就挺好。

例如exec/noexec选项,假如选择noexec,那整个分区中的文件都不能执行,倘若是根目录定义成noexec,那整个系统都未能启动,即便想更改也不行,由于mount命令都执行不了了。

练习:说明exec/noexec选项

#1、查看系统中已经挂载的文件系统,注意有虚拟文件系统
#命令结果是代表:/dev/sda3分区挂载到/目录,文件系统是ext4,权限是读写
[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/sdal on/boot type ext4(rw)
none on/proc/sys/fs/binfmt_misc type binfmt_misc(rw)
sunrpe on/var/lib/nfs/rpe_pipefs type rpc_pipefs(rw)
#2、修改特殊权限
#我们查看到/boot分区已经被挂载,而且采用的defaults 选项,那么我们重新挂载分区,并采用 noexec
[root@localhost ~ ] # mount -o remount,noexec /boot(临时生效)
然后用mount命令查询一下分区,boot分区多了noexec权限
/dev/sdal on /boot type ext4 (rw,noexec)
#权限禁止执行文件执行,看看会出现什么情况(注意不要用根分区做试验,#不然系统命令也不能执行了)。
# 执行一个shell脚本
[root@localhost boot]#./hello.sh
-bash:./hello.sh:权限不够
# 再修改回来权限,就可以执行了。
[root@localhost ~ ] # mount -o remount,exec /boot

这个练习也要记住remount的作用和使用方式。

三、光盘挂载

光碟挂载的前提仍然是指定光碟的设备文件名,不同版本的Linux,设备文件名并不相同:

不论那个系统都有软联接/dev/cdrom,与可以作为光碟的设备文件名。

可以看见/dev/cdrom就是/dev/sr0的软链接(相当于windows系统的快捷方法)。推荐使用源文件dev/sr0。

Linux系统下在根目录中默认给我们提供了三个空文件夹:

我习惯在mnt文件夹中创建空目录来进行挂载外部设备。下边总结一下挂载光碟的步骤。

1、在mnt文件夹中创建一个名称为cdrom空目录

[root@localhost /]# mkdir /mnt/cdrom

不建议在根目录创建过多的一级目录,不便捷管理。

2、找到光碟的设备文件名称

CentOS6.x之后的系统,光碟设备文件名是/dev/sr0,这是固定的,记住就可以。

在CentOS5.x曾经的系统,光碟设备文件名是/dev/hdc,由于很早曾经的系统,硬碟和光碟系统是统一命名的,在很早曾经觉得系统有两块硬碟就够了hda,hdb,之后光碟默认辨识就是hdc。并且对储存空间的需求越来越大,造成两块盘不能满足需求了,就须要继续添加新的硬碟,这个时侯光碟的设备文件名的辨识会自动向后便变动,如有三块硬碟,光碟的设备文件名hdd。

这个时侯才会造成,光碟的设备文件就不是固定的了,会造成我在一台笔记本上挂载光碟,就先要查询光碟的设备文件名是哪些,之后在进行挂载。所以在CentOS6.x之后的系统,光碟的设备文件名就固定了为sr0,第一台硬盘的设备文件名为sr0,第二台硬盘的设备文件名为sr1,以这种推。这样做的用处是和硬碟的设备文件名就不相干了。

3、挂载光碟

[root@localhost ~ ] # mount -t iso9660 /dev/sr0 /mnt/cdrom/
注意:
-t文件系统:加入文件系统类型来指定挂载的类型,
可以ext3、ext4、iso9660等文件系统。
挂载光盘就用iso9660类型的文件系统类型。
也可以直接省略-t iso9660,
挂载光盘时候系统自动添加。
[root@localhost ~ ] # mount /dev/sr0 /mnt/cdrom/

执行上面命令会报错,说你必须指定文件系统。如下:

[root@localhost /]# mount /dev/sr0 /mnt/cdrom/
mount: you must specify the filesystem type

linux挂载sr0_linux挂载zfs_linux下nfs挂载命令

我们添加上文件系统,再度执行。如下:

[root@localhost /]# mount -t iso9660  /dev/sr0 /mnt/cdrom/
mount: no medium found on /dev/sr0

这回的报错信息就确切了,告诉我们说在/dev/sr0中没有发觉光碟。

须要在虚拟机软件中添加cd文件,倒入硬盘中。

linux挂载zfs_linux挂载sr0_linux下nfs挂载命令

再度输入光碟挂载命令。

[root@localhost /]# mount /dev/sr0 /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only

还有一行报错,说/dev/sr0想要读写权限linux环境配置,而且如今被赋于了只读权限。由于光碟的使用就是一次性写入,然后就只读就可以了。所以这行报错,可以觉得是光碟正确挂载的标记。

最后执行mount命令在确认一下。

linux下nfs挂载命令_linux挂载sr0_linux挂载zfs

4、访问关盘中的数据

须要去挂载点中访问光碟的数据,在/mnt/cdrom/目录中。

linux挂载sr0_linux下nfs挂载命令_linux挂载zfs

linux挂载zfs_linux下nfs挂载命令_linux挂载sr0

这儿边都是光碟中的内容。

5、卸载挂载点

无论是挂载的光碟还是U盘,用完后就须要卸载掉。假如你没有卸载就换cd的话,还会出现问题。这是有一定机率的,假如你不卸载,多换几次cd的话,你会发觉你无论装入任何光碟,你读下来的数据都不是你装入的cd中的数据。而是虚拟机自带的工具vmtools中的内容。以后你虽然卸载的光碟,也不在管用了。

这个时侯的解决方式是linux下nfs挂载命令,在虚拟机中把现有的硬盘移除,在添加一个新的硬盘。

linux挂载sr0_linux下nfs挂载命令_linux挂载zfs

卸载挂载点

#因为设备文件名和挂载点已经连接到一起,卸载哪一个都可以
[root@localhost ~ ] # umount /dev/sr0
[root@localhost ~ ] # umount /mnt/cdrom
卸载
[ root@ localhost cdrom]# umount /dev/sr0
umount:/mnt/cdrom: device is busy.
(In some cases useful info about processes that use the device is found by 1sof(8) or fuser(1))
上边报错说设备正忙,以为此时位置正在光盘里边cdrom目录中,要退出在进行卸载。
注意:卸载的时候需要退出光盘目录,才能正常卸载。

6、挂载点为何要使用空目录

#在/mnt/cdrom目录中创建两个文件abc,bcd
[root@localhost cdrom] # ls
abc  bcd
#在/mnt/cdrom目录上挂载光盘
[root@localhost cdrom] # mount /dev/sr0 /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
可以看到看到光盘是可以挂载到有文件的目录上。
#查看/mnt/cdrom目录中的文件
[root@localhost cdrom]# ls /mnt/cdrom/
CentOS_BuildTag  isolinux                  RPM-GPG-KEY-CentOS-Debug-6
EFI              Packages                  RPM-GPG-KEY-CentOS-Security-6
EULA             RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Testing-6
GPL              repodata                  TRANS.TBL
images           RPM-GPG-KEY-CentOS-6
文件夹中并没有之前的abc,bcd文件了。而只有光盘中的数据。
#把光盘挂载点卸载了
[root@localhost cdrom]# umount /dev/sr0 
#再次查看/mnt/cdrom目录中的文件
[root@localhost cdrom]# ls /mnt/cdrom/
abc  bcd
发现abc,bcd文件又出现了。

是由于/mnt/cdrom作为目录的时侯,里面是一个一个的block来储存数据。当我把/mnt/cdrom作为一个挂载点的时侯,是把这个目录作为步入另一个分区的介入点(光碟也是一个储存空间,是一个独立的空间),所以/mnt/cdrom作为目录的访问点就不在了linux下nfs挂载命令,而且上面的数据并没有删掉,所以/mnt/cdrom挂载点一旦卸载,/mnt/cdrom目录又回归原始位置,就又可以读取出原先文件中的数据了。

这就是为何说一定要用空目录做挂载点,由于有数据的目录,一旦作为挂载点,原先目录中的数据是不能查看也不能删掉,占用系统资源,不合理。

重点:配套学习资料和视频教学

这么在这儿我也悉心打算了上述大纲的详尽资料在下方链接如下

linux挂载sr0_linux挂载zfs_linux下nfs挂载命令

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复