danny 2007-9-15 07:37
Linux Tmpfs 系統加速實作
大多的程式暫存區都會放到 /tmp 底下,方便快取使用,假如能
夠將 /tmp 掛載到記憶體上運作,要是運用在那些吃重的網路服
務(Apache、Squid...),那麼會不會因此提高系統效能呢?嗯,
答案呼之欲出囉,畢竟記憶體讀取速度一定要比硬碟來得快喔!
【tmpfs 簡介】
簡單的說 tmpfs是一套以使用記憶體為基礎的檔案系統,不同於
ramdisk 的最大差別在於,ramdisk 雖也使用記憶體,但它的屬
於 Block device,使用前必須先 format(mkfs),tmpfs 使用上
就很方便囉.. 直接 mount 就可以使用了。
【tmpfs 使用確認】
啟用了「Virtual memory file system support」選項的 2.4系
列核心;這個選項在內核配置選項的「File systems」部分。
※ 建議編譯核心時,將常用的 File systems 編入模組。
【IDE 硬碟加速設定】[code]# hdparm -d1 -c3 -X69 -m16 /dev/hda[/code]※ 如忘記參數意思,請 man hdparm 查詢,或參考[url=http://linux.vbird.org/linux_basic/0230filesystem.php#hdparm]鳥哥‧hdparm文件[/url]。
【將 /tmp 掛載在記憶體上】[code]# vi /etc/rc.local
mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp [/code]※ 將上面那三行加入 /etc/rc.local,重新開機即完成!
照理說,加入上面那三行應該不會有其他問題才對!總會碰到一
堆「帶賽」事情的我,加入那三行後卻發生了個嚴重的問題。只
要這台伺服器有開啟圖形介面〈XWindows〉,系統開進去整個畫
面一片漆黑,什麼都看不到。進入文字介面查看 log,會發現以
下錯誤訊息。[code]# cat /var/log/messages
Aug 20 20:30:42 paul gdm[3029]: gdm_slave_xioerror_handler: Fatal X error - Restarting :0
Aug 20 20:30:52 paul gdm[3279]: gdm_slave_xioerror_handler: Fatal X error - Restarting :0
Aug 20 20:31:01 paul gdm[3414]: gdm_slave_xioerror_handler: Fatal X error - Restarting :0
Aug 20 20:31:01 paul gdm[2772]: deal_with_x_crashes: Running the XKeepsCrashing script[/code]往前面再翻一點,發現 xinetd、iiim 陸續成功啟動,rc.local
為最後啟動的服務,卻會出現以上錯誤。
Linux 開機服務載入順序:
1. BIOS
2. MBR
3. Linux Loader
4. Kernel, init (取得 run-level)
5. /etc/rc.d/
6. /etc/modules.conf
7. /etc/rc.d/rc[0-6].d
8. /etc/rc.d/rc.local
由於系統預設是使用圖形介面啟動,保險起見確認檢查圖形介面
服務啟動的順序有沒有問題。[code]# ls /etc/rc.d/rc5.d [/code]接著將預設介面改成由文字介面開機,看看是不是會有相同的情
形?沒想到,重開機後相當順利的進入系統,沒有錯誤訊息、記
錄檔,皆為順利開啟服務的記錄,且順利將 /dev/shm/tmp 掛載
。與小建、Tsung 討論後,試著將 rc.local 那段寫在 gdm啟動
之前,測試後完全沒問題,因此將上面那三行加入開機系統服務
,即可解決此問題?
測試過手邊不同版本的 Linux,預設改成開啟圖形介面就會有相
相同的問題。〈RedHat Enterprise AS 4、Fedora Core 5〉
【X Windows 圖形介面無法掛載問題排除實作】
步驟一:編寫 shmturbo script,加入系統服務。[code]# vi /etc/init.d/shmturbo
#!/bin/bash
# chkconfig: 35 80 70
# description: Linux Turbo
#
# History:
# 2007/08/26 Paul
PATH=/sbin:/bin:/usr/bin:/usr/sbin
mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp[/code]步驟二:將權限設定成 755。
※ 這個步驟一點要做喔!要不然重開還是不會執行到這一段!
步驟三:將服務加入 chkconfig。[code]# chkconfig --add shmturbo[/code]※ 將服務加入開機程序內。[code]# chkconfig --list shmturbo[/code]※ 檢查 3、5 run-level 是否可執行。
如何將自訂服務加入系統,請參照[url=http://linux.vbird.org/linux_basic/0560daemons.php#chkconfig]鳥哥‧chkconfig 說明文件[/url]!
重新開機後,預設為圖形介面就可以順利開機登入囉! ^^~
這個解決方法雖有些不求甚解,終究仍是花了不少時間排除,經
測試三週的時間,的確發現執行效能提升不少,讓老舊的硬碟得
以稍微喘息一下。
在此,要提醒各位的是,tmpfs 優點是速度快,請依照您的記憶
體容量作適度調整,至於如何調整,建議參照[url=http://plog.longwin.com.tw/my_note-unix/2006/01/08/ram_disk_build_method]Tsung‧拿 RAM
當硬碟來用(RAM Disk)[/url],裡頭有完整的說明,不熟悉可再Google
一下,應該就可以獲得更多資訊囉!
延伸閱讀:
[url=http://blog.longwin.com.tw/archives/000527.html]Tsung‧Linux 加速(拿 RAM 當硬碟)[/url]
[url=http://www.ibm.com/developerworks/cn/linux/filesystem/l-fs3/] IBM‧使用虛擬內存(virtual memory,VM)文件系統和綁定安裝[/url]
轉載自鳥哥 [url=http://phorum.study-area.org/viewtopic.php?t=47984&sid=be969b2e125bd5246a3d5a686fa033bf] [url]http://phorum.study-area.org/vie[/url] ... 5246a3d5a686fa033bf[/url]