Nimbus环境搭建(六)
时间:2010-03-19 来源:benxiong
3. 创建我们所需的镜像
上面我们已经根据安装了一个所需的虚机,但是你可以发现它的硬盘是xvda的,而且整个镜像是不可以挂载的,我们所需的镜像是ext3文件系统,可以挂载的,而且根分区要挂载在sda1。显而易见,我们还需要进一步加工,呵呵。
(1)创建一个ext3文件系统镜像,并将其挂载到虚机上
[root@cloud /]# dd if=/dev/zero of=/images/cloud-myself bs=1M count=2500
[root@cloud /]# mkfs.ext3 /images/cloud-myself
更改上面创建虚机的配置文件,一般在/etc/xen/下,配置文件名为hrwang-rhel5,更改如下这行:
disk = [ "tap:aio:/images/cloud1.img,xvda,w", "tap:aio:/images/cloud-myself,xvdb,w" ]
好了,可以使用xm create hrwang-rhel5启动虚机,然后用xm console hrwang-rhel5显示系统操作界面。
(2)登入虚机,进行拷贝操作
登陆到虚机内,执行挂载命令
[root@localhost /]# mount –t ext3 /dev/xvdb /media
[root@localhost /]# cp –ax /{root,dev,var,etc,usr,bin,sbin,lib} /media
[root@localhost /]# mkdir /media/{proc,sys,home,tmp,selinux}
[root@localhost /]#mkdir /media/root/.ssh nimbus启动虚机时需要
[root@localhost /]#vi /media/etc/fstab 将根分区改为如下,并注释掉swap那行
/dev/sda1 / ext3 defaults 1 1
[root@localhost /]#vi /media/etc/selinux/config 关闭selinux,否则无法登陆
SELINUX=disabled
[root@localhost /]# umount /media
注:因为我们建立虚机时,主机名和IP就是dhcp分配的,所以这里不需要改了。
好了,到这所需的镜像就简单创建完了。
(3)创建新镜像的initrd文件及终端
上面新创建的镜像文件是启动不了的,因为缺少虚拟磁盘映像文件。我们在VMM节点上创建它
[root@cloud /]#mount –o loop /images/cloud-myself /mnt
[root@cloud /]#cd /boot
[root@cloud boot]#mkinitrd -v -f --fstab /mnt/etc/fstab --with xenblk --with xennet --preload xenblk --preload xennet vmlinuz-2.6.18-53.el5xen-initrd `uname -r`
注:之所以用vmlinuz-2.6.18-53.el5xen-initrd这样的名字,是因为在/opt/workspace/worksp.conf文件里指定了,initrd的名字如果是kernel-initrd的形式则自动被使用。我们这里kernel的名字为vmlinuz-2.6.18-53.el5xen。呵呵,明白了吧。
[root@cloud boot]#umount /mnt
[root@cloud boot]#cp /boot/ vmlinuz-2.6.18-53.el5xen-initrd /opt/workspace/images/
[root@cloud boot]#vi /etc/inittab
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav 添加虚机使用的终端
[root@cloud boot]#init q 是/etc/inittab设定立刻生效
[root@cloud boot]#ln –s /dev/console /dev/xvc0
(4)测试新创建的镜像
在我们使用它之前,先来测试一下。
[root@cloud boot]#cd /etc/xen
[root@cloud boot]#vi cloud-myself 添加如下内容
kernel="/boot/vmlinuz-2.6.18-53.el5xen"
ramdisk="/boot/vmlinuz-2.6.18-53.el5xen-initrd"
name = "cloud-myself"
memory = 500
vcpus = 1
disk = [ "tap:aio:/images/cloud-myself,sda1,w" ]
root = "/dev/sda1 ro"
vif = [ "mac=00:16:3e:5b:86:be,bridge=xenbr0" ]
然后可以使用xm create cloud-myself启动虚机,并使用xm console cloud-myself登陆虚机。
(5) 添加库文件
上步启动过程中会提示一大堆无法找到某库文件的内容,反正虚机和宿主机都是一样的操作系统,干脆将宿主机上的库文件全部拷过去。
[root@cloud /]#mount –o loop /images/cloud-myself /mnt
[root@cloud /]#rm –rf /mnt/lib/* 删除原有的库文件
[root@cloud /]#cp –ax /lib/* /mnt/lib/ 拷贝所有的宿主机库文件
[root@cloud /]#cp –ax /usr/src/kernels /mnt/usr/src/ 拷贝内核文件
[root@cloud /]#umount /mnt
好了,再重新启动试试,应该没问题了。
上步我们已经在VMM节点上创建了半虚拟化的虚机,现在我们将镜像文件拷贝到nimbus client端来进行测试:
(1)在VMM上执行:
[root@cloud images]# scp /images/cloud1.img nimbus@wang135:/home/nimbus
(2)在nimbus server上以globus用户启动起来nimbus:
[globus@wang136 ~]$ globus-start-container
2009-05-31 19:24:43,116 INFO defaults.DefaultAssociationAdapter [main,validate:191] MAC prefix: "A2:AA:BB"
2009-05-31 19:24:43,192 WARN defaults.Util [main,loadDirectory:228] not a file: '/usr/local/globus-4.0.8/etc/nimbus/workspace-service/network-pools/.backups'
2009-05-31 19:24:43,417 INFO defaults.DefaultAssociationAdapter [main,validate:243] Network 'public' loaded with 5 addresses.
2009-05-31 19:24:43,421 INFO defaults.DefaultAssociationAdapter [main,validate:243] Network 'private1' loaded with 5 addresses.
2009-05-31 19:24:43,705 WARN groupauthz.Group [main,reloadDNFile:168] Authorization Group #1: Loaded 2 identities from '/usr/local/globus-4.0.8/etc/nimbus/workspace-service/group-authz/group01.txt'
2009-05-31 19:24:43,713 WARN groupauthz.Group [main,reloadRightsFile:207] TESTING -- Authorization Group #1: Loaded group definition from '/usr/local/globus-4.0.8/etc/nimbus/workspace-service/group-authz/group01.properties'
2009-05-31 19:24:43,717 WARN groupauthz.Group [main,reloadDNFile:168] Authorization Group #2: Loaded 2 identities from '/usr/local/globus-4.0.8/etc/nimbus/workspace-service/group-authz/group02.txt'
2009-05-31 19:24:43,719 WARN groupauthz.Group [main,reloadRightsFile:207] DEVELOPMENT -- Authorization Group #2: Loaded group definition from '/usr/local/globus-4.0.8/etc/nimbus/workspace-service/group-authz/group02.properties'
2009-05-31 19:24:43,732 WARN groupauthz.Group [main,reloadDNFile:168] Authorization Group #3: Loaded 2 identities from '/usr/local/globus-4.0.8/etc/nimbus/workspace-service/group-authz/group03.txt'
2009-05-31 19:24:43,735 WARN groupauthz.Group [main,reloadRightsFile:207] SCIENCE -- Authorization Group #3: Loaded group definition from '/usr/local/globus-4.0.8/etc/nimbus/workspace-service/group-authz/group03.properties'
2009-05-31 19:24:43,741 WARN groupauthz.Group [main,reloadDNFile:168] Authorization Group #4: Loaded 3 identities from '/usr/local/globus-4.0.8/etc/nimbus/workspace-service/group-authz/group04.txt'
2009-05-31 19:24:43,743 WARN groupauthz.Group [main,reloadRightsFile:207] SUPERUSER -- Authorization Group #4: Loaded group definition from '/usr/local/globus-4.0.8/etc/nimbus/workspace-service/group-authz/group04.properties'
2009-05-31 19:24:43,958 WARN defaults.ResourcepoolUtil [main,loadResourcepools:480] not a file: '/usr/local/globus-4.0.8/etc/nimbus/workspace-service/vmm-pools/.backups'
2009-05-31 19:24:43,972 INFO defaults.DefaultSlotManagement [main,validate:501] Resource pool 'testpool' loaded with one VMM.
2009-05-31 19:24:44,273 INFO workspace.WorkspaceUtil [main,runCommand:148] [NIMBUS-EVENT]: //usr/local/globus-4.0.8/var/nimbus/msg-sinks/notifications
2009-05-31 19:24:45,853 INFO workspace.WorkspaceUtil [main,runCommand:225] [NIMBUS-EVENT]: Return code is 0
2009-05-31 19:24:46,314 INFO dbdefault.DelayedAccountingFileLogger [main,initFile:181] accounting event log file created: '/usr/local/globus-4.0.8/var/nimbus/accounting-events.txt'
2009-05-31 19:24:46,722 INFO dbdefault.DelayedAccountingFileLogger [main,initFile:181] accounting current-reservations file created: '/usr/local/globus-4.0.8/var/nimbus/current-reservations.txt'
2009-05-31 19:24:50,118 INFO impls.WorkspaceHomeImpl [main,recover_find_active_workspaces:579] No workspaces were persisted when the container last shut down
Starting SOAP server at: https://172.20.86.136:8443/wsrf/services/
With the following services:
[1]: https://172.20.86.136:8443/wsrf/services/AdminService
[2]: https://172.20.86.136:8443/wsrf/services/AuthzCalloutTestService
[3]: https://172.20.86.136:8443/wsrf/services/ContainerRegistryEntryService
[4]: https://172.20.86.136:8443/wsrf/services/ContainerRegistryService
[5]: https://172.20.86.136:8443/wsrf/services/CounterService
[6]: https://172.20.86.136:8443/wsrf/services/ElasticNimbusService
[7]: https://172.20.86.136:8443/wsrf/services/JWSCoreVersion
[8]: https://172.20.86.136:8443/wsrf/services/ManagementService
[9]: https://172.20.86.136:8443/wsrf/services/NotificationConsumerFactoryService
[10]: https://172.20.86.136:8443/wsrf/services/NotificationConsumerService
[11]: https://172.20.86.136:8443/wsrf/services/NotificationTestService
[12]: https://172.20.86.136:8443/wsrf/services/PersistenceTestSubscriptionManager
[13]: https://172.20.86.136:8443/wsrf/services/SampleAuthzService
[14]: https://172.20.86.136:8443/wsrf/services/SecureCounterService
[15]: https://172.20.86.136:8443/wsrf/services/SecurityTestService
[16]: https://172.20.86.136:8443/wsrf/services/ShutdownService
[17]: https://172.20.86.136:8443/wsrf/services/SubscriptionManagerService
[18]: https://172.20.86.136:8443/wsrf/services/TestAuthzService
[19]: https://172.20.86.136:8443/wsrf/services/TestRPCService
[20]: https://172.20.86.136:8443/wsrf/services/TestService
[21]: https://172.20.86.136:8443/wsrf/services/TestServiceRequest
[22]: https://172.20.86.136:8443/wsrf/services/TestServiceWrongWSDL
[23]: https://172.20.86.136:8443/wsrf/services/Version
[24]: https://172.20.86.136:8443/wsrf/services/WidgetNotificationService
[25]: https://172.20.86.136:8443/wsrf/services/WidgetService
[26]: https://172.20.86.136:8443/wsrf/services/WorkspaceContextBroker
[27]: https://172.20.86.136:8443/wsrf/services/WorkspaceEnsembleService
[28]: https://172.20.86.136:8443/wsrf/services/WorkspaceFactoryService
[29]: https://172.20.86.136:8443/wsrf/services/WorkspaceGroupService
[30]: https://172.20.86.136:8443/wsrf/services/WorkspaceService
[31]: https://172.20.86.136:8443/wsrf/services/WorkspaceStatusService
[32]: https://172.20.86.136:8443/wsrf/services/gsi/AuthenticationService
(3)
传完后,我们到nimbus client上以nimbus用户来继续操作:
[nimbus@wang135 ~]$ ls –l
total 1553460
-rw-r--r-- 1 nimbus nimbus 1572864000 May 31 19:16 cloud1.img
drwxr-xr-x 7 nimbus nimbus 4096 Jan 10 03:53 nimbus-cloud-client-011
-rw-r--r-- 1 nimbus nimbus 16313736 May 25 19:23 nimbus-cloud-client-011.tar.gz
[nimbus@wang135 ~]$ ./nimbus-cloud-client-011/bin/cloud-client.sh --security 检查安全
Credential in use:
-Identity: '/O=Grid/OU=GlobusTest/OU=simpleCA-wang136.hrwang.com/OU=hrwang.com/CN=Hongrui Wang'
-Subject: 'O=Grid,OU=GlobusTest,OU=simpleCA-wang136.hrwang.com,OU=hrwang.com,CN=Hongrui Wang,CN=468276644'
-Issuer: 'O=Grid,OU=GlobusTest,OU=simpleCA-wang136.hrwang.com,OU=hrwang.com,CN=Hongrui Wang'
Trusted certificate path: /home/nimbus/nimbus-cloud-client-011/lib/certs
Found configured cloud CA: '/home/nimbus/nimbus-cloud-client-011/lib/certs/6045a439.0'
No warnings.
[nimbus@wang135 ~]$ ./nimbus-cloud-client-011/bin/cloud-client.sh --transfer --sourcefile /home/nimbus/cloud-myself 上传镜像
Transferring
- Source: file:////home/nimbus/cloud-myself
- Destination: gsiftp://wang136.hrwang.com:2811//cloud/d9383407/cloud-myself
Copy complete.
注:可以到nimbus server上验证一下是否存在:
[root@wang136 ~]# ls -lh /cloud/d9383407/
-rw-r--r-- 1 nimbus nimbus 1.5G Jun 5 18:45 cloud-myself
[nimbus@wang135 ~]$ ./nimbus-cloud-client-011/bin/cloud-client.sh --list 验证
[Image] 'cloud-myself' Read/write
Modified: Jun 05 @ 10:14 Size: 1572864000 bytes (~1500 MB)
(4)
[nimbus@wang135 ~]$ ./nimbus-cloud-client-011/bin/cloud-client.sh --run --name cloud-myself --hours 2
SSH public keyfile contained tilde:
- '~/.ssh/id_rsa.pub' --> '/home/nimbus/.ssh/id_rsa.pub'
Problem: SSH public key file does not exist or is not readable: '/home/nimbus/.ssh/id_rsa.pub'
See help (-h).
上面的错误是忘记生成id_rsa.pub文件,我们这样做:
[nimbus@wang135 ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nimbus/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/nimbus/.ssh/id_rsa.
Your public key has been saved in /home/nimbus/.ssh/id_rsa.pub.
The key fingerprint is:
c9:97:b4:d2:a1:fb:ce:00:ab:a5:c0:6f:9c:f2:06:31 [email protected]
再次执行 这部分无妨~~
[nimbus@wang135 bin]$ ./cloud-client.sh --delete --name cloud-myself
Deleting: gsiftp://wang136.hrwang.com:2811//cloud/d9383407/cloud-myself
Deleted.
[nimbus@wang135 bin]$ ./cloud-client.sh --transfer --sourcefile /home/nimbus/cloud-myself
Transferring
- Source: file:////home/nimbus/cloud-myself
- Destination: gsiftp://wang136.hrwang.com:2811//cloud/d9383407/cloud-myself
Copy complete.
[nimbus@wang135 bin]$ ./cloud-client.sh --run --name cloud-myself --hours 2
SSH public keyfile contained tilde:
- '~/.ssh/id_rsa.pub' --> '/home/nimbus/.ssh/id_rsa.pub'
Launching workspace.
Workspace Factory Service:
https://wang136.hrwang.com:8443/wsrf/services/WorkspaceFactoryService
Creating workspace "vm-034"... done.
IP address: 192.168.1.2
Hostname: client2
Start time: Fri Jun 05 18:48:17 CST 2009
Shutdown time: Fri Jun 05 20:48:17 CST 2009
Termination time: Fri Jun 05 20:58:17 CST 2009
Waiting for updates.
"vm-034" reached target state: Running
Running: 'vm-034'
[nimbus@wang135 bin]$ ./cloud-client.sh --run --name cloud-myself --hours 3 再启一个
SSH public keyfile contained tilde:
- '~/.ssh/id_rsa.pub' --> '/home/nimbus/.ssh/id_rsa.pub'
Launching workspace.
Workspace Factory Service:
https://wang136.hrwang.com:8443/wsrf/services/WorkspaceFactoryService
Creating workspace "vm-035"... done.
IP address: 192.168.1.3
Hostname: client3
Start time: Fri Jun 05 19:37:50 CST 2009
Shutdown time: Fri Jun 05 22:37:50 CST 2009
Termination time: Fri Jun 05 22:47:50 CST 2009
Waiting for updates.
"vm-035" reached target state: Running
Running: 'vm-035'
[nimbus@wang135 bin]$ ./cloud-client.sh –status 查看vm状态
Querying for ALL instances.
[*] - Workspace #33. 192.168.1.2 [ client2 ]
State: Running
Duration: 120 minutes.
Start time: Fri Jun 05 18:48:17 CST 2009
Shutdown time: Fri Jun 05 20:48:17 CST 2009
Termination time: Fri Jun 05 20:58:17 CST 2009
*Handle: vm-034
[*] - Workspace #34. 192.168.1.3 [ client3 ]
State: Running
Duration: 180 minutes.
Start time: Fri Jun 05 19:37:50 CST 2009
Shutdown time: Fri Jun 05 22:37:50 CST 2009
Termination time: Fri Jun 05 22:47:50 CST 2009
*Handle: vm-035