查看完整版本: Linux Tmpfs 系統加速實作

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]
    
頁: [1]
查看完整版本: Linux Tmpfs 系統加速實作