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'