日志存档:06, 2006

Linux 使用 RAMDisk 提高系统性能

2006-06-10,星期六 | 分类:Linux | 标签: | 2,962 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 | 标签: | 553 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" 。

PHP 连接 MSSQL

2006-06-02,星期五 | 分类:PHP | 标签: | 3,022 Views

1. Windows 下
把 php.ini 放到 C:\WINNT 下,
设置 extension_dir ,如:
extension_dir = "C:\php-4.3.11\extensions"
取消 mssql.dll 的注释:
extension=php_mssql.dll
 
Web Server 和 MS SQL SERVER 在同一部机器:
mssql_connect("HOST\INSTANCE","USER","PWD");
 
远程连接需要先在 Web Server 安装 MS SQL SERVER 客户端工具,然后才能连接:
mssql_connect("SERVER","USER","PWD");
 
2. UNIX/Linux 下
先安装 freetds-0.63
./configure --prefix=/usr/local/freetds
make
make install
 
安装 PHP 的时候:
--with-mssql=/usr/local/freetds
 
连接时需要加上端口号:
mssql_connect("IP:1433","USER","PWD");