『学了就忘』Linux基础命令 — 38、Linux中光盘的挂载

提示:关于Linux系统中光盘的挂载,我们了解一下即可,现在已经很少用到了。但是我们可以通过在Linux系统中挂载光盘,来加深对Linux系统中挂载操作的学习。

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

  • CentOS5.x以前的系统,光盘设备文件名是/dev/hdc
  • CentOS6.x以后的系统,光盘设备文件名是/dev/sr0

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

如下图所示:

image

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

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

  • media(推荐挂光盘)
  • misc(推荐挂网络存储盘)
  • mnt(推荐挂U盘或者移动硬盘)

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

步骤一:创建一个空目录

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

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

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

步骤二:找到光盘的设备文件名称

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

CentOS5.x以前的系统,光盘设备文件名是/dev/hdc,因为很早以前的系统,硬盘和光盘系统是统一命名的,在很早以前认为系统有两块硬盘就够了hdahdb,然后光盘默认识别就是hdc。但是对存储空间的需求越来越大,导致两块盘不能满足需求了,就需要继续添加新的硬盘,这个时候光盘的设备文件名的识别会自动向后便变动,如有三块硬盘,光盘的设备文件名hdd

这个时候就会导致,光盘的设备文件就不是固定的了,会导致我在一台电脑上挂载光盘,就先要查询光盘的设备文件名是什么,然后在进行挂载。所以在CentOS6.x以后的系统,光盘的设备文件名就固定了为sr0,第一台光驱的设备文件名为sr0,第二台光驱的设备文件名为sr1,以此类推。这样做的好处是和硬盘的设备文件名就不相干了。

步骤三:挂载光盘

[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

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

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

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

需要在虚拟机软件中添加cd文件,放入光驱中。

如下图:

image

再次输入光盘挂载命令。

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

还有一行报错,说/dev/sr0想要读写权限,但是现在被赋予了只读权限。因为光盘的使用就是一次性写入,之后就只读就可以了。所以这行报错,可以认为是光盘正确挂载的标记。

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

image

步骤四:访问关盘中的数据

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

image

这里边都是光盘中的内容。

步骤五:卸载挂载点

无论是挂载的光盘还是U盘,用完后就需要卸载掉。如果你没有卸载就换cd的话,就会出现问题。这是有一定几率的,如果你不卸载,多换几次cd的话,你会发现你无论放入任何光盘,你读出来的数据都不是你放入的cd中的数据。而是虚拟机自带的工具vmtools中的内容。之后你即使卸载的光盘,也不在好使了。

这个时候的解决方法是,在虚拟机中把现有的光驱移除,在添加一个新的光驱。

如下图:

image

卸载挂载点

# 因为设备文件名和挂载点已经连接到一起,卸载哪一个都可以
[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目录中,要退出在进行卸载。
# 注意:卸载的时候需要退出光盘目录,才能正常卸载。

问题:挂载点为什么要使用空目录

# 在/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作为目录的访问点就不在了,但是里边的数据并没有删除,所以/mnt/cdrom挂载点一旦卸载,/mnt/cdrom目录又回归原始位置,就又可以读取出原来文件中的数据了。

这就是为什么说一定要用空目录做挂载点,因为有数据的目录,一旦作为挂载点,原来目录中的数据是不能查看也不能删除,占用系统资源,不合理。

posted @ 2021-11-12 10:40  繁华似锦Fighting  阅读(2891)  评论(2编辑  收藏  举报