前阵子经历了一番对VPS重新部署的波折,发现了不少问题。
惭愧,都用了这么久的VPS了,到现在才开始手工调戏VPS。。
不过鹚这次是深深体验到基于OpenVZ架构的Linux版VPS的一些缺陷了。
这缺陷不是所谓的OpenVZ会超买等等原因。
其实按道理说,没有超卖的OpenVZ,比同配置的Xen的VPS性能要好一些。
OpenVZ架构嘛,不像Xen,是一种不完全的虚拟化。
主要表现在,内存共享(PS:其实这是容易超卖的主要原因),然后不支持Linux特有的Swap(交换分区)。
PS:其实我给我的Ubuntu分配了2GB的Swap空间,却基本上没用到……
因为不是彻底的虚拟化,所以像PPTP这种比较底层的VPN应用是无法支持的,不过OpenVPN还是可以用,但也得发Ticket给Burst要它给你开启Tun/Tap。。
但是以上的这些,都不太影响鹚对VPS的正常使用。
可不是这次鹚手工配置VPS的话,还真的没有发现OpenVZ本质上的缺陷。
本来Apache,Mysql,PHP,Django,Python都安装好了的。
按照默认方案,就只差一个FTP服务端了。
我是这样的,因为我在本地 “模拟” 出的 VPS 是用的Pure-FTPd。
之所以选Pure-FTPd,主要是它有一个强大的Web面板,可以套接Mysql实现虚拟FTP用户的添加,用虚拟FTP来进行认证,还可以指定虚拟用户的Charoot。
这对于懒得打命令的鹚是很方便的。
但是,在VPS上部署Pure-FTPd的时候,鹚却死活装不上去。
dpkg老是返回如下错误:
421 Unable to switch capabilities : Operation not permitted
invoke-rc.d: initscript pure-ftpd-postgresql, action “start” failed.
E: Sub-process /usr/bin/dpkg returned an error code (1)
起初,我还以为是dpkg的bug,于是按照网友提供的方法去修复……但是却毫无效果!
这令我百思不得其解,于是疯狂的Google,终于在国外的论坛上找到了一点启示。
而且,他们也都是通过软件仓库库安装Pure-FTPd的时候与我遇到的同样问题。
其实问题的重点在这里:
421 Unable to switch capabilities : Operation not permitted
鹚也不是很清楚,capabilities到底是内核了一种功能,还是内核的一个models(模块)。
但是到底是内核没有此功能,还是没有此模块呢?
若是缺乏此功能和此模块的话,那么我可不可以自己编译一个支持capabilities的内核来替代VPS的默认内核呢?
对啊,既然连Pure-FTPd这样优秀的FTP服务器,都要capabilities的支持,那为什么Burst的VPS就没有这样的支持呢?
想着想着,老外是这样解释的:
基于OpenVZ架构的Linux VPS默认是不支持capabilities模式的,如果非要其支持的话,就要VPS管理员,在母机上用类似如下命令开启对么台VPS小机的支持:
VPSID=101
for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
do
vzctl set $VPSID –capability ${CAP}:on –save
done
也就是说,造成Pure-FTPd无法安装的原因,是VPS的 “硬件” 不支持Linux内核的capabilities模式!
其实,要想Linux可以跑在OpenVZ上,就必须要对Linux内核进行很大程度的修改,所以,对于Linux VPS,尤其是基于OpenVZ架构的VPS,鹚建议 —— 最好不要升级内核!
不过老外也提供了解决方案,如果你确实想使用Pure-FTPd或者Pure-FTPd-Mysql的话,可以自己编译安装,并且在编译时加入如下参数:
–without-capabilities
编译我就懒得搞了,鹚不太喜欢自己编译软件,因为自己编译的软件,鹚不晓得配置文件在那些地方,所以后面就换上了ProFTPd。
Oh,想知道详情的话可以参考如下资料:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=272527
http://www.howtoforge.com/forums/archive/index.php/t-46503.html
另外,对于基于OpenVZ架构的VPS,虽然可以修改时区,却无法使用像 date -s xx:xx:xx 这样的命令修改时间,就算你是Root!
鹚的分析是,修改时间需要撼动主板的BIOS,而OpenVZ又是不彻底的虚拟化,所以……
当然,鹚不知道OpenVZ的VPS无法修改时间,是不是特例,不晓得完全虚拟化的Xen也是不是一样的无法修改时间……
不过,对于OpenVZ,若是真想修改系统时钟的话,还是可以发Ticket给客服的。
鹚是用的OpenVZ架构的VPS,而且是最实惠的Burst。
人家说Burst超买厉害,但是鹚用了这么久,基本上没出现宕机,而且各方面都还比较稳定。
所以鹚才不管你超不超卖呢,只要鹚可以正常使用就OK了。
不过,OpenVZ超买倒是其次,像鹚如上所说的那些 “硬性的缺陷”,才是真的比较纠结的。
这会造成很多软件无法正常的使用。
所以,对于想买VPS的朋友,如果你资金比较丰富,或者对Linux不是很熟悉的话。
鹚还是建议 —— 买Xen吧。
我的VPS也折腾了老半天.photonvps的XEN vps计划搭配lnmp,经常出现出现502错误,让我很是头疼.还满怀念以前用hostgator的日子,轻松.有什么问题交给他们的客服去做就行了.
@木JJ , 哈,我就从没用过收费主机,直接上vps啦
编译安装就是时间久,看CPU的性能
OpenVZ不能改时区?这个没注意,不过好像我之前照着网上的一些方法,是没成功
有些真的看不懂 哎
要Pure-FTPd 干啥 有ssh 可以用sftp嘛….还省内存….像我有问题直接tk客服…
@nomaka , 我不喜欢用ssl通道来传文件。我的内存只用了2/5。
@Mucid , 一看就知道 米人….
@nomaka , 俺都用这么便宜的VPS了,你还说我米人……
@Mucid , 俺以前都是用128MB的vps的……
@nomaka , ssh是非常不安全的,必须可以chroot的ftp才行!
我连vps都没用过呢。