Tag Archives: Linux

RHEL6 作为 xen domU 虚拟机,启用 hvc0 的方法

今天在 xen  虚拟机里安装了 RHEL6 beta,发现因为 sysvinit 被换成 upstart 之后,竟然不知道在哪里启用 hvc0 上的 getty 了。尝试改变 /etc/sysconfig/init 把 hvc0加到 ACTIVE_CONSOLES 里,但是开机时提示 hvc0 permission denied 之类的提示信息。 最后还是在内核上加 console= 参数了。不过注意:必须写成 console=tty console=hvc0 这样,其中 tty 那一项可以用 console=tty 也可以用 console=tty1。 如果只加console=hvc0 则用VNC查看虚拟机的时候看不到开机时的 dmesg 和服务脚本启动信息 如果顺序反了,最后不会启动 agetty 在 … Continue reading

Posted in 默认分类 | Tagged , , , | 4 Comments

bind + mydns 大容量智能 DNS 的方案简述

大体上就是 bind 上启用 view 功能,然后把请求转发给后端的多个 mydns。不过遇到的问题是,如果用 zone {type “forward”;} 的话,会导致  bind 给出的解析结果里缺少 AA 标志位,而且还会带上 ADDITIONAL SECTION,而这个 ADDITIONAL SECTION 指向的恰恰是 bind 自己,于是有时会造成循环。 怎么让 bind 认同自己事实上的权威地位,成了方案的关键。想了几个小时,终于明白了只有 master 和 slave 才能给出带 AA 标志位的应答。master试过了肯定是不行的,因为必须有 file 参数。后来试了试 slave,竟然只需要 masters 参数即可。 最终方案是两横两纵的: 1 一个域有两个 NS 服务器 … Continue reading

Posted in 默认分类 | Tagged , , , , , | 2 Comments

遇见了不知道是mcelog还是内核的bug

2月29日,遇到一台运行 kernel-xen 的机器 load 异常高,但没有正在运行的进程的问题。ps 命令结果中,有大量如下进程: root     31246  2817  0 Feb18 ?        00:00:00 crond root     31247 31246  0 Feb18 ?        00:00:00 /bin/bash /usr/bin/run-parts /etc/cron.hourly root     31248 31247  0 Feb18 ?        00:00:00 /bin/bash /etc/cron.hourly/mcelog.cron root     31249 31247  0 Feb18 ?        00:00:00 awk -v progname=/etc/cron.hourly/mcelog.cron progname {?????   print progname “:\n”? root     31250 31248  0 Feb18 ?        00:00:00 cat /sys/hypervisor/uuid 我亲自 cat 了一下那个文件,也卡住了。查看 /proc/$pid/status 文件,发现状态是 disk sleep。搜索了一下,发现有人报告过这个 bug:https://bugzilla.redhat.com/show_bug.cgi?id=522827 。该报告的意思是 mcelog 不应该去读 uuid 这个文件。但我以为,这应该是内核的 bug 吧?既然提供了这个文件,为啥不让读呢?

Posted in 默认分类 | Tagged , , , | Leave a comment

RedHat EL 5 是不是快要出update5了?

因为发现手头一台 xen dom0 上版本是-94的 xend 进程占用大量内存就找 RedHat 公司的朋友问了一下版本号,发现已经有新版本的 kernel-xen -186版本和 xen -108版本了,而且最新的 xen 包依赖了在 CentOS 5.4 里根本不存在的 xz-libs 包和 libext4fs.so 文件。这是不是意味着 RHEL 5 的 update5 快要出来了呢? 这一次,CentOS、Scientific、Oracle EL 谁跟得最快?拭目以待!

Posted in 默认分类 | Tagged , , , | Leave a comment

laf!cacti竟然默认只能检测10000000K内存

今天遇见个12G内存的,直接不给出图了。检查了Data template才发现限制最高10000000K内存。用xm把被监控机器的内存量压小点,cacti就认出来了。真是好玩。 改了Data template模板,重新生成图,才可以了。

Posted in 默认分类 | Tagged , , | 4 Comments

nginx的IPv6支持

感谢Jtr帮忙,给我新租的linode VPS加了he.net的IPv6 tunnelbroker,但是marsteel说IPv6访问不了网站,只能ping通和访问ssh端口。我又去nginx的邮件列表问了半天,才发现原来只需要 listen [::]:80; 这一句就可以,而不需要分别在IPv4和IPv6上设置listen。具体讨论参见这里。

Posted in 默认分类 | Tagged , , | 9 Comments

RedHat 网络安装,对NFS URL的格式要求很高哦

今天用nfs://host/dir的格式安装失败了。后来看了python-virtinst-0.400.3-5.el5包里面DistroInstaller.py文件的源码,发现其中有一步是转换NFS URL的格式: def _sanitize_url(url): “”” Do nothing for http or ftp, but make sure nfs is in the expected format “”” if url.startswith(“nfs://”): # Convert RFC compliant NFS      nfs://server/path/to/distro # to what mount/anaconda expect  nfs:server:/path/to/distro # and carry the latter … Continue reading

Posted in 默认分类 | Tagged , , , , , | Leave a comment

RedHat 升级好猛烈啊

今天发现手头的一台 RHEL 5 的 libvirt、libvirt-python、python-virtinst 包比另一台机器的版本高,比 CentOS 里也高,而且那几个包还是原装正版 RedHat 出品的。奇怪…… 后来问了 Oralce Linux 的技术支持熟人,发现 Oracle Linux 从5到5.4,里面包含的这几个包的版本确实有过较大变化,这也解释了我手头的这个 RHEL 版本变动是咋回事。 看来 RHEL 的所谓 update 还是挺猛烈的,几乎相当于发行一个新的大版本了。CentOS 今天很让我失望,竟然没有跟进 5.4。

Posted in 默认分类 | Tagged , , , , | 3 Comments

yum的$releasever真是太反动了

来看这篇文章的人,大都应该同意《Unix编程艺术》中提到的那些观点吧。今天就给大家看一个反例:yum 的 $releasever 变量 在 /etc/yum.repos.d/ 目录下的软件库定义文件中,常常会在 baseurl 的路径中提到 $releasever 这个变量,表示当前发行版的大版本号,但大家知道这个变量是在哪设置的吗?我 grep 了整个 etc 目录都没找到,还是看了 yum.conf 才知道的,是在 yum.conf 文件里 distroverpkg 选项定义的。但这个选项就很有问题: distroverpkg 和 releasever 名字不同,且看不出什么联系 distroverpkg 的值,并不是明文,而是“redhat-release”。不知道大家看到这个会有什么想法,反正我是首先想到了 /etc/redhat-release 文件,但我错了。实际上指的是 redhat-release 这个RPM包。所谓“distroverpkg=redhat-release”的意思,其实是将 $releasever 设置为 redhat-release 这个RPM包的版本号 够变态吧?别人都是直接赋值,或者 include 一个各种变量定义的文件进来,而yum竟然用某个包的属性作为值,违反了“everything is file”的原则。烂!用属性实现,则相关软件必须能读取属性。这个功能对于yum来说无所谓,但是对于别的软件呢?还得特地加入rpm相关的代码才能实现,加入了平台相关特性,降低了可移植性,麻烦。正确的方法是以文件内容作为表示形式。当然了,这样的话用属性就没意义了,yum还能减点肥。 … Continue reading

Posted in 默认分类 | Tagged , , , | 14 Comments

Redhat真是太buggy了,竟然连OpenSSL的脚本少一句话都没看出来

这两天在考虑HTTPS撤销证书的问题,需要学习OpenSSL签X.509证书的流程,其中用到OpenSSL自带的CA.pl和CA.sh脚本。有个很奇怪的现象就是我用ubuntu里的CA.pl -newca可以生成正确的根证书,而同事用CentOS就不行。一起对比了一下配置文件、脚本,发现CentOS里的CA脚本少一句,导致签发出来的所谓根证书其实只是终端用户证书。然后看了一下RHEL 5,也有这个毛病。 于是就去centos网站提交了bug报告 http://bugs.centos.org/view.php?id=3860 另外,发现nginx只有0.8.7以上版本才支持CRL(证书撤销列表),唉…… 补录: 下午验证了一下,发现OpenSSL原版源代码就那样。奇怪的是redhat为啥选择了有bug的CA.sh而不是正确的CA.pl呢? https://bugzilla.redhat.com/show_bug.cgi?id=524780 2010年3月30日补录: 今天有新闻说 OpenSSL 终于发布 1.0 了,我看了一下,我提交的那个 bug 报告也被标记为已修复状态了。

Posted in 默认分类 | Tagged , , , | 2 Comments