Ubuntu20 + KVM虚拟机

1 命令汇总

# 查看一下linux是32位还是64位:
file /bin/ls
# ubuntu重装vim,解决输入问题
sudo apt-get remove vim-common -y
sudo apt-get install vim -y

安装KVM

# 确认一下 CPU支持硬件虚拟化
egrep -o '(vmx|svm)' /proc/cpuinfo
# 检查 VT 是否在 BIOS 中启用(apt install cpu-checker)
km-ok

# yum install libguestfs-tools -y
# 安装依赖
sudo apt install qemu qemu-kvm libvirt-daemon-system libvirt-clients virt-manager virtinst bridge-utils libguestfs-tools -y

# 查看是否安装成功
lsmod|grep kvm
# 查看libvited
service libvirtd status/start/stop/restart
/etc/init.d/libvirtd status/start/stop/restart

systemctl enable libvirtd    开机自启




# 添加模块到内核
modprobe -a kvm
modprobe -a kvm_intel

# 启动虚拟化管理工具
virt-manager


# 创建nat网络
virsh net-create /etc/libvirt/qemu/networks/mynat100.xml
# 持久化
virsh net-define /etc/libvirt/qemu/networks/mynat100.xml
# 开机自启
virsh net-autostart mynat100
# 停用默认网络
virsh net-destroy default

virsh list --all
virsh define xxx.xml
virsh start xxx
virsh shutdown xxx
virsh destroy xxx
virsh undefine xxx

调试外部ssh工具(未完)

# ssh连接
ps -e|grep ssh
apt-get install openssh-server
service sshd status/start/stop/restart
service sshd reload ?
ssh -l 用户名 本机ip

# 查看本机sshd是否开启X11转发
grep X11Forwarding /etc/ssh/sshd_config
yum list installed|grep xorg-x11*

创建虚拟机(iso)

# 此法可能识别不到磁盘
virt-install --name centos7 \
--memory 1024 \
--vcpus 1 \
--cdrom=/home/zj/file/CentOS-7.0-1406-x86_64-DVD.iso \
--disk=/home/zj/images/centos7.qcow2 \
--network=bridge:virbr1,model=virtio

# 建议使用的安装方法:qcow2
cd /home/zj/images/
qemu-img create -f qcow2 centos7.qcow2 10G

qemu-system-x86_64 -enable-kvm \
-name centos7 \
-m 1024 -smp 2 -boot d \
-drive file=/home/zj/images/centos7.qcow2,if=virtio,index=0,media=disk,format=qcow2 \
-drive file=/home/zj/file/CentOS-7.0-1406-x86_64-DVD.iso,index=1,media=cdrom


# 建议使用的安装方法:raw
cd /home/zj/images/
qemu-img create -f raw centos7.raw 10G

qemu-system-x86_64 -enable-kvm \
-name centos7 \
-m 1024 -smp 2 -boot d \
-drive file=/home/zj/images/centos7.raw,if=virtio,index=0,media=disk,format=raw\
-drive file=/home/zj/file/CentOS-7.0-1406-x86_64-DVD.iso,index=1,media=cdrom

启动虚拟机(raw/qcow2)

# 启动虚拟机
qemu-system-x86_64 \
       -hda /home/zj/images/centos7.qcow2 \
       -m 2G

查看镜像信息

qemu-img info centos7.raw

2 centos

安装KVM

在进一步行动之前,首先需要检查你的 CPU 是否支持 KVM 虚拟化,确保你系统中有 VT-x( vmx)英特尔处理器或 AMD-V(svm)处理器。

你可以通过运行如下命令,如果输出值大于 0,那么虚拟化被启用。否则,虚拟化被禁用,你需要启用它:

egrep -c '(vmx|svm)' /proc/cpuinfo

km-ok,检查 VT 是否在 BIOS 中启用,若无此命令,yum install cpu-checker
在这里插入图片描述
安装:
yum install qemu-kvm qemu-kvm-tools -y
yum groupinstall “Virtualization” -y
yum groupinstall “Virtualization Client” -y
yum groupinstall “Virtualization Platform” -y
yum groupinstall “Virtualization Tools” -y
yum install virt-manager libvirt -y
yum install libguestfs-tools -y

这几个组包包含很多,好像不用装这么多,精简版应该是:
yum install qemu qemu-kvm libvirt-daemon-system libvirt-clients virt-manager virtinst libguestfs-tools -y

查询是否安装成功

查看KVM安装:lsmod|grep kvm
出现kvm、kvm_intel(kvm_amd)才是成功,若没有可能是centos虚拟机创建时没有开启CPU虚拟化,解决办法参见下文。
在这里插入图片描述
查看libvirt状态:service libvirtd status
在这里插入图片描述
启动libvirt:/etc/init.d/libvirtd start
在这里插入图片描述
在这里插入图片描述

安装镜像

查询由virsh define和virt-manager创建的虚拟机列表,由qemu-kvm安装启动的这里查不到。
在这里插入图片描述
目前有三种方式:
第一:用虚拟化管理工具,即virt-manager,此方法识别不到硬盘,而且启停按钮不好用;
第二:用virsh install命令,未尝试,可能识别不到硬盘;
第三:用qemu-kvm命令,未尝试。

virt-manager方式

通过virt-manager命令打开虚拟化管理工具:
若centos有桌面,在虚拟机里执行就会自己打开,但该方式也有问题;
若是ssh客户端如xshell连接,执行该命令就会出现各种问题,目前未调好。详细信息参见

virsh install方式

qemu-kvm方式

3 ubuntu

下载参考博客
https://www.cnblogs.com/manongqingcong/articles/16623647.html

安装kvm博客
https://zhuanlan.zhihu.com/p/573578594

磁盘扩容
https://www.jianshu.com/p/dfbdb3949d93

安装完Ubuntu系统,有几方面必须解决的问题:

  1. root用户不知道密码:可用sudo passwd root改密码;
  2. root用户不能密码登录,只能普通用户su root切;
  3. Vim问题:上下左右键、esc、删除键不好用的问题,解决方案见下文;
  4. ssh无法连接;

修改ip

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ssh连接

在这里插入图片描述

qcow2 xml定义

qcow2镜像定义文件,Ubuntu系统下需修改三个地方:machine/emulator/source/
在这里插入图片描述

安装依赖

在进一步行动之前,首先需要检查你的 CPU 是否支持 KVM 虚拟化,确保你系统中有 VT-x( vmx)英特尔处理器或 AMD-V(svm)处理器。

你可以通过运行如下命令,如果输出值大于 0,那么虚拟化被启用。否则,虚拟化被禁用,你需要启用它:
egrep -c ‘(vmx|svm)’ /proc/cpuinfo

km-ok,检查 VT 是否在 BIOS 中启用,若无此命令,apt install cpu-checker
在这里插入图片描述

sudo apt install qemu qemu-kvm libvirt-daemon-system libvirt-clients virt-manager virtinst bridge-utils libguestfs-tools -y

查看KVM安装:lsmod|grep kvm
查看libvirt状态:service libvirtd status
启动libvirt:/etc/init.d/libvirtd start

Libvirtd默认开机自启,可查看
在这里插入图片描述
若不是,可自行设置:systemctl enable libvirtd

启动后可以看到网卡多了一个virbr0的网口,这个是libvirt默认的nat网口(默认IP是192.168.122.1),在更新的版本会发现有virbr0-nic、vnet0等网口,这些都是给虚拟机用的网口

在这里插入图片描述

创建虚拟机(iso)

目前有三种方式:
第一:用虚拟化管理工具,即virt-manager,此方法识别不到硬盘,而且启停按钮不好用;
第二:用virsh install命令,此方法识别不到硬盘;
第三:用qemu-system-x86_64命令,可正常安装。

工具创建虚拟机(不建议)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
点击Finish,弹出安装界面,通过上下键选择Install CentOS7

在这里插入图片描述
在这里插入图片描述
走到磁盘这里卡住了,创建时分了20G,但是此处不显示
在这里插入图片描述
在这里插入图片描述
后来发现,这暂停、关机啥的都不好使。不建议使用virt-manage的管理端
在这里插入图片描述

virsh install命令行创建虚拟机(不建议)

qemu-img create -f qcow2 centos7.qcow2 10G

virt-install --name centos7 \
--memory 1024 \
--vcpus 1 \
--cdrom=/home/zj/file/CentOS-7.0-1406-x86_64-DVD.iso \
--disk=/home/zj/images/centos7.qcow2 \
--network=bridge:virbr1,model=virtio

在这里插入图片描述
同工具创建一样,识别不到磁盘

qemu-system-x86_64命令行创建虚拟机

# 创建一个raw格式的磁盘
root@ubuntu:/opt/images/centos7# qemu-img create -f raw centos7.raw 10G

# 此法识别不到磁盘
root@ubuntu:/opt/images/centos7# virt-install --name centos7 \
--memory 1024 \
--vcpus 1 \
--cdrom=/opt/images/centos7/CentOS-7.0-1406-x86_64-DVD.iso \
--disk=/opt/images/centos7/centos7.raw \
--network=bridge:virbr1,model=virtio

# 建议使用此方法,将iso镜像安装到指定磁盘里
root@ubuntu:/opt/images/centos7# qemu-system-x86_64 -enable-kvm \
-name centos7 \
-m 1024 -smp 2 -boot d \
-drive file=/opt/images/centos7/centos7.raw,if=virtio,index=0,media=disk,format=raw \
-drive file=/opt/images/centos7/CentOS-7.0-1406-x86_64-DVD.iso,index=1,media=cdrom

iso安装成功后,对应的raw或者qcow2格式的磁盘,都可作为一个基础的镜像,直接拷贝和发给别人,直接启动虚拟机即可,省去重复iso安装过程。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置root密码为root,密码太简单时需要点击两次完成。

启动虚拟机(raw/qcow2)

目前有两种:
第一:有xml文件,用virsh define/start的方式,不知是何原因,一start整个Ubuntu就宕机,貌似和内存硬盘无关;
第二:用qemu-system-x86_64命令,通过hda参数指定raw/qcow2镜像的位置,m参数指定分配的内存,也可以指定网络但我没研究。

# 启动指定磁盘的虚拟机,默认nat模式,虚拟机可ping通宿主机

# 进入宿主机Ubuntu内执行
root@ubuntu:/opt/images/centos7# qemu-system-x86_64 \
       -hda /opt/images/centos7/centos7.raw \
       -m 2G

# xshell等工具连接宿主机Ubuntu执行,直接将虚拟机控制台显示在xshell窗口,不再贴图
root@ubuntu:/opt/images/centos7# qemu-system-x86_64 \
       -hda /opt/images/centos7/centos7.raw \
       -m 2G -curses

此命令直接弹出虚拟机控制台,关闭窗口即关机。(每次启动好像都需要重行开启和重启网卡)

在这里插入图片描述
在这里插入图片描述
进入ens3的配置文件,开启网口,onboot=yes,改完保存。
此处不想改成静态IP,所以就直接用 ifup ens3开启了。
重启网卡service network restart。

注意:此命令是nat模式,建议使用dhcp自动获取ip。例子如下,文件尽量不要包含其它字段:
DEVICE=eth3
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp

查询IP为10.0.2.15,与Ubuntu宿主机可互通。(互通好像只是个例)
在这里插入图片描述
至于想用桥接和Windows物理机相通,还未研究。

安装产品

由于没有设置Ubuntu里的虚拟机的网络,默认是nat吧,所以无法用Windows的ssh工具连接。
采取Windows用ssh给Ubuntu发文件,再由Ubuntu用scp命令发给centos。

宿主机Ubuntu:192.168.0.100
虚拟机centos7:10.0.2.15

从Ubuntu向centos发送文件:scp 源绝对路径/相对路径 user@ip:目的地绝对路径
按理来说是可以通的,但不知道为什么命令没反应。

所以采取了centos从Ubuntu复制文件:scp user@ip:源绝对路径 目的地绝对路径/相对路径
在这里插入图片描述

扩容

诉求:centos7 10G 扩成 20G
思路:扩容三步曲,不管是什么命令什么方式,底层都是这三步

  1. 硬件磁盘扩容(宿主机操作)
  2. 分区扩容(虚拟机操作)
  3. 文件系统扩容(虚拟机操作)

virt-resize方式

以下.raw路径均是相对路径,在/opt/images/centos7中

1. 创建新的磁盘

创建新的20G磁盘,raw格式,因为virt-resize只支持raw拉伸大小
qemu-img create -f raw n20.raw 20G
qemu-img info n20.raw
virt-filesystems --long --parts --blkdevs -h -a n20.raw
在这里插入图片描述

2. 查看旧磁盘情况

查看centos7镜像分区情况:virt-filesystems --long --parts --blkdevs -h -a centos7.raw
相当于进入虚拟机执行lsblk
可以看到有主要是sda,有两个分区:sda1和sda2,加起来一共10G。
在这里插入图片描述
在这里插入图片描述
查看centos7镜像文件系统情况:virt-df centos7.raw
相当于进入虚拟机执行df
可以看到有两个文件系统,一个普通文件系统/dev/sda1,一个lvm逻辑卷/dev/centos/root,是挂在sda2分区下的(扩容命令会用到)

在这里插入图片描述
在这里插入图片描述

3. 扩容

根据virt-df查询出的结果,进行编写命令:将 /dev/sda2下的/dev/centos/root进行扩容,并复制到新镜像n20.raw中。
virt-resize --expand /dev/sda2 --LV-expand /dev/centos/root centos7.raw n20.raw
竟然只用了几秒就扩容完了
在这里插入图片描述
再次查看新镜像的分区情况,可以看到sda1和sda2都有了
virt-filesystems --long --parts --blkdevs -h -a n20.raw
在这里插入图片描述
保险起见,我们打开虚拟机进入,用df -h看一下
在这里插入图片描述

4. 压缩转换格式(可选)

将raw格式镜像压缩为qcow2格式镜像,缩小体积。
压缩镜像:qemu-img convert -O qcow2 -c n32.raw n32.qcow2

virsh blockresize方式

  1. 硬件磁盘扩容(宿主机)
    a) 查看镜像文件路径:virsh domblklist 镜像名
    b) 扩容:virsh blockresize –path 镜像绝对路径 –size 50G 镜像名
  2. 分区扩容(虚拟机)
    a) 查看:lsblk
    b) 扩容:growpart 磁盘名 分区序号,此步骤好像要求系统是英文的
  3. 文件系统扩容(虚拟机)
    a) 查看:df -h
    b) 扩容:xfs_growfs 分区名
    在这里插入图片描述

其他问题

关于vi编辑

方式一:将就

上下左右、esc、删除等均不好使,esc = alt + Q
h 或 向左方向键(←) 光标向左移动一个字符
j 或 向下方向键(↓) 光标向下移动一个字符
k 或 向上方向键(↑) 光标向上移动一个字符
l 或 向右方向键(→) 光标向右移动一个字符

方式一:一劳永逸

sudo apt-get remove vim-common -y
sudo apt-get install vim -y
在这里插入图片描述

关于清数据

在这里插入图片描述

关于lsmod

查看KVM安装:lsmod|grep kvm
若是查不出来,自行加载一下试试,可能会出错
modprobe -a kvm
modprobe -a kvm_intel(amd芯片系统则是kvm_amd)

加载kvm_intel失败,百度搜索后,执行modprobe kvm_intel报错更明确,网图如下
在这里插入图片描述
其中一种可能的原因是,我的虚拟机没有开启 CPU虚拟化的支持,我用的VirtualBox,修改虚拟机配置,系统—处理器,勾选启动嵌套VT-x
在这里插入图片描述
修改完开机,再查询就有了
在这里插入图片描述

关于yum源

在这里插入图片描述
我本地存了一份yum源相关的文件,这次选择直接删除覆盖的方式。若是想用命令更新,请百度。
进入/etc/yum.repos.d目录,删除里面的文件
在这里插入图片描述
将自己的yum文件包上传到/home/zj里,解压后将文件复制到/etc/yum.repos.d目录
在这里插入图片描述

关于虚拟化管理工具

关于xshell执行命令打开

在这里插入图片描述
1.首先查看本机sshd是否开启X11转发
grep X11Forwarding /etc/ssh/sshd_config
在这里插入图片描述
若未开启,修改为开启之后,重启sshd
service sshd reload
在这里插入图片描述
2.检查xorg-x11-xauth是否安装
yum list installed|grep xorg-x11*
在这里插入图片描述
在这里插入图片描述

关于虚拟机桌面打开

执行virt-manager ,通过转发到x-manager怎么调也调不好,所幸虚拟机是有图形化界面的,直接进入虚拟机操作。
在这里插入图片描述
可以看到此时没有一个镜像。

我们需要一个基础镜像,签名组提供了一个qcow2格式的,猜测是通过centos iso版镜像改造过来的。

上传至/home/zj/images/
在这里插入图片描述
修改netseal6.xml:指定qcow2镜像的位置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
在这里插入图片描述
在这里插入图片描述

添加网卡

若没有NIC,则点击左测底部“添加硬件”,进入《添加新虚拟硬件》界面,如图所示:
Alt+鼠标左键,拖拽窗口,才能看见添加硬件按钮
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
记录MAC地址:52:54:00:01:5c:36,配置虚拟机网卡时使用。

在这里插入图片描述

启停虚拟机

亲测不好使,不仅工具按钮不好使,命令也不好使
virsh start xxx
virsh shutdown xxx

只有删除和销毁好使
virsh destroy xxx
virsh undefine xxx
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值