新聞中心
Linux作為一種流行的操作系統(tǒng),已經(jīng)成為企業(yè)和個人使用的首選操作系統(tǒng)之一。在Linux上運行的服務(wù)器和應(yīng)用程序需要快速、穩(wěn)定、高效的存儲系統(tǒng)來保證系統(tǒng)性能。這篇文章將介紹如何對Linux存儲進行優(yōu)化,提高系統(tǒng)的性能和可靠性。

1.選取適合的存儲設(shè)備
存儲設(shè)備的選擇對Linux系統(tǒng)的性能和可靠性有著至關(guān)重要的影響。傳統(tǒng)上,硬盤驅(qū)動器是數(shù)據(jù)中心服務(wù)器中最常用的存儲設(shè)備。但是,現(xiàn)在固態(tài)硬盤已成為越來越受歡迎的替代品。與傳統(tǒng)硬盤相比,固態(tài)硬盤的讀寫速度更快,功耗更低,并且更容易受到?jīng)_擊。因此,選擇合適的存儲設(shè)備取決于您的需要以及您要承受的風險和成本。
2.使用RD進行數(shù)據(jù)保護
在Linux系統(tǒng)中,使用RD陣列可以提高數(shù)據(jù)存儲的可靠性和性能。RD技術(shù)簡而言之是一種將多個存儲設(shè)備組合成一個或多個邏輯驅(qū)動器來實現(xiàn)數(shù)據(jù)保護和容錯的技術(shù)。RD技術(shù)廣泛使用于企業(yè)級存儲系統(tǒng)中,以提高數(shù)據(jù)存儲的可用性和可靠性。
3.使用LVM提高存儲管理的靈活性
Linux Logical Volume Manager(LVM)是一種技術(shù),可以將多個物理存儲設(shè)備合成一個邏輯卷。 LVM允許分配分割的存儲容量,以便根據(jù)需要添加或移除設(shè)備,并允許進行動態(tài)擴展。與靜態(tài)分區(qū)不同,LVM支持動態(tài)管理AWOL磁盤和實時調(diào)整文件系統(tǒng)的大小。這使得LVM更適合用于擴展和管理大型的Linux存儲環(huán)境。
4.優(yōu)化文件系統(tǒng)的配置
文件系統(tǒng)的性能取決于文件系統(tǒng)的配置。可以通過掛載參數(shù)和文件系統(tǒng)的間隔時間等參數(shù)進行優(yōu)化。在Linux中,我們可以通過以下命令查看設(shè)備上使用的文件系統(tǒng)的屬性。
$ df -h
$ fdisk -l
在掛載文件系統(tǒng)時,可以使用noatime或nodiratime參數(shù)禁用文件訪問時間或目錄訪問時間記錄,以減少磁盤I / O。另外,將內(nèi)核參數(shù)vm.dirty_background_bytes和vm.dirty_bytes設(shè)置為適當?shù)闹悼梢詢?yōu)化異步寫入,提高文件系統(tǒng)的性能。
5.使用文件系統(tǒng)的多種特性來優(yōu)化性能
在Linux中,文件系統(tǒng)具有多種特性,例如日志、延遲分配和啟用寫入緩存等,可以使用這些特性來優(yōu)化存儲性能和可靠性。例如,ext4文件系統(tǒng)具有延遲分配機制,可以有效地減少文件碎片,并且文件系統(tǒng)日志對于在意外停電的情況下保護文件系統(tǒng)數(shù)據(jù)非常重要。
通過使用Linux的LVM、RD、文件系統(tǒng)等技術(shù),可以優(yōu)化Linux存儲系統(tǒng)提高系統(tǒng)的性能和可靠性。選擇適合的存儲設(shè)備和正確配置存儲系統(tǒng)也是提高Linux存儲系統(tǒng)性能和可靠性的關(guān)鍵。
相關(guān)問題拓展閱讀:
- linux 性能優(yōu)化– cpu 切換以及cpu過高
linux 性能優(yōu)化– cpu 切換以及cpu過高
本文先介紹了cpu上下文切換的基礎(chǔ)知識,以及上下文切換的類型(進程,線程等切換)。然后介紹了如何查看cpu切換次數(shù)的工具和指標的解釋。同時對日常分析種cpu過高的情況下如何分析和定位的方法做了一定的介紹,使用一個簡單的案例進行分析,先用top,pidstat等工具找出占用過高的進程id,然后通過分析到底是用戶態(tài)cpu過高,還是內(nèi)核態(tài)cpu過高,并用perf 定位到具體的調(diào)用函數(shù)。(來自極客時間課程學習筆記)
1、多任務(wù)競爭CPU,cpu變換任務(wù)的時候進行CPU上下文切換(context switch)。CPU執(zhí)行任務(wù)有4種方式:進程、線程、或者硬件通過觸發(fā)信號導致中斷的調(diào)用。
2、當切換任務(wù)的時候,需要記錄任務(wù)當前的狀態(tài)和獲取下一任務(wù)的信息和地址(指針),這就是上下文的內(nèi)容。因此,上下文是指某一時間點CPU寄存器(CPU register)和程序計數(shù)器(PC)的內(nèi)容, 廣義上還包括內(nèi)存中進程的虛擬地址映射信息.
3、上下文切換的過程:
4、根據(jù)任務(wù)的執(zhí)行形式,相應(yīng)的下上文切換,有進程上下文切換、線程上下文切換、以及中斷上下文切換三類。
5、進程和線程的區(qū)別:
進程是資源分配和執(zhí)行的基本單位;線程是任務(wù)調(diào)度和運行的基本單位。線程沒有資源,進程給指針提供虛擬內(nèi)存、棧、變量等共享資源,而線程可以共享進程的資源。
6、進程上下文切換:是指從一個進程切換到另一個進程。
(1)進程運行態(tài)為內(nèi)核運行態(tài)和進程運行態(tài)。內(nèi)核空間態(tài)資源包括內(nèi)核的堆棧、寄存器等;用戶空間態(tài)資源包括虛擬內(nèi)存、棧、變量、正文、數(shù)據(jù)等
(2)系統(tǒng)調(diào)用(軟中斷)在內(nèi)核態(tài)完成的,需要進行2次CPU上下文切換(用戶空間–>內(nèi)核空間–>用戶空間),不涉及用戶態(tài)資源,也不會切換進程。
(3)進程是由內(nèi)核來管理和調(diào)度的,進程的切換只能發(fā)生在內(nèi)核態(tài)。所以,進程的上下文不僅包括了用戶空間的資源,也包括內(nèi)核空間資源。
(4)進程的上下文切換過程:
(5)、下列將會觸發(fā)進程上下文切換的場景:
7、線程上下文切換:
8、中斷上下文切換
快速響應(yīng)硬件的事件,中斷處理會打斷進程的正常調(diào)度和執(zhí)行。同一CPU內(nèi),硬件中斷優(yōu)先級高于進程。切換過程類似于系統(tǒng)調(diào)用的時候,不涉及到用戶運行態(tài)資源。但大量的中斷上下文切換同樣可能引發(fā)性能問題。
重點關(guān)注信息:
系統(tǒng)的就緒隊列過長,也就是正在運行和等待 CPU 的進程數(shù)過多,導致了大量的上下文切換,而上下文切換又導致了系統(tǒng) CPU 的占用率升高。
這個結(jié)果中有兩列內(nèi)容是我們的重點關(guān)注對象。一個是
cswch
,表示每秒自愿上下文切換(voluntary context switches)的次數(shù),另一個則是
nvcswch
,表示每秒非自愿上下文切換(non voluntary context switches)的次數(shù)。
linux的中斷使用情況可以從 /proc/interrupts 這個只讀文件中讀取。/proc 實際上是 Linux 的一個虛擬文件系統(tǒng),用于內(nèi)核空間與用戶空間之間的通信。/proc/interrupts 就是這種通信機制的一部分,提供了一個只讀的中斷使用情況。
重調(diào)度中斷(RES),這個中斷類型表示,喚醒空閑狀態(tài)的 CPU 來調(diào)度新的任務(wù)運行。這是多處理器系統(tǒng)(P)中,調(diào)度器用來分散任務(wù)到不同 CPU 的機制,通常也被稱為處理器間中斷(Inter-Processor Interrupts,IPI)。
這個數(shù)值其實取決于系統(tǒng)本身的 CPU 性能。如果系統(tǒng)的上下文切換次數(shù)比較穩(wěn)定,那么從數(shù)百到一萬以內(nèi),都應(yīng)該算是正常的。但當上下文切換次數(shù)超過一萬次,或者切換次數(shù)出現(xiàn)數(shù)量級的增長時,就很可能已經(jīng)出現(xiàn)了性能問題。這時,需要根據(jù)上下文切換的類型,再做具體分析。
比方說:
首先通過uptime查看系統(tǒng)負載,然后使用mpstat結(jié)合pidstat來初步判斷到底是cpu計算量大還是進程爭搶過大或者是io過多,接著使用vmstat分析切換次數(shù),以及切換類型,來進一步判斷到底是io過多導致問題還是進程爭搶激烈導致問題。
CPU 使用率相關(guān)的重要指標:
性能分析工具給出的都是間隔一段時間的平均 CPU 使用率,所以要注意間隔時間的設(shè)置,特別是用多個工具對比分析時,你一定要保證它們用的是相同的間隔時間。比如,對比一下 top 和 ps 這兩個工具報告的 CPU 使用率,默認的結(jié)果很可能不一樣,因為 top 默認使用 3 秒時間間隔,而 ps 使用的卻是進程的整個生命周期。
top 和 ps 是最常用的性能分析工具:
這個輸出結(jié)果中,第三行 %Cpu 就是系統(tǒng)的 CPU 使用率,top 默認顯示的是所有 CPU 的平均值,這個時候你只需要按下數(shù)字 1 ,就可以切換到每個 CPU 的使用率了。繼續(xù)往下看,空白行之后是進程的實時信息,每個進程都有一個 %CPU 列,表示進程的 CPU 使用率。它是用戶態(tài)和內(nèi)核態(tài) CPU 使用率的總和,包括進程用戶空間使用的 CPU、通過系統(tǒng)調(diào)用執(zhí)行的內(nèi)核空間 CPU 、以及在就緒隊列等待運行的 CPU。在虛擬化環(huán)境中,它還包括了運行虛擬機占用的 CPU。
預先安裝 stress 和 sysstat 包,如 apt install stress sysstat。
stress 是一個 Linux 系統(tǒng)壓力測試工具,這里我們用作異常進程模擬平均負載升高的場景。而 sysstat 包含了常用的 Linux 性能工具,用來監(jiān)控和分析系統(tǒng)的性能。我們的案例會用到這個包的兩個命令 mpstat 和 pidstat。
下面的 pidstat 命令,就間隔 1 秒展示了進程的 5 組 CPU 使用率,
包括:
perf 是 Linux 2.6.31 以后內(nèi)置的性能分析工具。它以性能事件采樣為基礎(chǔ),不僅可以分析系統(tǒng)的各種事件和內(nèi)核性能,還可以用來分析指定應(yīng)用程序的性能問題。
之一種常見用法是 perf top,類似于 top,它能夠?qū)崟r顯示占用 CPU 時鐘最多的函數(shù)或者指令,因此可以用來查找熱點函數(shù),使用界面如下所示:
輸出結(jié)果中,之一行包含三個數(shù)據(jù),分別是采樣數(shù)(Samples)如2K、事件類型(event)如cpu-clock:pppH和事件總數(shù)量(Event count)如:。
第二種常見用法,也就是 perf record 和 perf report。 perf top 雖然實時展示了系統(tǒng)的性能信息,但它的缺點是并不保存數(shù)據(jù),也就無法用于離線或者后續(xù)的分析。而 perf record 則提供了保存數(shù)據(jù)的功能,保存后的數(shù)據(jù),需要你用 perf report 解析展示。
1.啟動docker 運行進程:
2.ab工具測試服務(wù)器性能
ab(apache bench)是一個常用的 HTTP 服務(wù)性能測試工具,這里用來模擬 Ngnix 的客戶端。
3.分析過程
CPU 使用率是最直觀和最常用的系統(tǒng)性能指標,在排查性能問題時,通常會關(guān)注的之一個指標。所以更要熟悉它的含義,尤其要弄清楚:
這幾種不同 CPU 的使用率。比如說:
碰到 CPU 使用率升高的問題,你可以借助 top、pidstat 等工具,確認引發(fā) CPU 性能問題的來源;再使用 perf 等工具,排查出引起性能問題的具體函數(shù).
關(guān)于linux存儲優(yōu)化的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
本文標題:如何進行Linux存儲優(yōu)化?(linux存儲優(yōu)化)
本文網(wǎng)址:http://www.dlmjj.cn/article/cdgjojs.html


咨詢
建站咨詢
