桥接模式
仅主机模式
nat模式
云服务
各种组件虚拟
主机虚拟化类型
Xen
KVM
libvirt的C/S
kvm管理机制
libvirt服务
qemu
qemu+xen
qemu+kvm: qemu-kvm
内核空间:操作系统内存加速--kvm实现
用户空间:加速虚拟网络、创建虚拟io设备--qemu--命令行管理
libvirt--图形管理
CPU设置
grep -i -E '(vmx|svm|lm)' /proc/cpuinfo 显示vmx(intel)/svm(amd)、lm即可
modprobe kvm 安装kvm模块
lsmod | grep -i kvm
yum -y install libvirt-daemon-kvm qemu-kvm virt-manager
systemctl status libvirtd
ifconfig
创建br0设备
cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-br0
vim ifcfg-ens33 当交换机使用
删除IPADDR、PREFIX、GATEWAY、DNS、IPV6_PEERDNS、IPV6_PEERROUTES、IPV6_DEFROUTE
添加BRIDGE=br0(dhcp模式,就直接加br0备即可)
vim ifcfg-br0
删除UUID
修改DEVICE=br0、TYPE=Bridge、NAME=br0
systemctl restart network; ifconfig 显示br0,ens33--类似物理交换机了
brctl show 显示br0上有ens34即可
virt-manager & 在图形界面打开
mkdir -pv /data/os/
mv CentOS-7-x86_64-Everything-1708.iso /data/os/
提前把镜像放到某个目录下去,使用本地镜像安装。
开始创建
本地镜像:提前把镜像传到主机上
指明镜像路径
2个CPU
96G可用范围内输入大小
网络使用默认是virbr0
CPU
boot options
开始安装
安装centos即可
ls -lh /dev/kvm
qemu-img -h
kvm首选qcow2
qemu-img create -f qcow2 -o ? /data/os/test.qcow2
qemu-img create -f qcow2 -o size=120G,preallocation=metadata /data/os/test.qcow2
ll -h /data/os/
du -sh /data/os/test.qcow2 真实大小
virt-manager & 在图形界面打开 知道方法即可 空镜像
选择刚才创建的镜像文件
使用别人的镜像
https://launchpad.net/cirros/+download 下载二进制格式包
云环境--第一次启动需要连接互联网进行测试
cd /data/os/
rz 上传cirros-0.4.0-x86_64-disk.img
cp cirros-0.4.0-x86_64-disk.img c1.img
cp cirros-0.4.0-x86_64-disk.img c2.img
cp cirros-0.4.0-x86_64-disk.img c3.img
qemu-img info c1.img
图形界面操作
virt-manager &
已有镜像
选择
c1
OS type可以任意
100M、2个CPU
选择联网网卡
等一会,第一次连接,联网测试
输入默认账号和密码
图形界面 QEMU/KVM
su do - 切换root身份
ifconfig 192.168.1.6
命令行界面
yum -y install tigervnc
ss -ntl 5900端口--图形界面运行的c1虚拟机在"vnc :0"窗口
rpm -ql qemu-kvm
ln -sv /usr/libexec/qemu-kvm /usr/bin/ 加到path变量里面
qemu-kvm -h
qemu-kvm -name c1 -m 100m -smp 2,sockets=2,cores=1 -drive file=/data/os/c1.img,if=virtio,media=disk -vnc :1 &(或--daemonize)
后台运行的c1在vnc1号窗口
ps aux 显示进程已经运行
ss -ntl 5901端口
图形界面
vncviewer :1 登录vnc1号窗口
等一会 20次网络连接测试 输入账号和密码
su do -
ifconfig 显示IP地址:10.0.2.15
图形界面创建c2虚拟机--创建成功后
su do - 切换root身份
ifconfig 192.168.1.7
命令行界面
ss -ntl 5902端口--图形界面运行的c2虚拟机在"vnc :2"窗口
qemu-kvm -name c2 -m 100m -smp 2 -drive file=/data/os/c2.img,if=virtio,media=disk -vnc :3 &
后台运行的c2在"vnc :3"窗口
ps aux 显示进程已经运行
ss -ntl 5903端口
图形界面
vncviewer :3 登录vnc3号窗口
输入账号和密码即可
sudo su -
ifconfig 10.0.2.15
图形界面停止c1和c2虚拟机--shutdown--删除这两个虚拟机--不要删除镜像文件
命令行界面
man qemu-kvm 搜索/-net
lsmod |grep bridge
brctl show
yum info bridge-utils 已经安装--和内核一起加载
brctl help
brctl addbr vnet0 添加网桥
brctl show; ifconfig -a
写入脚本,不操作:ip link set vnet0 up 或者 ifconfig vnet0 up 激活此网桥
vim /etc/qemu-ifup
#!/bin/bash
#
bridge=vnet0
if [ -n "$1" ];then
ip link set $1 up
sleep 1
brctl addif $bridge $1
[ $? -eq 0 ] && exit 0 || exit 1
else
echo "Error: no interface specified."
exit 2
fi
chmod +x /etc/qemu-ifup
bash -n /etc/qemu-ifup
vim /etc/qemu-ifdown
#!/bin/bash
#
bridge=vnet0
if [ -n "$1" ];then
brctl delif $bridge $1
sleep 1
[ $? -eq 0 ] && exit 0 || exit 1
else
echo "Error: no interface specified."
exit 2
fi
chmod +x /etc/qemu-ifdown
bash -n /etc/qemu-ifdown
qemu-kvm -name c1 -m 100m -smp 2 -drive file=/data/os/c1.img,if=virtio,media=disk -vnc :0 --daemonize -net nic,model=virtio,macaddr=52:54:00:00:00:01 -net tap,ifname=fgq0,script=/etc/qemu-ifup
ifname=name 自定义名字,默认值为tap0/1/2/...
model=virtio 半虚拟化
ss -ntl 5900端口
ps aux 显示进程运行
图形界面
vncviewer :0 &
可能会报错idnode时,直接回车即可
输入账号和密码
sudo su -
ifconfig mac地址--自己定义
ip add add 10.1.0.1/24 dev eth0
原始没有ip分配和网关功能,很底层,自己手动添加
ifconfig 显示ip添加成功
命令行界面
qemu-kvm -name c2 -m 100m -smp 2 -drive file=/data/os/c2.img,if=virtio,media=disk -vnc :1 --daemonize -net nic,model=virtio,macaddr=52:54:00:00:00:02 -net tap,ifname=fgq1,script=/etc/qemu-ifup
ss -ntl 5902端口
ps aux 显示进程运行
brctl show; ifconfig -a
图形界面
vncviewer :1 &
输入账号和密码
sudo su -
ifconfig mac地址--自己定义
ip add add 10.1.0.3/24 dev eth0
ifconfig
c2:ping 10.1.0.1
c1:ping 10.1.0.3 先不断开,ping不通
命令行界面
ifconfig vnet0 10.1.0.254/24
tcpdump -i fgq0 -nn icmp 可以ping通
tcpdump -i fgq1 -nn icmp
tcpdump -i vnet0 -nn icmp
ifconfig
c1和c2
ping 10.1.0.254
ping 192.168.1.5 没有网关,不能ping通
route add default gw 10.1.0.254
ping 192.168.1.5 ping通
c1/c2:ping 192.168.1.1 不通
命令行界面
tcpdump -i br0 -nn icmp
sysctl -w net.ipv4.ip_forward=1
tcpdump -i br0 -nn icmp 请求包有,但是回不来
iptables -vnL
iptables -F
iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -j SNAT --to-source 192.168.1.5
c1/c2: ping 192.168.1.1
tcpdump -i br0 -nn icmp
tcpdump -i vnet0 -nn icmp
--------------------------------------------------------------
ifconfig
yum -y install virt-install
virsh net-list
virsh net-destroy default 删除默认的虚拟地址
虚拟地址需要手动指明--此处我们使用dhcp服务,自动分配ip地址
yum info dnsmasq 没有安装,则需要安装-->yum -y install dnsmasq
man dnsmasq
网络名称空间
ip netns help
ip netns add router0
ip netns list
ifconfig -a 没有显示router0,设备router0和当前宿主机的设备没有关系
ip link help
ip link add csn1 type veth peer name csn2
ifconfig -a 显示当前主机中csn1/2
ip link set dev csn2 netns router0
ifconfig -a 没有csn2--被加到router0中,不在当前主机中了
ip netns exec router0 ifconfig -a 显示csn2
现在可以把router0当做一个虚拟机使用
ip netns exec router0 ip link set dev csn2 name eth0
ip netns exec router0 ifconfig eth0 10.1.0.253/24 up
ip netns exec router0 ifconfig -a
ifconfig csn1 10.1.0.254/24 up
ifconfig -a
ping 10.1.0.253 ping通
容器级虚拟化技术
c1和c2重启--ip可以自动获取
ps aux dnsmasq进程启动
ss -unl 67端口
c1/c2
reboot
输入账号和密码
ifconfig
route -n
ping 192.168.1.1
poweroff
vim /etc/qemu-ifup
bridge=br0 把vnet0换为br0--物理桥即获取物理地址,每个虚拟机自动是桥接的
c1/c2
qemu-kvm -name c2 -m 100m -smp 2 -drive file=/data/os/c2.img,if=virtio,media=disk -vnc :1 --daemonize -net nic,model=virtio,macaddr=52:54:00:00:00:02 -net tap,ifname=fgq1,script=/etc/qemu-ifup
图形界面:vncviewer :1 &
ipconfig 物理桥地址
sudo poweroff
qemu-img -h 参考文档
snapshot
ls /etc/libvirt/
ls /etc/libvirt/qemu
less /etc/libvirt/qemu/c1.xml
virt-manager 创建虚拟机
virsh-install 创建虚拟机
virsh 命令行管理
virsh命令行
virsh
help
域管理--管理虚拟机实例
域监控
监控hypervisor
网卡接口
管理ip地址、iptables
管理虚拟化网络
管理节点设置--物理节点
快照
存储池、卷
list 创建过的虚拟机实例
界面不退出
yum list virt*
yum -y install virt-install 没有安装需要安装
图形界面:virt-manager & 创建虚拟机即可 桥接模式
virsh命令行
list 新创建的虚拟机
help domain
help shutdown
help list
shutdown c1 保存文件并退出
destroy c1 不保存文件快速推出
list --all
start c1
list
help domain
virsh console c1
输入账号和密码
ctrl+] 退出,虚拟机没有终止
virsh console c1
ctrl+] 从终端剥离出来
create=define+start xml文件
cp /etc/libvirt/qemu/c1.xml /etc/libvirt/qemu/c3.xml
vim /etc/libvirt/qemu/c3.xml
name--c3
uuid--删除或更改个符号即可
source file--c3.img 磁盘镜像文件
macaddress--0a-->0d 更改个符号即可
virsh help create
cd /etc/libvirt/qemu/
virsh create c3.xml --console
ctrl+] 从终端剥离出来
virsh destroy c3
virsh define /etc/libvirt/qemu/c3.xml
virsh list --all
virsh start c3
virnish list
同一虚拟机启动两次,其id就不相同;
创建100个虚拟机,写一个脚本:
读取template.xml文件
名称、mac地址、镜像文件、生成到/etc/libvirt/qemu/路径下
使用define创建成虚拟机
dumpxml c3 列出c3的xml文件内容
如果模板中删除了mac、UUID,可以自动生成
创建快照
virsh命令行
suspend c3 暂停于内存中,关机后,内容丢失
list c3显示paused
resume c3 继续
list
help save 内存文件保存到文件中
virsh console c3
ping 192.168.1.5
ctrl+]
virsh console c3 仍然在ping
save c3 /tmp/c3.dump --running
list 没有c3,被挂起了
list --all c3虚拟机还在,显示shut off
help restore
restore /tmp/c3.dump --running
list c3处于running
virsh console c3 仍然在ping
help snapshot
snapshot-create c3 创建
snapshot-list c3
snapshot-info c3 --current
snapshot-info c3 --snapshotname 1527304564 显示
rm -rf /etc/libvirt/qemu/c3.xml 命令行操作
snapshot-revert c3 --snapshotname 1527304564 恢复--运行时
snapshot-delete c3 --snapshotname 1527304564 删除
snapshot-list c3
help monitor
dominfo c1
help setvcpus
setvcpus c1 2
help setmem
help setmaxmem
virsh console c1
fdisk -l
qemu-img create -f qcow2 -o size=20G,preallocation=metadata /data/os/test.qcow2 创建分区,Linux命令行操作
domblklist c1 virsh命令行
domblkinfo c1 vda
attach-disk c1 /data/os/test.qcow2 vdb 分区格式化、添加新的磁盘
domblklist c1
或者cirros命令行:fdisk -l
没有被挂载,才可以拆除磁盘
detach-disk c1 vdb
domiflist c1
help attach-interface
attach-interface c1 bridge br0 --model virtio
ifconfig -a cirros命令行
detach-interface c1 bridge --mac 52:54:00:15:75:06 如果网卡激活后,不能删除
ifconfig -a
多个虚拟机--命令行操作不易管理
使用oVirt--虚拟机管理方案
使用openstack
3A
azure
aws
Alibaba
image.png
网友评论