1.你知道什么是虚拟化管理吗?
- 将linux真实主机里面的一些东西放到虚拟机上面去管理以及操作
- 然后对虚拟机进行一系列的操作
- 其实虚拟机和真机二者功能几乎差不多
- 只不过真机为操作系统,占用磁盘空间大
- 虚拟机相当是一款软件,占用空间少,运行起来比较轻松,并且虚拟机恢复起来比较方便
2.进行虚拟化管理的原因是什么呢?
- 实际企业中的服务器数量非常多,并且服务器运行起来工作的时候散热量非常大,为了使服务器正常工作,就需要大量的制冷装置
- 制冷的耗电量与服务器的个数相关,为了降低能源消耗,企业不得不尽可能的减少服务器的个数
- 因此在服务器上装上可逆转的虚拟机,用虚拟机代替其他服务器的部分工作,这样就能减少服务器的个数了,意义重大
3.实验环境
- 本次虚拟化管理的所有的实验都在真机的shell里面进行
4.手动安装虚拟机的方法
前提条件:虚拟机的安装镜像已经下载好,并且要明确其存放的路径
说明:此次安装的是图形化的虚拟机
第一步:在真机里面的shell里面输入 virt-manager
弹出来这个界面 可以看到我的真机此时有两个虚拟机,分别是desktop和server
第二步:点击左上角的小电视,会出现如下界面,选择本地安装,并且选择下一步forward
第三步:找到虚拟机镜像的存放路径
第四步:选择分配内存和cpu的大小
第五步:选择分配硬盘大小
第六步:填写虚拟机名字,默认为generic,改名字为client
第七步:将client虚拟机的硬盘和网卡均设置为虚拟化,并且开始安装
可以看到成功添加虚拟机client
第八步:选择安装版本
第九步:选择安装过程的语言–英语
第十步:设置client虚拟机的相关参数
第十一步 :等待安装
总结:
可以看到,如果手动安装虚拟机的话非常麻烦,这样很不方便,那么怎样可以高效率安装呢?
我们可以使用命令安装
4.怎样用命令安装虚拟机?
(1)为什么要使用命令安装虚拟机?
- 在服务器很多的情况下,如果每台服务器安装虚拟机都手动操作的话非常麻烦
- 采用在shell脚本中写入实际安装虚拟机的相关参数
- 用相关命令去调用这个文件即可安装虚拟机
- 这样就可以省略安装前的一系列手动操作步骤
(2)在真机中使用命令安装虚拟机的具体步骤如下:
注意: 要在超级用户下写脚本 所有的一切都要在超级用户下进行
第一步:在真机root下的shell当中输入 vim vm_install.sh
第二步:编辑shell脚本 注意:换行符号\不能有空格
各个参数说明如下:
- #!/bin/bash ##shell脚本的头部
- virt-install \ ##使用命令与换行符
- --name $1 \ ##名字、$1环境变量与换行符
- --cdrom /home/kiosk/Downloads/rhel-server-7.3-x86_64-dvd.iso \ ##镜像的存放路径与换行符
- --ram 1024 \ ##占用内存大小与换行符
- --vcpus 1 \ ##占用cpu大小与换行符
- --disk /var/lib/libvirt/images/$1.qcow2,size=6,bus=virtio \ ##物理硬盘的相关信息与换行符
- --network bridge=br0,model=virtio &> /dev/null & ##网络的信息以及将错误定向输出到垃圾桶不让它占用终端
注意:换行符\后面不能有空格,正常应该为橙色,有空格就会变 黑色,换行则无效。
第三步:直接在真机的shell当中输入 sh vm_install.sh 虚拟机名字,就可以看到虚拟机
第四步:可以看到lucky虚拟机可以安装了
总结:
- 通过对比手动方式和命令方式,可知命令方式安装很方便,在服务器数量很多的时候就可以采用命令方式安装虚拟机
- 前提是要知道所安装虚拟机的一些重要参数,并且在shell脚本里面写正确
- 安装好之后第一次登陆的图形界面还是要手动选择
- 因此我们发现此种命令方式只是半自动化
5.安装好虚拟机hahaha之后首次登陆的相关设置
6.虚拟机的管理
命令为:virsh
- virsh list ##列出所有正在开启的虚拟机
- virsh destroy client ##关闭client虚拟机
- virsh list --all ##列出所有的虚拟机,包括开启的和关闭的
- virsh start hahaha ##开启hahaha虚拟机
说明:在真机root下的shell里面实验
(1)virsh list 列出所有正在开启的虚拟机
(2)virsh destroy desktop 关闭desktop虚拟机
(3)virsh list --all 列出所有存在的虚拟机
(4)virsh start server 开启server虚拟机
7.虚拟机的复制
声明:只有真机cpu匹配的才可以互相复制虚拟机
两个问题:
(1)怎样复制
(2)复制好了怎样使用
前提条件:需要知道对方的ip,用户与用户密码,虚拟机的名字
(1)为什么要复制虚拟机?
因为虚拟机安装需要一千多个文件,比较慢
为了方便起见,我们可以直接将其他主机上安装好的虚拟机直接复制过来使用
复制需要虚拟机的硬盘和硬件信息 ,有可能会出现cpu不一致的问题
将其他人的虚拟机复制到我的真机上,相当于从别人的主机上下载到我的主机上
说明:虚拟机复制实验由于没有充足的实验条件,以下只写详细的实验步骤。
(2)复制虚拟机的具体步骤:
说明:在真机root下的shell里面
第一步:先用命令ssh远程连接对方主机,如ssh [email protected],成功后再进行下一步
第二步:复制对方的虚拟机的硬盘信息到/mnt/下: scp /var/lib/libvirt/images/xuniji.qcow2 [email protected]:/mn/
第三步:复制对方的虚拟机的硬件信息 到/mnt/下:scp /etc/libvirt/qemu/xuniji.xml [email protected]:/mnt/
第四步:切换到/mnt/盘下,用ls命令查看一下xuniji.qcow2和xuniji.xml文件是否存在,确保存在后再进行下一步
第五步:virsh create /mnt/westos.xml 一次性使用复制的虚拟机 ,关掉就没有了
第六步:virsh define /mnt/westos.xml 永久性使用虚拟机 ,关掉依然在
第七步:virsh undefine /mnt/westos(名字) 永久关掉虚拟机
8.虚拟机的快照
(1)什么是虚拟机的快照?
- 磁盘“快照”是虚拟机磁盘文件(VMDK)在某个点及时的副本。
- 系统崩溃或系统异常,你可以通过使用恢复到快照来保持磁盘文件系统和系统存储。
- 当升级应用和服务器及给它们打补丁的时候,快照是救世主。
- 相当于 拍照片一样,拍坏了大不了一直重新拍,快捷不损坏系统,
- VMware快照是VMware Workstation里的一个特色功能
(2)虚拟机快照的原理:
- 当创建VMware快照时,实际上我们并没有复制原始磁盘当中的任何数据。
- 而是将原始磁盘设置为VMware快照读状态,并且创建一个VMware快照回滚日志——有时也称之为增量磁盘,
- 这种增量磁盘其实就是在VMware快照创建之后,针对任何虚拟机写入操作所产生的占位符。
- 用一个文件放到真实的文件面前 ,看到的是真实的文件, 使用的是快照,就像照镜子一样
- 不对的时候舍弃快照,再拿来一个新的,但应避免多个快照
- 一个成功的快照相当于一台主机,有和原虚拟机一样的功能,可以进行任意操作
(3)使用快照的原因:
- 虚拟机坏了不可恢复,要重新装,比较麻烦,不可逆
- 照片处理,我们所使用的虚拟机是一张照片 ,不是一个真正的虚拟机
- 使用的时候给真正的虚拟机照相处理即可
- 快照是可逆的,并且可以随意处理
(4)怎样做一个虚拟机的快照以及开启使用这个快照?
实验环境:使用自己下载过的一个实实在在的虚拟机happy
在真机的root下面进行 其实所有改的都是原来的虚拟机信息
第一步:在真机的root下 cd /var/lib/libvirt/images/, 为了后期使用相对路径
ls 查看该路径下的文件 ,查看虚拟机的硬盘信息 ,看是否有happy.qcow2
第二步:接下来建立happy这个虚拟机的快照 ,使用命令 qemu-img
-f |
我们要建虚拟机快照的硬盘格式 |
---|---|
-b |
备份虚拟机的硬盘信息 |
/var/lib/libvirt/images/xuniji.qcow2 |
真实虚拟机的硬盘路径 |
/var/lib/libvirt/imag /node1.qcow2 |
虚拟机的快照路径 |
第三步:ls查看node1.qcow2是否生成(虚拟机快照硬盘格式)
第四步:du -sh node1.qcow2 查看快照文件的大小, 一般比真正虚拟机文件要小
第五步:file node1.qcow2 回到查看真正文件的大小
第六步:回去点击电视 ,然后给快照导入路径 ,改名字为node1
然后就可以看到一个虚拟机生成了 ,可以登陆了 ,密码和帐号与原来虚拟机一样
第七步:登陆快照虚拟机node1(帐号和密码与xuniji的一模一样)
进去快照虚拟机之后,删根,rm -rf /*破坏掉这个快照虚拟机,然后就坏了
可以看到有些文件不能删除,因为这些文件是这个快照虚拟机正在运行的,在内存当中
扔掉快照 重新照 ,rm -rf node1.qcow2,重新建立快照即可
以上就是手动建立虚拟机快照的方法
(5)使用脚本安装虚拟机的快照
第一步:在真机root下cd /mnt/ 在该目录下建立脚本设置快照;ls
第二步:vim vm_snap.sh 建立生成快照虚拟机的脚本
第三步:编写脚本
- #!/bin/bash ##该脚本为二进制文件
- cd /var/lib/libvirt/images ##为了下面使用相对路径方便
- qemu-img create -f qcow2 -b $1.qcow2 $2.qcow2 &> /dev/dull ##创建虚拟机的快照,并且将输出重定向输出到垃圾桶
- virt-install \ ##使用命令
- –name $2 \ ##虚拟机快照的名字
- –ram 1024 \ ##快照的内存大小
- –vcpus 1 \ ##快照的cpu大小
- –disk /var/lib/libvirt/images/$2.qcow2,bus=virtio \ ##快照的硬盘信息
- –network bridge=br0,model=virtio \ ##快照的网络信息
- –import &> /dev/null & ##导入快照的路径,并且将输出重定向输出到垃圾桶,将该进程在后台运行
第四步 :然后退保存即可,点击电视,点击import
第五步:ll /var/lib/libvirt/images/ -d
sh vm_snap.sh $1(原来虚拟机的名字) $2(快照虚拟机的名字)
sh vm_snap.sh xuniji node1 就可以看到快照虚拟机了(还是有东西输出,原始虚拟机的信息,这个也可以屏蔽)
一条命令可以建立一个快照虚拟机 这个很有用
发现node2 node3 node4都建立成功了
但是如果执行命令虚拟机没有出来,也没有报错,那么我们应该判断脚本写入是否有错。