手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年09月的文章

转:Ubuntu 9.04上的XEN虚拟服务器[转]

因为我不知道我能将服务器用来干嘛,所以我一直在想着是否有机会将自己的服务器进行虚拟化,由于找了一些资料都是centos之类的,所以确实不知道如何在ubuntu下进行安装此玩意。
虽然有此意愿,但确实我无法安装,因为我的机器的内存太小了,只有2G,如果进行虚拟化的话,内存应该是不够用的。
不过,即使这样,安装性的文章,我还是要备份一下,因为,我在找朋友赞助我内存条了。黑黑。。。。

原文地址:http://wells.osall.com/blog /index.php?uid=1&m=content&p=1434#article_content.php%3Fid%3D1434%26uid%3D1%26dt%3DY:pane:N;

要安装并使用XEN,首先更新软件源的信息。

# sudo apt-get update

然后安装xen服务器软件和工具。

# sudo aptitude install ubuntu-xen-server
# sudo aptitude install ubuntu-xen-desktop

这时候我们去/boot目录看,可以看到一个xen3.3.gz文件,但是没有供操作系统使用的XEN化的内核,因此此时的操作系统还不是Doamin-0。我找了好久都没找到现成的XEN化内核,于是就只能根据XEN手册自己编译一个内核了。

下载安装最新的kernel文件。

# sudo apt-get install linux-image-server linux-server

安装编译所需要的一些工具包。

# sudo apt-get install build-essential libncurses5-dev gawk mercurial

接下来下载XEN所提供的XEN化的内核的源代码。

# mkdir -p ~/build/linux-2.6.27-xen
# cd /usr/src/
# sudo hg clone http://xenbits.xensource.com/ext/linux-2.6.27-xen.hg

配置内核选项。

# cd /usr/src/linux-2.6.27-xen.hg
# sudo make O=~/build/linux-2.6.27-xen/ menuconfig

出现内核参数的配置菜单后,根据如下的选项修改配置。

General setup ---> Choose SLAB allocator (SLUB (Unqueued Allocator)) ---> (X) SLAB

Processor type and features ---> Subarchitecture Type (PC-compatible) ---> (X) Enable Xen compatible kernel

Bus options (PCI etc.)  ---> [*] PCI support
[*]   Xen PCI Frontend
[ ]     Xen PCI Frontend Debugging (NEW)

将 <M> 802.1d Ethernet Bridging 修改为 <*> 802.1d Ethernet Bridging:

Networking support ---> Networking options ---> <*> 802.1d Ethernet Bridging

关闭 10000 Mbit Ethernet 支持(否则可能编译失败):

Device Drivers ---> [*] Network device support ---> [ ] Ethernet (10000 Mbit) --->

在 XEN 选项区中,按照下面选择选项(确认选择 Xen version compatibility (3.0.4 and later) 来取代原来的 Xen version compatibility (3.0.2 and later)):

Device Drivers  ---> XEN  ---> [*] Privileged Guest (domain 0)
<*> Backend driver support (NEW)
<*>   Block-device backend driver (NEW)
<*>   Block-device tap backend driver (NEW)
<*>   Network-device backend driver (NEW)
(8)     Maximum simultaneous transmit requests (as a power of 2) (NEW)
[ ]     Pipelined transmitter (DANGEROUS) (NEW)
< >     Network-device loopback driver (NEW)
<*>   PCI-device backend driver (NEW)
PCI Backend Mode (Virtual PCI)  --->
[ ]     PCI Backend Debugging (NEW)
< >   TPM-device backend driver (NEW)
<M>   SCSI backend driver (NEW)
<M> Block-device frontend driver
<M> Network-device frontend driver
<M>   Network-device frontend driver acceleration for Solarflare NICs (NEW)
<M> SCSI frontend driver (NEW)
<*> User-space granted page access driver (NEW)
<*> Framebuffer-device frontend driver (NEW)
<*>   Keyboard-device frontend driver (NEW)
[*] Disable serial port drivers (NEW)
<*> Export Xen attributes in sysfs (NEW)
(256) Number of guest devices (NEW)
Xen version compatibility (3.0.4 and later)  --->

保存完配置后就可以开始编译内核了。

# sudo make O=~/build/linux-2.6.27-xen/
# sudo make O=~/build/linux-2.6.27-xen/ modules_install install

通过漫长的等待(我的Atom 330 CPU花了大约3个小时),终于编译完内核了。编译安装完成后,去/boot目录检查,应该可以看到生成了支持xen的2.6.27.5的内核了。

# ls -l /boot
total 72697
-rw-r--r-- 1 root root   525592 2009-04-17 12:05 abi-2.6.28-11-server
-rw-r--r-- 1 root root   524602 2009-07-25 11:14 abi-2.6.28-14-server
-rw-r--r-- 1 root root    87448 2009-08-13 19:50 config-2.6.27.5
-rw-r--r-- 1 root root    90587 2009-04-17 12:05 config-2.6.28-11-server
-rw-r--r-- 1 root root    90560 2009-07-25 11:14 config-2.6.28-14-server
drwxr-xr-x 2 root root     1024 2009-08-13 20:04 grub
-rw-r--r-- 1 root root  8259056 2009-08-14 03:31 initrd.img-2.6.28-11-server
-rw-r--r-- 1 root root  8272673 2009-08-13 15:02 initrd.img-2.6.28-14-server
drwxr-xr-x 2 root root    12288 2009-08-14 03:17 lost+found
-rw-r--r-- 1 root root   128796 2009-03-28 04:12 memtest86+.bin
-rw-r--r-- 1 root root  1651431 2009-08-13 19:50 System.map-2.6.27.5
-rw-r--r-- 1 root root  1871187 2009-04-17 12:05 System.map-2.6.28-11-server
-rw-r--r-- 1 root root  1863183 2009-07-25 11:14 System.map-2.6.28-14-server
-rw-r--r-- 1 root root     1169 2009-04-17 12:09 vmcoreinfo-2.6.28-11-server
-rw-r--r-- 1 root root     1169 2009-07-25 11:16 vmcoreinfo-2.6.28-14-server
-rw-r--r-- 1 root root  3145318 2009-08-13 19:50 vmlinuz-2.6.27.5
-rw-r--r-- 1 root root  3520832 2009-04-17 12:05 vmlinuz-2.6.28-11-server
-rw-r--r-- 1 root root  3510496 2009-07-25 11:14 vmlinuz-2.6.28-14-server
-rw-r--r-- 1 root root   470084 2009-06-18 16:16 xen-3.3.gz

内核有了,但是还没有initrd.img也就是启动时所需的ramdisk文件,手动来生成一个。

# sudo depmod 2.6.27.5
# sudo update-initramfs -c -k 2.6.27.5

更新grub引导程序。

# update-grub

现在XEN的环境基本上都建好了,我们需要来修改一下配置文件了。

XEN服务的配置文件都在/etc/xen目录下。XEN服务的主配置文件是 /etc/xen/xend-config.sxp。打开这个文件,我们要确认的是XEN虚拟服务器的网络连接方式,这是相当重要的。我选择了桥接模式, 也就是说,Domain-U虚拟机和Domain-0在同一子网,用Domain-0的物理网卡来进行桥接到虚拟机的虚拟网卡。

# sudo vi /etc/xen/xend-config.sxp

确认网络部分是这样配置的:
(network-script network-bridge)

下一步要根据你的习惯来修改。你喜欢将虚拟机安装在哪里?是用一个镜像文件来虚拟成磁盘,还是将一个LVM逻辑卷虚拟成磁盘,或者干脆就是将物理磁盘给虚拟机使用?

对于后两种选择,你可以跳过这一步。但如果你选择了在现有的文件系统中建立一个镜像文件来虚拟成一个虚拟机的物理磁盘,那就要按照下面修改默认配置了。

由于镜像文件在加载的时候是作为回圈设备(loop device),因此要将操作系统的默认最大回圈设备数量调大,以免出现不必要的问题。

# sudo vi /etc/modules

将loop这一行修改为:
loop max_loop=64

好啦,重启主机,进入Domain-0的世界!!!

# sudo shutdown -r now

重启完成后检查一下kernel版本,是不是XEN化的那个2.6.27.5?

# uname -r
2.6.27.5

现在可以使用XEN的管理命令xm,来看看虚拟机运行状况啦!

# sudo xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1473     4     r-----    479.8

哈哈,可以看到Domain-0正常运行!!!你可以使用xm help来学习如何通过xm来管理虚拟机。

在State列,看到Domain-0是r的状态,也就是说,这个Domain正在运行中,并有任务在该Domain上运行。虚拟机还有如下几种状态:

  • r :该domain正在消耗CPU资源,任务运行中;
  • b :该domain正被暂时搁置(blockded),一般来说是因为这个domain在闲置中,等待输入或输出(I/O);
  • p :该domain处于暂停状态,通常是因为管理员使用 xm pause 暂停了这个domain。当domain至于暂停状态时,Xen的管理器将不会处理这个domain的任何动作;
  • s :该domain正在关机;
  • c :该domain已经crash了,但是没有关机。一般来说是因为domain的配置文件没有设置 on_crash 动作所致;
  • d :该domain正在死机中,一般来说是因为这个domain无法正确 shutdown/crashed 之故。

---------------------------
顺便说一下,文章所提到的原文地址无法打开,我的这篇文章来自于http://hi.baidu.com/airzhutao/blog/item/0cb546ef4ebb3be4cf1b3e4a.html。

Tags: ubuntu, xen, 虚拟化

卓越亚马逊太烂了

又是一件亲身经历的事情了。
在卓越亚马逊网上买IPOD,明明写着有货,但却没有按时发货。这让人感觉有点烦人
事情还是需要从头说起。
某天,在卓越上订了一个IPOD,上面写着预计2~3日内到达,所有的商品都是写着目前有现货,所以我就欣欣然下单了。
下完单后,订单中显示,预计到货日期为2-23,我想那,确实挺快呀。
于是我等到了2月23日,发现没有任何快递联系我,于是打开卓越网,看了一下订单,发现上面写着尚未发货,于是我打了400电话进行咨询。
400说,由于配货不全,需要从苏州调货,然后说预计25日 可以到达,然后我就发现,预计到达时间改成了25日。
今天,25日了,打开订单一看,却仍然这样显示:
大小: 5.67 K
尺寸: 189 x 65
浏览: 1993 次
点击打开新窗口浏览全图
郁闷了,气愤了。
重新打400电话,400说我的订单显示是有缺货,我说那你帮我查一下吧,结果查询下来,没有任何缺货状态,所有的商品都有现货,那为什么却没有发货呢?
400解释说可能原先没货,现在有货了。我告诉他我下单的那天明明显示都是有货的状态,400解释可能是上海地区没货,从其他地方调货的。
我回复说,为什么5天了,还没有调好货呢?400说了一句我比较愤怒的话:可能是路上堵车了吧。
然后400让我重新下单,说这样可以快一点(这是什么理由?)
靠,什么车要堵上四、五天啊。
我们国家的道路状况已经差到这个地步了?

因为郁闷,所以写下来做个记录。

Tags: amazon, 卓越, 亚马逊

转:因闰秒造成的误差

转帖前的话:这个问题我没有遇到过,事实上,如果不是看到这篇博客,我根本不知道原来还有闰秒这个问题。先看看这篇文章吧。

 

项目中碰到 PHP 和数据库之间,计算存在时间计算误差。大致的情况为根据段时间字符串,例如:

XML/HTML代码
  1. 2012-12-14 00:00:00 UTC  

使用 MySQL 的 UNIX_TIMESTAMP 函数以及 PHP 的 strtotime 计算得出的时间戳,大概有半分钟(差不多有28秒)的误差。

同时,比较‘诡异’的是直接使用当前时间(MySQL 中 UNIX_TIMESTAMP 不带参数,同时 PHP 直接使用 time 函数),却不存在误差(测试脚本)。

排除了 PHP 和 MySQL 之间因为时区设置造成的时间误差 -- 根据经验,如果是时区设置造成的时间误差,应该有几个小时不会那么少。

搜索解决问题期间扫了下这篇帖子,觉得应该是‘闰秒’这玩意造成的问题。搜索 PHP 闰秒相关的配置似乎没有相关的,不过在这里似乎找到了些答案

XML/HTML代码
  1. You also can experience this behavior if your system timezone is with leap seconds. To avoid the problem in this case please run query UPDATE mysql.time_zone SET Use_leap_seconds='N' and restart the server. Please inform us if this helps.  

按照上述的步骤执行,解决了问题。

回过头来,我在工作机(Windows)上测试,发现并不起作用。研究了下,原来闰秒也需要操作系统的支持

XML/HTML代码
  1. 1、对于大多数新的 Linux 内核,在设计时它们都是支持闰秒的,这一点在 REHL4/5 的 2.6.x 内核中得到肯定。   
  2. 2、如果 Linux 系统没有配种某种时间同步机制(比如NTP),那么和闰秒无关,唯一导致的结果只是系统时间会比 UTC时间快一秒。   
  3. 3、Window Time Service 不支持闰秒,包括服务器和客户端。  
回过头来考虑项目中碰到的这种情况,直接使用时间戳存储时间点会更精确些。最后,提供下相关的测试脚本,看看你的环境是否也会有类似的问题。

Tags: leep, 闰秒

Junction 详细使用方法

看到有人回复说想了解junction的使用方法,我在这里就详细介绍一下吧。

下载地址在那篇文章已经有,这里我就不介绍了。

我说一下具体的应用方法吧,虽然可能还是比较简单的。

1、先执行一下junction.exe文件,让它注册到系统(我是将它扔在快盘里面的,这样我就不需要到处下载了)

2、创建引用:junction x:\test c:\test ,第一个参数是在x盘里创建的目录,需要该目录不存在 。第二个参数是目标目录。(也就是将C盘的test目录创建了一个快捷方式到x盘的test目录下),只是这种快捷方式与平时的快捷方式不太一样而已

3、其实,这样就完事了。如果觉得目录创建错误了,可以junction -d x:\test 将它删除

如果知道一个目录是引用来的,如何查看目标目录是啥呢?可以这样:

XML/HTML代码
  1. 假设知道x:\neatpic是引用来的目录,可以这样运行一下  
  2. X:\>junction.exe x:\neatpic  
  3.   
  4. Junction v1.06 - Windows junction creator and reparse point viewer  
  5. Copyright (C) 2000-2010 Mark Russinovich  
  6. Sysinternals - www.sysinternals.com  
  7.   
  8. x:\neatpic: JUNCTION  
  9.    Substitute Name: e:\www\htdocs\neatpic  
  10. OK,这样就知道,目标目录是 e:\www\htdocs\neatpic  

如果想知道所有的junction引用的目录,可以运行想要查看的目录下运行,junction -s,

 

----------------------

由于这种创建快捷方式的功能与平时windows的不一样,对于虚拟盘来说,它认为这就是一个实际存在的文件,所以它就认为这些文件是在这个盘里是物理存在的,所以,就会执行正常的上传下载之类的操作。

【其实junction相当于linux下的管道,这样一来就应该明白了吧?】

Tags: junction

推荐密码管理软件: KeePass

KeePass Password Safe 2,这款软件是同事在用的,看他使用的时候,我觉得还不错,所以就向他找了一份,并尝试着使用了一下,觉得还是感觉不错的,所以用来推荐一下

Keepass有着自己的数据格式,至于能不能被其他软件所破解,就不是我关心的了(不可能说永远不可能破解,只是机率会比较小一点吧)

Keepass打开数据库时,可以指定密码,有三种方式1、密码,2、密码文件3、windows自身的用户

由于我用金山快盘,所以我就每天在单位和家里进行同步喽。使用起来也算方便,也能够自己按照自己的规定生成密码,有一个好处就是可以设定双击复制密码的时候在剪贴板里存放多少时间 ,超过这个时间后就自动被清空,这相对会让人感觉比较安全。

再说一下,这个软件也有很多的插件,比较感觉不错的会有两个插件是我想用的,kefromff,和sync,一个是可以把firefox里存放的密码导入到keepass里,另一个就是帮你把数据库备份啦 。。

其实还有一些插件,比如自动输入密码这个功能,我是觉得不太方便,因为他有顺序要设定,不能根据当初的设定而自动输入(如果顺序不对,就输的不对,我觉得太麻烦了)

当然,作为一个优秀的软件,它还是有汉化包的,所以,对于普通用户来说没有什么难度啦:http://keepass.info/ , 插件地址在:http://keepass.info/plugins.html , 插件地址是:http://keepass.info/translations.html。

以前好象有一个叫roboForm之类的软件,也用过一阵子,不过相对来说,用了这个软件后,我好象就忘了roboForm,不过那个软件好象是支持自动填表的。。而且相对比较准确(firefox也是可以的)

Tags: keepass