我这的实验环境原本是用了2台 XenServer6.0(xenserver1 - 192.168.1.233, xenserver2 -192.168.1.232),1台 CentOS 做NFS ISO SR 和 NFS SR存储虚拟硬盘文件,同时兼Linux 远程安装服务器(含 apache,dhcp,tftp和Centos安装文件)。为了省一台服务器,打算在其中的一台XenServer(xenserver1)上安装 NFS和远程安装服务。实际过程是先试验的NFS,但结果发现分区是首先要解决的问题,所以先介绍分区部分。

参考:《Citrix虚拟化实战:Xenserver共享NFS》
2010-01-27 14:32 | 699次阅读 | 【已有0条评论】发表评论
CSDN 云计算频道 | 作者:刘文君 | 收藏到我的网摘
地址: http://cloud.csdn.net/a/20100127/258587.html


首先确保xenserver1是独立服务器。如果xenserver1在某个XenServer资源池(pool)中,就必须脱离出来。脱离pool之前,确保export所有的虚拟机,fileformat建议选xva。
[plain] view plain copy
  1. [root@xenserver1 ~]# df  
  2. Filesystem          1K-blocks     Used Available Use% Mounted on  
  3. /dev/sda1             4127440  1774972  2142804  46% /  
  4. none                   388584        0   388584   0% /dev/shm  
  5. /opt/xensource/packages/iso/XenCenter.iso  
  6.                         44414    44414        0 100% /var/xen/xc-install  
  7. [root@xenserver1 ~]#  

主分区只剩下2G的空间,这就必须删除XenServer6安装时创建的虚拟机存储空间。(折腾了一番后发现,其实还是重装系统简单。

[plain] view plain copy
  1. [root@xenserver1 ~]# xe sr-list type=lvm  
  2.   
  3. uuid (RO)               :0ff3d613-2a48-2173-328b-4ff6bd746fa1   【复制这个本地存储SR的UUID】  
  4.          name-label ( RW): Local storage  
  5.    name-description ( RW):  
  6.                host ( RO): xenserver1  
  7.                type ( RO): lvm  
  8.        content-type ( RO): user  
  9.   
  10. [root@xenserver1 ~]#  
  11. [root@xenserver1 ~]# xe pbd-listsr-uuid=0ff3d613-2a48-2173-328b-4ff6bd746fa1   【本地存储SR的UUID】  
  12.   
  13. uuid (RO)                 :d6ff6d4d-6e2b-bc69-fdd0-512d7c5e23ed                【物理存储块pbd的UUID】  
  14.             host-uuid ( RO): cacddab0-b05c-42ea-b324-131ca428f914  
  15.               sr-uuid ( RO): 0ff3d613-2a48-2173-328b-4ff6bd746fa1  
  16.         device-config (MRO): device:/dev/disk/by-id/scsi-SATA_WDC_WD3200AAKS-_WD-WMAV2W528467-part3  
  17.    currently-attached ( RO): true  
  18.   
  19.   
  20. [root@xenserver1 ~]#  
  21. [root@xenserver1 ~]# xe pbd-unpluguuid=d6ff6d4d-6e2b-bc69-fdd0-512d7c5e23ed   【断开本地存储的SR】  
  22. [root@xenserver1 ~]#  
  23. [root@xenserver1 ~]# xe sr-destroyuuid=0ff3d613-2a48-2173-328b-4ff6bd746fa1   【移除本地存储的SR】  
  24. [root@xenserver1 ~]#  
  25. [root@xenserver1 ~]# xe sr-list type=lvm  
  26. [root@xenserver1 ~]# 【已经没有结果输出了。】  
  27. [root@xenserver1 ~]#  
  28. [root@xenserver1 ~]# fdisk -l  
  29.   
  30. WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! Theutil fdisk doesn't support GPT. Use GNU Parted.  
  31.   
  32. Disk /dev/sda: 320.0 GB, 320072933376 bytes  
  33. 256 heads, 63 sectors/track, 38761 cylinders  
  34. Units = cylinders of 16128 * 512 = 8257536 bytes  
  35.   
  36.    DeviceBoot     Start        End     Blocks   Id System  
  37. /dev/sda1  *          1      38762  312571223+  ee  EFI GPT  
  38. [root@xenserver1 ~]#  

这段意思是fdisk无法修改此 系统的分区表,应该用 Parted。系统内没有parted软件包,yum install parted 提示No package parted available. 看来还需要解决yum.repos,以便以后方便安装其他软件包。这样:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# ls /etc/yum.repos.d  
  2. CentOS-Base.repo CentOS-Media.repo  Citrix.repo  
  3. [root@xenserver1-NEW ~]#  
  4. [root@xenserver1-NEW ~]# vi /etc/yum.repos.d/CentOS-Base.repo  
  5. # CentOS-Base.repo  
  6. #  
  7. # The mirror system uses the connecting IP address of the clientand the  
  8. # update status of each mirror to pick mirrors that are updated toand  
  9. # geographically close to the client.  You shoulduse this for CentOS updates  
  10. # unless you are manually picking other mirrors.  
  11. #  
  12. # If the mirrorlist= does not work for you, as a fall back you cantry the  
  13. # remarked out baseurl= line instead.  
  14. #  
  15. #  
  16.   
  17. [base]  
  18. name=CentOS-$releasever - Base  
  19. mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os  
  20. #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/  
  21. gpgcheck=1  
  22. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5  
  23. exclude=kernel-xen*, *xen*  
  24. enabled=0  
  25.   
  26. #released updates  
  27. .......  
  28. .......  
将[base]段内的 enabled=0 改为 enabled=1,然后安装parted。

但是,接着用yum install parted能找到软件包,却无法下载。DNS设置不知道跑哪去了,临时改一下DNS:

[plain] view plain copy
  1. [root@xenserver1 ~]# vi /etc/resolv.conf  
  2. nameserver 202.106.196.115  
  3.   
  4. [root@xenserver1 ~]# yum install parted  
  5. .........  
  6. Installed:  
  7.   parted.i3860:1.8.1-28.el5                                                     
  8. Complete!  

parted安装好了,试着改分区。 * * *注意:以下操作不可模仿,结果是灾难性的!! * * *

[plain] view plain copy
  1. [root@xenserver1 ~]# parted  
  2. GNU Parted 1.8.1  
  3. Using /dev/sda  
  4. Welcome to GNU Parted! Type 'help' to view a list ofcommands.  
  5. (parted) print     【查看分区】  
  6.   
  7. Model: ATA WDC WD3200AAKS-7 (scsi)  
  8. Disk /dev/sda: 320GB  
  9. Sector size (logical/physical): 512B/512B  
  10. Partition Table: gpt  
  11.   
  12. Number  Start  End    Size    Filesystem  Name  Flags  
  13.  1     1049kB  4295MB 4294MB ext3                     
  14.  2     4296MB  8590MB 4294MB                           
  15.  3     8591MB  320GB  311GB                     lvm    
  16.   
  17. (parted) mkfs      【制作文件系统】  
  18. Warning: The existing file system will be destroyed and all data onthe     
  19. partition will be lost. Do you want to continue?  
  20. Yes/No? y  
  21. Partition number?3    【输入3】                                                   
  22. File system?  [ext2]? 【回车】  
  23. (parted) print        【再次查看分区】          
  24.   
  25. Model: ATA WDC WD3200AAKS-7 (scsi)  
  26. Disk /dev/sda: 320GB  
  27. Sector size (logical/physical): 512B/512B  
  28. Partition Table: gpt  
  29.   
  30. Number  Start  End    Size    Filesystem  Name  Flags  
  31.  1     1049kB  4295MB 4294MB ext3                     
  32.  2     4296MB  8590MB 4294MB                           
  33.  3     8591MB  320GB  311GB  ext2              lvm    
  34.   
  35. (parted) quit      【退出】     
  36.   
  37. 【修改 /etc/fstab 】  
  38. [root@xenserver1 ~]# vi /etc/fstab  
  39. /dev/sda3  /nfs     ext2  defaults   0 0  
结果,系统无法启动了,分区3是不能轻易破坏的。或许是不会用parted,哪位大侠了解parted请不吝赐教。

* * *注意:以上操作不可模仿,结果是灾难性的!! * * *

 

现在重新安装XenServer,并且选择不创建VM的存储空间,有进展了。见图,在 Virtual Machine Storage 设置里,敲空格去掉sda前面的*号

(博客注册时间还不够一周,上不了图哭



重新安装好了,hostname是 xenserver1-NEW ,再下载Parted,看看分区:
[plain] view plain copy
  1. [root@xenserver1-NEW /]# parted /dev/sda print  
  2.   
  3. Model: ATA WDC WD3200AAKS-7 (scsi)  
  4. Disk /dev/sda: 320GB  
  5. Sector size (logical/physical): 512B/512B  
  6. Partition Table: gpt  
  7.   
  8. Number  Start  End    Size    Filesystem  Name  Flags  
  9.  1     1049kB  4295MB 4294MB ext3                     
  10.  2     4296MB  8590MB 4294MB                           
  11.  3     8591MB  320GB  311GB  ext2              lvm    
  12.   
  13. Information: Don't forget to update /etc/fstab, ifnecessary.   

可以看到,分区默认就是ext2了,挂载一下试试。

[plain] view plain copy
  1. [root@xenserver1-NEW /]# mkdir /newvol  
  2. [root@xenserver1-NEW /]# mount -t auto /dev/sda3 /newvol  
  3. [root@xenserver1-NEW /]# ls -l -a /newvol  
  4. total 56  
  5. drwxr-xr-x  3 root root  4096 Dec20 19:25 .  
  6. drwxr-xr-x 23 root root  4096 Dec 20 19:47..  
  7. drwxr-xr-x  2 root root 49152 Dec 20 19:25lost+found  
  8. [root@xenserver1-NEW /]#  

挂载成功了!

修改 /etc/fstab,添加这一行:
[plain] view plain copy
  1. [root@xenserver1-NEW ~]# vi /etc/fstab  
  2. /dev/sda3 /newvol   ext2  defaults   0 0  

重启:

[html] view plain copy
  1. [root@xenserver1-NEW ~]# shutdown -r now  

准备NFS要用的目录:
[html] view plain copy
  1. [root@xenserver1-NEW /]# mkdir/newvol/iso   #做ISO SR  
  2. [root@xenserver1-NEW /]# mkdir/newvol/vm    #保存虚拟硬盘文件  
  3. [root@xenserver1-NEW ~]# ls -l -a /newvol  
  4. total 64  
  5. drwxr-xr-x  5 root root  4096 Dec20 20:39 .  
  6. drwxr-xr-x 25 root root  4096 Dec 20 20:46..  
  7. drwxr-xr-x  2 root root  4096 Dec20 20:39 iso  
  8. drwxr-xr-x  2 root root 49152 Dec 20 19:25lost+found  
  9. drwxr-xr-x  2 root root  4096 Dec20 20:39 vm  
大功告成!下面可以安装NFS了。

顺便比较一下xenserver2 能不能挂载sda3:
[html] view plain copy
  1. [root@xenserver2 ~]# mount -t auto /dev/sda3 /mnt  
  2. mount: you must specify the filesystem type  

失败!带有Virtual Machine Storage XenServer 无法直接挂载 sda3。

 

XenServer6.0 是基于 Redhat Enterprise Linux / CentOS 定制的XEN虚拟化系统,本身其实就是Linux。那么Linux上可用的服务XenServer6也应该行,那就试试吧,过程如下。

验证服务是否存在:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# service nfs status  
  2. rpc.mountd is stopped  
  3. nfsd is stopped  
  4. [root@xenserver1-NEW ~]#  
  5. [root@xenserver1-NEW ~]# service portmap status  
  6. portmap (pid 5584) is running...  
  7. [root@xenserver1-NEW ~]#  

设置nfs,portmap自动启动:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# chkconfig --level 3 nfs on  
  2. [root@xenserver1-NEW ~]# chkconfig --level 3 portmap on  
  3. [root@xenserver1-NEW ~]#  


将共享的目录写到exports文件中,保存虚拟磁盘的目录使用async (异步方式)是考虑提高性能,会牺牲一些可靠性。

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# vi /etc/exports  
  2. /newvol/iso 192.168.1.0/24(ro,no_root_squash,sync)  
  3. /newvol/vm 192.168.1.232(rw,no_root_squash,async)  
  4. /newvol/vm 192.168.1.233(rw,no_root_squash,async)  

输出共享目录:
[plain] view plain copy
  1. [root@xenserver1-NEW ~]# exportfs -rv  
  2. exporting 192.168.1.0/24:/newvol/iso  
  3. exporting 192.168.1.232:/newvol/vm  
  4. exporting 192.168.1.233:/newvol/vm  
  5. [root@xenserver1-NEW ~]#  

重启nfs,portmap:
[plain] view plain copy
  1. [root@xenserver1-NEW ~]# service nfs restart  
  2. [root@xenserver1-NEW ~]# service portmap restart  


查看端口号:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# rpcinfo -p  
  2.    program vers proto   port  
  3.     100000    2   tcp    111  portmapper  
  4.     100000    2   udp    111  portmapper  
  5.     100021    1   udp  38994  nlockmgr  
  6.     100021    3   udp  38994  nlockmgr  
  7.     100021    4   udp  38994  nlockmgr  
  8.     100021    1   tcp  59675  nlockmgr  
  9.     100021    3   tcp  59675  nlockmgr  
  10.     100021    4   tcp  59675  nlockmgr  
  11.     100003    2   udp   2049  nfs  
  12.     100003    3   udp   2049  nfs  
  13.     100003    4   udp   2049  nfs  
  14.     100003    2   tcp   2049  nfs  
  15.     100003    3   tcp   2049  nfs  
  16.     100003    4   tcp   2049  nfs  
  17.     100005    1   udp    688  mountd  
  18.     100005    1   tcp    691  mountd  
  19.     100005    2   udp    688  mountd  
  20.     100005    2   tcp    691  mountd  
  21.     100005    3   udp    688  mountd  
  22.     100005    3   tcp    691  mountd  
  23. [root@xenserver1-NEW ~]#    
rquotad服务 不知为何没有出现疑问,但是不影响。


在/etc/services结尾增加两行:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# vi /etc/services  
  2. mountd          688/udp                         # nfs mountd  
  3. mountd          691/tcp                         # nfs mountd  

添加iptables防火墙规则:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# vi /etc/sysconfig/iptables  
  2. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT  
  3. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT  
  4. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 691 -j ACCEPT  
  5. -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT  
  6. -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT  
  7. -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 688 -j ACCEPT  


最好重启一下服务器:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# shutdown -r now  

再次验证nfs,portmap服务已经启动,查看服务端口:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# service nfs status  
  2. rpc.mountd (pid 6334) is running...  
  3. nfsd (pid 6331 6330 6329 6328 6327 6326 6325 6324) is running...  
  4. [root@xenserver1-NEW ~]#  
  5. [root@xenserver1-NEW ~]# service portmap status  
  6. portmap (pid 5580) is running...  
  7. [root@xenserver1-NEW ~]#  
  8. [root@xenserver1-NEW ~]# rpcinfo -p  
  9.    program vers proto   port  
  10.     100000    2   tcp    111  portmapper  
  11.     100000    2   udp    111  portmapper  
  12.     100024    1   udp    600  status  
  13.     100024    1   tcp    600  status  
  14.     100003    2   udp   2049  nfs  
  15.     100003    3   udp   2049  nfs  
  16.     100003    4   udp   2049  nfs  
  17.     100021    1   udp  35545  nlockmgr  
  18.     100021    3   udp  35545  nlockmgr  
  19.     100021    4   udp  35545  nlockmgr  
  20.     100021    1   tcp  46506  nlockmgr  
  21.     100021    3   tcp  46506  nlockmgr  
  22.     100021    4   tcp  46506  nlockmgr  
  23.     100003    2   tcp   2049  nfs  
  24.     100003    3   tcp   2049  nfs  
  25.     100003    4   tcp   2049  nfs  
  26.     100005    1   udp    688  mountd  
  27.     100005    1   tcp    691  mountd  
  28.     100005    2   udp    688  mountd  
  29.     100005    2   tcp    691  mountd  
  30.     100005    3   udp    688  mountd  
  31.     100005    3   tcp    691  mountd  
  32.   
  33. [root@xenserver1-NEW ~]#  

验证共享目录:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# showmount -e 127.0.0.1  
  2. Export list for 127.0.0.1:  
  3. /newvol/vm  192.168.1.233,192.168.1.232  
  4. /newvol/iso 192.168.1.0/24  
  5. [root@xenserver1-NEW ~]#  


但是。。。

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# showmount -e 192.168.1.233  
  2. mount clntudp_create: RPC: Port mapper failure - RPC: Unable to receive  
  3. [root@xenserver1-NEW ~]#  

也就是说,nfs只接受本机连接请求。百度了,没找到合适的答案;谷歌了,哎,有了。
《Citrix虚拟化实战:Xenserver共享NFS》
2010-01-27 14:32 | 699次阅读 | 已有0条评论发表评论
CSDN 云计算频道 | 作者:刘文君 | 收藏到我的网摘
地址:http://cloud.csdn.net/a/20100127/258587.html


其中提到
cat /etc/sysconfig/network
NETWORKING=yes
PMAP_ARGS=-l     
这个配置说明:portmap只监听本地回环,注释掉即可

真是及时雨,好吧,看看:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# cat /etc/sysconfig/network  
  2. NETWORKING=yes  
  3. HOSTNAME=xenserver  
  4. DNSDEV=xenbr0  
  5. GATEWAYDEV=xenbr0  
  6. [root@xenserver1-NEW ~]#  


没有文中提到的PMAP_ARGS=-l呀,我们来找一找:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# grep "PMAP_ARGS=-l" /etc -R  
  2. /etc/sysconfig/portmap:PMAP_ARGS=-l  
  3. [root@xenserver1-NEW ~]#  


找到了,在配置文件 /etc/sysconfig/portmap 里,把PMAP_ARGS=-l 注释掉。

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# vi /etc/sysconfig/portmap  
  2. #PMAP_ARGS=-l  


重启nfs,portmap:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# service nfs restart  
  2. Shutting down NFS mountd:                                  [  OK  ]  
  3. Shutting down NFS daemon:                                  [  OK  ]  
  4. Shutting down NFS services:                                [  OK  ]  
  5. Starting NFS services:                                     [  OK  ]  
  6. Starting NFS daemon:                                       [  OK  ]  
  7. Starting NFS mountd:                                       [  OK  ]  
  8. [root@xenserver1-NEW ~]#  
  9. [root@xenserver1-NEW ~]# service portmap restart  
  10. Stopping portmap:                                          [  OK  ]  
  11. Starting portmap:                                          [  OK  ]  
  12. [root@xenserver1-NEW ~]#  


再验证共享目录:

[plain] view plain copy
  1. [root@xenserver1-NEW ~]# showmount -e 127.0.0.1  
  2. mount clntudp_create: RPC: Program not registered  
  3.   
  4. [root@xenserver1-NEW ~]# showmount -e 192.168.1.233  
  5. mount clntudp_create: RPC: Program not registered  

???
再重启一次 nfs,portmap 服务:
[plain] view plain copy
  1. [root@xenserver1-NEW ~]# service nfs restart  
  2. [root@xenserver1-NEW ~]# service portmap restart  
  3.   
  4. [root@xenserver1-NEW ~]# showmount -e 192.168.1.233  
  5. Export list for 192.168.1.233:  
  6. /newvol/vm  192.168.1.233,192.168.1.232  
  7. /newvol/iso 192.168.1.0/24  
  8. [root@xenserver1-NEW ~]#  

可以了!

现在从 xenserver2测试一下nfs连接。注意,测试的客户机也必须启动pormap服务,否则会收到mount.nfs: Input/output error,默认是启动的。

[plain] view plain copy
  1. [root@xenserver2 ~]# mkdir /mnt/nfsiso  
  2. [root@xenserver2 ~]# mkdir /mnt/nfsvm  
  3. [root@xenserver2 ~]# mount -t nfs 192.168.1.233:/newvol/iso /mnt/nfsiso  
  4. [root@xenserver2 ~]# mount -t nfs 192.168.1.233:/newvol/vm /mnt/nfsvm  

测试了一下,/mnt/nfsiso是只读的,/mnt/nfsvm是读写的。

从客户机卸载已挂载的nfs共享:
[plain] view plain copy
  1. [root@xenserver2 ~]# umount /mnt/nfsiso  
  2. [root@xenserver2 ~]# umount /mnt/nfsvm  

再重启服务器一次吧,重启后测试一切正常。

至此,XenServer NFS安装完成了。

重新将xenserver1 加入到资源池中,为资源池指定NFS ISO library(192.168.1.233:/newvol/iso), NFS virtual disk storage(192.168.1.233:/newvol/vm /mnt/nfsvm),并且成功把xenserver2上的虚拟机移动到NFS virtual disk storage 中。 得意

========================================================
排错过程中,找到一个办法是用nmap验证端口状态:
[plain] view plain copy
  1. [root@xenserver ]# yum install nmap  
  2. [root@xenserver ]#  

用nmap验证端口状态:
[plain] view plain copy
  1. [root@xenserver1-NEW ~]# nmap 192.168.1.233  
  2.   
  3. Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2011-12-20 15:48 CST  
  4. Interesting ports on 192.168.1.233:  
  5. Not shown: 1673 closed ports  
  6. PORT     STATE SERVICE  
  7. 22/tcp   open  ssh  
  8. 80/tcp   open  http  
  9. 111/tcp  open  rpcbind  
  10. 443/tcp  open  https  
  11. 600/tcp  open  ipcserver  
  12. 690/tcp  open  unknown  
  13. 2049/tcp open  nfs  
  14.   
  15. Nmap finished: 1 IP address (1 host up) scanned in 1.284 seconds  
  16. [root@xenserver1-NEW ~]#  
有111/tcp  open  rpcbind,就说明portmap可以对外服务了,而更改/etc/sysconfig/portmap之前,是没有111/tcp  open  rpcbind这条的。

========================================================

 

 

转载自:

http://blog.csdn.net/panblack/article/details/7100694