Linux:论如何在虚拟机上挂载多个镜像?
问题来源:
以Cent-OS系统为例,我们都知道在搭建openstack平台时需要用到openStack-trian.iso镜像,而对于这个镜像文件,一般我们的做法是通过远程连接控制软件进行文件的上传,将镜像传输到虚拟机里,但是,这个镜像文件有16G之多,传输耗时,那么有没有一种方法可以不用上传,直接实现挂载呢?
问题分析:要做到这一点,最大的问题就是挂载镜像的方式
以rhel-7为例:
挂载镜像的命令一般为:mount /dev/cdrom /media ,但一般我们虚拟机只会连接一个镜像,如果要连接多个镜像,就要在设置里多添加一张光驱:
但是,问题来了,我们无法查到镜像文件在哪个地方!已知的只有桌面上出现的两个镜像,我通过Xftp连接查看目录,也没有在其他目录下找到镜像:
挂载的唯一信息就是/dev/cdrom,经过我查询大量资料,发现/dev/cdrom代表光驱
也就是说,我们将镜像放在了/dev/cdrom里,从某种意义上来讲,/dev/cdrom就代表 了一个镜像,但是当系统有两个镜像时,挂载出现了问题:
第一行没问题,第二行及以下大致的意思是,已经挂载了镜像,但是无法区分该镜像是红帽镜像还是openstack镜像,不过看样子应该是红帽镜像。
查看挂载点信息:
(上图为成功的案例供参考)
讲解一下:首先出现了“16G”,说明该行为openstack镜像挂载点信息,最后一行“3.6G”明显是红帽的镜像,两者都是iso9660,没问题,其中有问题的地方在于/dev/sr1和/dev/sr0,通过查询得知,/dev/sr0是光驱的设备名,cdrom实际上是sr0的软链接,也就是说/dev/sr0==/dev/cdrom,可以通过ll命令查看/dev/cdrom的显示,cdrom指向sr0。
而/dev/sr1就是光驱设备2,也就是连接openstack的那张CD/DVD光驱,/dev/sr0是默认的,因为我们安装红帽系统时连接的第一个镜像就是红帽的镜像,所以/dev/sr0就对应rhel,以此类推,再加一张光驱,就会有/dev/sr2设备名,我没有找到镜像在哪儿,但是我找到了镜像对应的光驱设备,问题解决。
挂载红帽镜像,命令:mount /dev/sr0 /media
挂载openstack镜像,命令:mount /dev/sr1 /mnt
最后rhel+openstack的总包数量:
用Xftp查看/media,和/mnt目录,可以看到一个里面为红帽的文件,另一个里面为Openstack的文件:
测试,基于红帽系统,在拥有openstack镜像的情况下,安装keystone组件:
具体操作:
(1)在虚拟机设置添加一张CD/DVD连接镜像,重启虚拟机
(2)先输入挂载命令,再输入df -hT查看挂载点信息,看镜像属于哪个光驱设备,依照光驱设备名,挂载该镜像:mount /dev/sr1 /mnt
(3)配置yum仓库,以openstack为例
终端输入:vim /etc/yum.repos.d/openstack.repo
写入:
[base]
name=base
naseurl=file:///mnt/base/
enable=1
gpgcheck=0
[extras]
name=extras
baseurl=file:///mnt/extras/
enable=1
gpgcheck=0
[updates]
name=updates
baseurl=file:///mnt/updates/
enable=1
gpgcheck=0
[train]
name=train
baseurl=file:///mnt/train/
enable=1
gpgcheck=0
[virt]
name=virt
baseurl=file:///mnt/virt/
enable=1
gpgcheck=0
(4)清空缓存,检索
终端输入:yum clean all
终端输入:yum repolist
总结:挂载两个镜像是可以实现的,解决了上传费时的问题。
其他问题:(1)连接的openstack镜像,系统识别不出来,问题在于第一张图片中 openstack的镜像名为什么是20220301_215215?
(2)此次分析是基于红帽系统做的,真正用到两个镜像的是基于Cent-OS系统,在Cent-OS上不知道会不会出错,有待实验。
寄语:掌握“发现问题,分析问题,解决问题”才是一名合格的运维人员,谢谢程姐的教导,为了研究问题,虚拟机已经被我玩坏好几个了.....