直接从git安装 pip

有时,为了直接从git安装一个最新版本的python软件,方法如下:

sudo pip install -e git+https://github.com/openstack/python-novaclient.git#egg=python-novaclient

发表在 其他 | 留下评论

Red Hat Enterprise Linux 6.4正式发布,部分支持Open vSwitch

RHEL 6.4正式发布了,顺应网络虚拟化的趋势,内核包含了 Openvswitch模块。但是遗憾的是,目前RedHat还没有自带用户空间程序,也就是不提供工具配置、启动OpenSwitch功能。说白了,目前Openvswitch这个功能还是聋子的耳朵,只能看看,除非你安装第三方的工具。

官方的文档说,只能和第三方的内含用户工具的应用配合。RHEL 6.4加入了对openstack(Folsom版本)的支持,但现在还不支持quatum,也即不支持Openvswitch。

What Red Hat products provide support for Open vSwitch?

https://access.redhat.com/knowledge/articles/270223

Starting with Red Hat Enterprise Linux 6.4, the Open vSwitch kernel module is included as an enabler for Red Hat’s layered product offerings. Open vSwitch is supported only in conjunction with those products containing the accompanying user space utilities. Please note without theses required user space utilities, Open vSwitch will not function and can not be enabled for use.

At the moment, Red Hat does not have any layered product offerings that provide support for Open vSwitch. However, Red Hat is actively evaluating the technology for inclusion in future layered product offerings.

发表在 OpenStack | 留下评论

KVM磁盘性能优化

磁盘性能是虚拟技术中的一个瓶颈,虚拟机由于经过封装以后,磁盘有所下降,尤其要对磁盘性能进行优化。

优化要点:

1、在母机(host)上,设置磁盘调度器为 deadline,有两种方法

– 在启动的时候,加入参数(需要重新启动):
elevator=deadline

– 或者实时调整参数(不需要重新启动,但是下次启动时丢失):
for f in /sys/block/sd*/queue/scheduler; do echo “deadline” > $f; done

2、使用 virtio,一定注意,否则导致磁盘性能严重下降

3、在虚拟机(VM)上,设置磁盘调度器为 noop,有两种方法

– 在启动的时候,加入参数(需要重新启动):
elevator=noop

– 或者实时调整参数(不需要重新启动,但是下次启动时丢失):
for f in /sys/block/sd*/queue/scheduler; do echo “noop” > $f; done

4、尽量使用 LVM 作为虚拟机的磁盘,qcow2会带来额外的负担,从而导致IO性能下降

 5、注意虚拟机内的 virtio驱动程序一定是最新的,特别是windows虚拟机
参考:
http://serverfault.com/questions/360718/kvm-low-io-performance
发表在 云计算 | 留下评论

Ubuntu 12.04 取消了Server版本的内核

在Ubuntu 12.04之前,长期存在着两种内核版本:桌面版(Desktop)和服务器版(Server)。两者的区别主要是:

1、服务器版本使用 Deadline I/O 调度器,而桌面版使用CFQ 调度器

2、服务器版本上,抢占内核开关(Preemption)被关闭

3、服务器版本的时钟中断是100 Hz ,桌面版本是250 Hz

从Ubuntu 12.04 版本开始,3.2.0不再 Server 和Desktop版本的内核将完全一样,为了兼容,暂时保留Server版本的内核(其实和Desktop是完全一样的)。而新版的3.5.0内核,则干脆就没有提供单独的Server版本。这是由于:

1、I/O调度器可以很方便地通过参数调整

— 比如在启动的时候,加入参数:
elevator=deadline

— 或者实时调整参数:
for f in /sys/block/sd*/queue/scheduler; do echo “deadline” > $f; done

并且CFQ是所有调度器中,具有最多的功能特性,并且开发人员活跃CFQ。所以作为缺省调度器是一个合适的选择。

2、之前内核在抢占模式(Preemption)下,服务器性能会受到轻微影响。但是最近几年的内核,抢占模式不会对服务器性能造成任何影响

3、时钟中断对性能几乎没有影响。而且关于时钟中断,由于缺省已经打开 tickless开关(CONFIG_NO_HZ),意思采用动态时钟中断,当系统没有活动时,将进入完全的空闲状态。

https://help.ubuntu.com/community/ServerFaq

https://lists.ubuntu.com/archives/kernel-team/2011-October/017471.html

http://askubuntu.com/questions/122493/why-is-12-04-removing-the-server-kernel-flavour

发表在 DEVOPS | 留下评论

ubuntu 12.04.2 发布,内核更新到3.5.0

Ubuntu 12.04 使用的内核版本是 3.2.0。今天发布的Ubuntu 12.04.2 缺省使用新的内核 3.5.0-23.35,这个内核是从Quantal版本取过来的。这个内核版本基于 3.5.7.2 的扩展上游版本。

使用新版内核的目的,是为了增强对硬件的支持。由于Ubuntu 12.04 是LTS(长期支持版本),现在距离发布时间已经将近一年,一些新的硬件和驱动不能很好地支持,所以使用新版内核来弥补这一不足。

使用新的内核版本,有三种方式:
1、从之前的 12.04 直接升级过来
sudo apt-get install linux-generic-lts-quantal

2、使用新的12.04.2的媒介(CD/DVD)安装新系统

3、使用网络安装的时候,选用quantal-netboot 安装介质
http://mirrors.163.com/ubuntu/dists/precise-updates/main/installer-amd64/current/images/quantal-netboot/

如果还想保留老的3.2版本的内核,有两种方式:
1、使用新的12.04.1或者12.04的媒介(CD/DVD)安装新系统

2、使用网络安装的时候,选用netboot 安装介质
http://mirrors.163.com/ubuntu/dists/precise/main/installer-amd64/current/images/netboot/

这种内核的更新方式,与RHEL(RedHat的企业版)有比较大的区别,RedHat的方式是保持版本的稳定,大的版本号不变,而仅仅将新的硬件支持、驱动、一些新的特性从新的版本backport过来。这样RedHat即可以保持内核版本的稳定,又可以支持新的硬件和特性。很显然,RedHat的这种方式对于服务器环境更加适合,只有RedHat这种拥有大批Linux内核专家的公司才有能力去这么做。

发表在 DEVOPS | 留下评论

机房高压直流供电带来的问题

公司新的机房,全面采用了高压直流供电方案,使用了半年以后,有一些经验和大家分享。

高压直流供电的好处,已经讨论较多,大家可以查询相关资料。

高压直流供电的主要问题,是设备的适应性,也即时服务器或者网络设备能否在高压直流环境下开机和长期可靠工作:

  • 由于高压直流的正常电压是270V,在电池充电的时候,电压会上升到280伏以上,会引起少部分设备的过压保护。特别是一些品牌机或者新的服务器,对于电压保护更加严格,导致不能开机或者有过压告警;有的设备在工作一段时间后,会由于过压保护而停机。
  • 部分设备的整流部分为了节省成本,采用半波整流方式,这样需要更换电源极性或者加入一根极性适配线来进行开机。
  • 少量设备除了检测电压,还检测频率,这种设备在高压直流之下是无法工作的。

一些故障情况:

1、机房的核心设备华为S9300交换机,正常工作一个多月以后,突然跳电,导致网络全部瘫痪2小时。故障现象是电源告警,不能正常开机。紧急之下使用墙壁临时的交流电恢复供电。

多次联系华为的工程师,好多工程师对高压直流供电还是比较陌生,后来他们中央研究部的开发人员回复,S93000交换机不支持高压直流供电。

事后我们分析,测量高压直流机架电压是289伏,而华为S9300电源参数是:

输入额定电压110V AC/220V AC;50/60Hz
输入电压范围90V AC ~ 290V AC;50/60Hz

这样导致电源保护,整机停机,网络全部阻塞。

(更正:这里的输入电压范围是指交流输入,和直流电压是有差异的)

另外,电信运营商咨询了周边城市使用高压直流的机房,同样也发现华为S9300交换机在高压直流下异常的问题。华为的其他系列交换机,没有发现问题。

2、Dell 12代服务器R720点不亮

公司有大量的R410服务器,老的Dell 1950,可以在高压直流机房正常工作,偶尔有电压告警。但是新采购的Dell R720服务器,将我们折腾得够呛。

联系Dell的工程师,说要购买1100W的电源才能工作,买回来一看,是48V的低压直流,根本不能用,继续联系工程师,说750W的电源可能会支持,现在750W的电源正在采购途中,是否可用不知道(补充,750W电源到货,任然不能开机,悲剧)。

后来联系到一个Dell的资深工程师,他说Dell的电源电压是220V正负36V左右,也即电压到256伏以上可能会有电压告警,一些老的设备可能仅仅是告警,但是一些新的设备,比如今年新出的11代服务器,会不能开机。所以新的设备,高压直流现在有专门的单独的电源模块,但是带来的问题是,以后机房搬迁换到普通直流机房,又会有问题。

结论:

1、兼容机的电源,一般都没有问题,都可以正常开机;

2、越是高端设备,越是会有电源问题;越是新的设备,也越是会有电源问题

因为越是高端设备或者新的设备,电压规范越是细致,电压保护也更加严格;

新的设备订购,请咨询厂商,是否能够在高压直流下正常工作,我们新的Dell R720就已经在机房睡了两个星期大觉,天天吹吹空调。

3、重要设备,一定要和厂商确认,否则后果严重

对于核心交换机等重要设备,一定需要和厂商确认是否能够正常工作,当然厂商的普通技术支持可能都没有听说过高压直流,你要有耐心和他详细解释,并且保证对方已经清楚理解,不要无解成48V的低压直流。

如果没有确认,即使当时可能正常工作,也随时可能过压保护导致故障。

4、高压直流供电系统本身由于可靠、节能、绿色,受到运营商的欢迎,但是目前设备供应商还没有完全做好准备。

 

发表在 DEVOPS | 留下评论

Linux下将两个10G的文件打包成一个文件需要多久

微博上kevin_prajna提了一个问题:“求Linux下一打包工具,需求:能把两个10G的文件打包成一个文件,时间在1分钟之内能接受!”。

暂且作答一下吧。首先问题是求解工具,那么我们忽略IO问题,采用内存盘来解决, 在公司一台128G内存的机器上:

mkdir /mnt/test
mount -t ramfs none /mnt/test
cd /mnt/test

生成一个小脚本,生成两个10G的文件:

#!/bin/bash
for (( i = 0; i < 2; i++)); do
echo $i
    dd if=/dev/zero of=file$i.bin bs=1M count=10000
done;

生成测试文件:

time ./test.sh <<<
0
10000+0 records in
10000+0 records out
10485760000 bytes (10 GB) copied, 4.78903 s, 2.2 GB/s
1
10000+0 records in
10000+0 records out
10485760000 bytes (10 GB) copied, 4.92947 s, 2.1 GB/s
./test.sh 0.00s user 9.68s system 99% cpu 9.731 total

测试结果,生成两个10G文件,消耗了9.731秒

采用tar打包工具测试:

time tar cvf out.bin file* <<<
file0.bin
file1.bin
tar cvf out.bin file* 0.40s user 13.90s system 99% cpu 14.353 total

采用 tar打包这两个文件,并且写入 out.bin文件,消耗了 14.353秒, 完全满足kevin_prajna的要求。

然后我们用cpio来测试,由于cpio对10G这样的文件打包有bug,会报错,所以我们用20个1G文件测试:

#!/bin/bash
for (( i = 0; i < 20; i++)); do
echo $i
    dd if=/dev/zero of=file$i.bin bs=1M count=1000
done;

生成20个1G测试文件,用了 9.806秒

使用tar对这20个1G文件打包,用了13.800 秒

cpio的测试结果:

# time ls file*|cpio -o > out.bin                                                                                                                                           <<<
40960002 blocks
ls --color=tty file*  0.00s user 0.00s system 0% cpu 0.002 total
cpio -o > out.bin  6.31s user 37.61s system 99% cpu 44.029 total

cpio打包这20个1G文件消耗了44.029秒,速度相对tar,还是慢了好多。

测试环境:

Dell R710, 2*Xeon E5620, 128G RAM
OS: Ubuntu 12.04 x86_64

从上面也可以看出,现在CPU和工具是很强悍的,弱爆的是磁盘IO,这是要大把花银子的。

发表在 DEVOPS | 留下评论

Mac OS X下的tmux使用鼠标模式

tmux是系统管理员的一个常用工具。tmux打开鼠标模式,可以给日常操作带来方便, 只要在 .tmux.conf 下加入下列设置:

 


set -g mode-mouse on
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on

这样,选择windows,选择pane,调整pane大小,都可以使用鼠标或者trackpad。

但是,如何使用鼠标选择文字进行拷贝(系统的拷贝缓冲,而不是 tmux的拷贝缓冲)?

可以在使用mouse选择的同时,按下 alt键。

发表在 公告声明 | 留下评论

重负载下,kvm 网络中断的问题

Ubuntu 12.04 LTS环境下,安装KVM虚拟机。当系统的网络负载高的时候,会出现网络突然中断的问题,现象是:

  • 突然之间,网络完全中断,无法从网络访问虚拟机
  • 用vnc或者console登录虚拟机,发现虚拟机还在正常工作,没有奔溃
  • 使用 ifdown eth0; ifup eth0,可以立即恢复网络
  • 网络负载越大,故障出现的频率越高。一天会出现几次,经常一两个小时就网络崩溃一次。轻网络负载的机器,没有出现故障
  • 只有virtio网络驱动会出现这个问题,e1000没有问题

搜索了一下,发现ubuntu 12.04和centos 6.2都会出现这样的问题:

https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/997978

http://bugs.centos.org/view.php?id=5526

几个解决办法:

1、使用 e1000替代virtio

2、使用 vhost_net 模块

echo vhost_net > /etc/modules

modprobe vhost_net

然后重新启动虚拟机,libvirtd就会自动使用 vhost_net

3、等待正式的补丁

目前ubuntu已经出了ppa,有人使用了一周多,一直正常。

centos 6.3据说已经解决了这个问题

发表在 DEVOPS, OpenStack | 标签为 | 留下评论

mac下,iterm2完全可以替换securecrt

securecrt作为windows下长期使用的一个优秀的ssh客户端工具,也有MAC版本的。

但是通过一段时间对iterm2的了解和熟悉,发现完全可以替代 MAC下的securecrt,毕竟securecrt太贵了,99美金。iterm2的一些特点:

  • 支持多tab

Cmd+left arrow   切换到左边tab

Cmd+right arrow 切换到邮编tab

cmd+数字    直接切换到某个tab

Cmd-Option-E 显示所有tab,以便搜索导航

  •  可以将窗口水平、垂直布局,分成多个pane

Cmd-D                              垂直切分

Cmd-Shift-D                    水平切分

Cmd-[ 和  Cmd-]             在不同pane中切换

  •  基于tagged的profile:

可以直接设置连接远程的多个主机,比如创建一个profile:

name:172.16.0.2

command:ssh -A -p 22 root@172.16.0.2

就可以直接通过这个profile连接到远程主机 172.16.0.2上。

 

可以给profile打标签,比如 develop,product等,比securecrt下的文件夹更加灵活。

可以基于标签和名字进行检索,如果要检索部分内容,请在检索前面加入 *,比如 “*duct *82”

对于频繁使用的profile,可以加入热键,直接呼出。

另外,iterm2还有大量有用的特性,比如 支持正则的搜索,支持鼠标操作,文字选择,自动补齐,剪贴板的历史,支持growl通知,和tmux的配合等等。

发表在 DEVOPS, 其他 | 留下评论