Kvm之Lvm存储测试

  • Post author:
  • Post category:其他



实验

1.Kvm

添加

Lvm

存储池

2.

使用

Lv

安装操作系统

3.

使用

Lv

快照创建操作系统

4.

扩展虚拟机

LVM



lv root

分区空间

5.

根据上一个实例,现有另一个问题,如果

data

分区是分布在两个物理卷

PV

,如何扩充此分区呢?

6.

虚拟机快照及

PV

数据迁移

7.LVM

虚拟机克隆



实验1.略




实验

2.



使用

Lv



安装操作系统


[



实验环境:宿主机使用的是

lvm



存储

,guest



使用

lvm



分区

]


此一句话带过吧,太简单了,用

lvcreate –L 20G –n web01-lvm vg_lvm

,便可创建一个逻辑卷

.


这时我们便可以用此卷安装操作系统了

.


virt-install--connect qemu:///system--name web01_lvm--ram 1024--vcpus=1 --disk=/dev/vg_lvm/web01-lvm --network bridge:br0 --accelerate--cdrom /iso/CentOS-6.3-x86_64-bin-DVD1.iso --vnc --vncport=5902 --vnclisten=0.0.0.0



这样我们就可以通过




mRemote




工具到这台




guest




上安装虚拟机了




.



如果你使用的是




kickstart




安装,还可以借助下面的命令来自动化安装


virt-install --name cache1 --vcpus=8 --ram 6144 --pxe --network bridge=br0 --network bridge=br1 --disk=/dev/vg_lvs2/vm-cache1 --vnc --vncport 5902 --vnclisten=0.0.0.0 --noautoconsole


仅供参考!



实验

3.



使用

Lv



快照创建操作系统


[



实验环境:宿主机使用的是

lvm



存储

,guest



使用

lvm



分区

]


在实验2处,我们已经通过宿主机的一个逻辑卷安装了guest,在此,我想通过LVM的快照技术,生成一个快照卷,用此卷来生成一个全新的系统,因其创建快,用与培训机构供学生作为练习机,还是很不错的。往下走。


先看一下这个虚拟机是多大的,到时候我们可以根据此大小增长15%-20%,此部分用来存放原主机被修改的部分.


执行如下命令:


[root@lvm ~]# lvs


LVVGAttrLSizePool Origin Data%Move Log Copy%Convert


os_imgvg_lvm -wi-ao– 147.66g



web01-lvmvg_lvm -wi-a—20.00g


web01_lvm_disk1 vg_lvm -wi-a—10.00g


web01_lvm_disk2 vg_lvm -wi-a—10.00g


web01_lvm_disk3 vg_lvm -wi-a—30.00g


[root@lvm ~]# lvcreate -s -L 4G -n  web01-lvm-snap /dev/vg_lvm/web01-lvm


Logical volume “web01-lvm-snap”  created


此时,我们便可以用web01-lvm-snap作为启动虚拟机的镜像文件了。切记,我们能使用的空间只有4G,我们创建了一个可以存储4G文件大小的空间.在这我就不深入了。


wKioL1MLB8nTwnhdAAC9ilx1eBo551.jpg


wKiom1MLCAuA1PxyAADNZWCEqFo347.jpg



以上,是通过




virt-manager




工具创建的快照虚拟机,下面在命令行上再创建一次




;



[root@lvm ~]# lvcreate -s -L 4G  -n web01-lvm-snap /dev/vg_lvm/web01-lvm



Logical volume “web01-lvm-snap” created



导出




web01_lvm




虚拟机的配置信息,并修改




4




处信息



virsh dumpxml web01-lvm  >/etc/libvirt/qemu/web01_lvm_snap.xml

UUID




生成




:



[root@lvm ~]# uuidgen



678fda12-51ca-4b97-aab7-f0bcdf560b33



MAC




生成




:



[root@lvm qemu]# python -c  “from virtinst.util import randomMAC;print randomMAC(type=’qemu’)”



52:54:00:8d:be:fc



[root@lvm ~]# more  /etc/libvirt/qemu/web01_lvm_snap.xml



<domain type=’kvm’>







<name>web01-lvm-snap</name>







<uuid>678fda12-51ca-4b97-aab7-f0bcdf560b33</uuid>



<memory unit=’KiB’>1048576</memory>



<currentMemory unit=’KiB’>1048576</currentMemory>



<vcpu placement=’static’>1</vcpu>



<os>



<type arch=’x86_64′  machine=’rhel6.3.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=’block’ device=’disk’>



<driver name=’qemu’ type=’raw’  cache=’none’ io=’native’/>







<source dev=’/dev/vg_lvm/web01-lvm-snap’/>



<target dev=’hda’ bus=’ide’/>



<address type=’drive’ controller=’0′  bus=’0′ target=’0′ unit=’0’/>



</disk>



<disk type=’block’ device=’cdrom’>



<driver name=’qemu’ type=’raw’/>



<target dev=’hdc’ bus=’ide’/>



<readonly/>



<address type=’drive’ controller=’0′  bus=’1′ target=’0′ unit=’0’/>



</disk>



<controller type=’usb’ index=’0′>



<address type=’pci’ domain=’0x0000′  bus=’0x00′ slot=’0x01′ function=’0x2’/>



</controller>



<controller type=’ide’ index=’0′>



<address type=’pci’ domain=’0x0000′  bus=’0x00′ slot=’0x01′ function=’0x1’/>



</controller>



<interface type=’bridge’>







<mac address=’52:54:00:8d:be:fc’/>



<source bridge=’br0’/>



<address type=’pci’ domain=’0x0000′  bus=’0x00′ slot=’0x03′ function=’0x0’/>



</interface>



<serial type=’pty’>



<target port=’0’/>



</serial>



<console type=’pty’>



<target type=’serial’ port=’0’/>



</console>



<input type=’mouse’ bus=’ps2’/>



<graphics type=’vnc’ port=’5902′  autoport=’no’ listen=’0.0.0.0′>



<listen type=’address’  address=’0.0.0.0’/>



</graphics>



<video>



<model type=’cirrus’ vram=’9216′  heads=’1’/>



<address type=’pci’ domain=’0x0000′  bus=’0x00′ slot=’0x02′ function=’0x0’/>



</video>



<memballoon model=’virtio’>



<address type=’pci’ domain=’0x0000′  bus=’0x00′ slot=’0x04′ function=’0x0’/>



</memballoon>



</devices>



</domain>




生成快照虚拟机





[root@lvm ~]# virsh define /etc/libvirt/qemu/web01_lvm_snap.xml



Domain web01_lvm_snap defined  from /etc/libvirt/qemu/web01_lvm_snap.xml



启动快照虚拟机



[root@lvm ~]# virsh start  web01_lvm_snap



Domain web01_lvm_snap started


虚拟机创建了,这时我们就可以将此虚拟机交付与他人了,即使破坏了,我们也不用担心,再创建一个快照便可了.






实验4.




扩容虚拟机

LVM





lv





root



分区空间


[



实验环境:宿主机使用的是

lvm



存储

,guest



使用

lvm



分区

]


好了, 现在让我们看看怎么使用virt-resize来调整大小.

首先让我们看下虚拟机卷组的相关信息:


guest# vgs


VG#PV #LV #SN AttrVSize VFree


vg_lvm130 wz–n-

9.90g

0


逻辑卷相关信息:


guest# lvs


LVVGAttrLSize Pool Origin  Data%Move Log Copy%Convert


data vg_lvm -wi-ao– 2.04g


root vg_lvm -wi-ao–

5.86g


swap vg_lvm -wi-ao– 2.00g


现在关闭虚拟机


host# virsh shutdown web01-lvm

Domain web01-lvm is being shutdown


在使用resize命令前,先看下此虚拟机镜像文件的大小和类型.


host# qemu-img info /dev/vg_lvm/web01-lvm


image: /dev/vg_lvm/web01-lvm


file format:

raw


virtual size:

10G (10737418240 bytes)


disk size: 0


我们将要重命令/dev/vg_lvm/web01-lvm逻辑卷并且最后创建一个新的大小的卷。现在这个虚拟镜像是10G,现在我们要将其扩充到20G。现在让我们用lvrename命令来改名,并且用lvcreate创建一个20G的镜像磁盘。


host# lvrename vg_lvm web01-lvm web01-lvm-OLD


Renamed “web01-lvm” to  “web01-lvm-OLD” in volume group “vg_lvm”


[root@lvm ~]# lvs


LVVGAttrLSizePool Origin Data%Move Log Copy%Convert


os_imgvg_lvm -wi-ao– 147.66g



web01-lvm-OLDvg_lvm -wi-a—10.00g


web01_lvm_disk1 vg_lvm  -wi-ao–10.00g


web01_lvm_disk2 vg_lvm  -wi-ao–10.00g


再创建一个20G的web01-lvm



host# lvcreate -L 20G -n web01-lvm vg_lvm


Logical volume  “web01-lvm” created


host# lvs


LVVGAttrLSizePool Origin Data%Move Log Copy%Convert


os_imgvg_lvm -wi-ao– 147.66g



web01-lvmvg_lvm -wi-a—20.00g



web01-lvm-OLDvg_lvm -wi-a—10.00g


web01_lvm_disk1 vg_lvm  -wi-ao–10.00g


web01_lvm_disk2 vg_lvm  -wi-ao–10.00g



现在我们可以执行下面的命令来扩充root分区的空间了


host# virt-resize /dev/vg_lvm/web01-lvm-OLD/dev/vg_lvm/web01-lvm –expand /dev/vda2  –LV-expand /dev/vg_lvm/root


Examining /dev/vg_lvm/web01-lvm-OLD …


**********


Summary of changes:


/dev/sda1: This partition will be left alone.


/dev/sda2: This partition will be resized from 9.9G to 19.9G.The LVM


PV on /dev/sda2 will be  expanded using the ‘pvresize’ method.


/dev/vg_lvm/root: This logical volume will be expanded to maximum size.


The filesystem ext4 on  /dev/vg_lvm/root will be expanded using the


‘resize2fs’ method.


**********


Setting up initial partition table on /dev/vg_lvm/web01-lvm …


Copying /dev/sda1 …


Copying /dev/sda2 …


省略进度….


Expanding /dev/sda2 using the ‘pvresize’ method …


Expanding /dev/vg_lvm/root using the ‘resize2fs’ method …


Resize operation completed with no errors.

Before deleting the  old


disk, carefully check that the resized disk boots and  works correctly.



*




注意上面标红的那句.在删除老文件前,请确认虚拟机可以正常启动和工作。*


注意/dev/vda2是vg_lvm的物理卷,也就是你需要扩容的虚拟机root分区所在的物理卷.如图:


wKiom1MLCKOgVT0jAAB9VSos5jU824.jpg





这个命令执行完后,将会使vg_lvm卷增大20G,root分区也会增加近10G.以下是检查部分,启动虚拟机.


guest# vgs


VG#PV #LV #SN AttrVSizeVFree


vg_lvm130 wz–n-

19.90g

0


guest# lvs


LVVGAttrLSizePool Origin Data%Move Log Copy%Convert


data vg_lvm -wi-ao–2.04g


root vg_lvm -wi-ao–

15.86g


swap vg_lvm -wi-ao–2.00g


我们再来看看这台虚拟机磁盘镜像是多大吧.


host# qemu-img info /dev/vg_lvm/web01-lvm


image: /dev/vg_lvm/web01-lvm


file format: raw


virtual size:

20G (21474836480 bytes)


disk size: 0


OK


,此部分实验目标达成,已经成功为虚拟机root分区追加10G的空间.


现在我们可以使用lvremove删除掉原来老的镜像了.


host# lvremove /dev/vg_lvm/web01-lvm-OLD


Do you really want to remove active logical volume web01-lvm-OLD? [y/n]:  y


Logical volume  “web01-lvm-OLD” successfully removed


host# lvs


LVVGAttrLSizePool Origin Data%Move Log Copy%Convert


os_imgvg_lvm -wi-ao– 147.66g


web01-lvmvg_lvm -wi-ao–20.00g


web01_lvm_disk1 vg_lvm  -wi-ao–10.00g


web01_lvm_disk2 vg_lvm  -wi-ao–10.00g


现在我们想一下,如果我要扩充的分区,占据了两个物理卷,那么这个

—expand

如何指定

?

继续下面的实验

.



案验

5,lvm



分区中

data



分区占据两个

pv,



如何扩充此分区


[



实验环境:宿主机使用的是

lvm



存储

,guest



使用

lvm



分区

]


wKiom1MLCMnyPlVpAAC4czMiNMc287.jpg

data

分区应该分布在

vda



vdb

之间,一开始按照实验

4

操作,发现此路不通,与是乎突然想到

guest

不是用

lvm

吗?那我何不扩充

vg

的空间,再将

vg

的省余空间填充给我们要扩充的逻辑分区呢?根据我的实验环境,简单讲下操作流程

:

(1)

如果宿主没有空间,我们添加一块物理磁盘

,

转换在

pv,

命令

fdisk,pvcreate

(2)

在宿主主机上添加一块

10G

逻辑卷

lv

,命令

lvcreate

(3)

将此逻辑卷挂载到

guest

主机上,再

pv



添加磁盘






virsh attach-disk –domain web02-lvm –source /dev/vg_lvm/web01_lvm_disk2  –target vdb –persistent






删除磁盘





virsh detach-disk –domain web02-lvm –target vdb –persistent



注意此命令可以支持在线添加




/




删除




(




如果没有




persistent




参数,后期关机,再开机还会再有




)



可以通过




domblklist




查看




guest




主机的块设备



[root@lvm ~]#  virsh domblklist web02-lvm



TargetSource



————————————————



vda/dev/vg_lvm/web01_lvm_disk1



vdb/dev/vg_lvm/web01_lvm_disk2

(4)



pv

的物理卷添加到卷组(如果你想将某一物理卷从卷组中移除,你可以考略使用

pvmove

命令将数据移走,此物理卷便可移除了,这是

pv

迁移技术,请看实验

6



,

命令

vgextend

(5)

这时我们的

vg



size

就增大了,这时我们再用

lvresize

扩充

data

分区喽

,

命令

lvresize

(6)

再通过

resize2fs

命令,便可以增加

data

分区了。


呵呵,如果

guest

使用的不是

lvm

技术,那么我们只能使用

virt-resize

来扩充分区空间了,这个我也会再写篇实验来说明

.


最终结果

(

与上图比较,我的

data

分区增加了

10G)


guest# df -h

FilesystemSizeUsed Avail Use% Mounted on

/dev/mapper/vg_lvm-root

4.9G1.8G2.9G38% /

tmpfs499M0499M0% /dev/shm

/dev/vda197M28M65M30% /boot

/dev/mapper/vg_lvm-data


23G

164M22G1% /data


其实,我们实验

4

也可以采用实验

5

的技术来做的,发现了没?



实验

6.



虚拟机快照及

PV



数据迁移


[



实验环境:宿主机使用的是

lvm



存储

,guest



使用

lvm



分区

]


今天我们要做的实验是虚拟机快照,这里的虚拟机快照采用的是

LVM

的快照技术

.


闲话不多说,开始实验:


先看下主机逻辑卷信息

(

我们的

guest

使用的就是主机的逻辑卷

)

host# lvs

LVVGAttrLSizePool Origin Data%Move Log Copy%Convert

os_imgvg_lvm -wi-ao–  147.66g


web01-lvmvg_lvm  -wi-ao–20.00g

web01_lvm_disk1 vg_lvm -wi-a—10.00g

web01_lvm_disk2 vg_lvm -wi-a—10.00g

web01_lvm_disk3 vg_lvm -wi-a—30.00g


标红的卷就是

guest web01-lvm

的镜像文件,我们现在要对此逻辑卷做一个卷快照,后期我们将对

web01-lvm

做安装一个

telnet

软件的操作,后期将用此快照做恢复操作

.

host# virsh shutdown web01-lvm

Domain web01-lvm is being shutdown


host# lvcreate -s -n web01-lvm-snap -L 4G /dev/vg_lvm/web01-lvm

Logical volume “web01-lvm-snap” created

host# lvdisplay

………

— Logical volume —

LV Path/dev/vg_lvm/web01-lvm

LV Nameweb01-lvm

VG Namevg_lvm

LV UUIDMVF7pH-SLBs-4dGH-ftAt-XWr3-JK5R-GCyB6t

LV Write Acce***ead/write

LV Creation host, time lvm.tx.com, 2011-11-14 22:11:40 +0800

LV snapshot statussource of

web01-lvm-snap  [active]

LV Statusavailable

#  open1

LV Size20.00 GiB

Current LE5120

Segments1

Allocationinherit

Read ahead sectorsauto

–  currently set to256

Block device253:4

— Logical volume —

LV Path/dev/vg_lvm/web01-lvm-snap

LV Nameweb01-lvm-snap

VG Namevg_lvm

LV UUIDnO8s7l-utBH-gdS2-zBOe-MTpS-SoHP-fRILYu

LV Write Acce***ead/write

LV Creation host, time lvm.tx.com, 2011-11-16 00:49:09 +0800

LV snapshot statusactive  destination for web01-lvm

LV Statusavailable

#  open0

LV Size20.00 GiB

Current LE5120


COW-table size4.00 GiB


COW-table LE1024


Allocated to snapshot0.00%


Snapshot chunk size4.00 KiB

Segments1

Allocationinherit

Read ahead sectorsauto

–  currently set to256

Block device253:1

………


我们到

guest

上装个

telnet

软件

host# virsh start web01-lvm

Domain web01-lvm started


guest# yum -y install telnet

………

guest# telnet www.baidu.com 80

Trying 115.239.210.26…

Connected to www.baidu.com.

Escape character is ‘^]’.


关闭虚拟机

/

恢复测试

host# virsh shutdown web01-lvm

Domain web01-lvm is being shutdown

host# lvconvert –merge  /dev/vg_lvm/web01-lvm-snap

Merging of volume web01-lvm-snap started.

web01-lvm: Merged: 1.1%

web01-lvm: Merged: 0.0%

Merge of snapshot into logical volume web01-lvm has finished.


Logical volume  “web01-lvm-snap” successfully removed


从以上可以看出恢复成功且逻辑卷快照


web01-lvm-snap


成功删除了



开启虚拟机检查

host# virsh start web01-lvm

Domain web01-lvm started

guest# telnet

-bash: telnet: command not found



注意


:




创建快照不需要关闭


guest,




快照恢复需要关闭


guest.




切记,切记





如果想了解更多,请关注我们的公众号

公众号ID:opdevos

扫码关注

gongzhouhao.jpg



版权声明:本文为weixin_34004750原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。