全部博文(163)
分类: LINUX
2010-03-19 11:00:22
创建我们所需的镜像
上面我们已经根据安装了一个所需的虚机,但是你可以发现它的硬盘是xvda的,而且整个镜像是不可以挂载的,我们所需的镜像是ext3文件系统,可以挂载的,而且根分区要挂载在sda1。显而易见,我们还需要进一步加工,呵呵。
(1)创建一个ext3文件系统镜像,并将其挂载到虚机上
[root@cloud /]# dd if=/dev/zero of=/images/cloud-myself bs=
[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-
注:之所以用vmlinuz-
[root@cloud boot]#umount /mnt
[root@cloud boot]#cp /boot/ vmlinuz-
[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-
ramdisk="/boot/vmlinuz-
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-
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-
2009-05-31 19:24:43,713 WARN groupauthz.Group [main,reloadRightsFile:207] TESTING -- Authorization Group #1: Loaded group definition from '/usr/local/globus-
2009-05-31 19:24:43,717 WARN groupauthz.Group [main,reloadDNFile:168] Authorization Group #2: Loaded 2 identities from '/usr/local/globus-
2009-05-31 19:24:43,719 WARN groupauthz.Group [main,reloadRightsFile:207] DEVELOPMENT -- Authorization Group #2: Loaded group definition from '/usr/local/globus-
2009-05-31 19:24:43,732 WARN groupauthz.Group [main,reloadDNFile:168] Authorization Group #3: Loaded 2 identities from '/usr/local/globus-
2009-05-31 19:24:43,735 WARN groupauthz.Group [main,reloadRightsFile:207] SCIENCE -- Authorization Group #3: Loaded group definition from '/usr/local/globus-
2009-05-31 19:24:43,741 WARN groupauthz.Group [main,reloadDNFile:168] Authorization Group #4: Loaded 3 identities from '/usr/local/globus-
2009-05-31 19:24:43,743 WARN groupauthz.Group [main,reloadRightsFile:207] SUPERUSER -- Authorization Group #4: Loaded group definition from '/usr/local/globus-
2009-05-31 19:24:43,958 WARN defaults.ResourcepoolUtil [main,loadResourcepools:480] not a file: '/usr/local/globus-
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-
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-
2009-05-31 19:24:46,722 INFO dbdefault.DelayedAccountingFileLogger [main,initFile:181] accounting current-reservations file created: '/usr/local/globus-
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:
With the following services:
[1]: AdminService
[2]: AuthzCalloutTestService
[3]: ContainerRegistryEntryService
[4]: ContainerRegistryService
[5]: CounterService
[6]: ElasticNimbusService
[7]: JWSCoreVersion
[8]: ManagementService
[9]: NotificationConsumerFactoryService
[10]: NotificationConsumerService
[11]: NotificationTestService
[12]: PersistenceTestSubscriptionManager
[13]: SampleAuthzService
[14]: SecureCounterService
[15]: SecurityTestService
[16]: ShutdownService
[17]: SubscriptionManagerService
[18]: TestAuthzService
[19]: TestRPCService
[20]: TestService
[21]: TestServiceRequest
[22]: TestServiceWrongWSDL
[23]: Version
[24]: WidgetNotificationService
[25]: WidgetService
[26]: WorkspaceContextBroker
[27]: WorkspaceEnsembleService
[28]: WorkspaceFactoryService
[29]: WorkspaceGroupService
[30]: WorkspaceService
[31]: WorkspaceStatusService
[32]: 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/
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
[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:
再次执行 这部分无妨~~
[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:
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:
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