对于Xen部署虚拟机,生产应用中最常用的是基于LVM的部署应用,利用LVM的Online扩在性,可灵活的伸缩虚拟机的存储大小特点可以高效灵活的部署Xen的虚拟机。这里我在VMware添加了一块新的硬盘做LVM。
[root@localhost ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00052228
Device Boot Start End Blocks Id System
/dev/sda1 * 1 39 307200 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 39 2358 18631680 83 Linux
/dev/sda3 2358 2611 2031616 82 Linux swap / Solaris
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
这里的我的硬盘/dev/sdb还没有使用,这里我们先分区,这里我将整个硬盘分为4个分区,应为在生产用于一款机型中戴尔的机器通常是用过四块硬盘,每块硬盘分四个分区,然后四块硬盘在组成一个RAID10,这里我就不在那么复杂了不在创建raid,为了省事我只是创建LVM。操作步骤如下:
[root@localhost ~]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 326
然后创建完四个分区后,需要修改分区的类型标识,这是创建LVM前的必须操作:
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): t
Partition number (1-4): 1,2,3,4
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
[root@localhost ~]# fdisk -l
Device Boot Start End Blocks Id System
/dev/sdb1 1 326 2618563+ 8e Linux LVM
/dev/sdb2 327 653 2626627+ 8e Linux LVM
/dev/sdb3 654 980 2626627+ 8e Linux LVM
/dev/sdb4 981 1305 2610562+ 8e Linux LVM
着手开始创建LVM,将四个分区添加到 一个VG里,我将创建两virtual machine,并且利用LVM的在线的扩展性,能很好的实现将来虚拟机的可扩展性。
[root@localhost ~]# pvcreate /dev/sdb{1,2,3,4}
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdb2" successfully created
Physical volume "/dev/sdb3" successfully created
Physical volume "/dev/sdb4" successfully created
[root@localhost ~]# pvscan
PV /dev/sdb1 lvm2 [2.50 GiB]
PV /dev/sdb2 lvm2 [2.50 GiB]
PV /dev/sdb3 lvm2 [2.50 GiB]
PV /dev/sdb4 lvm2 [2.49 GiB]
Total: 4 [10.00 GiB] / in use: 0 [0 ] / in no VG: 4 [10.00 GiB]
[root@localhost ~]# vgcreate -s 4M Xen_DomainLVM /dev/sdb{1,2,3,4}
#这里可以选择所创建的PE的大小,在生产应用中可以根据不同的业务来设置不同的PE大小,默认为4M大小。
Volume group "Xen_DomainLVM" successfully created
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name Xen_DomainLVM
System ID
Format lvm2
Metadata Areas 4
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 4
Act PV 4
VG Size 9.99 GiB
PE Size 4.00 MiB
Total PE 2558
Alloc PE / Size 0 / 0
Free PE / Size 2558 / 9.99 GiB
VG UUID qXP8jM-mDF5-hDCv-0tKn-yJNY-x63v-8n0sgA
[root@localhost ~]# lvcreate -l 100 -n Domain_1_LVM Xen_DomainLVM
Logical volume "Domain_1_LVM" created
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/Xen_DomainLVM/Doamin_2_LV
LV Name Doamin_2_LV
VG Name Xen_DomainLVM
LV UUID SbwZ68-VeT3-Bx3Y-I0o1-bsVq-tiOG-O2FjdU
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2015-07-10 03:05:08 -0700
LV Status available
# open 0
LV Size 400.00 MiB
Current LE 100
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
创建好LVM后,就分区Format文件系统和LV 的挂载了,这些应该都是比较简单的步骤,所以这里就不在做详细的代码演示,只列出需要输入的命令。
[root@localhost ~]# mkfs -t ext4 /dev/Xen_DomainLVM/Doamin_2_LV
[root@localhost ~]#mkdir /mnt/lvm;mount /dev/Xen_DomainLVM/Doamin_2_LV /mnt/lvm
[root@localhost ~]# mkfs -t ext4 /dev/Xen_DomainLVM/Domain_1_LV
[root@localhost ~]# mount /dev/Xen_DomainLVM/Domain_1_LVM /mnt/lvm2
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G 2.6G 14G 16% /
tmpfs 81M 0 81M 0% /dev/shm
/dev/sda1 283M 69M 195M 27% /boot
/dev/mapper/Xen_DomainLVM-Doamin_2_LV 380M 2.3M 354M 1% /mnt/lvm
/dev/mapper/Xen_DomainLVM-Domain_1_LVM 380M 2.3M 354M 1% /mnt/lvm2
下面才是开始正式的工作,上面浪费这么多时间写一些废话,一是方便哪些对相关知识不太熟悉的,还有就是自己加深一下记忆,好久没有用过了,也就是当初学了一下相关的知识,没有真正的用到过。废话不多说正式开始Xen 的guest OS的安装,guest OS的无法直接使用CD安装盘来安装,那么就只能用网络安装,具体实现方式有httpd,nfs,ftp等,我们这里介绍两种方法httpd和nfs,为什么浪费时间使用两种方法,而不是直接使用一种方法也是帮助自己回忆一下相关的知识,这里我们先使用nfs实现Domain1的安装部署,我这里使用的Tinycore的Linux系统,应为是在VMware虚拟化安装Centos6.5,然后又在Centos上虚拟化安装一个操作系统,对硬件的占用会比较大,所以这里就只是实现Xen的guest OS的安装和简单的实验,不在虚拟机上实现其他大型的服务啦。
第一步是nfs的安装,默认系统都会安装nfs服务,当然如果没有安装使用过yum安装也是非常省事快捷的。
1、NFS简介
NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。
[root@localhost ~]# yum install portmap nfs-utils
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
Setting up Install Process
Package rpcbind-0.2.0-11.el6.x86_64 already installed and latest version
Package 1:nfs-utils-1.2.3-54.el6.x86_64 already installed and latest version
Nothing to do
#这里我是最新的版本我就不在进行安装了
[root@localhost ~]# /etc/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
#关闭防火墙
[root@localhost ~]# setenforce 1
启动NFS守护进程
nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;
mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。
portmap:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。
下面进行操作,首先是启动nfs服务
[root@localhost ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
其次是配置NFS服务,NFS的常用目录
/etc/exports NFS服务的主要配置文件
/usr/sbin/exportfs NFS服务的管理命令
/usr/sbin/showmount 客户端的查看命令
/var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值
/var/lib/nfs/xtab 记录曾经登录过的客户端信息
NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。
[root@localhost ~]# mount -o loop -t iso9660 /dev/cdrom /mnt/cdrom
[root@localhost ~]# echo '/mnt/cdrom/ 192.168.71.0/24(rw)' >> /etc/exports
#将所要挂载镜像文件路劲写入到nfs的配置文件
[root@localhost ~]# mount 192.168.71.130:/mnt/cdrom /tmp/cdrom
#挂载镜像文件
[root@localhost ~]# mount |grep nfs
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
192.168.71.130:/mnt/cdrom on /tmp/cdrom type nfs (rw,vers=4,addr=192.168.71.130,