设为首页 收藏本站
查看: 1664|回复: 0

[经验分享] kvm虚拟机扩展磁盘空间

[复制链接]

尚未签到

发表于 2015-10-10 09:07:45 | 显示全部楼层 |阅读模式
一、静态扩展磁盘

  kvm虚拟机磁盘空间扩展与xen虚拟机磁盘空间扩展思路一致。原因在于xen/kvm默认的虚拟机磁盘格式为raw,所以方式可以通用。
raw磁盘格式扩展思路如下
  (1) 新添加一块raw格式的磁盘加入到KVM虚拟机,然后通过虚拟机系统lvm逻辑卷管理方式进行管理,扩展磁盘空间。
  (2) 直接通过dd命令扩展现有虚拟机磁盘大小,扩展之后,原磁盘大小增大,进入虚拟机系统后,直接通过fdisk分区新添加的空间,然后将该分区并入lvm逻辑卷中,扩大磁盘空间。
  xen虚拟化实战系列(四)之xen虚拟机扩展磁盘空间一法   http://koumm.blog.iyunv.com/703525/1285460
  xen虚拟化实战系列(五)之xen虚拟机扩展磁盘空间再一法http://koumm.blog.iyunv.com/703525/1285489
qcow2磁盘格式扩展思路如下
  (1) 可以采用raw磁盘格式磁盘的扩展方式一致的方式进行。
  (2) qcow2格式磁盘,直接通过qemu-img 直接扩展qcow2磁盘, 新添加一块raw格式的磁盘加入到KVM虚拟机,然后通过虚拟机系统lvm逻辑卷管理方式进行管理,扩展磁盘空间。
  下面将开始通过qcow2格式添加磁盘。
  方式一:添加一块qcow2磁盘加入虚拟机
1.  查看现在虚拟机磁盘信息
  (1)  磁盘大小与格式信息

  查看虚拟机磁盘格式。
DSC0000.png
  查看磁盘格式信息
DSC0001.png
  进入虚拟机,查看磁盘容量。
  [iyunv@test01 ~]# df -h   
Filesystem Size Used Avail Use% Mounted on   
/dev/mapper/vg-root 5.7G 3.1G 2.4G 57% /   
/dev/hda1 99M 24M 71M 25% /boot   
tmpfs 249M 0 249M 0% /dev/shm
  (2) 添加一块qcow2磁盘
  # qemu-img create -f qcow2 test01_add.qcow2 2G
DSC0002.png
  (3) 添加一块qcow2磁盘信息加入配置文件
  [iyunv@node1 data]# virsh shutdown oeltest01   
域 oeltest01 被关闭
  [iyunv@node1 data]#   
[iyunv@node1 data]# virsh list --all        
Id    名称                         状态   
----------------------------------------------------   
-     oeltest01                      关闭   
-     oeltest02                      关闭   
-     oeltest03                      关闭   
-     wintest01                      关闭
  在配置文件中加入如下内容:
  # virsh edit oeltest01
  <disk type='file' device='disk'>     
  <driver name='qemu' type='qcow2' cache='none'/>      
  <source file='/data/test01_add.qcow2'/>      
  <target dev='hdb' bus='ide'/>      
</disk>

  (4) 启动虚拟机并配置磁盘
  # virsh start oeltest01
  # virsh console oeltest01
DSC0003.png
2.  配置LVM扩展磁盘
  (1) 分区
DSC0004.png
  (2) 扩展lvm逻辑卷。
DSC0005.png
  方式二:直接扩展qcow2磁盘
接上文恢复测试环境。
  (1)  关闭虚拟机。
  (2)  删除配置文件中第二块磁盘信息
  (3)  通过kvm虚拟化学习笔记(十)之kvm虚拟机快照备份中创建的快照恢复虚拟机。
1. 直接扩展qcow2磁盘
  (1)  查看磁盘
  # virsh edit oeltest01
  <disk type='file' device='disk'>   
  <driver name='qemu' type='qcow2' cache='none'/>   
  <source file='/data/test01.qcow2'/>
  <target dev='hda' bus='ide'/>   
  <address type='drive' controller='0' bus='0' target='0' unit='0'/>   
</disk>
  (2)  直接扩展qcow2磁盘
  # qemu-img resize test01.qcow2 &#43;2G
DSC0006.png
  经过前后对比,磁盘大小已由7G扩展到9G,已扩展,qcow2磁盘&#26684;式必须采用此方式进行扩展,不要使用dd方式,dd方式适用于raw&#26684;式。
2. 进入系统开始扩展磁盘
  (1) 查看分区大小
  [iyunv@test01 ~]# fdisk -l
  Disk /dev/hda: 9663 MB, 9663676416 bytes
255 heads, 63 sectors/track, 1174 cylinders   
Units = cylinders of 16065 * 512 = 8225280 bytes
  Device Boot      Start         End      Blocks   Id  System   
/dev/hda1   *           1          13      104391   83  Linux   
/dev/hda2              14         913     7229250   8e  Linux LVM
  Disk /dev/dm-0: 6308 MB, 6308233216 bytes   
255 heads, 63 sectors/track, 766 cylinders   
Units = cylinders of 16065 * 512 = 8225280 bytes
  Disk /dev/dm-0 doesn't contain a valid partition table
  Disk /dev/dm-1: 1073 MB, 1073741824 bytes   
255 heads, 63 sectors/track, 130 cylinders   
Units = cylinders of 16065 * 512 = 8225280 bytes
  Disk /dev/dm-1 doesn't contain a valid partition table   
[iyunv@test01 ~]#
  (2) 开始分区
  [iyunv@test01 ~]# fdisk /dev/hda
  过程如下,将扩展的空间分成一个区。
DSC0007.png
  查看现在磁盘空间
DSC0008.png
  (3) 开始创建物理卷,加入卷组,扩展逻辑卷。
DSC0009.png
  到此kvm虚拟机扩展磁盘空间成功,当虚拟机磁盘&#26684;式换成qcow2后,确实有很多需要注意的地方,qcow2&#26684;式支持动态扩展与快照功能,虽然性比raw稍差,但确实很实用。
二、在线扩展磁盘
  
  说明:
  1) vmware ESXi虚拟化平台也支持这台在线扩展磁盘功能。
  2) kvm虚拟机也支持在线扩展磁盘功能,在线扩展有特定的使用环境,主要用于不能随便停用的生产环境中。
  3) 经过测试KVM在线扩展磁盘功能只适用于RHEL/CentOS/OEL6.x环境,5.x不支持在线的扩展磁盘,其它ubuntu等其它Linux我没有测试,不做评论。
  本文出自:http://koumm.blog.iyunv.com
  本文为了测试,专门安装了OEL6.3虚拟机。
1.  安装oel6.3虚拟机
  安装oeltest02虚拟机
  # qemu-img create -f qcow2  /data/test02.qcow2  7G   
# virt-install --name=oeltest02 --os-variant=RHEL6.3 --ram 512 --vcpus=1 --disk path=/data/test01.qcow2,format=qcow2,size=7,bus=virtio --accelerate --cdrom /data/iso/oel63x64.iso --vnc --vncport=5911 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio --noautoconsole
  目的是使用实验环境磁盘改为virtio驱动下的vda磁盘,这种scsi磁盘可以热插拨,可以动态添加。
  整个安装过程略,虚拟机各种配置略,可以参考系列文章前面的内容。
2.  给oeltest02虚拟机在线添加磁盘
  (1)  查看现有磁盘
  [iyunv@node1 data]# virsh domblklist oeltest02
DSC00010.png
  (2) 创建一块qcow2虚拟磁盘
  [iyunv@node1 data]# qemu-img create -f qcow2 test02_add01.qcow2 4G
DSC00011.png
  (3) 在线添加这台qcow2虚拟磁盘
  # virsh attach-disk oeltest02 /data/test02_add01.qcow2 vdb --cache=none --subdriver=qcow2
DSC00012.png
DSC00013.png
  (4) 进入oeltest02虚拟机查看添加磁盘情况
  [iyunv@node1 data]#   
[iyunv@node1 data]# virsh console oeltest02   
连接到域 oeltest02   
Escape character is ^]
  Oracle Linux Server release 6.3   
Kernel 2.6.32-279.el6.x86_64 on an x86_64
  test02 login: root   
Password:     
Last login: Thu Sep 12 00:46:27 on ttyS0   
[iyunv@test02 ~]#
  [iyunv@test02 ~]# fdisk –l
  即可看到刚才添加的磁盘已经被虚拟机适别到了。
DSC00014.png
  可以看到有两个scsi存储设备。
DSC00015.png
  注:再次说明只有RHEL/CentOS/OEL6.x版本在线添加磁盘,虚拟机直接可以在线识别。
  (5) 修改虚拟机配置文件添加新增磁盘配置
  1)  查看当前虚拟机配置文件
  这里查看到的虚拟机配置文件是内存中存放的配置,重启后会消失,需要将新添的磁盘配置保存到配置文件中。
  [iyunv@node1 data]# virsh dumpxml oeltest02   
<domain type='kvm' id='5'>   
  <name>oeltest02</name>   
  <uuid>2dfb812d-703c-3d5b-68b7-516f618e7944</uuid>   
  <memory unit='KiB'>1048576</memory>   
  <currentMemory unit='KiB'>1048576</currentMemory>   
  <vcpu placement='static'>2</vcpu>   
  <os>   
    <type arch='x86_64' machine='rhel6.4.0'>hvm</type>   
    <boot dev='hd'/>   
  </os>   
  <features>   
    <acpi/>   
    <apic/>   
    <pae/>   
  </features>   
  <clock offset='utc'/>   
  <on_poweroff>destroy</on_poweroff>   
  <on_reboot>restart</on_reboot>   
  <on_crash>restart</on_crash>   
  <devices>   
    <emulator>/usr/libexec/qemu-kvm</emulator>   
    <disk type='file' device='disk'>   
      <driver name='qemu' type='qcow2' cache='none'/>   
      <source file='/data/test02.qcow2'/>   
      <target dev='vda' bus='virtio'/>   
      <alias name='virtio-disk0'/>   
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>   
    </disk>   
    <disk type='file' device='disk'>      
      <driver name='qemu' type='qcow2' cache='none'/>        
      <source file='/data/test02_add01.qcow2'/>        
      <target dev='vdb' bus='virtio'/>        
      <alias name='virtio-disk1'/>        
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>        
    </disk>

    <disk type='block' device='cdrom'>   
      <driver name='qemu' type='raw'/>   
      <target dev='hdc' bus='ide'/>   
      <readonly/>   
      <alias name='ide0-1-0'/>   
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>   
    </disk>   
    <controller type='usb' index='0'>   
      <alias name='usb0'/>   
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>   
    </controller>   
    <controller type='ide' index='0'>   
      <alias name='ide0'/>   
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>   
    </controller>   
    <interface type='bridge'>   
      <mac address='52:54:00:ff:2f:70'/>   
      <source bridge='br0'/>   
      <target dev='vnet1'/>   
      <model type='virtio'/>   
      <alias name='net0'/>   
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>   
    </interface>   
    <serial type='pty'>   
      <source path='/dev/pts/3'/>   
      <target port='0'/>   
      <alias name='serial0'/>   
    </serial>   
    <console type='pty' tty='/dev/pts/3'>   
      <source path='/dev/pts/3'/>   
      <target type='serial' port='0'/>   
      <alias name='serial0'/>   
    </console>   
    <input type='mouse' bus='ps2'/>   
    <graphics type='vnc' port='5911' autoport='no' listen='0.0.0.0'>   
      <listen type='address' address='0.0.0.0'/>   
    </graphics>   
    <video>   
      <model type='cirrus' vram='9216' heads='1'/>   
      <alias name='video0'/>   
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>   
    </video>   
    <memballoon model='virtio'>   
      <alias name='balloon0'/>   
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>   
    </memballoon>   
  </devices>   
  <seclabel type='none'/>   
</domain>
  [iyunv@node1 data]#
  2) 保存新增磁盘配置
  [iyunv@node1 data]# virsh edit oeltest02
DSC00016.png
  说明:对RHEL/CentOS/OEL5.x版本虚拟机在线添加磁盘按照第4小节处理。
3. 将新增磁盘并入虚拟机逻辑卷中
  (1) 分区过程如下
  [iyunv@test02 ~]# fdisk /dev/vdb
  [iyunv@test02 ~]# partprobe
  (2) 创建逻辑卷过程如下
DSC00017.jpg
  到此oeltest02虚拟机在线添加磁盘并在线扩展磁盘成功。
  2014-03-14日修改, 感谢xiaoli110提供如下解决办法。
4. OEL/RHEL/CentOS5.x虚拟机在线添加磁盘过程
  说明:OEL/RHEL/CentOS5.x虚拟机按照上面的过程在线添加磁盘,磁盘识别不出来,需要在添加磁盘后,修改配置文件后重启,不能在线识别到磁盘。需要采用如下方式处理,即可以实现在线添加磁盘的功能。
  (1) 先登录进虚拟机执行两次如下命令
  modprobe acpiphp
modprobe acpiphp
DSC00018.jpg
  (2) 虚拟主机上创建磁盘并添加磁盘
   DSC00019.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-124929-1-1.html 上篇帖子: qemu-kvm虚拟机live迁移源代码解读 下篇帖子: centos下C编程调用libvirt的API访问KVM虚拟机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表