PERDHANAHOST:$6.95 256MB Xen VPS

perdhanahost

PERDHANAHOST 是家印度尼西亚服务商,主要面向国际市场,其创办人 Dhanank 还有一家 SoerabaiaNetworks 面向印度尼西亚本地市场。Dhanank 有多年的系统管理经验,他们提供的机房 SVTIX 在美国的 San Jose,对亚洲线路比较好。现在使用 PHVPS15OFF2011 优惠码可以得到 15% 的优惠,这款 MiniVPS-A 型号的 VPS 只要 5.90美元每月。对于想使用他们 VPS/服务器的新客户,他们甚至提供免费的迁移支持(free migration assistance)。VPS 配置如下:

256MB RAM
512MB Swap
15GB 硬盘
10mbit 不限流量
1 IP
6.95美元每月

没有服务器硬件配置信息。

创建新的 OpenStack Nova 实例类型

正在准备这篇博客的时候有位朋友刚好在 在 Ubuntu 上安装和配置 OpenStack Nova 里问到一个类似的问题:

koory – July 19th, 2011 10:18 am
vpsee你好!实例资源如何修改,实例默认启动内存都是512M,我想修改成1G,怎么操作?

OpenStack Nova 默认提供了一些虚拟机配置的实例类型,比如:

$ sudo nova-manage instance_type list
m1.medium: Memory: 4096MB, VCPUS: 2, Storage: 40GB, FlavorID: 3, Swap: 0GB, RXTX Quota: 0GB, RXTX Cap: 0MB
m1.large: Memory: 8192MB, VCPUS: 4, Storage: 80GB, FlavorID: 4, Swap: 0GB, RXTX Quota: 0GB, RXTX Cap: 0MB
m1.tiny: Memory: 512MB, VCPUS: 1, Storage: 0GB, FlavorID: 1, Swap: 0GB, RXTX Quota: 0GB, RXTX Cap: 0MB
m1.xlarge: Memory: 16384MB, VCPUS: 8, Storage: 160GB, FlavorID: 5, Swap: 0GB, RXTX Quota: 0GB, RXTX Cap: 0MB
m1.small: Memory: 2048MB, VCPUS: 1, Storage: 20GB, FlavorID: 2, Swap: 0GB, RXTX Quota: 0GB, RXTX Cap: 0MB

新建一个云实例(云虚拟机或云 VPS)的时候就从这些实例配置类型里面选择一个配置,然后以这个配置来启动云实例,这些默认的实例类型是固定的,内存、CPU、硬盘等参数都是固定的,默认只有5个类型:m1.small, m1.tiny, m1.medium, m1.large 和 m1.xlarge. 如果我们需要一个 256MB,硬盘 10GB,VCPU 1个的云实例怎么办呢?可以用 nova-manage instance_type create 创建一个新的实例类型,比如创建一个名字为 m1.xtiny 的新类型:

$ sudo nova-manage instance_type create m1.xtiny 256 1 10 0 0 0
m1.xtiny created

上面 256 1 10 0 0 0 这一串分别表示:内存,VCPU,硬盘大小,SWAP 大小,RXTX quotas 和 RXTX cap. 如果不记得这些参数的顺序的话,可以看看联机的 nova-manage instance_type create 帮助说明:

$ sudo nova-manage instance_type create
Possible wrong number of arguments supplied
instance_type create: Creates instance types / flavors
           arguments: name memory vcpus local_gb flavorid [swap] [rxtx_quota]
                      [rxtx_cap]

然后查看一下 m1.xtiny 是否创建成功:

$ sudo nova-manage instance_type list
...
m1.xtiny: Memory: 256MB, VCPUS: 1, Storage: 10GB, FlavorID: 0, Swap: 0GB, RXTX Quota: 0GB, RXTX Cap: 0MB
...

如果想删除刚刚创建的 m1.xtiny 也很容易:

$ sudo nova-manage instance_type delete m1.xtiny
m1.xtiny deleted

如何让 Git 使用 HTTP 代理服务器

因为我们的内部网络使用了代理,所以在 安装 OpenStack 基于 Web 的管理控制台 的时候有个小麻烦,我们的 http 代理服务器无法通过 git 协议下载 openstack-dashboard 所需的代码,也就是说可以 git clone https:// 这样克隆代码,但是不能使用 git 协议 git clone git://。糟糕的是在 openstack-dashboard/tools/pip-requires 里恰好用到了 git 协议,所以运行 openstack-dashboard 安装脚本的时候会因为网络无法连接 git:// 而中途失败。如何让 git 使用 http 代理服务器呢?

如果是 git clone http:// 或 git clone https:// 的话直接把代理服务器加到环境变量就可以了:

$ export http_proxy="http://username:[email protected]:3128/"
$ export https_proxy="http://username:[email protected]:3128/"

如果是 git clone git:// 的话麻烦一些(可能有的 git 源不提供 http/https 的方式),需要先安装 socat,然后创建一个叫做 gitproxy 的脚本并填上合适的服务器地址、端口号等,最后配置 git 使用 gitproxy 脚本:

$ sudo apt-get install socat

$ sudo vi /usr/bin/gitproxy
#!/bin/bash

PROXY=squid.vpsee.com
PROXYPORT=3128
PROXYAUTH=username:password
exec socat STDIO PROXY:$PROXY:$1:$2,proxyport=$PROXYPORT,proxyauth=$PROXYAUTH

$ sudo  chmod +x /usr/bin/gitproxy

$ git config --global core.gitproxy gitproxy

eleven2:$6.25 512MB Xen VPS

eleven2

eleven2 于2003年由两个设计师在一家星巴克咖啡店里创立(不是车库?:),公司在休斯顿,在 Phoenix, AZ, Dallas, TX, Asheville, NC 和 London England 等地方都有办公室和服务器。他们采用 Xen 虚拟技术和 onapp 商业云管理软件,大致看了一下 onapp 的价格,算了一下大概 50台四核服务器每月的价格是2100美元每月,而且 cloud 最低硬件要求比单独的 xen vps 架构要求多,比如:OnApp 要求至少要5台服务器才能工作,1 x Control Panel Server + 2 x Hypervisor servers + 1 x Data store + 1 x Backup store。所以使用 OnApp 产品的服务商不太适合走低价路线。Anyway,他们家现在的 Cloud VPS 正在优惠中,使用优惠码 cs10050off 以后原价12.5刀的 VPS 只要 6.25 美元,而且是 512MB 的 Xen Cloud VPS 啊~~看了一下他们家的博客,都是些和自己无关的一些内容,估计只是想 SEO 带来一些流量,不过内容无关的流量有什么用呢。VPS配置如下:

512MB RAM
30GB 硬盘
250GB 每月流量
1 IP
6.25美元每月(优惠后)

服务器硬件配置信息:

Intel or AMD Dual Quad Core Servers, 12GB DDR3 Memory (minimum), Raid 10 Hard Drive Arrays, 1000mbit Network Uplinks, Dual-Redundant Backups (we have 2 different backup methods).

安装 OpenStack 基于 Web 的管理控制台

OpenStack 基于 Web 的管理控制台 OpenStack Dashboard 是用 Python 和 Django 框架写的,部署到生产环境比较麻烦,没有基于 PHP 的 web 程序那么直观,不过 OpenStack Dashboard 项目正在快速开发中,还不稳定,一般不会用到生产环境,所以想试玩的话用 Django 自带的 web server 就可以了。如果想部署到生产环境建议用 apache + mod_wsgi 的方式,这也是 django 官方建议部署 django app 的方式。

安装版本控制工具和 python 虚拟环境:

$ sudo apt-get install -y git bzr
$ sudo easy_install virtualenv

下载 openstack dashboard 源代码并运行 run_tests.sh:

$ git clone https://github.com/4P/openstack-dashboard.git
$ cd openstack-dashboard
$ sudo sh run_tests.sh

如果上面的最新 git 代码不好用,需要找旧版本的 openstack dashboard,需要使用 bzr 从 launchpad 下载(今年6月份 openstack dashboard 项目从 launchpad 移到 github)。最新的 64 版本使用了最新的 django 1.3,安装没问题但是访问的时候显示 ViewDoesNotExist 错误,所以 VPSee 建议使用旧的 46 版本(django 1.2.4):

$ bzr init-repo .
$ bzr branch lp:openstack-dashboard
$ cd openstack-dashboard
$ bzr revert -r 46
$ sudo sh run_tests.sh

安装脚本里用到了 git,如果你的网络环境需要代理才能上网的话需要配置一下 git 使用 http 代理服务器

对照 在 Ubuntu 上安装和配置 OpenStack Nova 一文并在 /home/vpsee/creds/novarc 文件里找到 NOVA_ACCESS_KEY, NOVA_SECRET_KEY 等相关信息填写以下参数:

$ vi openstack-dashboard/local/local_settings.py
...
NOVA_DEFAULT_ENDPOINT = 'http://172.16.39.111:8773/services/Cloud'
NOVA_DEFAULT_REGION = 'nova'
NOVA_ACCESS_KEY = '22781cf0-b8b6-44e8-86c8-baf8d3827662:mycloud'
NOVA_SECRET_KEY = '2dc4007f-3425-417b-a598-33a190d2f995'
NOVA_ADMIN_USER = 'vpsee'
NOVA_PROJECT = 'mycloud'
...

同步数据库的时候需要创建一个 superuser 访问 django web:

$ source .dashboard-venv/bin/activate

$ sudo tools/with_venv.sh dashboard/manage.py syncdb
Creating table auth_permission
...
Creating table registration_registrationprofile

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no):

$ sudo tools/with_venv.sh dashboard/manage.py runserver 172.16.39.111:8000
Validating models...
0 errors found

Django version 1.2.4, using settings 'dashboard.settings'
Development server is running at http://172.16.39.111:8000/
Quit the server with CONTROL-C.

现在打开浏览器输入 http://172.16.39.111:8000/ 就应该可以看到登录界面,输入刚才创建的 superuser 的用户名和密码后就可以进入控制台了。控制台的功能有限,没有命令行那么丰富,不过基本的创建、查看、关闭 instance 功能还是有的:

openstack dashboard

如何查看 Linux 系统安装的时间

我们 SUN 实验室每台服务器上架后都需要填写一个表格,这个表格包括详细的机器硬件配置、操作系统版本和安装时间、网络配置、机器名、MAC 地址和 IP、安装的软件和用途、安全级别和策略、联系人、上架时间、机柜号等。昨天有位管理员忘了填写操作系统的安装时间,跑来问怎么查看 Linux 系统的安装日期和时间(过了2个月谁还记得啊)。

有个办法是查看 lost+found 目录状态,因为这个目录一般很少用到,改动最少(很可能无任何改动),而其他目录比如 /bin, /home 等因为经常升级系统、创建用户等操作会修改目录状态。VPSee 在自己的一台 VPS 结点服务器上验证了一下,这台服务器是去年3月10日安装的系统,中途升级系统重启一次,然后连续满负荷跑了342天没有重启

$ stat /lost+found/
  File: `/lost+found/'
  Size: 16384     	Blocks: 32         IO Block: 4096   directory
Device: 805h/2053d	Inode: 11          Links: 2
Access: (0700/drwx------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2010-03-11 02:40:20.000000000 -0800
Modify: 2010-03-10 19:14:34.000000000 -0800
Change: 2010-03-10 19:14:34.000000000 -0800

还有一种办法是查看 bin, daemon, sys, adm 等这些帐号的建立时间,这些帐号是在系统安装的时候创建的,所以这些帐号的创建时间基本上就是 Linux 系统的安装时间:

# passwd -S bin
bin LK 2010-03-10 0 99999 7 -1 (Alternate authentication scheme in use.)

# passwd -S daemon
daemon LK 2010-03-10 0 99999 7 -1 (Alternate authentication scheme in use.)

上面这个看帐号创建时间的方式有局限性,不同的 Linux 发行版安装的时候处理 bin, daemon 这些系统帐号的方式不同,有的是直接从安装光盘拷贝这些帐号和相关文件,有的是安装脚本自动创建。只有安装脚本自动创建的发行版本才能根据帐号的创建时间来判断系统的安装时间。

为 OpenStack Nova 制作 Windows 镜像

上次 VPSee 给 OpenStack Nova 制作 Ubuntu 镜像的时候忘了介绍制作 Windows 镜像和在 Nova 上运行 Windows 虚拟机的情况,前几天刚好有人在微薄上问到这个问题。在 Nova 上运行 Windows 的虚拟机其实很容易,和运行 Linux 虚拟机差不多:先制作一个 Windows 虚拟机镜像(模板),然后再以这个镜像为模板来创建 Windows 虚拟机(实例)。

安装 Windows 镜像

创建一个 10GB 大小的 “硬盘”(raw 格式):

$ kvm-img create -f raw windowsxp.img 10G
Formatting 'windowsxp.img', fmt=raw size=10737418240

openstack 启动虚拟机实例的时候使用的是 virtio 接口,但是 windows 默认没有这个接口的驱动,所以需要额外的驱动。然后使用 ISO 文件的 windowsxp.iso 安装盘来安装 Windows:

$ wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/
virtio-win-1.1.16.vfd

$ sudo kvm -m 1024 -cdrom windowsxp.iso -drive file=windowsxp.img,if=virtio,boot=on \
-fda virtio-win-1.1.16.vfd -boot d -nographic -vnc :0

在另外一台机器上使用 vnc 客户端就可以看到 windows 安装过程和进行操作:

$ vncview 172.16.39.111:5900

安装完 windows 后可以进行一些必要的定制,比如打开 RDP 访问、设置防火墙不要屏蔽 RDP 等,这时候也可以安装一些必要软件,要注意的是这个是以后的模板,要尽量保持系统原样,最好不要做定制也不要装任何软件,可以留给客户自己做,定制这东西每个人口味都不同。

发布 Windows 镜像

windows 虚拟机镜像做好以后就可以发布到云里了,注册镜像后会得到一个标志符 ami-00000004,以后就用这个 ami-00000004 来识别云里面的镜像(还记得我们上次做的 ubuntu 镜像的标志符是 ami-00000003 吗?):

$ euca-bundle-image -i windowsxp.img 
Checking image
Encrypting image
Splitting image...
Part: windowsxp.img.part.00
Part: windowsxp.img.part.01
...
Part: windowsxp.img.part.65
Generating manifest /tmp/windowsxp.img.manifest.xml

$ euca-upload-bundle -b mybucket -m /tmp/windowsxp.img.manifest.xml 
Checking bucket: mybucket
Uploading manifest file
Uploading part: windowsxp.img.part.00
...
Uploading part: windowsxp.img.part.65
Uploaded image as mybucket/windowsxp.img.manifest.xml

$ euca-register mybucket/windowsxp.img.manifest.xml
IMAGE	ami-00000004

检验一下 windows 镜像是否上传成功,ami-00000004 就是我们刚做的 windows 镜像:

$ euca-describe-images
IMAGE	aki-00000001	mybucket/vmlinuz-2.6.32-28-server.manifest.xml		available	public		x86_64	kernel	 	 
IMAGE	ari-00000002	mybucket/initrd.img-2.6.32-28-server.manifest.xml		available	public		x86_64	ramdisk	 	 
IMAGE	ami-00000003	mybucket/ubuntutemplate.img.manifest.xml		available	public		x86_64	machine	aki-00000001	ari-00000002
IMAGE	ami-00000004	mybucket/windowsxp.img.manifest.xml		untarring	public		x86_64	machine

第一个 Windows 虚拟机实例

有了这个 windows 模板(镜像)以后我们就可以以这个 “镜像” 为模板来为云计算用户创建 n 个 windows 虚拟机,运行之前需要 key:

$ euca-describe-keypairs 
KEYPAIR	mykey	76:7d:93:88:a0:e5:3e:5d:4b:62:cd:85:c5:23:7a:05

$ euca-run-instances -k mykey -t m1.small ami-00000004
RESERVATION	r-er0zkjm7	mycloud	default
INSTANCE	i-00000003	ami-00000004			scheduling	mykey (mycloud, None)	0	m1.small	2011-06-20T14:08:45Z	unknown zone

然后用 nova-manage 命令检查是否成功运行 windows 虚拟机,状态栏 state 应该是 running 状态:

$ sudo nova-manage vm list
instance   node            type       state      launched            image        kernel       ramdisk       project    user       zone       index
i-00000003 node01           running    2011-06-20 14:12:49 7                                       mycloud    vpsee       None       0

大功告成,用一个 RDP 客户端连接 windows 就可以了(这个 windows 云虚拟机使用的是内部 IP):

# rdesktop 192.168.3.4

LittleVPS:$6.79 128MB Xen VPS

littlevps

LittleVPS 是 System In Pace 的又一个 VPS 子品牌,System In Pace 旗下还有一个大家熟悉的 RapidXen. System In Pace, LittleVPS 和 RapidXen 这三家后面的负责人都是 William Pitcock,William 是 Debian 系统的开发人员和代码维护者,有较强的技术背景。尽管 littlevps.net 这个域名才注册不到一个星期。VPSee 对他家的东西还是比较放心的。LittleVPS 的服务器配置不高,有的还只是双核服务器,端口用的是共享的 gigabit port,位置在加州洛杉矶,测试 IP 是 204.152.222.222,中国电信和网通访问速度都不错。价格比 RapidXen 同配置的 VPS 稍微便宜一点,但是考虑到 LittleVPS 不限流量并保证 2mbps 端口,这个价格还是挺诱人的。VPS配置如下:

128MB RAM
5GB 硬盘
不限流量,保证 2mbps
1 IP
6.79美元每月

服务器硬件配置信息:

they are dell poweredge servers with xeon x3220 and 8gb of RAM. some of the older servers in our fleet are dual opteron 2200 series with 8-16gb of RAM.

为 OpenStack Nova 制作 Ubuntu 镜像

最近超级忙,被 Mesh Potato 的项目折腾的不行,发现只要什么东西沾上 “分布式、集群” 这些东西事情就变得格外复杂,一台 Asterisk 服务器做 VoIP 容易,n 台 Asterisk 服务器做集群就不容易;一台 Xen/KVM 服务器做虚拟机容易,n 台 Xen/KVM 服务器做云计算就不是那么容易。上星期我们介绍了在 Ubuntu 上安装和配置 OpenStack Nova,今天来进一步介绍如何在 OpenStack Nova 环境里制作虚拟机模板(镜像)以及创建虚拟机运行实例(以 Ubuntu 为例子)。为了和我们平时说的 “VMware/Xen/KVM/VirtualBox 虚拟机” 区分开,VPSee 在这里把在 OpenStack Nova、OpenNebula 这样的云计算平台上运行的虚拟机称为 “云虚拟机”。简单说在 OpenStack Nova 平台上运行一个 ubuntu 虚拟机的流程是:先制作一个 ubuntu 虚拟机镜像(模板),然后再以这个镜像为模板来创建 ubuntu 虚拟机(实例)。

安装 Ubuntu 镜像

首先下载要安装的 ubuntu 版本:

$ wget http://releases.ubuntu.com/lucid/ubuntu-10.04.2-server-amd64.iso

创建一个 10GB 大小的 “硬盘”(raw 格式):

$ kvm-img create -f raw ubuntu.img 10G
Formatting 'ubuntu.img', fmt=raw size=10737418240

使用刚才下载的 ubuntu “安装盘” 和刚创建的 “硬盘” 引导启动系统,为了简单起见,VPSee 在这里使用 kvm 虚拟技术,避开 xen 繁琐的配置。-vnc 参数代表打开 vnc 访问,以便可以用其他机器远程登录到这个引导界面进行安装操作:

$ sudo kvm -m 512 -cdrom ubuntu-10.04.2-server-amd64.iso \
-drive file=ubuntu.img -boot d -nographic -vnc :0

用 vncviewer 登录引导界面后按照屏幕的提示完成 ubuntu 的安装工作(和在自己电脑上安装 ubuntu 过程一样)。需要注意的是在分区阶段把 10GB 硬盘全部划分成一个 ext4 root 分区,不要创建多个分区也不要创建 swap 区:

$ vncviewer 172.16.39.111:5900

安装完后退出(必要时 kill 掉 kvm 进程),按照下面命令启动刚刚安装好的虚拟机镜像 ubuntu.img,如果出现 failed to find romfile “pxe-rtf8139.bin” 的错误提示可以通过安装 kvm-pxe 解决:

$ sudo kvm -m 512 -drive file=ubuntu.img -boot c -nographic -vnc :0
kvm: pci_add_option_rom: failed to find romfile "pxe-rtl8139.bin"

$ sudo apt-get install kvm-pxe

再次用 vnc 登录虚拟机镜像,安装一些必要工具(因为这个镜像将会是模板,所以最好保持最简最小化,不要乱装东西):

$ vncviewer 172.16.39.111:5900

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install openssh-server cloud-init

70-persistent-net.rules 会自动添加其他的网络接口,需要删除这个文件避免自动添加除了 eth0 以外的接口。删除后系统基本就准备好了,关闭虚拟机:

$ sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

$ sudo shutdown -h now

调整 Ubuntu 镜像

因为 OpenStack 只接受 ext4 文件系统格式的镜像,所以需要把上面创建的 raw 镜像(kvm-img create -f raw)转换成 ext4 镜像。下面的步骤用来找出镜像文件里面的分区起点是从哪里开始的:

$ sudo losetup -f ubuntu.img 
$ sudo losetup -a
/dev/loop0: [fb00]:24117291 (/home/vpsee/ubuntu.img)

$ sudo fdisk -cul /dev/loop0

Disk /dev/loop0: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000502e6

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *        2048    20969471    10483712   83  Linux

上面最后一行显示分区是从扇区(sector)2048开始的,每个扇区是512个字节,所以是从 2048 x 512 = 1048576个字节开始的。记住这个1048576,下面会用到。

卸载 loop 后重新从1048576字节开始挂载:

$ sudo losetup -d /dev/loop0

$ sudo losetup -f -o 1048576 ubuntu.img 
$ sudo losetup -a
/dev/loop0: [fb00]:24117291 (/home/vpsee/ubuntu.img), offset 1048576

把这整个分区拷贝到一个新文件就是一个我们要的 ext4 文件系统镜像:

$ sudo dd if=/dev/loop0 of=ubuntutemplate.img
20969472+0 records in
20969472+0 records out
10736369664 bytes (11 GB) copied, 107.455 s, 99.9 MB/s

用完 loop 后记得卸载:

$ sudo losetup -d /dev/loop0

挂载(mount)刚创建的 ext4 文件系统镜像,并修改分区加载表(/etc/fstab),注释或删除以前的,加上 UUID=uec-rootfs 一行:

$ sudo mount -o loop ubuntutemplate.img /mnt

$ sudo vi /mnt/etc/fstab
#UUID=1dc3a59e-faab-41ee-b232-3300163676bf / ext4 errors=remount-ro 0 1
UUID=uec-rootfs                           / ext4 defaults          0 0

把内核(vmlinuz)和内存盘(initrd)文件拷贝出来以便后面和虚拟机镜像一起发布到OpenStack 云里。使用完虚拟机镜像后记得卸载(unmount):

$ sudo cp /mnt/boot/vmlinuz-2.6.32-28-server /home/vpsee/
$ sudo cp /mnt/boot/initrd.img-2.6.32-28-server /home/vpsee/

$ sudo umount /mnt

把刚才的虚拟机镜像 ubuntutemplate.img 的文件系统标志改成 ‘uec-rootfs’:

$ sudo tune2fs -L uec-rootfs ubuntutemplate.img 
tune2fs 1.41.14 (22-Dec-2010)

发布 Ubuntu 镜像

好了,ubuntu 镜像已经做好了,现在可以发布到云里了,需要3个东西,虚拟机的内核文件、虚拟机的内存盘文件和虚拟机镜像文件:

$ uec-publish-image -t image --kernel-file vmlinuz-2.6.32-28-server \
--ramdisk-file initrd.img-2.6.32-28-server amd64 ubuntutemplate.img mybucket
ami-00000006	mybucket/ubuntutemplate.img.manifest.xml

等待一段时间后出现 ami-00000006 mybucket/ubuntutemplate.img.manifest.xml 表示我们刚制作的 ubuntu 镜像已经正式发布到云里,以后就可以以这个镜像为模板来快速生成虚拟机实例(instance)。可以通过 euca-describe-images 来查看:

$ euca-describe-images

IMAGE	aki-00000001	mybucket/vmlinuz-2.6.32-28-server.manifest.xml		availablpublic		x86_64	kernel	 	 
IMAGE	ari-00000002 	mybucket/initrd.img-2.6.32-28-server.manifest.xml		available	public		x86_64	ramdisk	 	 
IMAGE	ami-00000003	mybucket/ubuntutemplate.img.manifest.xml		untarring	public		x86_64	machine	aki-00000001	ari-00000002

第一个 Ubuntu 虚拟机实例

有了 ubuntu 镜像(模板)以后我们就可以以这个 “镜像” 为模板来为云计算用户创建 n 个 ubuntu 虚拟机(操作系统)实例,不过在运行实例之前需要 key:

$ euca-add-keypair mykey > mykey.priv
$ chmod 600 mykey.priv 

$ euca-describe-keypairs
KEYPAIR	mykey	76:7d:93:88:a0:e5:3e:5d:4b:62:cd:85:c5:23:7a:05

$ euca-run-instances -k mykey -t m1.tiny ami-00000003
RESERVATION	r-n0lpdme5	vpseecloud	default
INSTANCE	i-00000001	ami-00000003			scheduling	mykey (vpseecloud, None)	0		m1.tin2011-05-20T14:00:34Z	unknown zone

上面使用 euca-run-instances 创建一个实例后可以用 nova-manage 命令看到:

$ sudo nova-manage vm list
instance   node            type       state      launched            image        kernel       ramdisk       project    user       zone       index
i-00000001 node01           launching  None                3            1            2             vpseecloud    vpsee       None       0

还记得上篇:在 Ubuntu 上安装和配置 OpenStack Nova 的创建网络部分吗?可以看看现在的云里面 IP 分配情况:

$ sudo nova-manage network list
network           	netmask        	start address  	DNS            
192.168.3.0/25    	255.255.255.128	192.168.3.3    	None           

刚才用 euca-run-instances 启动的一个 ubuntu 虚拟机实例的 IP 就是从 192.168.3.3 开始的,所以 ssh 登录这个 IP 就登上了我们的第一个云虚拟机:)

$ ssh 192.168.3.3
vpsee@i-00000001:~$ 

想制作 CentOS 虚拟机镜像的话可以看:为 OpenStack Nova 制作 CentOS 镜像;想制作 Windows 虚拟机镜像的话可以看:为 OpenStack Nova 制作 Windows 镜像

Xen 正式进入 Linux 内核

最近 Linux 内核方面有些感兴趣的新闻, Linus Torvalds 低调的在 Git 内核源代码管理里面加了 Linux 3.0-rc1,正式拉开了 Linux 3.0 的序幕。就下一代 Linux 版本号的选择,Linus 曾经纠结了一段时间,Linus 也强调 3.0 不是里程碑式版本,没有任何重大更新,选定 3.0 这个版本的主要想标注 Linux 诞生20年(在 Linus 看来20年就是个里程碑),还有个原因就是自己不能忍受 2.6.40 以上的版本号。

I decided to just bite the bullet, and call the next version 3.0. It will get released close enough to the 20-year mark, which is excuse enough for me, although honestly, the real reason is just that I can no longer comfortably count as high as 40.

让我们刚兴趣的内核变化不是版本号,是从内核 2.6.39+ 开始 Linux 内核全面、正式的开始支持 Xen,也就是说大家以后编译 Xen 内核的时候不用打补丁了,不用找对应的 Xen 和 Linux kernel 版本号了,可以直接在配置和编译 Linux 内核的时候用 make menuconfig 来勾选 Xen 模块。这将大大增加 Xen 的方便性,继续扩大 Xen 在数据中心的应用。最近 RedHat 和 Ubuntu 纷纷在他们的产品线中抛弃 Xen 选择 KVM 令 Xen 社区非常不安,随着 Xen 正式加入 Linux 内核,给 Xen 社区带来振奋人心的信心,Xen vs KVM 又值得重新考量了。作为一家 Xen VPS 服务商,我们将继续支持 Xen,把 Xen 进行到底。

感谢 Xen 社区四年来为此所做的努力!