kvm虚拟机使用

KVM是一种基于Linux内核的开源全虚拟化解决方案,也是主流的Linux虚拟化解决方案,支持广泛的客户机操作系统。KVM需要CPU的虚拟化指令集的支持,如Intel的Intel VT(vmx指令集)或AMD的AMD-V(svm指令集)。
组成:
内核虚拟化模块 (KVM)
系统设备仿真 (QEMU)
虚拟机管理程序 (LIBVIRT)
KVM、qemu即可构成KVM,但qemu参数太过复杂用户不友好,为了使KVM易于管理提供了libvirt方便用户管理虚拟机。

安装:

# 核查cpu是否支持虚拟化
## inter cpu
cat /proc/cpuinfo | grep vmx
## amd cpu
cat /proc/cpuinfo | grep smv

# 安装,环境:ubuntu 22.04
apt install qemu-kvm libvirt-clients libvirt-daemon-system virtinst -y
systemctl restart libvirtd &&  systemctl enable libvirtd

核查安装:

# 交互式,命令行输入 virsh 进入
[root@controller qemu]# virsh
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # nodeinfo
virsh # list -all


# 命令行式
[root@controller qemu]# virsh nodeinfo

[root@controller qemu]# virsh list --all

虚拟机文件:
虚拟机配置文件,XML文件,位置 :/etc/libvirt/qemu/
虚拟机硬盘文件,位置:/var/lib/libvirt/images/

虚拟机创建:
1)配置虚拟网络(非必须,如跳过,创建虚拟机会自动生成一个默认192.168.122.0/24网段虚拟网络)

# 创建并编写虚拟网络xml文件
[root@controller networks]# touch network.xml && vim network.xml
<network>
  <name>default</name>
  <bridge name="virbr0" />
  <forward/>
  <ip address="192.168.1.1" netmask="255.255.255.0">
    <dhcp>
      <range start="192.168.1.2" end="192.168.122.254" />
    </dhcp>
  </ip>
</network>

# 使用xml文件创建虚拟网络
[root@controller networks]# virsh net-define network.xml
Network default defined from network.xml

[root@controller networks]# virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              inactive   no            yes

# 配置虚拟网络自启和开启虚拟网络
[root@controller networks]# virsh net-autostart default
[root@controller networks]# virsh net-start default


[root@controller networks]# virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes


# 配置后会在/etc/libvirt/qemu/networks目录下新生成对应名称的xml文件
# network.xml为自定义的xml文件,default.xml为自动生成的xml文件
[root@controller networks]# ls
autostart  default.xml  network.xml

[root@controller networks]# cat default.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh net-edit default
or other application using the libvirt API.
-->

<network>
  <name>default</name>
  <uuid>751b47a1-21c9-4691-ba83-eb7ece4a2042</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:a1:5c:0f'/>
  <ip address='192.168.1.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.1.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

2)创建虚拟机

# 1)xml文件创建
测试几次均报PCI错误,该方式待补充。

# 2)virt-install创建
## 创建虚拟机centos7
## cdrom引入的是iso镜像,需要提前准备好
virt-install --virt-type kvm --os-type=linux  --os-variant centos7 \
    --name centos7 --memory 2048 --vcpus 2 \
    --disk /var/lib/libvirt/images/centos7.img,format=qcow2,size=50 \
    --cdrom /download/centos7.iso \
    --network network=default \
    --graphics vnc,port=5901,listen=0.0.0.0 \
    --noautoconsole
    --autostart

## vnc连接安装系统
略

虚拟机管理:

# 查看KVM节点(服务器)信息
virsh nodeinfo 

# 列举虚拟机,--all列出所有
virsh list --all

# 运行|重启|关闭指定虚拟机
virsh start|reboot|shutdown 虚拟机名

# 强制关闭指定虚拟机
virsh destroy 虚拟机名

# 将指定虚拟机设置|取消随宿主机自启动
virsh autostart [--disable] 虚拟机名

# 修改虚拟机配置,可调整虚拟机内存、cpu和磁盘挂载
## cpu、内存
virsh edit 虚拟机名
后直接修改对应cpu、内存配置大小就可以了

## 硬盘
## 挂载新磁盘
### 1)新建待挂载磁盘
qemu-img  create -f qcow2 /var/lib/libvirt/images/centos7-2.img 1G
### 2)关闭虚拟机
### 3)配置挂载新磁盘
#### 具体将之前的vda部分配置复制粘贴一份,然后修改file、dev并删除address,最后:wq保存退出即可
virsh edit 虚拟机名
#### 示例
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/centos7.img'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/centos7-2.img'/>
      <target dev='vdb' bus='virtio'/>
    </disk>
### 4)重启虚拟机

## 扩容已有磁盘
### 不用重启虚拟机,下方命令执行后,再进虚拟机即可看到虚拟机vda磁盘容量已增加
virsh blockresize --domain centos7 --path /var/lib/libvirt/images/centos7.img --size 60G


# 根据xml文件 创建/删除 虚拟机
virsh define|undefine  虚拟机名

# 克隆虚拟机
virt-clone --original centos7 --name centos7-2 --auto-clone

虚拟网络管理:

# 列举虚拟网络,--all列出所有
virsh net-list --all

# 启动虚拟网络
virsh net-start 虚拟网络名

# 强制停止虚拟网络
virsh net-destroy 虚拟网络名

# 根据xml文件创建/删除虚拟网络
virsh net-define|net-undefine 虚拟网络名

# 修改虚拟网络配置
virsh net-edit 虚拟网络名

# 将指定的虚拟网络设置|取消开机自启
virsh net-autostart [--disable] 虚拟网络名

问题:
1、虚拟机配置系统完成后,使用virsh console会卡住。
现象:

root@theozhou:/etc/libvirt/qemu# virsh console centos7
Connected to domain 'centos7'
Escape character is ^] (Ctrl + ])

 解决:
vnc连入虚拟机后输入以下命令

[root@localhost ~]# echo "ttyS0" >> /etc/securetty 
[root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0"
[root@localhost ~]# reboot

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值