大多的程式暫存區都會放到 /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 硬碟加速設定】
複製內容到剪貼板
代碼:
# hdparm -d1 -c3 -X69 -m16 /dev/hda
※ 如忘記參數意思,請 man hdparm 查詢,或參考
鳥哥‧hdparm文件。
【將 /tmp 掛載在記憶體上】
複製內容到剪貼板
代碼:
# vi /etc/rc.local
mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp
※ 將上面那三行加入 /etc/rc.local,重新開機即完成!
照理說,加入上面那三行應該不會有其他問題才對!總會碰到一
堆「帶賽」事情的我,加入那三行後卻發生了個嚴重的問題。只
要這台伺服器有開啟圖形介面〈XWindows〉,系統開進去整個畫
面一片漆黑,什麼都看不到。進入文字介面查看 log,會發現以
下錯誤訊息。
複製內容到剪貼板
代碼:
# 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
往前面再翻一點,發現 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
由於系統預設是使用圖形介面啟動,保險起見確認檢查圖形介面
服務啟動的順序有沒有問題。
複製內容到剪貼板
代碼:
# ls /etc/rc.d/rc5.d
接著將預設介面改成由文字介面開機,看看是不是會有相同的情
形?沒想到,重開機後相當順利的進入系統,沒有錯誤訊息、記
錄檔,皆為順利開啟服務的記錄,且順利將 /dev/shm/tmp 掛載
。與小建、Tsung 討論後,試著將 rc.local 那段寫在 gdm啟動
之前,測試後完全沒問題,因此將上面那三行加入開機系統服務
,即可解決此問題?
測試過手邊不同版本的 Linux,預設改成開啟圖形介面就會有相
相同的問題。〈RedHat Enterprise AS 4、Fedora Core 5〉
【X Windows 圖形介面無法掛載問題排除實作】
步驟一:編寫 shmturbo script,加入系統服務。
複製內容到剪貼板
代碼:
# 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
步驟二:將權限設定成 755。
※ 這個步驟一點要做喔!要不然重開還是不會執行到這一段!
步驟三:將服務加入 chkconfig。
複製內容到剪貼板
代碼:
# chkconfig --add shmturbo
※ 將服務加入開機程序內。
複製內容到剪貼板
代碼:
# chkconfig --list shmturbo
※ 檢查 3、5 run-level 是否可執行。
如何將自訂服務加入系統,請參照
鳥哥‧chkconfig 說明文件!
重新開機後,預設為圖形介面就可以順利開機登入囉! ^^~
這個解決方法雖有些不求甚解,終究仍是花了不少時間排除,經
測試三週的時間,的確發現執行效能提升不少,讓老舊的硬碟得
以稍微喘息一下。
在此,要提醒各位的是,tmpfs 優點是速度快,請依照您的記憶
體容量作適度調整,至於如何調整,建議參照
Tsung‧拿 RAM
當硬碟來用(RAM Disk),裡頭有完整的說明,不熟悉可再Google
一下,應該就可以獲得更多資訊囉!
延伸閱讀:
Tsung‧Linux 加速(拿 RAM 當硬碟)
IBM‧使用虛擬內存(virtual memory,VM)文件系統和綁定安裝
轉載自鳥哥
http://phorum.study-area.org/vie ... 5246a3d5a686fa033bf