【云计算】KVM虚拟化部署

一、安装kvm

#在宿主机上安装kvm套件

bash 复制代码
yum groupinstall kvm
yum -y install qemu-kvm libvirt virt-install bridge-utils virt-manager

#加载kvm模块

bash 复制代码
modprobe kvm
modprobe kvm_intel #需要cpu支持虚拟化并在bios中开启该支持

#宿主机关闭NetworkManager服务

bash 复制代码
systemctl stop NetworkManager
systemctl disable NetworkManager

#启动libvirtd服务

bash 复制代码
systemctl start libvirtd
systemctl enable libvirtd

#创建网桥

#系统中还会有一个virbr0,是kvm自动管理的,是NAT模式会用到的网卡

#新建的网桥名称注意不要与virbr0冲突

bash 复制代码
brctl addbr br0
brctl addif br0 eno3
brctl stp br0 on

#修改配置文件

bash 复制代码
vim /etc/sysconfig/network-script/ifc-br0

DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
DEFROUTE=yes
IPADDR=172.16.30.11  #写原服务器主网卡的ip
PREFIX=24
GATEWAY=173.16.30.1
DNS1=202.99.192.68
ONBOOT=yes

#修改宿主机网卡设置

bash 复制代码
vim /etc/sysconfig/network-script/ifc-eno3
#把IPADDR GATEWAY PREFIX DNS1四行去掉,添加以下行
BRIDGE=br0

#重启网络服务,试一下服务器网络是否正常,能否远程登录

bash 复制代码
systemctl restat network

#创建虚拟机

虚拟机运行之后不要轻易重启宿主机网络服务,会导致虚拟机网络中断,可能需要宿主机重启才能恢复(本地测试时存在的问题)

#命令行创建虚拟机

#创建40G大小的虚拟磁盘

bash 复制代码
dd if=/dev/zero  of=/kvm/kvm01.img  bs=2M count=20480

#生成10img,格式:qcow2,这种格式随容量大小变化,直到超过限定值。生成很快,文件也很小,拷贝很方便。

bash 复制代码
qemu-img create -f qcow2 centos.img  10G

#将光盘内容复制为本机上的iso文

bash 复制代码
dd if=/dev/cdrom of=/opt/rhel.iso bs=2048

#在虚拟磁盘上创建第一个虚拟机

bash 复制代码
virt-install -n kvm01 -r 2048 --vcpus=2 -no-acpi -f /kvm/kvm01.img  --vnc -c /opt/rhel.iso

#克隆虚拟机

bash 复制代码
virt-clone --connect=qemu:///system -o blog-web-1 -n blog-web-2 -f /var/lib/libvirt/images/blog-web-2.img 

#在克隆之前现行修改网卡信息(注释掉HAADDR,修改ip地址)

#使用已有的虚拟机配置文件创建新的虚拟机

bash 复制代码
virsh dumpxml node1 >/etc/libvirt/qemu/node2.xml
vi /etc/libvirt/qeme/node2.xml
virsh define /etc/libvirt/qemu/node2.xml
virsh start node2

#虚拟机管理

#配置文件

bash 复制代码
/etc/libvirt/qeum/node_name.xml
#编辑虚拟机配置文件
virsh edit node_name
#虚拟机开启vnc
<graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1' keymap='en-us'/>
   #port='-1' autoport='yes':port自动分配,监听回环网络(virt-manager管理需要listen='127.0.0.1'),无密码
改为
<graphics type='vnc' port='5904' autoport='no' listen='0.0.0.0' keymap='en-us' passwd='xiaobai'/>
#固定vnc管理端口5904,不自动分配,vnc密码xiaobai,监听所有网络

virsh list
virsh destroy #强行关闭
virsh create  /etc/libvirt/qeum/kvm01.xml  #使用配置文件启动虚拟机
virt-viwer  -c qemu///system  

#
push test

#可视化页面创建虚拟机

二、VNC部署

#服务器安装了桌面环境,可以使用vnc远程连接到服务器的桌面环境进行操作,即使服务器运行在字符模式下。

bash 复制代码
yum group install -y "GNOME Desktop"

#安装vnc-server

bash 复制代码
yum install tigervnc-server

#设置为服务

bash 复制代码
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

修改此服务配置 #以下为root用户的配置,每一个用户,都需要单独设置一个监听服务,且配置不同

bash 复制代码
vim /etc/systemd/system/vncserver@\:1.service

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=root

#Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i

[Install]
WantedBy=multi-user.target

#对于普通用户,加入用户名为:Amos

#下面举例进行设置: 首先一样复制一个server配置,改名为vncserver@:2.service

bash 复制代码
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service

#然后进行修改

bash 复制代码
vim /etc/systemd/system/vncserver@\:2.service

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=root

Clean any existing files in /tmp/.X11-unix environment

ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/home/Amos/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i

[Install]
WantedBy=multi-user.target

#设置vncserver的连接密码:

vncpasswd

#不添加只读账号密码

#每个不用的系统用户,设置密码时,需要切换到该用户下,执行此命令

#如:su Amos 切换到Amos用户再执行上vncpasswd,设置密码

#启动服务,设置自启动

bash 复制代码
systemctl daemon-reload
systemctl start vncserver@\:1.service
systemctl enable vncserver@\:1.service

#若服务启动不了,删除vnc被锁文件再启动

bash 复制代码
vncserver
rm -rf /tmp.X1-lock
rm -rf /tmp/.X11-unix/X1

#windows跳板机下载vnc客户端,输入服务器内网IP:5901,访问服务器桌面

相关推荐
搞科研的小刘选手26 分钟前
【厦门大学主办】第六届计算机科学与管理科技国际学术会议(ICCSMT 2025)
人工智能·科技·计算机网络·计算机·云计算·学术会议
是小胡嘛1 小时前
C++之Any类的模拟实现
linux·开发语言·c++
口袋物联1 小时前
设计模式之工厂模式在 C 语言中的应用(含 Linux 内核实例)
linux·c语言·设计模式·简单工厂模式
qq_479875432 小时前
X-Macros(1)
linux·服务器·windows
笨笨聊运维3 小时前
CentOS官方不维护版本,配置python升级方法,无损版
linux·python·centos
ζั͡山 ั͡有扶苏 ั͡✾4 小时前
EFK 日志系统搭建完整教程
运维·jenkins·kibana·es·filebeat
TH_14 小时前
腾讯云-(8)-宝塔面板-安装Docker
docker·云计算·腾讯云
jun_bai4 小时前
python写的文件备份网盘程序
运维·服务器·网络
Warren984 小时前
Python自动化测试全栈面试
服务器·网络·数据库·mysql·ubuntu·面试·职场和发展
HIT_Weston4 小时前
39、【Ubuntu】【远程开发】拉出内网 Web 服务:构建静态网页(二)
linux·前端·ubuntu