【51CTO专稿】你知道吗?使用LVM分区作为Xen虚拟机的文件存储,不仅可以最大发挥LVM的性能,而且还可以很方便的管理虚拟机。下面,晓辉将介绍这是如何实现的。

环境:CentOS 5.7 x86_64

1、卸载/data1 ,将其做为LVM分区

umount /data1

fdisk -l 命令的输出:

Disk /dev/sda: 898.3 GB, 898319253504 bytes
255 heads, 63 sectors/track, 109214 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 51006 409601272+ 83 Linux
/dev/sda3 51007 52918 15358140 83 Linux
/dev/sda4 52919 109214 452197620 5 Extended
/dev/sda5 52919 54830 15358108+ 83 Linux
/dev/sda6 54831 56135 10482381 83 Linux
/dev/sda7 56136 56396 2096451 82 Linux swap / Solaris
/dev/sda8 56397 56460 514048+ 83 Linux
/dev/sda9 56461 109214 423746473+ 83 Linux

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

# pvcreate /dev/sda9
Physical volume "/dev/sda9" successfully created

pvscan命令输出:

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

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

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

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

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

再看看vgdisplay命令的输出:

# vgdisplay -v xen-volume2
Using volume group(s) on command line
Finding volume group "xen-volume"
--- Volume group ---
VG Name xen-volume
System ID 
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 404.11 GB
PE Size 4.00 MB
Total PE 103453
Alloc PE / Size 0 / 0 
Free PE / Size 103453 / 404.11 GB
VG UUID JWIYoU-eaBA-MVdN-NX9Q-EEB0-sme7-Cxo85D
--- Physical volumes ---
PV Name /dev/sda9 
PV UUID H4ovdJ-GwoB-rfOK-jLbG-Px68-r1QG-SFF3my
PV Status allocatable

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

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

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

# ls -al /dev/mapper/

总计0

drwxr-xr-x 2 root root 80 Feb 23 10:29 .
drwxr-xr-x 14 root root 4120 Feb 23 10:29 ..
crw------- 1 root root 10, 62 Feb 23 10:21 control
brw-rw---- 1 root disk 253, 0 Feb 23 10:29 xen--volume-3--34

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

# ls -al /dev/xen-volume2/

总计0

drwxr-xr-x 2 root root 60 Feb 23 10:29 .
drwxr-xr-x 14 root root 4120 Feb 23 10:29 ..
lrwxrwxrwx 1 root root 29 Feb 23 10:29 3-34 -> /dev/mapper/xen--volume-3--34

查看Logic volume的属性:

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

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

#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

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 写速度

测试命令

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

Xen 使用 LVM 作为 os tap:

母机写速度 331M/s

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

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

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

Xen 使用 file 作为 os tap:

母机写速度 171M/s

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

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

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

总结:为什么要混合使用 file 和 LVM ?

根据这两种技术的优缺点和技术特性,在跑MySQL的 Xen Linux上,应充分利用 LVM 做为虚拟机os载体,尽量发挥 LVM 的性能优势。而 file 虽然写性能差,但是迁移方便,这是它的优势。

总之,使用的时候可根据具体需求合理选择 file 和 LVM 作为虚拟机操作系统载体。