云平台部署与管理/virsh命令的使用/qemu基本命令

一.kvm简介=

1.搭建KVM服务器
虚拟化概述
virtualization 资源管理
– x个物理资源 --> y个逻辑资源
– 实现程度:完全、部分、硬件辅劣(CPU)
云平台部署与管理/virsh命令的使用/qemu基本命令_第1张图片
云平台部署与管理/virsh命令的使用/qemu基本命令_第2张图片
2.安装虚拟化服务器平台
KVM /QEMU /LIBVIRTD
– KVM是linux内核的模块,它需要CPU的支持,采用硬
件辅劣虚拟化技术 Intel-VT,AMD-V,内存的相关如
Intel的 EPT 和 AMD 的 RVI 技术
– QEMU   是一个虚拟化的仿真工具,通过 ioctl 不内核
kvm 交互完成对硬件的虚拟化支持
– Libvirt   是一个对虚拟化管理的接口和工具,提供用户
端程序 virsh ,virt-install, virt-manager, virt-view 不
用户交互

必备软件:

qemu-kvm------------->为kvm提供底层仿真支持

Libvirt-daemon-------->libvirtd守护进程,管理虚拟机

Libvirt-client------------>用户端软件,提供客户端管理命令

Libvirt-daemon-driver-qemu------->libvirtd连接qemu的驱动
云平台部署与管理/virsh命令的使用/qemu基本命令_第3张图片

虚拟化平台的安装

]#yum install -y qemu-kvm  \
>libvirt-daemon                  \
>libvirt-client                     \
>libvirt-daemon-driver-qemu
]#systemctl start libvirtd

虚拟机的组成:
内核虚拟化模块 (KVM)
系统设备仿真 (QEMU)
虚拟机管理程序 (LIBVIRT)

一个XML文件(虚拟机配置声明文件)位置 :/etc/libvirt/qemu/
一个磁盘镜像文件(虚拟机的硬盘)位置:/var/lib/libvirt/images/

2.管理KVM平台
Virsh命令工具介绍
提供管理各虚拟机的命令接口
支持交互模式,查看/创建/停止/关闭…
格式:virsh 控制指令 [虚拟机名称] [参数]

]# virsh

欢迎使用 virsh,虚拟化的交互式终端。
输入:'help' 来获得命令的帮助信息
       'quit' 退出

virsh # 

查看虚拟化信息
]#virsh nodeinfo //查看KVM节点(服务器)信息
]#virsh list [–all] //列出虚拟机
]#virsh net-list [–all] //列出虚拟机网络
]#virsh dominfo 虚拟机名称 //查看指定虚拟机的信息

开关机操作
运行|重启|关闭指定的虚拟机

]#virsh start|reboot|shutdown 虚拟机名称

强制关闭指定的虚拟机

]#virsh destroy   虚拟机名称

将指定的虚拟机设为开机自动运行

]#virsh  autostart [--disable] 虚拟机名称

更改域xml配置(修改虚拟机的配置)

]#virsh   edit  虚拟机名称

根据xml文件 创建/删除 虚拟机

]#virsh   define|undefine  

]#virsh domiflist 虚拟机名 查看网卡信息
]#virsh domblkinfo 虚拟机名 域块设备大小信息
]#virsh domblklist 虚拟机名 列出所有域块
]#virsh domblkstat 虚拟机名 获得域设备块状态

列:

]#virsh
]# base-vm                                        //克隆虚拟机命令
]# base-vm  克隆的虚拟机名                         //克隆一台虚拟机
]# virsh list                                   //列出运行的虚拟机
]#virsh list --all                             //列出所有虚拟机
]# virsh shutdown A                           //关闭虚拟机A
]# virsh list --all                            
]# virsh start A                             //启动虚拟机
]# virsh list 

]# virsh console A //连接到域A
Ctrl + ] 退出命令

]#virsh blockresize --path [绝对路径] --size 50G openstack
云平台部署与管理/virsh命令的使用/qemu基本命令_第4张图片

云平台部署与管理/virsh命令的使用/qemu基本命令_第5张图片
qemu-img命令
qemu-img 是虚拟机的磁盘管理命令
qemu-img 支持非常多的磁盘格式,
例如 raw、qcow2、vdi、vmdk 等等
qemu-img 命令格式
]#qemu-img 命令 参数 块文件名称 大小
常用的命令有
– create    创建一个磁盘
– convert    转换磁盘格式
– info     查看磁盘信息
– snapshot   管理磁盘快照

  • - resize 扩容磁盘空间
    创建新的镜像盘文件
    – qemu-img create -f 格式 磁盘路径 大小
    – qemu-img create -f qcow2 disk.img 50G

查询镜像盘文件的信息
– qemu-img info 磁盘路径
– qemu-img info disk.img

-b 使用后端模板文件
– qemu-img create -b disk.img -f qcow2 disk1.img

COW技术原理
Copy On Write,写时复制
– 直接映射原始盘的数据内容
– 当原始盘的旧数据有修改时,在修改之前自劢将旧数据存入前端盘
– 对前端盘的修改不回写到原始盘
云平台部署与管理/virsh命令的使用/qemu基本命令_第6张图片

二. virsh管理
1.连接本地/远程KVM
使用 virsh 客户端工具
– 连接本地
– virsh
– virsh# connect qemu:///system (默认选项)
– 连接远程
– virsh# connect
qemu+ssh://user@ip.xx.xx.xx:port/system

2.虚拟机远程管理
使用 virt-manager 客户端工具
– virt-manager 也可以通过 add connection 管理其它
机器上的虚拟机,一般通过"remote tunnel over ssh"
就可以了
– 需要注意的是 virt-manager 需要使用 ssh 免密码登录
如果没有免密码登录需要单独安装 python 的 ssh 相
关模块,这里我们可以使用部署 key 的方法解决

3.创建虚拟交换机
libvirtd 网络接口
– 原理:调用 dnsmasq 提供DNS、DHCP等功能
– 创建配置文件 /etc/libvirt/qemu/networks/vbr.xml

案例:
1.创建一台虚拟机
.

Base-vm  虚拟机名称
]#base-vm vm1

2.启动虚拟机
Virsh start 虚拟机名称
]# virsh start vm1


3.查看虚拟机磁盘
3.1 进入虚拟机 lsblk, df -h
3.2 virsh domblklist 虚拟机名称
qemu-img info 块设备
]# virsh console vm1  
]# lsblk
]# df -h

真机操作:
]# virsh domblklist vm1   (真机)
目标     源
vda        /var/lib/libvirt/images/vm1.img

]# qemu-img info  /var/lib/libvirt/images/vm1.img

]# virsh blockresize --path  /var/lib/libvirt/images/vm1.img  --size 50G  vm1

4.扩容磁盘
Virsh blockresize --path 磁盘路径  --size  50G 虚拟机名称
]# virsh blockresize --path  /var/lib/libvirt/images/vm1.img  --size 50G vm1

5.分区扩容
进入虚拟机
]#LANG=C
]#Growpart  /dev/vda 1


6..扩容文件系统
]#Xfs_growfs   /


三.Xml管理
对虚拟机的配置进行调整
--编辑:virsh edit 虚拟机名
--修改 CPU,memory

 **]#virsh  edit  nova01**

node0
7ec0ab09-d9cb-4b19-ad26-813381420260
1488282
1488282
2
..

对虚拟机的配置进行调整
--编辑    virsh  edit  虚拟机名  
--修改磁盘

]# virsh edit node01

       

若修改网络:

]# virsh edit node0

 
 

.. ..

五.克隆脚本命令(CentOS 7 )
–创建虚拟机

]# cd /var/lib/libvirt/images/
]#qemu-img create -f qcow2 -b node.qcow2  node1.img 20G

–修改xml文件

]#sed 's,node,node1,' node.xml >/etc/libvirt/qemu/node1.xml

–定义xml文件

]#virsh define /etc/libvirt/qemu/node1.xml

–开启虚拟机

]#virsh start node1

网卡及配置文件
网络配置文件说明:/etc/sysconfig/network-scripts/ifcfg-eth0

]#vim  /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"                   # 驱动名称,与ifconfig 看到的名称一致
ONBOOT="yes"                   # 开机启动
NM_CONTROLLED="no"            #不接受 NetworkManager 控制
TYPE="Ethernet"                  #类型
BOOTPROTO="static"             #协议(dhcp|static|none)
IPADDR="192.168.1.10"          #IP地址
NETMASK="255.255.255.0"      #子网掩码
GATEWAY="192.168.1.254"      #默认网关

根分区扩容
– 语言必须设置为英文  LANG=C

– 查看硬盘设备是否有多余空间 lsblk

– 扩容第一个分区 /usr/bin/growpart /dev/vda 1

– 扩容文件系统 /usr/sbin/xfs_growfs /

– 检查扩容结果 df -h

你可能感兴趣的:(运维,linux)