Ⅰ linux下ssd優化
1、rc.local下添加fstrim -a
2、修改fstab,在fstab文件中添加一下內容
tmpfs /var/log tmpfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
然後輸入一下命令重新掛載或重啟:
sudo mount -a
然後,可以在Firefox上通過about:config設置,把cache放到/tmp去,提高Firefox效率外,同歲簡皮時也可以減少乎差對SSD的讀寫。
新增字元串browser.cache.disk.parent_directory設置的咐舉數值為 /tmp
Ⅱ 固態硬碟在linux下怎麼優化
1.使用Ext4 without journaling文件系統
傳統的SSD+Linux組合一般推薦Ext2文件系統,主要是考慮到Ext3、Ext4需要額外的記錄日誌,會縮短SSD使用壽命,而且新出現的TRIM技術在Ext2中有兩個缺點:
僅支持離線TRIM,換句話說文件系統必須只讀掛載;
需要手動執行hdparm命令或wiper.sh腳本。
Ext4則沒有這些限制,允許TRIM後台運行,並且日誌記錄功能可以手動關閉(沒有日誌的情況下,文件系統更容易損壞,如突然斷電),如果你甘願冒這樣的風險,從而延長SSD使用壽命,值得一試。另外,許多測試中如:Testing EXT4 & Btrfs On A Serial ATA 3.0 SSD,像Btrfs這樣為SSD准備的文件系統不如Ext4速度快(用SSD不就為了快么)。
所以,上面安裝系統時,選擇了Ext4系統,接下來需要關閉日誌功能。
首先,系統掛載時無法停用日誌功能,所以需要進入剛才的U盤系統,利用root許可權執行:
tune2fs -O ^has_journal /dev/sda1
即關閉/dev/sda1上的日誌功能。
然後,運行操作系統檢測:
e2fsck -f /dev/sda1
不這樣,文件系統可能會出錯。
最後,重啟,進入SSD中的系統,檢查是否設置成功:
dmesg | grep EXT4
如果出現:
EXT4-fs (sda1): mounted filesystem without journal
說明設置成功。
原來是:mounted filesystem with ordered data mode
如果需要再次開啟日誌功能,只要運行tune2fs -O has_journal /dev/sda1即可。
2.開啟TRIM功能
TRIM是一種操作系統調度SSD塊寫入的方式。主要是因為同一個SSD的快閃記憶體單元頻繁操作會磨損,影響使用壽命,區別於傳統的機械硬碟處理刪除數據。Linux內核自2.6.33開始支持TRIM。
首先,檢查內核版本是否支持TRIM:
uname -a
然後,檢查SSD硬碟是否支持TRIM:
hdparm -I /dev/sda
如果顯示比如(不同硬體可能不同提示):
* Data Set Management TRIM supported
說明支持。
這兩個條件都滿足,在/etc/fstab中將:
/dev/sda1 / ext4 defaults 改為:
/dev/sda1 / ext4 discard,defaults 分區、掛載點、已經存在的選項不一定一樣。
測試新的fstab文件:
mount -oremount /dev/sda1
然後掛載:
mount
如果顯示discard字樣,說明成功,如:
/dev/sda1 on / type ext4 (rw,discard)
3.swap空間處理
對於大內存來說swap基本上都是空閑的,除非電腦進入休眠狀態,系統會將內存內容轉到swap中。有了SSD,開關機都在幾秒中,對我來說swap沒用,所以上面直接不分配swap空間。
如果分配了也行,空間要小,而且通過設置/proc/sys/vm/swappiness裡面的值,來減少swap換出量:
echo 1 > /proc/sys/vm/swappiness
0到100之間,值越大換出量越大。
4.設置noatime
當訪問文件時,系統會更新last-access這個文件/目錄元數據,設置noatime後可以減少這種操作。
將2步中的:
/dev/sda1 / ext4 discard,defaults 改為:
/dev/sda1 / ext4 noatime,discard,defaults 測試設置成功方法與上面一樣。
5.使用noop磁碟調度
通常操作系統調度機械硬碟時會提供一些數據的物理位置,這樣有利於機械硬碟優化尋道,但是對SSD沒意義,所以採用noop磁碟調度,即簡單發送請求,可以提高效率。
可以通過以下命令查看調度方法:
cat /sys/block/sda/queue/scheler
比如顯示:
[noop] deadline cfq
在/etc/rc.local中添加如下語句:
echo noop > /sys/block/sda/queue/scheler
6.內存分區加速
如果內存夠大,可以用ramdisk的方式,將一些經常變化的位置如/tmp放入內存,加快速度,減少對SSD的訪問。
依然是加在/etc/fstab中:
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=1777 0 0
更新方法與2相同,記得將瀏覽器等程序的緩存目錄設置到/tmp下。
Ⅲ linux的架構是怎樣優化的
(1).系統安裝優化
在安裝linux系統時,可以在磁碟的劃分、SWAP內存的分配等載入項上做優化。
磁碟層面:磁碟分配可以遵循應用的要求:a.對於讀寫數據頻繁但數據安全性要求不高時,可以將磁碟做成RAID0;b.對數據安全性要求高卻對數據讀寫沒有要求的可以做成RAID1;c.對讀要求高,而對寫操作沒有要求,但要保證數據安全性,則可以將磁碟做成RAID5;d.對讀寫要求高,並且要求數據安全性高,則可以將磁碟做成RAID0+1;通過不同的需求將磁碟做成不同的RAID級別,在磁碟層面對系統進行優化。
內存層面:當內存較小(物理內存小於4G),一般設置SWAP交換分區為內存的2倍,如果物理內存大於4G而小於16G,設置SWAP交換分區大小等於或略小於內存;如果內存大小大於16G,原則上可以將SWAP分區設置為0,建議設置一個一定大小的SWAP分區起緩沖作用。
(2).內核參數優化
內核參數的優化要和具體應用結合起來整體考慮,根據應用的不同要求進行參數的優化。
(3).文件系統優化
Linux下可選的文件系統有ext2、ext3、ext4、xfs和ReiserFS,根據應用的需求,選擇不同的文件系統。
Linux標准文件系統是從VFS開始的,然後是ext,接著是ext2,准確來說。Ext2是linux上標準的文件系統,ext3是在ext2基礎上增加日誌形成的,,是基於超級塊和inode的設計理念設計的。
XFS文件系統是一個高級日誌文件,通過分布式處理磁碟請求、定位數據、保持cache的一致性來提供對文件系統數據的低延遲、高帶寬的訪問。所以XFS伸縮性較好,具有優秀的日誌記錄功能、可擴展性強、快速寫入性能等特點。
ReiserFS是一款高性能的日誌文件系統,通過平衡樹結構來管理數據,包括文件數據、文件名以及日誌支持等。優點是訪問性能好和安全性高。具有高效、合理利用磁碟空間,先進的日誌管理機制,特有的搜尋方式、海量磁碟存儲等特點。
(4).應用的程序的優化
應用程序的優化主要是測試應用程序的可用性以及高效性,目的是調試應用程序是否存在bug。
Ⅳ linux系統性能怎麼優化
linux系統性能怎麼優化
一、前提
我們可以在文章的開始就列出一個列表,列出可能影響Linux操作系統性能的一些調優參數,但這樣做其實並沒有什麼價值。因為性能調優是一個非常困難的任務,它要求對硬體、操作系統、和應用都有著相當深入的了解。如果性能調優非常簡單的話,那些我們要列出的調優參數早就寫入硬體的微碼或者操作系統中了,我們就沒有必要再繼續讀這篇文章了。正如下圖所示,伺服器的性能受到很多因素的影響。
當面對一個使用單獨IDE硬碟的,有20000用戶的資料庫伺服器時,即使我們使用數周時間去調整I/O子系統也是徒勞無功的,通常一個新的驅動或者應用程序的一個更新(如SQL優化)卻可以使這個伺服器的性能得到明顯的提升。正如我們前面提到的,不要忘記系統的性能是受多方面因素影響的。理解操作系統管理系統資源的方法將幫助我們在面對問題時更好的判斷應該對哪個子系統進行調整。
二、Linux的CPU調度
任何計算機的基本功能都十分簡單,那就是計算。為了實現計算的功能就必須有一個方法去管理計算資源、處理器和計算任務(也被叫做線程或者進程)。非常感謝Ingo Molnar,他為Linux內核帶來了O(1)CPU調度器,區別於舊有的O(n)調度器,新的調度器是動態的,可以支持負載均衡,並以恆定的速度進行操作。
新調度器的可擴展性非常好,無論進程數量或者處理器數量,並且調度器本身的系統開銷更少。新調取器的演算法使用兩個優先順序隊列。
引用
・活動運行隊列
・過期運行隊列
調度器的一個重要目標是根據優先順序許可權有效地為進程分配CPU 時間片,當分配完成後它被列在CPU的運行隊列中,除了 CPU 的運行隊列之外,還有一個過期運行隊列。當活動運行隊列中的一個任務用光自己的時間片之後,它就被移動到過期運行隊列中。在移動過程中,會對其時間片重新進行計算。如果活動運行隊列中已經沒有某個給定優先順序的任務了,那麼指向活動運行隊列和過期運行隊列的指針就會交換,這樣就可以讓過期優先順序列表變成活動優先順序的列表。通常互動式進程(相對與實時進程而言)都有一個較高的優先順序,它佔有更長的時間片,比低優先順序的進程獲得更多的計算時間,但通過調度器自身的調整並不會使低優先順序的進程完全被餓死。新調度器的優勢是顯著的改變Linux內核的可擴展性,使新內核可以更好的處理一些有大量進程、大量處理器組成的企業級應用。新的O(1)調度器包含仔2.6內核中,但是也向下兼容2.4內核。
新調度器另外一個重要的優勢是體現在對NUMA(non-uniform memory architecture)和SMP(symmetric multithreading processors)的支持上,例如INTEL@的超線程技術。
改進的NUMA支持保證了負載均衡不會發生在CECs或者NUMA節點之間,除非發生一個節點的超出負載限度。
三、Linux的內存架構
今天我們面對選擇32位操作系統還是64位操作系統的情況。對企業級用戶它們之間最大的區別是64位操作系統可以支持大於4GB的內存定址。從性能角度來講,我們需要了解32位和64位操作系統都是如何進行物理內存和虛擬內存的映射的。
在上面圖示中我們可以看到64位和32位Linux內核在定址上有著顯著的不同。
在32位架構中,比如IA-32,Linux內核可以直接定址的范圍只有物理內存的第一個GB(如果去掉保留部分還剩下896MB),訪問內存必須被映射到這小於1GB的所謂ZONE_NORMAL空間中,這個操作是由應用程序完成的。但是分配在ZONE_HIGHMEM中的內存頁將導致性能的降低。
在另一方面,64位架構比如x86-64(也稱作EM64T或者AMD64)。ZONE_NORMAL空間將擴展到64GB或者128GB(實際上可以更多,但是這個數值受到操作系統本身支持內存容量的限制)。正如我們看到的,使用64位操作系統我們排除了因ZONE_HIGHMEM部分內存對性能的影響的情況。
實際中,在32位架構下,由於上面所描述的內存定址問題,對於大內存,高負載應用,會導致死機或嚴重緩慢等問題。雖然使用hugemen核心可緩解,但採取x86_64架構是最佳的解決辦法。
四、虛擬內存管理
因為操作系統將內存都映射為虛擬內存,所以操作系統的物理內存結構對用戶和應用來說通常都是不可見的。如果想要理解Linux系統內存的調優,我們必須了解Linux的虛擬內存機制。應用程序並不分配物理內存,而是向Linux內核請求一部分映射為虛擬內存的內存空間。如下圖所示虛擬內存並不一定是映射物理內存中的空間,如果應用程序有一個大容量的請求,也可能會被映射到在磁碟子系統中的swap空間中。
另外要提到的是,通常應用程序不直接將數據寫到磁碟子系統中,而是寫入緩存和緩沖區中。Bdflush守護進程將定時將緩存或者緩沖區中的數據寫到硬碟上。
Linux內核處理數據寫入磁碟子系統和管理磁碟緩存是緊密聯系在一起的。相對於其他的操作系統都是在內存中分配指定的一部分作為磁碟緩存,Linux處理內存更加有效,默認情況下虛擬內存管理器分配所有可用內存空間作為磁碟緩存,這就是為什麼有時我們觀察一個配置有數G內存的Linux系統可用內存只有20MB的原因。
同時Linux使用swap空間的機制也是相當高效率的,如上圖所示虛擬內存空間是由物理內存和磁碟子系統中的swap空間共同組成的。如果虛擬內存管理器發現一個已經分配完成的內存分頁已經長時間沒有被調用,它將把這部分內存分頁移到swap空間中。經常我們會發現一些守護進程,比如getty,會隨系統啟動但是卻很少會被應用到。這時為了釋放昂貴的主內存資源,系統會將這部分內存分頁移動到swap空間中。上述就是Linux使用swap空間的機制,當swap分區使用超過50%時,並不意味著物理內存的使用已經達到瓶頸了,swap空間只是Linux內核更好的使用系統資源的一種方法。
簡單理解:Swap usage只表示了Linux管理內存的有效性。對識別內存瓶頸來說,Swap In/Out才是一個比較又意義的依據,如果Swap In/Out的值長期保持在每秒200到300個頁面通常就表示系統可能存在內存的瓶頸。下面的事例是好的狀態:
引用
# vmstat
procs ———–memory————- —swap– —–io—- –system– —-cpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 5696 6904 28192 50496 0 0 88 117 61 29 11 8 80 1
五、模塊化的I/O調度器
就象我們知道的Linux2.6內核為我們帶來了很多新的特性,這其中就包括了新的I/O調度機制。舊的2.4內核使用一個單一的I/O調度器,2.6 內核為我們提供了四個可選擇的I/O調度器。因為Linux系統應用在很廣闊的范圍里,不同的應用對I/O設備和負載的要求都不相同,例如一個筆記本電腦和一個10000用戶的資料庫伺服器對I/O的要求肯定有著很大的區別。
引用
(1).Anticipatory
anticipatory I/O調度器創建假設一個塊設備只有一個物理的查找磁頭(例如一個單獨的SATA硬碟),正如anticipatory調度器名字一樣,anticipatory調度器使用「anticipatory」的演算法寫入硬碟一個比較大的數據流代替寫入多個隨機的小的數據流,這樣有可能導致寫 I/O操作的一些延時。這個調度器適用於通常的一些應用,比如大部分的個人電腦。
(2).Complete Fair Queuing (CFQ)
Complete Fair Queuing(CFQ)調度器是Red Flag DC Server 5使用的標准演算法。CFQ調度器使用QoS策略為系統內的所有任務分配相同的帶寬。CFQ調度器適用於有大量計算進程的多用戶系統。它試圖避免進程被餓死和實現了比較低的延遲。
(3).Deadline
deadline調度器是使用deadline演算法的輪詢的調度器,提供對I/O子系統接近實時的操作,deadline調度器提供了很小的延遲和維持一個很好的磁碟吞吐量。如果使用deadline演算法請確保進程資源分配不會出現問題。
(4).NOOP
NOOP調度器是一個簡化的調度程序它只作最基本的合並與排序。與桌面系統的關系不是很大,主要用在一些特殊的軟體與硬體環境下,這些軟體與硬體一般都擁有自己的調度機制對內核支持的要求很小,這很適合一些嵌入式系統環境。作為桌面用戶我們一般不會選擇它。
六、網路子系統
新的網路中斷緩和(NAPI)對網路子系統帶來了改變,提高了大流量網路的性能。Linux內核在處理網路堆棧時,相比降低系統佔用率和高吞吐量更關注可靠性和低延遲。所以在某些情況下,Linux建立一個防火牆或者文件、列印、資料庫等企業級應用的性能可能會低於相同配置的Windows伺服器。
在傳統的處理網路封包的方式中,如下圖藍色箭頭所描述的,一個乙太網封包到達網卡介面後,如果MAC地址相符合會被送到網卡的緩沖區中。網卡然後將封包移到操作系統內核的網路緩沖區中並且對CPU發出一個硬中斷,CPU會處理這個封包到相應的網路堆棧中,可能是一個TCP埠或者Apache應用中。
這是一個處理網路封包的簡單的流程,但從中我們可以看到這個處理方式的缺點。正如我們看到的,每次適合網路封包到達網路介面都將對CPU發出一個硬中斷信號,中斷CPU正在處理的其他任務,導致切換動作和對CPU緩存的操作。你可能認為當只有少量的網路封包到達網卡的情況下這並不是個問題,但是千兆網路和現代的應用將帶來每秒鍾成千上萬的網路數據,這就有可能對性能造成不良的影響。
正是因為這個情況,NAPI在處理網路通訊的時候引入了計數機制。對第一個封包,NAPI以傳統的方式進行處理,但是對後面的封包,網卡引入了POLL 的輪詢機制:如果一個封包在網卡DMA環的緩存中,就不再為這個封包申請新的中斷,直到最後一個封包被處理或者緩沖區被耗盡。這樣就有效的減少了因為過多的中斷CPU對系統性能的影響。同時,NAPI通過創建可以被多處理器執行的軟中斷改善了系統的可擴展性。NAPI將為大量的企業級多處理器平台帶來幫助,它要求一個啟用NAPI的驅動程序。在今天很多驅動程序默認沒有啟用NAPI,這就為我們調優網路子系統的性能提供了更廣闊的空間。
七、理解Linux調優參數
因為Linux是一個開源操作系統,所以又大量可用的性能監測工具。對這些工具的選擇取決於你的個人喜好和對數據細節的要求。所有的性能監測工具都是按照同樣的規則來工作的,所以無論你使用哪種監測工具都需要理解這些參數。下面列出了一些重要的參數,有效的理解它們是很有用處的。
(1)處理器參數
引用
・CPU utilization
這是一個很簡單的參數,它直觀的描述了每個CPU的利用率。在xSeries架構中,如果CPU的利用率長時間的超過80%,就可能是出現了處理器的瓶頸。
・Runable processes
這個值描述了正在准備被執行的進程,在一個持續時間里這個值不應該超過物理CPU數量的10倍,否則CPU方面就可能存在瓶頸。
・Blocked
描述了那些因為等待I/O操作結束而不能被執行的進程,Blocked可能指出你正面臨I/O瓶頸。
・User time
描述了處理用戶進程的百分比,包括nice time。如果User time的值很高,說明系統性能用在處理實際的工作。
・System time
描述了CPU花費在處理內核操作包括IRQ和軟體中斷上面的百分比。如果system time很高說明系統可能存在網路或者驅動堆棧方面的瓶頸。一個系統通常只花費很少的時間去處理內核的操作。
・Idle time
描述了CPU空閑的百分比。
・Nice time
描述了CPU花費在處理re-nicing進程的百分比。
・Context switch
系統中線程之間進行交換的數量。
・Waiting
CPU花費在等待I/O操作上的總時間,與blocked相似,一個系統不應該花費太多的時間在等待I/O操作上,否則你應該進一步檢測I/O子系統是否存在瓶頸。
・Interrupts
Interrupts 值包括硬Interrupts和軟Interrupts,硬Interrupts會對系統性能帶來更多的不利影響。高的Interrupts值指出系統可能存在一個軟體的瓶頸,可能是內核或者驅動程序。注意Interrupts值中包括CPU時鍾導致的中斷(現代的xServer系統每秒1000個 Interrupts值)。
(2)內存參數
引用
・Free memory
相比其他操作系統,Linux空閑內存的值不應該做為一個性能參考的重要指標,因為就像我們之前提到過的,Linux內核會分配大量沒有被使用的內存作為文件系統的緩存,所以這個值通常都比較小。
・Swap usage
這 個值描述了已經被使用的swap空間。Swap usage只表示了Linux管理內存的有效性。對識別內存瓶頸來說,Swap In/Out才是一個比較又意義的依據,如果Swap In/Out的值長期保持在每秒200到300個頁面通常就表示系統可能存在內存的瓶頸。
・Buffer and cache
這個值描述了為文件系統和塊設備分配的緩存。在Red Flag DC Server 5版本中,你可以通過修改/proc/sys/vm中的page_cache_tuning來調整空閑內存中作為緩存的數量。
・Slabs
描述了內核使用的內存空間,注意內核的頁面是不能被交換到磁碟上的。
・Active versus inactive memory
提供了關於系統內存的active內存信息,Inactive內存是被kswapd守護進程交換到磁碟上的空間。
(3)網路參數
引用
・Packets received and sent
這個參數表示了一個指定網卡接收和發送的數據包的數量。
・Bytes received and sent
這個參數表示了一個指定網卡接收和發送的數據包的位元組數。
・Collisions per second
這個值提供了發生在指定網卡上的網路沖突的數量。持續的出現這個值代表在網路架構上出現了瓶頸,而不是在伺服器端出現的問題。在正常配置的網路中沖突是非常少見的,除非用戶的網路環境都是由hub組成。
・Packets dropped
這個值表示了被內核丟掉的數據包數量,可能是因為防火牆或者是網路緩存的缺乏。
・Overruns
Overruns表達了超出網路介面緩存的次數,這個參數應該和packets dropped值聯繫到一起來判斷是否存在在網路緩存或者網路隊列過長方面的瓶頸。
・Errors 這個值記錄了標志為失敗的幀的數量。這個可能由錯誤的網路配置或者部分網線損壞導致,在銅口千兆乙太網環境中部分網線的損害是影響性能的一個重要因素。
(4)塊設備參數
引用
・Iowait
CPU等待I/O操作所花費的時間。這個值持續很高通常可能是I/O瓶頸所導致的。
・Average queue length
I/O請求的數量,通常一個磁碟隊列值為2到3為最佳情況,更高的值說明系統可能存在I/O瓶頸。
・Average wait
響應一個I/O操作的平均時間。Average wait包括實際I/O操作的時間和在I/O隊列里等待的時間。
・Transfers per second
描述每秒執行多少次I/O操作(包括讀和寫)。Transfers per second的值與kBytes per second結合起來可以幫助你估計系統的平均傳輸塊大小,這個傳輸塊大小通常和磁碟子系統的條帶化大小相符合可以獲得最好的性能。
・Blocks read/write per second
這個值表達了每秒讀寫的blocks數量,在2.6內核中blocks是1024bytes,在早些的內核版本中blocks可以是不同的大小,從512bytes到4kb。
・Kilobytes per second read/write
按照kb為單位表示讀寫塊設備的實際數據的數量。
Ⅳ Linux伺服器支持SSD固態硬碟嗎,可否SSD RAID0有支持SSD的Linux操作系統嗎Linux用ES.3 SCSI SAS哪個好
1、SSD 支持不支持和系統沒關系,這東西一樣是基於磁碟介面界面讀寫的(就是回 IDE SATA SCSI SAS 這種),用什麼方式存答儲是靠他自己實現的和介面無關。當然相對來說,頂多是優化的區別。Linux 對於 SSD 的效果只要新系統,問題都不大。文件系統好像 ext4 有對 Flash 晶元的優化。其他文件系統效果如何你去查查吧……
2、同 1 。RAID 這是和介面相關的,和什麼硬碟無關。當然還是如上面的話,永遠是新的系統對新的硬體效果最好。
3、成本能接受,速度最快的那個。當然還一個,有驅動。當然驅動我只得是介面的驅動。
Ⅵ SSD 裝 Linux 選 Ext4 還是 Btrfs 好
Linux kernel 自 2.6.28
開 始正式支持新的文件系統 Ext4。 Ext4 是 Ext3 的改進版,修改了 Ext3 中部分重要的數據結構,而不僅僅像 Ext3 對
Ext2 那樣,只是增加了一個日誌功能而已。Ext4 可以提供更佳的性能和可靠性,還有更為豐富的功能:
1. 與 Ext3 兼容。執行若干條命令,就能從 Ext3 在線遷移到 Ext4,而無須重新格式化磁碟或重新安裝系統。原有 Ext3 數據結構照樣保留,Ext4 作用於新數據,當然,整個文件系統因此也就獲得了 Ext4 所支持的更大容量。
2. 更大的文件系統和更大的文件。較之 Ext3 目前所支持的最大 16TB 文件系統和最大 2TB 文件,Ext4 分別支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系統,以及 16TB 的文件。
3. 無限數量的子目錄。Ext3 目前只支持 32,000 個子目錄,而 Ext4 支持無限數量的子目錄。
4. Extents。Ext3 采
用間接塊映射,當操作大文件時,效率極其低下。比如一個 100MB 大小的文件,在 Ext3 中要建立 25,600 個數據塊(每個數據塊大小
為 4KB)的映射表。而 Ext4 引入了現代文件系統中流行的 extents 概念,每個 extent
為一組連續的數據塊,上述文件則表示為「 該文件數據保存在接下來的 25,600 個數據塊中」,提高了不少效率。
5. 多塊分配。當
寫 入數據到 Ext3 文件系統中時,Ext3 的數據塊分配器每次只能分配一個 4KB 的塊,寫一個 100MB 文件就要調用 25,600
次數據 塊分配器,而 Ext4 的多塊分配器「multiblock allocator」(mballoc) 支持一次調用分配多個數據塊。
6. 延遲分配。Ext3 的數據塊分配策略是盡快分配,而 Ext4 和其它現代文件操作系統的策略是盡可能地延遲分配,直到文件在 cache 中寫完才開始分配數據塊並寫入磁碟,這樣就能優化整個文件的數據塊分配,與前兩種特性搭配起來可以顯著提升性能。
7. 快速 fsck。以前執行 fsck 第一步就會很慢,因為它要檢查所有的 inode,現在 Ext4 給每個組的 inode 表中都添加了一份未使用 inode 的列表,今後 fsck Ext4 文件系統就可以跳過它們而只去檢查那些在用的 inode 了。
8. 日誌校驗。日誌是最常用的部分,也極易導致磁碟硬體故障,而從損壞的日誌中恢復數據會導致更多的數據損壞。Ext4 的日誌校驗功能可以很方便地判斷日誌數據是否損壞,而且它將 Ext3 的兩階段日誌機制合並成一個階段,在增加安全性的同時提高了性能。
9. 「無日誌」(No Journaling)模式。日誌總歸有一些開銷,Ext4 允許關閉日誌,以便某些有特殊需求的用戶可以藉此提升性能。
10. 在線碎片整理。盡管延遲分配、多塊分配和 extents 能有效減少文件系統碎片,但碎片還是不可避免會產生。Ext4 支持在線碎片整理,並將提供 e4defrag 工具進行個別文件或整個文件系統的碎片整理。
11. inode 相關特性。Ext4 支
持更大的 inode,較之 Ext3 默認的 inode 大小 128 位元組,Ext4 為了在 inode 中容納更多的擴展屬性(如納秒時間戳
或 inode 版本),默認 inode 大小為 256 位元組。Ext4 還支持快速擴展屬性(fast extended
attributes) 和 inode 保留(inodes reservation)。
12. 持久預分配(Persistent preallocation)。P2P 軟
件為了保證下載文件有足夠的空間存放,常常會預先創建一個與所下載文件大小相同的空文件,以免未來的數小時或數天之內磁碟空間不足導致下載失 敗。
Ext4 在文件系統層面實現了持久預分配並提供相應的 API(libc 中的 posix_fallocate()),比應用軟體自己實現更有
效率。
13. 默認啟用 barrier。磁
盤 上配有內部緩存,以便重新調整批量數據的寫操作順序,優化寫入性能,因此文件系統必須在日誌數據寫入磁碟之後才能寫 commit 記錄, 若
commit 記錄寫入在先,而日誌有可能損壞,那麼就會影響數據完整性。Ext4 默認啟用 barrier,只有當 barrier 之前的數據
全部寫入磁碟,才能寫 barrier 之後的數據。(可通過 "mount -o barrier=0" 命令禁用該特性。)
Ⅶ Linux系統優化時,我需要保留哪些自啟動服務呢
1.sshd:遠程連接Linux伺服器時要用到,所以必須開啟,不然就無法提供遠程連接服務了。
2.rsyslog:日誌相關軟體,這是操作系統提供的一種機制,系統的守護程序通常會使用rsyslog程序將各種信息寫到各個系統日誌文件中。
3.network:系統啟動時,如果想激活或關閉各個網路介面的話,可以考慮開啟。
4.crond:用於周期性的執行系統及用戶配置的任務計劃。有需要時開啟。幾乎是運維工作中必須要用的一個軟體。
5.sysstat:sysstat是一個軟體包,是包含監測系統性能及效率的一組工具,這些工具對於收集系統性能數據很有幫助,比如CPU使用率、硬碟和網路吞吐數據等,對這些數據的收集和分析,有利於判斷系統運行是否正常。
Ⅷ 如何針對SSD磁碟優化Linux
法1:通過查看/sys/block/sda/queue/rotational
通過cat
/sys/block/sda/queue/rotational進行查看,返回值0即為ssd;返回1即為hdd。
法2:通過lsscsi查看
lsscsi
-
list
scsi
devices
(or
hosts)
and
their
attributes
會有明顯的提示硬碟為ssd還是hdd。
Ⅸ Linux系統優化的12個步驟是什麼
Linux系統優化的12個步驟:
1、登錄系統。
2、禁止SSH遠程。
3、時間同步。
4、配置yum更新源。
5、關閉selinux及iptables。
6、調整文件描述符數量。
7、定時自動清理/var/spool/clientmquene/目錄垃圾文件。
8、精簡開機啟動服務。
9、Linux內核參數優化/etc/sysctl.conf,執行sysct -p生效。
10、更改字元集,防止亂碼問題出現。
11、鎖定關鍵系統文件。
12、清空/etc/issue,去除系統及內核版本登陸前的屏幕顯示。