Linux


9
四 12

Ubuntu 11.10使用软RAID时需要注意的一个问题

在Ubuntu 11.10上使用了软RAID,重启系统的时候,总是需要手动干预才能进入系统。

有两个原因,一是因为软件RAID降低后,初启过程中断,需要确认。

这个需要重新配置mdadm,重新生成initrd文件:

执行 dpkg-reconfig mdadm

其中有一步是选择“当RAID降级时,仍然启动系统”,选择yes。

另一个原因是,启动时,总是进入busybox,这个是Ubuntu 11.10的一个bug,如下文件所述:

http://ubuntuforums.org/showpost.php?p=11388915&postcount=18

需要修改:/usr/share/initramfs-tools/scripts/mdadm-functions

将:


degraded_arrays()
{
mdadm --misc --scan --detail --test >/dev/null 2>&1
return $((! $?))
}

添加一行,改为:

degraded_arrays()
{
udevadm settle
mdadm --misc --scan --detail --test >/dev/null 2>&1
return $((! $?))
}

然后,重新生成initrd:
update-initramfs -u


18
三 12

在Linux上使用无线短信猫

【问题1】使用USB的还是串口设备?
根据有使用经验的人建议,USB接口的设备在Linux上工作不稳定,可能是驱动的问题。所以建议使用串口猫,前提是,你的用于连接猫的计算机上要有串口。

【问题2】短信猫在Windows上有“开发库”、甚至是“管理软件”、“管理平台”, 却不提供Linux下的开发库,怎么使用?
短信猫,本质上,是一个串口设备,支持AT指令集。
Linux上有一个软件叫gnokii,网址:http://www.gnokii.org/,下载安装,进行简单的配置即可使用。假如使用的是CentOS或者RHEL系统,在EPEL官方扩展仓库里有,可以使用yum安装。

【问题3】注意/dev/ttyS0的权限,gnokii-smsd服务可能会没有权限读取/dev/ttyS0设备。默认的/dev/ttyS0的权限为660,而gnokii-smsd程序以是gnokii用户运行,没有读写权限。

【问题4】需要安装的软件有:gnokii,gnokii-smsd,gnokii-smsd-mysql,三个包。其中,gnokii是必须的。gnokii-smsd则是一个守护程序,用于构建一个SMS收发平台。通过操作MySQL数据库来发送短信以及将收到的短信写入MySQL。

【问题5】给出我的配置文件的样例:
[global]
port = /dev/ttyS0
model = AT
initlength = default
connection = serial
use_locking = no
serial_baudrate = 9600
serial_write_usleep = 10000
handshake = software
sm_retry = 1
smsc_timeout = 10

[gnokiid]
bindir = /usr/sbin/

[logging]
debug = off
rlpdebug = off
xdebug = off

【问题6】如何发送SMS?
使用gnokii命令,如下:
echo “This is only a test.” | gnokii –sendsms  188xxxxxxxx

 

比较靠谱的设备供应商:
http://www.lianyisms.com/

靠谱的软件(For Linux):
http://www.gnokii.org/


2
三 12

redis


27
二 12

从apachectl脚本中学到的一个技巧

bash中,使用[ -z "$val" ]和[ -n "$val" ]来判断变理val(字符串)为空、不为空。

但是,有时候,我们希望排除空格以及换行符,认为val为空格或者换行符时,作为空来处理。

在/usr/sbin/apachectl中,有一段有意思的写法:
# Set the maximum number of file descriptors allowed per child process.
if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then
$ULIMIT_MAX_FILES
fi

本来,我以为这里是为了“去除空格及换行符以及不可见字符对判断的影响,但是经过几次测试,用引号引用之后,这样写与使用-z与-n来判断ULIMIT_MAX_FILES为空或不为空效果一样,空格、或者换行符,依然能影响判断结果。

看来作者这里的意思本来就是判断不为空吧。
正确的排除空格、换行符及其他不可打印字符影响的判断应该这样写:
if [ x$ULIMIT_MAX_FILES != "x" ] ; then
$ULIMIT_MAX_FILES
fi
这样,当ULIMIT_MAX_FILES=” “或者ULIMIT_MAX_FILES=’
‘都不会影响得到正确的逻辑结果了(作者的逻辑并没有错,是我理解错了)。

PS:另外,这样写的一个好处是,对bash的要求低,比如可以允许/bin/sh不支持[] 的test语法。


24
二 12

I/O之WriteBack与WriteThrough


23
二 12

DNS Tips

1. http://www.root-servers.org/ 当前ROOT-SERVER的分布情况。
2. UDP封包,查询速度基本上都在100ms内。
3. DNS预设查询超时为5s;/etc/resolv.conf中设定的nameserver数量最多为3个;
4. 假如DNS故障,那么本地DNS解析抛异常出来的时间计算公式:

tm为超时时间,默认为5s
try重试次数
有一个nameserver时 : tm*(try-1)
有两个nameserver时 : tm+(ns_num*tm)*(try-1)
有三个nameserver时 : (tm+tm*2/ns_num)*try+(tm*4/ns_num)*(try-1)
注:相除时,如果 值不足 1 时取 1 ,如有小数部份取整数
调整timeout与retry于/etc/resolv.conf设定
options timeout:3 attempts:2
上述作用: 只试4次,每个3秒,以上述例子看一台,二台,三台分别最大time out为3,2,4秒

5. 查看DNS版本信息:dig @f.root-servers.net chaos txt version.bind
6. 查看BIND主机名:dig @f.root-servers.net chaos txt hostname.bind
7. bind view + ACL实现智能DNS解析
acl CN {58.14.0.0/15;};
view “CHINA” {
match-clients {CN;};
include “/etc/namedb/view/view_china”;
};
view “other” {
match-clients {any;};
include “/etc/namedb/view/view_other”;
};


22
二 12

[转]TSO、UFO、GSO、LRO、GRO和RSS介绍

ethtool -k < 网络接口>,可以看到很多网络接口的offload特性,例如:

$ sudo ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off

这些offload特性都是为了提升网络收/发性能。TSO、UFO和GSO是对应网络发送,在接收方向上对应的是LRO、GRO。

TSO

TSO(TCP Segmentation Offload),是一种利用网卡对TCP数据包分片,减轻CPU负荷的一种技术,有时也被叫做 LSO (Large segment offload) ,TSO是针对TCP的,UFO是针对UDP的。如果硬件支持 TSO功能,同时也需要硬件支持的TCP校验计算和分散/聚集 (Scatter Gather) 功能。

GSO

GSO(Generic Segmentation Offload),它比TSO更通用,基本思想就是尽可能的推迟数据分片直至发送到网卡驱动之前,此时会检查网卡是否支持分片功能(如TSO、UFO),如果支持直接发送到网卡,如果不支持就进行分片后再发往网卡。这样大数据包只需走一次协议栈,而不是被分割成几个数据包分别走,这就提高了效率。

LRO

LRO(Large Receive Offload),通过将接收到的多个TCP数据聚合成一个大的数据包,然后传递给网络协议栈处理,以减少上层协议栈处理 开销,提高系统接收TCP数据包的能力。

GRO

GRO(Generic Receive Offload),基本思想跟LRO类似,克服了LRO的一些缺点,更通用。后续的驱动都使用GRO的接口,而不是LRO。

RSS

RSS(Receive Side Scaling),是一项网卡的新特性,俗称多队列。具备多个RSS队列的网卡,可以将不同的网络流分成不同的队列,再分别将这些队列分配到多个CPU核心上进行处理,从而将负荷分散,充分利用多核处理器的能力。


21
二 12

traffic server


21
二 12

MyFox


21
二 12

ssd