作者 主題: [文章]優化 Linux 系統硬碟  (閱讀 10792 次)

0 會員 與 1 訪客 正在閱讀本文。

TyroneYeh

  • 俺是博士!
  • *****
  • 文章數: 2396
  • 性別: 男
    • 檢視個人資料
[文章]優化 Linux 系統硬碟
« 於: 2003-01-15 09:08 »
  在Windows系統中,磁碟碎片是一個常見的問題,如果不注意,系統性能可能被侵蝕。Linux使用第二擴展檔系統(ext2),它以一種完全不同的方式處理檔存儲。Linux沒有Windows系統中發現的那種問題,這使得許多人認為磁碟碎片化根本不是一個問題。但是,這是不正確的。

  所有的檔系統隨著時間的推移都趨向於碎片化。Linux檔系統減少了碎片化,但是並沒有消除。由於它不經常出現,所以對於一個單用戶的工作站來說,可能根本不是問題。然而在繁忙的伺服器中,隨著時間的過去,檔碎片化將降低硬碟性能,硬碟性能只有從硬碟讀出或寫入資料時才能注意到。下面是優化Linux系統硬碟性能的一些具體措施。

清理磁碟

  這種方法看上去很簡單:清理磁碟機,刪除不需要的檔,清除所有需要被保存但將不被使用的檔。如果可能的話,清除多餘的目錄,並減少子目錄的數目。這些建議似乎顯而易見,但是你會驚訝地發現,每個磁碟上確實積累了非常多的垃圾。釋放磁碟空間可以幫助系統更好地工作。

整理磁碟碎片

  Linux系統上的磁碟碎片整理程式與Windows 98或Windows NT系統中的磁碟碎片整理程式不同。Windows 98引入FAT 32檔系統,雖然運行Windows 98不必轉換為FAT 32檔系統。Windows可以被設置為使用FAT或一個叫NTFS的增強檔系統。所有這些檔系統以本質上相同的方式處理檔存儲。

  Linux最好的整理磁碟碎片的方法是做一個完全的備份,重新格式化分區,然後從備份恢復檔。當檔被存儲時,它們將被寫到連續的塊中,它們不會碎片化。這是一個大工作,可能對於像/usr之類不經常改變的程式分區是不必要的,但是它可以在一個多用戶系統的/home分區產生奇跡。它所花費的時間與Windows NT伺服器磁碟碎片整理花費的時間大致上相同。

  如果硬碟性能仍不令人滿意,還有許多其他的步驟可以考慮,但是任何包含升級或購買新設備的硬體解決方案可能會是昂貴的。

從IDE升級到SCSI

  如果你的硬碟是一個IDE驅動器,可以通過升級到SCSI驅動器獲得更好的整體性能。因為IDE控制器必須訪問CPU,CPU和磁碟密集型操作可能變得非常緩慢。SCSI控制器不用通過CPU處理讀寫。當IDE驅動器在讀或寫時,用戶可能會因為CPU週期被IDE驅動器佔用而抱怨系統的緩慢。

獲取更快的控制器和磁碟機

  標準的SCSI控制器不能比標準的IDE控制器更快地讀寫資料,但是一些非常快的“UltraWide”SCSI控制器能夠使讀寫速度有一個真正的飛躍。

  EIDE和UDMA控制器是非常快的IDE控制器。新的UDMA控制器能夠接近SCSI控制器的速度。UDMA控制器的頂級速度是猝發速度,但持續傳輸的速度明顯慢得多。IDE控制器包括UDMA,是嵌入在驅動器本身中的。不需要購買一個控制器,只要購買一個驅動器,它就包含了控制器,可以獲得UDMA性能。

  磁碟機經常忽視的一個方面是磁碟本身的速度。磁碟的速度以rpm為單位給出,它代表每分鐘旋轉多少次。rpm越大,磁碟速度也越快。如果你有這方面的預算,大多數伺服器系統廠商可提供7500rpm甚至10000rpm SCSI磁碟。標準SCSI和IDE磁碟提供5400rpm速度。

使用多個控制器


  IDE和SCSI磁碟可以被鏈結。IDE鏈最多包括兩個設備,標準SCSI鏈最多包括七個設備。如果在系統中有兩個或更多SCSI磁碟,很可能被鏈結到同一個控制器。這樣對大多數操作是足夠的,尤其是把電腦當作單用戶的工作站時。但是如果有一個伺服器,那麼就能夠通過對每個SCSI驅動器提供一個控制器改善性能。當然,好的控制器是昂貴的。

調整硬碟參數

  使用hdparm工具可以調整IDE硬碟性能,它設計時專門考慮了使用UDMA驅動器。在缺省情況下,Linux使用是最安全的,但是設置訪問IDE驅動器是最慢的。缺省模式沒有利用UDMA可能的最快的性能。   使用hdparm工具,通過啟動下面的特性可以顯著地改善性能:

  ◆ 32位支援 缺省設置是16位;

  ◆ 多部分訪問 缺省設置是每次中斷單部分傳送。

  注意:在使用hdparm之前,確保對系統已經做了完全的備份。使用hdparm改變IDE參數,如果出錯可能會引起驅動器上全部資料的丟失。

  hdparm可以提供關於硬碟的大量資訊。打開一個終端視窗,輸入下面命令獲取系統中第一個IDE驅動器的資訊(改變設備名獲取其他IDE驅動器的資訊):

  hdparm -v /dev/had

  上面命令顯示出當系統啟動時從驅動器獲得的資訊,包括驅動器操作在16位元或32位元模式(I/O Support)下,是否為多部分訪問(Multcount)。關於磁碟機的更詳細資訊的顯示可使用-i參數。   Hdparm也可以測試驅動器傳輸速率。輸入命令測試系統中第一個IDE驅動器:

  hdparm -Tt /dev/hda

  此測試可測量驅動器直接讀和高速緩衝記憶體讀的速度。結果是一個優化的“最好的事例”數位。改變驅動器設置,啟動32位傳輸,輸入下面的命令:

  hdparm -c3 /dev/hda

  -c3參數啟動32位支援,使用-c0可以取消它。-c1參數也可啟動32位支援並使用更少的記憶體開銷,但是在很多驅動器下它不工作。   大多數新IDE驅動器支援多部分傳輸,但是Linux缺省設置為單部分傳輸。注意:這個設置在一些驅動器上,啟動多部分傳輸能引起檔系統的完全崩潰。這個問題大多數發生在較老的驅動器上。輸入下面的命令啟動多部分傳輸:

  hdparm -m16 /dev/hda

  -m16參數啟動16部分傳輸。除了西部資料的驅動器外,大多數驅動器設置為16或32部分是最合適的。西部資料的驅動器緩衝區小,當設置大於8部分時性能將顯著下降。對西部資料驅動器來說,設置為4部分是最合適的。

  啟動多部分訪問能夠減少CPU負載30%~50%,同時可以增加資料傳輸速率到50%。使用-m0參數可以取消多部分傳輸。

  hdparm還有許多選項可設置硬碟驅動器,在此不詳述。

使用軟體RAID

  RAID廉價驅動器的冗餘陣列,也可以改善磁碟機性能和容量。Linux支援軟體RAID和硬體RAID。軟體RAID嵌入在Linux內核中,比硬體RAID花費要少得多。軟體RAID的惟一花費就是購買系統中的磁碟,但是軟體RAID不能使硬體RAID的性能增強。硬體RAID使用特殊設計的硬體,控制系統的多個磁碟。硬體RAID可能是昂貴的,但是得到的性能改善與之相匹配。RAID的基本思想是組合多個小的、廉價的磁碟機成為一個磁碟機陣列,提供與大型電腦中單個大驅動器相同的性能級別。RAID驅動器陣列對於電腦來說像單獨一個驅動器,它也可以使用並行處理。磁碟讀寫在RAID磁碟陣列的並行資料通路上同時進行。

  IBM公司在加利福尼亞大學發起一項研究,得到RAID級別的一個最初定義。現在有六個已定義的RAID級別,如下所示。

  RAID 0:級別0只是資料帶。在級別0中,資料被拆分到多於一個的驅動器,結果是更高的資料吞吐量。這是RAID的最快和最有效形式。但是,在這個級別沒有資料鏡像,所以在陣列中任何磁碟的失敗將引起所有資料的丟失。

  RAID 1:級別1是完全磁碟鏡像。在獨立的磁碟上創建和支援資料兩份拷貝。級別1陣列與一個驅動器相比讀速度快、寫速度慢,但是如果任一個驅動器錯誤,不會有資料丟失。這是最昂貴的RAID級別,因為每個磁碟需要第二個磁碟做它的鏡像。這個級別提供最好的資料安全。

  RAID 2:級別2設想用於沒有內嵌錯誤檢測的驅動器。因為所有的SCSI驅動器支援內嵌錯誤檢測,這個級別已過時,基本上沒用了。Linux不使用這個級別。

  RAID 3:級別3是一個有奇偶校驗磁碟的磁碟帶。存儲奇偶校驗資訊到一個獨立的驅動器上,允許恢復任何單個驅動器上的錯誤。Linux不支持這個級別。

  RAID 4:級別4是擁有一個奇偶校驗磁碟的大塊帶。奇偶校驗資訊意味著任何一個磁碟失敗資料可以被恢復。級別4陣列的讀性能非常好,寫速度比較慢,因為奇偶校驗資料必須每次更新。

  RAID 5:級別5與級別4相似,但是它將奇偶校驗資訊分佈到多個驅動器中。這樣提高了磁碟寫速度。它每百萬位元組的花費與級別4相同,提高了高水準資料保護下的高速隨機性能,是使用最廣泛的RAID系統。

  軟體RAID是級別0,它使多個硬碟看起來像一個磁碟,但是速度比任何單個磁碟快得多,因為驅動器被並行訪問。軟體RAID可以用IDE或SCSI控制器,也可以使用任何磁碟組合。 配置內核參數通過調整系統內核參數改善性能有時是很明顯的。如果你決定要這樣做一定要小心,因為系統內核的改變可能優化系統,也可能引起系統崩潰。   注意:不要在一個正在使用的系統上改變內核參數,因為有系統崩潰的危險。因此,必須在一個沒有人使用的系統上進行測試。設置一個測試機器,對系統進行測試,確保所有工作正常。 Tweak記憶體性能   在Linux中,可以Tweak系統記憶體。如果遇到記憶體不足錯誤或者系統是用於網路的,可以調整記憶體分配設置。

  記憶體一般以每頁4千位元組分配。調整“空白頁”設置,可以在性能上有顯著的改善。打開終端視窗,輸入下面的命令查看系統的當前設置:

  cat /proc/sys/vm/freepages

  這樣將獲得三個數字,就像下面這樣:

  128 256 384

  這些是最小空白頁、空白頁低和空白頁高設置。這些值在啟動時決定。最小設置是系統中記憶體數量的兩倍;低設置是記憶體數量的4倍;高設置是系統記憶體的6倍;自由記憶體不能小於最小空白頁數。   如果空白頁數目低於空白頁高設置,則交換(使用磁碟空間分配到交換檔)開始。當達到空白頁低設置時,密集型交換開始。

  增加空白頁高設置有時可以改善整體性能,比如試試增加高設置到1MB,用echo命令可以調整這個設置。使用樣本設置,輸入這個命令增加空白頁高設置到1MB:

  echo "128 256 1024" > /proc/sys/vm/freepages

  注意:當系統還沒有被使用時測試這個設置,以確保在做任何調整時監視系統性能。這樣可以確定哪個設置對系統是最好的。
--
TyroneYeh

harrier

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 1856
  • 性別: 男
    • 檢視個人資料
    • 國屬武裝兵
[文章]優化 Linux 系統硬碟
« 回覆 #1 於: 2003-01-15 14:01 »
飛躍、驅動器、缺省值...

這是源自中國的文章吧?
...90Net(90:1200/1203),GameNET(99:700/707),ALLNet(92:9200/3111),InfoNet(30:100/103)..MaximusCBCS(浮懷),AirNet,TenderNet,StormNet,FidoNet...
<<- www.nas.vg ->>

TyroneYeh

  • 俺是博士!
  • *****
  • 文章數: 2396
  • 性別: 男
    • 檢視個人資料
[文章]優化 Linux 系統硬碟
« 回覆 #2 於: 2003-01-15 14:11 »
引述: "harrier"
飛躍、驅動器、缺省值...

這是源自中國的文章吧?

這是一定要的囉!
--
TyroneYeh

日京三子

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 8828
    • 檢視個人資料
    • http://www.24online.cjb.net
[文章]優化 Linux 系統硬碟
« 回覆 #3 於: 2003-01-15 15:41 »
建議將這篇文章收入到精華區內, 以免讓這樣子的好文章遺失...
哈克不愛的多合一輸入平台----->新香草口味
過去的時間不斷流逝,抹去的眼淚已成追憶;
乾枯的雙手無力阻止,再會了我遠去的曾經。

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
[文章]優化 Linux 系統硬碟
« 回覆 #4 於: 2003-01-16 14:45 »
如上提到  /home 的重整方式  即是完全備份
直覺想 當然是把partition 給 tar 起來
但最近有 ghost 的經驗  所以想請教 ghost 此 partition 是否效果相同呢

又文章中所指 "隨時間過去.." 並無明確時間斷定效能何時變差
那我該何時重整一次為佳呢
或察覺何種"狀況"時呢
不知各位管理多人使用 server 的學長們
如何維護 /home 這個 partition 的效能呢

TyroneYeh

  • 俺是博士!
  • *****
  • 文章數: 2396
  • 性別: 男
    • 檢視個人資料
[文章]優化 Linux 系統硬碟
« 回覆 #5 於: 2003-01-16 19:45 »
個人覺得, 用 tar 會比較好, 因為當你找不到 MS-DOS 的開機片的時候就很頭痛了, tar 可以在所有 Linux 或 Un?x 相容, Win 的 WinZIP 與 WinRAR 且都支援,
至於效果可能有所差異, 小弟記得, Ghost 是磁軌方式備份, 當要還原時, 寫入是一模一樣的, 連其中的 mbr 都會備份起來,

一般都沒有在重整吧, 因為工程瞞大的, 需要另外一個空間 複製過去 在複製回來, 有人這樣做嗎?
--
TyroneYeh

hk_traveller

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
[文章]優化 Linux 系統硬碟
« 回覆 #6 於: 2003-01-23 13:29 »
Other than re-partition the harddisk, any other methods which can be used in online situation to reduce the disk fragmentation?

Thanks!

Tetralet

  • 活潑的大學生
  • ***
  • 文章數: 370
    • 檢視個人資料
Re: [文章]優化 Linux 系統硬碟
« 回覆 #7 於: 2003-01-23 23:10 »
引述: "TyroneYeh"
  Linux最好的整理磁碟碎片的方法是做一個完全的備份,重新格式化分區,然後從備份恢復檔。當檔被存儲時,它們將被寫到連續的塊中,它們不會碎片化。這是一個大工作,可能對於像/usr之類不經常改變的程式分區是不必要的,但是它可以在一個多用戶系統的/home分區產生奇跡。它所花費的時間與Windows NT伺服器磁碟碎片整理花費的時間大致上相同。


我記得在 Linux 下也有一個 Defrag 程式可以用,
但不知真正的效果如何...