libguestfs-tools 比较好的kvm管理工具
虚拟机的管理工具 convirts
虚拟化:xen(半虚拟化)宿主和客服机都须要该系统内核,系统内核替换接管系统管理 不须要cpu支持虚拟化
kvm(仅全虚拟化)提供完整的硬件资源且不知道宿主存在linux
grep --color=auto 'vmx|svm' /proc/cupinfo
若是输出的信息中有vmx,说明intel处理器支持彻底虚拟化。若是显示svm,说明是AMD的处理器支持虚拟化。数据库
经过yum安装虚拟化的软件包::yum install -y kvm virt-* libvirt bridge-utils qemu-img gcc*
说明:
kvm:软件包中含有KVM内核模块,它在默认linux内核中提供kvm管理程序
libvirts:安装虚拟机管理工具,使用virsh等命令来管理和控制虚拟机。
bridge-utils:设置网络网卡桥接。
virt-*:建立、克隆虚拟机命令,以及图形化管理工具virt-manager
qemu-img:安装qemu组件,使用qemu命令来建立磁盘等。
启动libvirtd出现一下状况:
Starting libvirtd daemon: libvirtd: relocation error: libvirtd: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference 需安装:yum update device-mapper-libs 更新库centos
如出现 Starting libvirtd daemon: libvirtd: initialization failed [FAILED]需echo "export LC_ALL=en_US.UTF-8" >> /etc/profile 并source /etc/profile
打开:/etc/init.d/messagebus start 服务
必须关闭 service NetworkManager stop 不然会出现错误
安装虚拟系统:
virt-install \
--name www \
--ram 512 \
--disk path=/mnt/www.img,size=30 \
--vcpus 1 \
--os-type linux \
--os-variant rhel6 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location 'cdrom=/root/test' \
--extra-args 'console=ttyS0,115200n8 serial'网络
带图形vnc的配置
--vnclisten=0.0.0.0 ##指定VNC绑定IP,默认绑定127.0.0.1,这里改成0.0.0.0
--vncport=自定义 指定VNC监听端口(默认为5900)
--vnc 启用vnc管理
--accelerate 加速app
克隆时间同步问题
01 */3 * * * /usr/sbin/ntpdate ntp.fudan.edu.com >> /dev/null 2>$1dom
virsh一些经常使用的操做
virsh -c qemu:///system list 查看当前的虚拟系统
brctl show 列出当前全部的网桥接口
virsh list 列出运行的虚拟机
virsh list --all 列出全部的虚拟机
virsh console 名字 ssh ip地址 进入指定名字的 虚拟机
virsh pool-list 查看当前磁盘状况
virsh pool-info+磁盘 显示这块磁盘的详细信息
yum -y install acpid 与virsh shutdown 名字 连用
virsh showdown 名字 不是正的关闭虚拟机
virsh start 名字 --console 开启机子并进入控制模式
virsh suspend 名字 挂起子机
virsh resume 名字 恢复子机
virsh destroy 名字 删除一个子机 强制关闭电源
virsh define 名字 删除子机名 与virsh destroy 连用
virsh start 名字 开启一个子机
virsh create /etc/libvirt/qemu/子机名 经过配置文件开启关闭的子机名
virsh autostart 名字 配置开机自动开启一个子机
virsh autostart --disable 名字 配置开机不自动运行子机
virsh dumpxml 名字 > /etc/libvirt/qemu/新名.xml 导出kvm虚拟机配置文件
virsh edit 子机名字 == vi /etc/libvirt/qemu/名字 编辑虚拟机配置文件
virsh snapshot-create 元文件名 克隆文件名 建立一个快照
virsh snapshot-current 元文件名 克隆文件名 显示当前文件快照的详细信息并激活快照版
virsh snapshot-info 源文件名 显示当前文件下的快照
virsh snapshot-delete 源文件名 克隆文件名 删除一个快照ssh
直接克隆虚拟机
需关闭子机
virt-clone -o 子机名 -n 新的子机名 -f 新子机名镜像文件存放的位置(经过cat /etc/libvirt/qemu/原子机名)
经过复制配置文件和磁盘克隆
1.复制镜像文件。2.导出复制子机的数据库 virsh dumpxml 子机 > /etc/libvirt/qemu/新子机.xml
3.修改新子机.xml文件:包括主机名 镜像名 mac地址ide
qemu-img create -f qcow2 子文件镜像位置 5G 指定硬盘分区的格式为qcow2
该配置文件信息添加磁盘
qemu-img create -f qcow2 子文件镜像位置 -o preallocation=metadata工具
现有的虚拟磁盘扩容
qemu-img resize 子文件镜像位置 +5G 表示对现有磁盘增长5G容量
pvcreate /dev/vda3 建立物理卷
portprobe 使分区表生效 无需重启
pvs 查看物理卷
vgextend VolGroup /dev/vda3 建立卷组
vgs 显示卷组
lvs 逻辑卷
lvextend -l +100%FREE /dev/VolGroup/lv_root
resize2fs /dev/VolGroup/lv_rootxml
磁盘快照:在关闭虚拟机的状态下
1.。。现有磁盘镜像格式与转换(raw--qcow2)
查看现有磁盘文件格式:qemu-img info 子文件镜像位置
2.。。qemu-img convert -f raw -O qcow2 子文件镜像位置/data/centos1.img 目标子文件镜像位置名 /data/centos1.qcow2
-f 源文件 -O目标文件格式 這里只是拷贝了一份并将格式转换成qcow2
3.。。修改磁盘文件格式(源镜像文件) virsh edit centos1 (包括:磁盘类型(qcow2),文件格式(/data/centos1.qcow2)
4.。。对虚拟机进行快照管理:
qemu-img resize 子文件镜像位置 +5G 表示对现有磁盘增长5G容量
快照:
virsh snapshot-create-as 源子机名 快照子机名 进行快照复制
virsh snapshot-list+源子机名 查看虚拟机镜像快照的版本
virsh snapshot-current 查看当前虚拟机镜像快照的版本
virsh snapshot-info 源子机名 快照子机名 查看源主机下的快照主机
virsh snapshot-delete 源子机名 快照子机名 删除源主机下的快照主机
virsh domstate 子机名 确认虚拟机是否关机
virsh snapshot-revert 源子机 恢复的快照子机名 执行快照主机恢复
如何添加虚拟磁盘:
qemu-img create -f qcow2 /data/子机名.qcow2 2G 添加一块2G的硬盘
ll /data
virsh destroy 子机名 强制关闭电源
virsh edit 子机名
复制硬盘信息并作好磁盘类型和地址列的修改
virsh start 子机名
格式,挂载就可使用了
调整内存和网卡
virsh domiflist 子机名 查看现有网卡信息
virsh attach-interface 子机名 --type bridge --source br0 建立新的一块网卡
virsh dumpxml test > /etc/libvert/qemu/test.xml
虚拟机迁移
关闭迁移机
LVM操做的相关命令: 配置lvm 扩展磁盘
partprobe 解决创建分区后从新刷新分区的功能,防止重启。
fdisk -l :查看系统中都认到了那些物理硬盘
pvdisplay:查看系统中已经建立好的物理卷 =pvs
pvcreate:建立一个新的物理卷
pvremove:删除一个物理卷(也就是从物理卷中删除一个LVM标签)
vgdisplay:查看系统中的卷组
vgcreate:建立一个新的卷组
vgreduce:从卷组中删除一个物理卷(也就是缩小卷组)
vgremove:删除一个卷组
lvdisplay:查看系统中已经建立好的逻辑卷
lvcreate:建立一个新的逻辑卷
lvreduce:缩小逻辑卷(也就是从一个逻辑卷中减小一些LE)
lvremove:从系统中删除一个逻辑卷
mkfs:基于逻辑卷建立一个相应类型的文件系统
mkdir -p $mount_piont:建立一个挂载目录
建立好的文件系统位于: /dev/$create_vg_name/$lv_name
mount /dev/$create_vg_name/$lv_name $mount_piont:挂载文件系统
vgscan:读取系统中建立的全部卷组
vgchange -a y :激活全部卷组 (开机执行,redhat可在/etc/rc.d/rc.sysinit系统启动初始化脚本里能够找到) vgchange -a n :关闭全部卷组(提示:必须在umount全部的文件系统后,才能成功执行
虚拟机在线添加现有磁盘
virsh domblklist 虚拟机 查看现有虚拟机磁盘
qemu-img create -f qcow2 www1.qcow 2G 添加2G的一块磁盘
qemu-img info www1.qcow 查看添加磁盘的格式以及信息
virsh attach-disk www1 磁盘文件存放的位置 vdb --cache=none --subdriver=qcow2 在线添加虚拟磁盘
进入虚拟机 经过ispci查看磁盘设备
镜像文件考到mnt下的状况virt-install \ --name aming1 \ --ram 512 \ --disk path=/data/aming1.img,size=30 \ --vcpus 1 \ --os-type linux \ --os-variant rhel6 \ --network bridge=br0 \ --graphics none \ --console pty,target_type=serial \ --location '/mnt/镜像文件' \ 镜像文件需放在mnt下 不然会出错。光盘:--location '/mnt/' mount /dev/cdrom /mnt --extra-args 'console=ttyS0,115200n8 serial'