1.1虚拟化介绍 (上)

1)虚拟化模型  基础硬件  VMM vm

2)通过虚拟化工具把CPU、内存、硬盘等真实硬件资源给模拟成更少的虚拟硬件资源

3)为什么要虚拟化

  使硬件资源利用率最大化

  云计算领域

4)虚拟化分类

  一 软件级别 所有硬件通过模拟器模拟出来(qemu)

  二 通过VMM(虚拟机监视器)将硬件分配和管理,操作系统运行在好的vm上(xen、vmware[ESX workstation]、kvm、virtualbox )

  三 操作系统级别 虚拟机操作系统和宿主操作系统共享,可以模拟上千个虚拟机出来(openvz)

5)半虚拟化 (para-virtualization)

  半虚拟化宿主机和客户机都需要更改操作系统内核,客户机知道宿主机的存在,两者需要协同合作。  (xen支持半虚拟化)

6)全虚拟化(full virtualization)

  全虚拟化为客户机提供了完整的虚拟硬件资源,客户机不需要做任何的更改,它不知道宿主机的存在  (kvm属于全虚拟化,VMware也是属于全虚拟化)

1.2虚拟化介绍(下)

1)Xen和KVM比较

  一 不管CPU支持不支持虚拟化,Xen都可以安装,而KVM必须要CPU支持虚拟化才行。

  二 Xen支持半虚拟化也支持全虚拟化,KVM仅支持全虚拟化。

  三 安装Xen后,Xen会替换原来的内核接管系统管理。而KVM仅仅是Linux内核的一个模块,依然由系     统原内核管理系统。

  四 KVM是后期之秀,历史没有Xen早,但是KVM出来后得到广大Linux内核喜爱,就是因为KVM不像Xen     那样需要修改内核,接管内核。

  五 Xen被Ctrix收购,有商业版的Xen Server,而KVM被RedHat收购。

  六 在Xen的体系结构中,Xen Hypervisor运行于硬件之上,并且将系统资源进行了虚拟化,将虚拟化     的资源分配给上层的虚拟机(VM),然后通过相应的虚拟机VM来运行相应的客户机操作系统。

2)KVM介绍

  一 KVM全称Kernel Virtual machine,是针对包含虚拟化扩展(IntelVT或AMD-V)的x86硬件上的完     全原生的虚拟化解决方案。

  二 是以色列Qumranet开发,基于Linux内核。2008年9月4日,RedHat公司收购KVM。

  三 rhel5/centos5默认是Xen,rhel6/centos6版本默认是KVM。

3)KVM架构

 一 KVM驱动:作为LInux内核的一个模块,其主要负责虚拟机的创建,虚拟内存的分配,VCPU寄存器     的读写以及VCPU的运行。

  二 Qemu:用于模拟虚拟机的用户空间组件,提供I/O设备模型,访问外设的途径。

  三 Libirt,virsh:由于QEMU工具效率不高,RedHat为KVM开发了辅助工具,比如libvirt、 

libguestfs等。Libvirt是一套提供了多种语言接口的API,为各种虚拟化工具提供一套方便、可靠的编程接口,而且支持Xen。使用Libvirt,你只需要通过Libvirt提供的函数连接到KVM或Xen宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt不仅提供了API,还自带一套基于文本的管理虚拟机的命令virsh,可以通过使用virsh命令来使用Libvirt的全部功能。

  四 virt-manager是一套用python编写的虚拟机管理图形界面,用户可以通过他直观的操作不同的虚拟机,利用Libvirt的API实现的。

1.3 KVM虚拟化安装配置

    做这个实验,需要我们的cpu支持虚拟化,有的机器支持但是并未在bios开启,这个需要事先开启。

1. vmware安装centos6.6 64位 (略) 
其中有几个注意的地方:
a. 内存给2g
b. 磁盘给50g, 或者再单独分一个磁盘,用来存储虚拟机文件
c. 最关键的一步,在创建虚拟机时,cpu是需要配置一下虚拟化的如图
150734p1nyn5qjx5ww10ew.jpg\" 



2.  安装kvm前的准备工作
a. 清除iptables规则
service iptables stop; service iptables save
b. 关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0


3. 开始安装kvm
a. 检查你的系统是否支持虚拟化
grep -Ei 'vmx|svm' /proc/cpuinfo
如果有输出内容,则支持,其中intel cpu支持会有vmx,amd cpu支持会有svm

b. 通过yum安装虚拟化的软件包
yum install -y kvm virt-*  libvirt  bridge-utils qemu-img
说明:
kvm:软件包中含有KVM内核模块,它在默认linux内核中提供kvm管理程序
libvirts:安装虚拟机管理工具,使用virsh等命令来管理和控制虚拟机。
bridge-utils:设置网络网卡桥接。
virt-*:创建、克隆虚拟机命令,以及图形化管理工具virt-manager
qemu-img:安装qemu组件,使用qemu命令来创建磁盘等。




c. 检查kvm模块是否加载
lsmod |grep kvm
正常应该是:
kvm_intel              55496  3
kvm                   337772  1 kvm_intel

如果没有,需要执行 
modprobe kvm-intel
还没有就重启一下试试

d. 配置网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-br0
分别编辑eth0和br0
ifcfg-eth0改成如下:
DEVICE=eth0
HWADDR=00:0C:29:55:A7:0A
TYPE=Ethernet
UUID=2be47d79-2a68-4b65-a9ce-6a2df93759c6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
BRIDGE=br0


ifcfg-br0改成如下:
DEVICE=br0
#HWADDR=00:0C:29:55:A7:0A
TYPE=Bridge
#UUID=2be47d79-2a68-4b65-a9ce-6a2df93759c6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.11.17
NETMASK=255.255.255.0
GATEWAY=192.168.11.1
DNS1=202.106.0.20

说明: 我的虚拟机是桥接模式,所以设置br0的ip和我的真机同样的网段,包括网关也是我路由器的ip,大家可以根据自己的环境去配置,目的是为了让虚拟机可以上网。

/etc/init.d/network restart
查看网卡如下:
br0       Link encap:Ethernet  HWaddr 00:0C:29:55:A7:0A
          inet addr:192.168.11.17  Bcast:192.168.11.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe55:a70a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:141326 errors:0 dropped:0 overruns:0 frame:0
          TX packets:90931 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:456024940 (434.8 MiB)  TX bytes:10933593 (10.4 MiB)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:55:A7:0A
          inet6 addr: fe80::20c:29ff:fe55:a70a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:341978 errors:0 dropped:0 overruns:0 frame:0
          TX packets:90946 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:468848861 (447.1 MiB)  TX bytes:10934699 (10.4 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

virbr0    Link encap:Ethernet  HWaddr 52:54:00:14:EF:D5
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)



e. 启动或重启libvirtd服务和messagebus 服务
/etc/init.d/libvirtd start
/etc/init.d/messagebus restart

此时可以查看网络接口列表
brctl show 结果如下:
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c2955a70a       no              eth0
virbr0          8000.52540014efd5       yes             virbr0-nic


4. 创建虚拟机
mkdir /data/   //创建一个存储虚拟机虚拟磁盘的目录,该目录所在分区必须足够大

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 'http://mirrors.163.com/centos/6.7/os/i386/' \\
--extra-args 'console=ttyS0,115200n8 serial'


说明:
--name  指定虚拟机的名字
--ram 指定内存分配多少
--disk path 指定虚拟磁盘放到哪里,size=30 指定磁盘大小为30G,这样磁盘文件格式为raw,raw格式不能做快照,后面有说明,需要转换为qcow2格式,如果要使用qcow2格式的虚拟磁盘,需要事先创建qcow2格式的虚拟磁盘。 参考  http://www.361way.com/kvm-qcow2-preallocation-metadata/3354.html   示例:qemu-img create -f qcow2 -o preallocation=metadata  /data/test02.img 7G;  --disk path=/data/test02.img,format=qcow2,size=7,bus=virtio
--vcpus 指定分配cpu几个
--os-type 指定系统类型为linux
--os-variant 指定系统版本
--network  指定网络类型
--graphics 指定安装通过哪种类型,可以是vnc,也可以没有图形,在这里我们没有使用图形直接使用文本方式
--console 指定控制台类型
--location 指定安装介质地址,可以是网络地址,也可以是本地的一个绝对路径,(--location '/mnt/', 其中/mnt/下就是我们挂载的光盘镜像mount /dev/cdrom /mnt)如果是绝对路径,那么后面还需要指定一个安装介质,比如NFS,假如虚拟机设置ip后,不能连外网,那么就会提示让我们选择安装途径:                        
                        ┌───┤ Installation Method ├───┐
                        │                             │
                        │ What type of media contains     │
                        │ the installation p_w_picpath?             │
                        │                                             │
                        │        Local CD/DVD                  │
                        │        Hard drive                      │
                        │        NFS directory                  │
                        │        URL                               │
                        │                                             │
                        │   ┌────┐       ┌──────┐     │
                        │   │ OK    │       │ Back     │     │
                        │   └────┘       └──────┘     │
                        │                                             │
                        │                                             │
                        └─────────────────────┘

我在这里选择NFS,设置参数如下:
    ┌───────────────────────────┤ NFS Setup ├─────────
     │                                                                                                 │
     │ Please enter the server and NFSv3 path to your CentOS installation   │
     │ p_w_picpath and optionally additional NFS mount options.                        │
     │                                                                                                │
     │       NFS server name:              172.7.15.3______________              │
     │       CentOS directory:             /mnt/p_w_picpaths/install.img_                 │
     │       NFS mount options (optional): ro______________________       │


--extra-args 设定内核参数

当按下回车后,稍等几秒钟就可以看到安装提示了。
开始安装......
搜索文件 .treeinfo......                             |  720 B     00:00 ...
搜索文件 vmlinuz......                               | 7.7 MB     00:02 ...
搜索文件 initrd.img......                            |  63 MB     00:23 ...
创建存储文件 centos6.6_1.img                       |  30 GB     00:00
创建域......                                          |    0 B     00:00
连接到域 centos6.6_1
Escape character is ^]


然后就是我们非常熟悉的OK or  Next 了 ,只不过这个过程是文本模式,如果想使用图形,只能开启vnc啦。
160737hfjmggzmwdwz5wj4.jpg\" 
最后安装完,reboot就进入刚刚创建的虚拟机了。要想退回到宿主机,ctrl  ] 即可。
virsh list 可以列出当前的子机列表。
virsh console centos6.6_1  可以进入指定的子机

9. 调整cpu和内存查看子机配置:
virsh dominfo test02
virsh edit  test02
修改:
  524288
  524288
  1

为:
  624288
  624288
  2


重启虚拟机:
virsh destroy test02
virsh start test02

11. 虚拟机迁移

该方式要确保虚拟机是关机状态。
virsh shutdown test02
virsh dumpxml test02 > /etc/libvirt/qemu/test03.xml  // 如果是远程机器,需要把该配置文件拷贝到远程机器上
virsh domblklist test02  //查看test02子机的磁盘所在目录
Target     Source
------------------------------------------------
vda        /data/add1.qcow2
rsync -av /data/add1.qcow2 /data/test03.qcow2   //如果是迁移到远程,则需要把该磁盘文件拷贝到远程机器上
vi /etc/libvirt/qemu/test03.xm  //因为是迁移到本机,配置文件用的是test02子机的配置,不改会有冲突,所以需要修改该文件,如果是远程机器不用修改
修改domname:
  test03
修改uuid(随便更改一下数字,位数不要变)
77bb10bd-3ad8-8899-958d-756063002969
修改磁盘路径:
   
      
      <source file='/data/test03.qcow2'/>
      
      


   

virsh list --all   //会发现新迁移的test03子机


5. 克隆虚拟机
virt-clone --original centos6.6_1 --name template --file /data/clone1.img  
如果子机centos6.6_1还未关机,则需要先关机,否则会报错:
ERROR    必须暂停或者关闭有要克隆设备的域。
关闭子机的方法是:
virsh shutdown centos6.6_1

说明: 默认,我们没有办法在宿主机直接shutdown自己,我们需要借助于子机上的acpid服务才可以,这个服务说白了就是让宿主机可以去调用子机的电源关闭的接口。所以,子机上需要安装并启动acpid服务。
先登录子机:
virsh console centos6.6_1
登录后,安装acpid服务:
yum install -y acpid 
启动:
/etc/init.d/acpid start
按ctrl ] 退出来
此时再执行 virsh shutdown centos6.6_1 就可以啦。

克隆完后,virsh list all 就会发现clone1 这个子机,通过命令 
virsh start clone1 可以开启该子机。

6. virsh 常用操作
a. 开启子机
virsh start centos6.6_1
也可以在开启的同时连上控制台
virsh start centos6.6_1 --console

b. 关闭子机
virsh shutdown centos6.6_1 (这个需要借助子机上的acpid服务)
另外一种方法是 
virsh destroy centos6.6_1 

c. 让子机随宿主机开机自动启动
virsh autostart centos6.6_1
解除自动启动
virsh autostart --disable centos6.6_1 

d. 列出子机
virsh list  //只能列出启动的子机
virsh list --all  //可以把所有子机都列出来

e. 删除子机
virsh destroy clone1
virsh undefine clone1
rm -f /data/clone1.img

f. 挂起子机
virsh suspend centos6.6_1

h. 恢复子机
virsh resume centos6.6_1

7. 快照管理
a. 创建快照
virsh snapshot-create centos6.6_1
会报错:
unsupported configuration: internal snapshot for disk vda unsupported for storage type raw
这是因为raw格式的镜像不能做快照,所以需要先转换一下格式

b. 磁盘镜像转换格式
先查看当前子机磁盘镜像格式
qemu-img info /data/centos6.6_1.img  
结果是:
p_w_picpath: /data/centos6.6_1.img
file format: raw
virtual size: 30G (32212254720 bytes)
disk size: 1.6G


把raw格式转换为qcow格式(其实是复制了一份):
qemu-img convert -f raw -O qcow2 /data/centos6.6_1.img /data/centos6.6_1.qcow2

qemu-img info /data/centos6.6_1.qcow2   //再次查看格式,结果如下
p_w_picpath: /data/centos6.6_1.qcow2
file format: qcow2
virtual size: 30G (32212254720 bytes)
disk size: 1.1G
cluster_size: 65536


现在我们还需要编辑子机配置文件,让它使用新格式的虚拟磁盘镜像文件
virsh edit centos6.6_1  //这样就进入了该子机的配置文件(/etc/libvirt/qemu/centos6.6_1.xml),跟用vim编辑这个文件一样的用法
需要修改的地方是:
      
      

改为:
      
      


c. 继续创建快照
virsh snapshot-create centos6.6_1  //这次成功了,提示如下
Domain snapshot 1437248443 created


列出快照:
virsh snapshot-list centos6.6_1

查看当前子机的快照版本:
virsh snapshot-current centos6.6_1

centos6.6_1子机的快照文件在  /var/lib/libvirt/qemu/snapshot/centos6.6_1/  目录下


d.  恢复快照
首先需要关闭子机
virsh destroy centos6.6_1

确认子机是否关闭
virsh domstate centos6.6_1
关闭

vish snapshot-list centos6.6_1  //结果是
名称               Creation Time             状态
------------------------------------------------------------
1437248443           2015-07-19 03:40:43 +0800 shutoff
1437248847           2015-07-19 03:47:27 +0800 running


virsh snapshot-revert centos6.6_1  1437248443

e. 删除快照
virsh snapshot-delete centos6.6_1  1437248847

8. 磁盘扩容

a. 对于raw格式的虚拟磁盘扩容

qemu-img info /data/kvm/test03.img //本身只有9G

  1. p_w_picpath: /data/kvm/test03.img

  2. file format: raw

  3. virtual size: 9.0G (9663676416 bytes)

  4. disk size: 1.1G

复制代码


qemu-img resize /data/kvm/test03.img +2G

qemu-img info /data/kvm/test03.img //现在增加了2G

  1. p_w_picpath: /data/kvm/test03.img

  2. file format: raw

  3. virtual size: 11G (11811160064 bytes)

  4. disk size: 1.1G


复制代码


virsh destroy test03  //关闭test03虚拟机
virsh start test03  //开启test03虚拟机
virsh console test03  //进入虚拟机

fdisk -l   查看已经磁盘分区已经增加
[root@localhost ~]# fdisk -l

  1. Disk /dev/vda: 11.8 GB, 11811160064 bytes

  2. 16 heads, 63 sectors/track, 22885 cylinders

  3. Units = cylinders of 1008 * 512 = 516096 bytes

  4. Sector size (logical/physical): 512 bytes / 512 bytes

  5. I/O size (minimum/optimal): 512 bytes / 512 bytes

  6. Disk identifier: 0x000099f3


  7.    Device Boot      Start         End      Blocks   Id  System

  8. /dev/vda1   *           3        1018      512000   83  Linux

  9. Partition 1 does not end on cylinder boundary.

  10. /dev/vda2            1018       16645     7875584   8e  Linux LVM

  11. Partition 2 does not end on cylinder boundary.


  12. Disk /dev/mapper/VolGroup-lv_root: 7205 MB, 7205814272 bytes

  13. 255 heads, 63 sectors/track, 876 cylinders

  14. Units = cylinders of 16065 * 512 = 8225280 bytes

  15. Sector size (logical/physical): 512 bytes / 512 bytes

  16. I/O size (minimum/optimal): 512 bytes / 512 bytes

  17. Disk identifier: 0x00000000



  18. Disk /dev/mapper/VolGroup-lv_swap: 855 MB, 855638016 bytes

  19. 255 heads, 63 sectors/track, 104 cylinders

  20. Units = cylinders of 16065 * 512 = 8225280 bytes

  21. Sector size (logical/physical): 512 bytes / 512 bytes

  22. I/O size (minimum/optimal): 512 bytes / 512 bytes

  23. Disk identifier: 0x00000000

复制代码


但是磁盘挂载的空间并没有增加
[root@localhost ~]# df -h

  1. Filesystem            Size  Used Avail Use% Mounted on

  2. /dev/mapper/VolGroup-lv_root

  3.                       6.5G  579M  5.6G  10% /

  4. tmpfs                 250M     0  250M   0% /dev/shm

  5. /dev/vda1             477M   26M  427M   6% /boot



复制代码


因为新增加的空间还没有划分使用。所以要继续分区:
[root@localhost ~]# fdisk /dev/vda

  1. WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

  2.          switch off the mode (command 'c') and change display units to

  3.          sectors (command 'u').


  4. Command (m for help): p


  5. Disk /dev/vda: 11.8 GB, 11811160064 bytes

  6. 16 heads, 63 sectors/track, 22885 cylinders

  7. Units = cylinders of 1008 * 512 = 516096 bytes

  8. Sector size (logical/physical): 512 bytes / 512 bytes

  9. I/O size (minimum/optimal): 512 bytes / 512 bytes

  10. Disk identifier: 0x000099f3


  11.    Device Boot      Start         End      Blocks   Id  System

  12. /dev/vda1   *           3        1018      512000   83  Linux

  13. Partition 1 does not end on cylinder boundary.

  14. /dev/vda2            1018       16645     7875584   8e  Linux LVM

  15. Partition 2 does not end on cylinder boundary.


  16. Command (m for help): n

  17. Command action

  18.    e   extended

  19.    p   primary partition (1-4)

  20. p

  21. Partition number (1-4): 3

  22. First cylinder (1-22885, default 1): 16646

  23. Last cylinder, +cylinders or +size{K,M,G} (16646-22885, default 22885):

  24. Using default value 22885


  25. Command (m for help): p


  26. Disk /dev/vda: 11.8 GB, 11811160064 bytes

  27. 16 heads, 63 sectors/track, 22885 cylinders

  28. Units = cylinders of 1008 * 512 = 516096 bytes

  29. Sector size (logical/physical): 512 bytes / 512 bytes

  30. I/O size (minimum/optimal): 512 bytes / 512 bytes

  31. Disk identifier: 0x000099f3


  32.    Device Boot      Start         End      Blocks   Id  System

  33. /dev/vda1   *           3        1018      512000   83  Linux

  34. Partition 1 does not end on cylinder boundary.

  35. /dev/vda2            1018       16645     7875584   8e  Linux LVM

  36. Partition 2 does not end on cylinder boundary.

  37. /dev/vda3           16646       22885     3144960   83  Linux


  38. Command (m for help): w

  39. The partition table has been altered!


  40. Calling ioctl() to re-read partition table.


  41. WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

  42. The kernel still uses the old table. The new table will be used at

  43. the next reboot or after you run partprobe(8) or kpartx(8)

  44. Syncing disks.

复制代码


然后再把这个/dev/vda3 加入到lvm里面去:

ls  /dev/vda3 如果没有这个分区,需要重启一下。

[root@localhost ~]# pvcreate /dev/vda3

  1.   Physical volume "/dev/vda3" successfully created

复制代码


[root@localhost ~]# pvs

  1. PV         VG       Fmt  Attr PSize PFree

  2.   /dev/vda2 VolGroup lvm2 a--  7.51g    0

  3.   /dev/vda3           lvm2 ---  3.00g 3.00g

复制代码


[root@localhost ~]# vgextend VolGroup /dev/vda3

  1. Volume group "VolGroup" successfully extended

复制代码


[root@localhost ~]# vgs

  1. VG       #PV #LV #SN Attr   VSize  VFree

  2.   VolGroup   2   2   0 wz--n- 10.50g 3.00g

复制代码


[root@localhost ~]# lvs

  1. LV      VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  2.   lv_root VolGroup -wi-ao----   6.71g

  3.   lv_swap VolGroup -wi-ao---- 816.00m

复制代码


[root@localhost ~]# lvextend -l +100%FREE /dev/VolGroup/lv_root

  1. Size of logical volume VolGroup/lv_root changed from 6.71 GiB (1718 extents) to 9.71 GiB (2485 extents).

  2.   Logical volume lv_root successfully resized

复制代码


[root@localhost ~]# df -h

  1. Filesystem            Size  Used Avail Use% Mounted on

  2. /dev/mapper/VolGroup-lv_root

  3.                       6.5G  618M  5.6G  10% /

  4. tmpfs                 250M     0  250M   0% /dev/shm

  5. /dev/vda1             477M   26M  427M   6% /boot

复制代码


[root@localhost ~]# resize2fs /dev/VolGroup/lv_root

  1. resize2fs 1.41.12 (17-May-2010)

  2. Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required

  3. old desc_blocks = 1, new_desc_blocks = 1

  4. Performing an on-line resize of /dev/VolGroup/lv_root to 2544640 (4k) blocks.

  5. The filesystem on /dev/VolGroup/lv_root is now 2544640 blocks long.

复制代码


[root@localhost ~]# df -h

  1. Filesystem            Size  Used Avail Use% Mounted on

  2. /dev/mapper/VolGroup-lv_root

  3.                       9.5G  618M  8.4G   7% /

  4. tmpfs                 250M     0  250M   0% /dev/shm

  5. /dev/vda1             477M   26M  427M   6% /boot

复制代码


另外,如果是增加磁盘,思路是: 
创建磁盘: qemu-img create -f raw  /data/kvm/test03_2.img 5G
关闭虚拟机: virsh destroy test03
编辑配置文件: virsh edit test03  增加如下:

  1.      

  2.         

  3.         

  4.         


复制代码


开启虚拟机:virsh start test03
进入虚拟机:virsh console test03
分区: fdisk /dev/vdb
格式化 (略)
挂载 (略)
当然也可以按照上面的思路把 /dev/vdb1 加入到 lvm里面去


b. qcow2格式
步骤基本上和raw一样。如果提示 This p_w_picpath format does not support resize, 检查一下你qemu-img create的时候,是否有加  preallocation=metadata 选项,如果有,就不能resize了。

10. 不重启虚拟机在线增加网卡
virsh domiflist test02  查看test02子机的网卡列表
virsh attach-interface test02 --type bridge --source br0   //命令行增加一块网卡
virsh dumpxml test02 > /etc/libvirsh/qemu/test02.xml   //命令行增加的网卡只保存在内存中,重启就失效,所以需要保存到配置文件中,其中/etc/libvirsh/qemu/test02.xml 为test02子机的配置文件
virsh console test02 //进入虚拟机后,执行
ifconfig -a
发现多了一个网卡  eth1