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
下载参考博客
安装kvm博客
https://zhuanlan.zhihu.com/p/573578594
磁盘扩容
https://www.jianshu.com/p/dfbdb3949d93
安装完Ubuntu系统,有几方面必须解决的问题:
- root用户不知道密码:可用sudo passwd root改密码;
- root用户不能密码登录,只能普通用户su root切;
- Vim问题:上下左右键、esc、删除键不好用的问题,解决方案见下文;
- 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的配置文件,开启网口,notallow=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
思路:扩容三步曲,不管是什么命令什么方式,底层都是这三步
- 硬件磁盘扩容(宿主机操作)
- 分区扩容(虚拟机操作)
- 文件系统扩容(虚拟机操作)
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方式
- 硬件磁盘扩容(宿主机)
a) 查看镜像文件路径:virsh domblklist 镜像名
b) 扩容:virsh blockresize –path 镜像绝对路径 –size 50G 镜像名 - 分区扩容(虚拟机)
a) 查看:lsblk
b) 扩容:growpart 磁盘名 分区序号,此步骤好像要求系统是英文的 - 文件系统扩容(虚拟机)
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