日志分类:Linux

Linux 使用 RAMDisk 提高系统性能

2006-06-10,星期六 | 分类:Linux | 标签: | 2,963 Views

最初,使用 RAMDisk 是通过在 ram 设备上建立文件系统并挂载来实现的。
# mkdir /mnt/ramfs
然后把下面的指令加入 /etc/rc.local 。
/sbin/mkfs -t ext3 /dev/ram0
/bin/mount /dev/ram0 /mnt/ramfs
/bin/chmod -R 1777 /mnt/ramfs
RAMDisk 的默认大小是 8M (可以在编译内核时设定),如果要增加 RAMDisk 的大小,需要在系统启动时给内核传参数,在 grub.conf 的 kernel 行末加上 ramdisk_size=131072 ,这里不能是 128M 这样的写法,应该是 128*1024 。
 
使用 ram 设备的灵活性不够,不方便。之后就使用 shm 了。
以 /tmp 绑定到 shm 为例,可以把下面的指令加入 /etc/rc.local 。
mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp
 
使用 shm 要稍微方便些了,不过还是不够,更方便的办法是通过 mount 使用 tmpfs 文件系统。
# mkdir /mnt/tmpfs
# mount -t tmpfs -o size=128m,mode=1777 tmpfs /mnt/tmpfs
这里的 128m 就是 128Mb 的意思。
卸载:# umount /mnt/tmpfs
可以添加相应的设置到 /etc/fstab 开机自动挂载。
Debian 系统在启动时会清空 /tmp 目录,让 /tmp 使用 tmpfs 再合适不过了,这样还可以提高系统性能。
编辑 /etc/fstab,加入或修改 /tmp 这行:
tmpfs           /tmp            tmpfs   size=128m,mode=1777     0          0
 
直接使用 tmpfs 应该是最方便的。把 squid 的 cache 目录放到 RAMDisk 里提高 proxy 效能,甚至把 MySQL 的数据库文件也放到 RAMDisk 以减少磁盘 I/O 。想怎么玩都比较方便了。
需要注意的是,RAMDisk 的大小最好不要超过内存的一半,如果过大,系统就会使用 swap 分区了,性能反倒会下降。
 
参考资料:LINUX系统性能调谐

Debian Sarge 安装 VMware GSX Server 的奇怪问题

2006-06-09,星期五 | 分类:Debian | 标签: | 554 Views

VMware 的安装不是什么难事,基本上是回车即可。
可是在 Debian Sarge 上执行 /usr/bin/vmware-config.pl 生成 vmmon.ko 时却有意外状况发生,说是找不到内核头文件的 scripts 目录。
虽然已经安装过内核头文件,但是想到很久没有更新过内核了,干脆升级一下内核算了。
# apt-get update
# apt-get upgrade
# apt-cache search kernel-image | grep 2.6
安装相应 CPU 型号的最新内核:
# apt-get install kernel-image-2.6.8-3-686-smp
重启进入新内核的系统,确认没有问题后删除老内核:
# dpkg --purge --force-remove-essential kernel-image-2.6.8-2-686-smp
# apt-get remove --purge kernel-headers-2.6.8-2-686
或许 /boot 和 /lib/modules 下的一些残留文件需要另行删除。
再来安装与新内核相匹配的内核头文件:
# module-assistant prepare
再次运行 /usr/bin/vmware-config.pl ,却还是相同的问题。
到 /usr/src/kernel-headers-2.6.8-3-686-smp 目录下一看,发现 scripts 是个链接,是链接到
../kernel-kbuild-2.6-3/scripts 的,而 /usr/src/kernel-headers-2.6.8-3 下的 scripts 也是个链
接,居然同样链接到了 ../kernel-kbuild-2.6-3/scripts ,-_-! 这要不出错才怪了呢。
怀疑是 apt source 的问题,便把 cn99 的换成了 geekbone 的。apt-get clean 后重新安装,可是问题依旧。
询问使用 Debian testing 的用户,说 scripts 是个目录,里面有相应的脚本,看来是 Debian Sarge
的 bug 了。把 Debian testing 2.6.15 内核头文件的 scripts 目录拷贝过来覆盖掉 /usr/src/kernel
-headers-2.6.8-3/scripts 后再运行 /usr/bin/vmware-config.pl ,这次顺利的编译出了 vmmon.ko 。
就在本机使用 VMware 还需在本机安装 VMware-console ,一路回车就搞定。
对于远程使用 VMware ,值得注意的是 Server 和 Client 通信默认使用的是 902 端口,需要在防火墙中打开这个端口。
一个很有意义的设置是虚拟机可以随宿主系统自动启动/关闭:
VM -> Settings... -> Options -> Startup/Shutdown
选择随宿主系统自动启动/关闭。
启动虚拟主机时报错说 /tmp 空间不够,可以给 VMware 指定一个 tmp 目录:
# vi /etc/vmware/config
增加 tmpDirectory="/home/tmp" 。

VNCServer 的安装配置

2006-05-24,星期三 | 分类:Linux | 标签: | 742 Views

安装 Oracle 需要在 GUI 下,用 VNC 远程登录比较方便。

对于 Debian ,可以 apt 安装 gnome 和 gdm ,再安装 vncserver ,
然后配置 VNCServer
# vi /etc/vnc.conf
$geometry = "1024x768";
$depth = "16";

启动
$ vncserver :1
停止
$ vncserver -kill :1
修改密码
$ vncpasswd

对于 Redhat ,安装系统的时候选上 GNOME 桌面。
VNCServer 的配置
# vi /etc/sysconfig/vncservers
VNCSERVERS="1:root 2:oracle"
VNCSERVERARGS[1]="-geometry 1024x768"
执行 vncserver ,会要求设置连接密码。接下来 $HOME/.Xauthority 文件和 $HOME/.vnc 目录也就创建了。

之后可以使用
# /etc/init.d/vncserver stop
# /etc/init.d/vncserver start
来关闭和启动服务。

$HOME/.vnc/xstartup 执行 X 启动时的设置,如果要启动 GNOME 可以加入 gnome-session ,而要启动 KDE 的话可以加入 startkde 。如果设置了开机自动启动,vncserver 还没有得到语言的环境变量,远程登录后是英文界面,可以在 xstartup 中加入“LANG="zh_CN.GBK" export LANG”。配置文件的一个范例:
# cat $HOME/.vnc/xstartup
#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

LANG="zh_CN.GBK"
export LANG

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
gnome-session
#startkde

Redhat vim 语法着色

2006-05-23,星期二 | 分类:Redhat/CentOS | 标签: | 801 Views

首先安装 vim-enhanced ,
# yum -y install vim-enhanced
然后,
# vi ~/.vimrc
syntax on ,显示颜色;syntax off ,则不显示颜色。
为了方便,给 vi 做个别名,
# vi ~/.bashrc
alias vi='vim'
# source ~/.bash_profile

Debian 做 ADSL NAT 的 MTU 问题

2006-05-09,星期二 | 分类:Debian, Network | 标签: | 2,810 Views

以前用网关路由器拨号上网时使用微软的东西是没有问题的。现在换成用 Debian 拨号再使用 iptables SNAT 后,MSN 就不能登陆了,打开 www.msn.com.cn 非常慢且只能打开页面的头部,而 windowsupdate.microsoft.com 根本就打不开了。
 
google 后得知修改 PC 网卡的 MTU 值可以解决这个问题。
在 Windows 2000/XP 下修改注册表:
『HKEY_Local_Machine』->『SYSTEM』->『CurrentControlSet』->『Services』->『Tcpip』->『Parameters』->『interface』
找到所使用的网卡,『编辑』->『新增』->『DWORD值』之后,建立一个名为『MTU』的机码,右键『修改』,选择十进制,填入 1480 。
 
但是,这个方法很蹩脚呢,内网中的机器那么多,一个一个去改是很不现实的。
对网关进行修改才是正道。
 
在网关服务器上,
# ip addr sh
发现 ppp 设备的 mtu 值是 1492 。
就在 /etc/ppp/peers/dsl-provider 文件中取消了“mtu 1492”这行的注释并改为了 1480 ,重新拨号却没有变化。在 /var/log/messages 中还看到这样的信息:
Couldn't increase MTU to 1500
Couldn't increase MRU to 1500

没有设置 mtu 值的时候也会有这样的信息,这就意味着 pppoe 忽略了 mtu 这个参数。
 
没办法,继续 google ,有说 plugin rp-pppoe.so 有 bug ,就注释掉这行,改用
pty "/usr/sbin/pppoe -I eth1 -T 80 -m 1480"
结果根本不能拨号了。-_-!
软的不行就来硬的,直接
# ifconfig ppp0 mtu 1480
这下 MSN 能登陆了,但是微软的网站还是打不开。
 
注:Redhat 可以修改 /etc/sysconfig/networking-script/ifcfg-ppp0 ,添加 CLAMPMSS=1480 。
 
最后的解决办法——用 iptables 改 MTU 值。
# iptables -A FORWARD -o ppp0 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j
TCPMSS --clamp-mss-to-pmtu
把出站包大小改为 ppp0 的 MTU 尺寸,这下就一切正常了。
MSS 既 Max Segment Size 。
 
参考资料:鸟哥的 Linux 私房菜——连不上一些网站的处理方法 MTU 修改
 
 
另记:
由于 Microsoft Windows 系列操作系统传送的 TCP 包请求的 segment 太大,超出了 PPPoE 的 frame 所能够接受的范围,导致 PPPoE 传送“don't fragment”的 ICMP 而不是“must fragment”,最终导致网站没有响应。这种情况称为“Black Hole Router”。
—— 2006.05.13 00:30
 
又看了一下 /etc/ppp/ip-up.d 下的脚本,发现 0clampmss 里的内容是这样的:
#!/bin/sh
# Enable MSS clamping (autogenerated by pppoeconf)
iptables -o "$PPP_IFACE" --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
看来 Debian 的 pppoe 也早有考虑。我在做 SNAT 前清空了 iptables 规则,造成 pppoe 添加的 iptables 规则失效了。
—— 2006.06.01 13:48

Pages: Prev 1 2 3 4 5 6 Next