背景说明
由于目标机器只有内网(无法使用yum install),只能跟跳板机连接,因此需要手动下载包的文件和相关依赖,然后完成软件安装。
为方便操作,首先在网络正常的主机上下载全部的包和相关依赖,然后将这些包和依赖全部打包至同一个文件夹下,将该文件夹通过scp的方式发送至目标机器,然后在目标机器上进行手动安装。我们将网络正常的主机记为A主机,需要搭建虚拟机环境的目标主机记为B主机。
A主机操作
A主机上的基本操作如下:
1、在有网和稳定yum源的机器上下载rpm包和所有依赖(置于同一文件夹中)
2、将rpm包和所有依赖发送至目标机器
3、将虚拟机镜像文件发送至目标机器
注意:
rpm包一定要注意版本对应!!!
如果目标主机B的操作系统为ctyunos 3,那么在A主机的操作系统也必须是ctyunos 3,这样下载的rpm包的版本才是相互对应的。如果版本不对应会导致系统奔溃。现象为基础命令(ls等)无法使用。
step 1 下载与虚拟机环境构建相关工具的rpm包
与虚拟机环境构建相关的工具包括:qemu-img、libvirt、virt-install。对上述工具的介绍如下:
- qemu-img: qemu-img用于管理虚拟磁盘镜像文件。用它我们可以创建、转换、检查和修改各种格式的磁盘镜像,实现对镜像进行扩容、缩减、格式化以及检查错误等操作。例如,使用
qemu-img create
命令可以创建一个新的虚拟磁盘文件。 - libvirt: libvirt提供了对多种虚拟化技术(如 KVM、QEMU、Xen 等)的统一访问接口。libvirt的目标是为虚拟化工具提供一套方便、可靠的编程接口,比如它提供了一个守护进程 libvirtd和一个命令行工具
virsh
,能够轻松控制虚拟机,比如启动、停止、查看状态等等。 - virt-install: virt-install支持 libvirt API 的虚拟化平台上创建新的虚拟机并安装操作系统。它支持从本地介质或通过网络(如 HTTP、FTP 或 NFS)进行安装。当想快速搭建一个虚拟机,但是又不想手动配置各种复杂的参数时,可以选用virt-install安装的方式。这个命令行工具能让你用几行命令就部署好一台虚拟机,还能自动安装操作系统。不管是从本地光盘启动,还是通过网络安装,使用virt-install都是比较方便的。
下载一个rpm包不仅需要下载这个包本身,而且也要下载其相关的所有依赖,repotrack命令可以很容易地实现这个功能。repotrack属于 yum-utils包的一部分。主要功能是下载指定的RPM包及其所有依赖项,并将它们保存在本地目录中,从而简化了离线安装的过程。具体命令如下:
mkdir <package-name>
cd <package-name>
repotrack <package-name>
解释:
- 将package-name替换为要下载的软件包的名称。
除了repotrack命令之外,yumdownloader命令也是一种下载依赖项的有效方式,使用方法如下:
yumdownloader --resolve <package_name>
下载好这三种工具的rpm包和相关依赖之后,将所有文件打包到“virtools”文件夹中,并压缩为"virtools.zip"
step 2 通过scp从A主机将相关rpm包发送至B主机
scp /pathA/virtools.zip root@ipB:/pathB
解释:
- pathA为A主机中virtools.zip所在文件路径;
- pathB为B主机中存放virtools.zip的文件路径;
- ipB为B主机的ip地址
step 3 通过scp从A主机将虚拟机镜像文件发送至B主机
将虚拟机镜像文件发送至B主机,此处所使用的镜像文件是ctyunos2的qcow2文件。qcow2用于高效地存储和管理虚拟硬盘,允许用户创建虚拟磁盘的特定状态的副本,而无需复制整个磁盘。因此在此处是直接使用了已有虚拟机的.qcow2文件。查看已有虚拟机的XML配置和.qcow2文件的位置的方法如下:
virsh dumpxml vmname| grep '.qcow2'
其中vmname为已有虚拟机的名称。为了方便虚拟机的配置,可将xml文件和.qcow2文件一同发送至目标主机B。复制xml文件的方法如下:
virsh dumpxml vmname> vmname_copy.xml
将xml文件和.qcow2文件一同打包压缩至ctyunos2.zip,并发送到目标机器
scp /pathA/ctyunos2.zip root@ipB:/pathB
解释:
- pathA为A主机中ctyunos2.zip所在文件路径;
- pathB为B主机中存放ctyunos2.zip的文件路径;
- ipB为B主机的ip地址
注意:也可以使用其他格式的镜像文件,只是通过.qcow2文件创建虚拟机会更加便捷。
B主机操作
step 1 在B主机完成rpm包的离线安装
将接收到的virtools.zip文件进行解压,然后cd进入到各自单独的文件夹中,完成rpm包的离线安装,具体安装命令如下:
rpm -Uvh *.rpm --force --nodeps
解释:
- -Uvh:执行升级操作并显示详细的安装进度。
- .rpm:指定要安装的RPM软件包,*.rpm通配符表示当前目录下的所有.rpm文件。
- --force:强制安装,即覆盖掉已有的同名软件包。
- --nodeps:不检查和处理软件包依赖关系。
下图为安装qemu-img的截图,执行命令的目录为qemu-img:
step 2 虚拟机的相关配置
由于我们所使用的是qcow2文件,意味着我们已经有了一个完整的虚拟磁盘镜像,可直接进行虚拟机的配置。
(1)打开xml文件,修改其中的参数:(通常不需要将xml文件拷贝到特定的目录)
其中,
- name可以自定义,在这里将其称之为ctyunos2_2;
- uuid(通用唯一识别码)用于唯一标识虚拟机。在虚拟机管理中,UUID可以帮助系统区分不同的虚拟机,确保每个虚拟机都有唯一的标识。可以自己改,只要跟系统中其他的uuid不冲突即可,注意uuid的格式要求:UUID应符合标准的格式,即一个32位的十六进制数字,分成5个部分,用连字符分隔;
- source file为.qcow2所在的位置
(2)定义XML文件
virsh define ctyunos2_2.xml
将一个虚拟机的定义从 XML 文件中导入到虚拟化管理程序(例如 Libvirt)的数据库中。这个过程不会启动虚拟机,只是定义它,以便将来可以启动或管理它。
(3)开启虚拟机
virsh start ctyunos2_2
(4)修改虚拟机的账号和密码
virsh set-user-password ctyunos2_2 <ID> <password>
(5)进入虚拟机
virsh console ctyunos2_2
总结
综上所述,在内网机器上搭建虚拟机环境的方法还是较为简单的。总结可分为以下几个步骤:在有网机器上下载虚拟化工具的rpm包及依赖项->将rpm包和依赖项以及.qcow2虚拟机镜像文件发送至目标机器->在目标机器上配置虚拟机xml文件并开启虚拟机。