使用 LVM 技术提升 Xen 虚拟机性能的实现

  你知道吗?使用LVM分区作为Xen虚拟机的文件存储,不仅可以最大发挥LVM的性能,而且还可以很方便的管理虚拟机。下面,晓辉将介绍这是如何实现的。
  环境:CentOS 5.7 x86_64
  1、卸载/data1,将其做为LVM分区

  
  
  
  
  1. umount /data1 

  fdisk -l 命令的输出:

  
  
  
  
  1. Disk /dev/sda: 898.3 GB, 898319253504 bytes  
  2. 255 heads, 63 sectors/track, 109214 cylinders  
  3. Units = cylinders of 16065 * 512 = 8225280 bytes  
  4.  
  5. Device Boot Start End Blocks Id System  
  6. /dev/sda1 * 1 13 104391 83 Linux  
  7. /dev/sda2 14 51006 409601272+ 83 Linux  
  8. /dev/sda3 51007 52918 15358140 83 Linux  
  9. /dev/sda4 52919 109214 452197620 5 Extended  
  10. /dev/sda5 52919 54830 15358108+ 83 Linux  
  11. /dev/sda6 54831 56135 10482381 83 Linux  
  12. /dev/sda7 56136 56396 2096451 82 Linux swap / Solaris  
  13. /dev/sda8 56397 56460 514048+ 83 Linux  
  14. /dev/sda9 56461 109214 423746473+ 83 Linux 

  将大分区/dev/sda9 建立物理卷

  
  
  
  
  1. # pvcreate /dev/sda9  
  2. Physical volume "/dev/sda9" successfully created 

  pvscan命令输出:

  
  
  
  
  1. PV /dev/sda9 lvm2 [404.12 GB]  
  2. Total: 1 [404.12 GB] / in use: 0 [0 ] / in no VG: 1 [404.12 GB] 

  2、使用vgcreate命令建立volume groupm名字为xen-volume2

  
  
  
  
  1. # vgcreate xen-volume /dev/sda9  
  2. Volume group "xen-volume" successfully created 

  再看pvscan命令的输出,和前一次不一样了:

  
  
  
  
  1. PV /dev/sda9 VG xen-volume lvm2 [404.11 GB / 404.11 GB free]  
  2. Total: 1 [404.11 GB] / in use: 1 [404.11 GB] / in no VG: 0 [0 ] 

  再看看vgdisplay命令的输出:

  
  
  
  
  1. # vgdisplay -v xen-volume2  
  2. Using volume group(s) on command line  
  3. Finding volume group "xen-volume" 
  4. --- Volume group ---  
  5. VG Name xen-volume  
  6. System ID  
  7. Format lvm2  
  8. Metadata Areas 1  
  9. Metadata Sequence No 1  
  10. VG Access read/write  
  11. VG Status resizable  
  12. MAX LV 0  
  13. Cur LV 0  
  14. Open LV 0  
  15. Max PV 0  
  16. Cur PV 1  
  17. Act PV 1  
  18. VG Size 404.11 GB  
  19. PE Size 4.00 MB  
  20. Total PE 103453  
  21. Alloc PE / Size 0 / 0  
  22. Free PE / Size 103453 / 404.11 GB  
  23. VG UUID JWIYoU-eaBA-MVdN-NX9Q-EEB0-sme7-Cxo85D  
  24. --- Physical volumes ---  
  25. PV Name /dev/sda9  
  26. PV UUID H4ovdJ-GwoB-rfOK-jLbG-Px68-r1QG-SFF3my  
  27. PV Status allocatable 

  3、在上面建立的名为“xen-volume2”的volume group上创建一个容量为150G的,名称为“3-34”的logic volume:

  
  
  
  
  1. # lvcreate -L 150G -n 3-34 xen-volume2  
  2. Logical volume "xen-lv" created 

  查看Logic volume的device node,这个device node的命名规则是volume group + logic volume:

  
  
  
  
  1. # ls -al /dev/mapper/  
  2. 总计0 
  
  
  
  
  1. drwxr-xr-x 2 root root 80 Feb 23 10:29 .  
  2. drwxr-xr-x 14 root root 4120 Feb 23 10:29 ..  
  3. crw------- 1 root root 10, 62 Feb 23 10:21 control  
  4. brw-rw---- 1 root disk 253, 0 Feb 23 10:29 xen--volume-3--34 

  另外,在/dev目录下有一个以volume group为名字的目录,这个目录下有一个以logic volume为名字的软链接文件,这个文件指向/dev/mapper下的device node。

  
  
  
  
  1. # ls -al /dev/xen-volume2/  
  2. 总计0 
  
  
  
  
  1. drwxr-xr-x 2 root root 60 Feb 23 10:29 .  
  2. drwxr-xr-x 14 root root 4120 Feb 23 10:29 ..  
  3. lrwxrwxrwx 1 root root 29 Feb 23 10:29 3-34 -> /dev/mapper/xen--volume-3--34 

  查看Logic volume的属性:

  
  
  
  
  1. # lvdisplay /dev/xen-volume2/3-36  
  2. --- Logical volume ---  
  3. LV Name /dev/xen-volume/3-34  
  4. VG Name xen-volume  
  5. LV UUID RMM48V-huJV-dKca-Gra0-f6sr-WNxS-9In3B0  
  6. LV Write Access read/write  
  7. LV Status available  
  8. # open 0  
  9. LV Size 150.00 GB  
  10. Current LE 38400  
  11. Segments 1  
  12. Allocation inherit  
  13. Read ahead sectors auto  
  14. - currently set to 256 

  4、在/etc/fstab文件里找到data1分区哪一行,将其注释掉,防止重启时候出错。

  
  
  
  
  1. #LABEL=/data1 /data1 ext3 defaults 1 2 

  5、安装一个 Linux 虚拟机
  以/dev/xen-volume2/3-37为xen硬盘分区,安装一个4G内存,150G硬盘的linux 虚拟机
  1)建立3.36 lvm分区50G,名字为3-36

  
  
  
  
  1. lvcreate -L 50G -n 3-37 xen-volume2  

  2)virt-install -n 3.37 -p -r 2048 --vcpus=4 -f /dev/xen-volume2/3-36 -l http://localhost/os/5.7/i386/ --nographics
  意思是名字为3.37 ,半虚拟化、内存为2G 、cpu核心数4、硬盘所在分区/dev/xen-volume2/3-37、操作系统网络地址 http://localhost/os/5.7/i386/不使用图形界面。
  附注:测试 file 和 LVM 写速度
  测试命令

  
  
  
  
  1. dd if=/dev/zero of=test.bin bs=4K count=512K ;  
  2. dd if=/dev/zero of=test.bin bs=4K count=512K ;  
  3. dd if=/dev/zero of=test.bin bs=4K count=512K 

  Xen 使用 LVM 作为 os tap:
  母机写速度 331M/s

  
  
  
  
  1. 2147483648 bytes (2.1 GB) copied, 6.17998 seconds, 347 MB/s  
  2. 2147483648 bytes (2.1 GB) copied, 6.56825 seconds, 327 MB/s  
  3. 2147483648 bytes (2.1 GB) copied, 6.67982 seconds, 321 MB/s 

  虚拟机(linux)写速度 292M/s 相当于母机的88%

  
  
  
  
  1. 2147483648 bytes (2.1 GB) copied, 7.34302 seconds, 292 MB/s  
  2. 2147483648 bytes (2.1 GB) copied, 7.91667 seconds, 271 MB/s  
  3. 2147483648 bytes (2.1 GB) copied, 6.86898 seconds, 313 MB/s 

  Xen 使用 file 作为 os tap:
  母机写速度 171M/s

  
  
  
  
  1. 2147483648 bytes (2.1 GB) copied, 13.8047 seconds, 156 MB/s  
  2. 2147483648 bytes (2.1 GB) copied, 11.737 seconds, 183 MB/s  
  3. 2147483648 bytes (2.1 GB) copied, 12.2207 seconds, 176 MB/s 

  虚拟机(linux)写速度57.2M/s 相当于母机的33%

  
  
  
  
  1. 2147483648 bytes (2.1 GB) copied, 43.2957 seconds, 49.6 MB/s  
  2. 2147483648 bytes (2.1 GB) copied, 36.5314 seconds, 58.8 MB/s  
  3. 2147483648 bytes (2.1 GB) copied, 33.9732 seconds, 63.2 MB/s 

  总结:为什么要混合使用 file 和 LVM ?
  根据这两种技术的优缺点和技术特性,在跑MySQL的 Xen Linux上,应充分利用 LVM 做为虚拟机os载体,尽量发挥 LVM 的性能优势。而 file 虽然写性能差,但是迁移方便,这是它的优势。
  总之,使用的时候可根据具体需求合理选择 file 和 LVM 作为虚拟机操作系统载体。

本文转载自:http://www.linuxde.net/2012/03/9317.html

你可能感兴趣的:(虚拟机,xen,lvm)