1. 程式人生 > >筆試總結——linux篇【持續更新】

筆試總結——linux篇【持續更新】

linux系統中的Load對當前CPU工作量的度量。簡單的說是程序佇列的長度。

Load Average 就是一段時間 (1 分鐘、5分鐘、15分鐘) 內平均 Load 。

通過系統命令"w"檢視當前load average情況

e.g Load:2.5,1.3,1.1表示系統的負載壓力在逐漸減少(錯)原因:看網友解釋沒看懂,想了一種通俗的解釋方法,有不對望指正:前五分鐘的負載平均值是1.3,我們虛擬出一個叫做負載量的值=負載平均值x時間,前5分鐘的負載量=6.5,前十五分鐘的負載量=16.5  16.5-6.5是5到15分鐘的負載量  6.5-2.5是1到5分鐘的負載量。再求平均值,肯定不是減少的

關於ext2 ext3 ext4檔案系統

ext2與ext3

Linux ext2/ext3檔案系統使用索引節點來記錄檔案資訊,作用像windows的檔案分配表。索引節點是一個結構,它包含了一個檔案的長度、建立及修改時間、許可權、所屬關係、磁碟中的位置等資訊。一個檔案系統維護了一個索引節點的陣列,每個檔案或目錄都與索引節點陣列中的唯一一個元素對應。系統給每個索引節點分配了一個號碼,也就是該節點在陣列中的索引號,稱為索引節點號。 linux檔案系統將檔案索引節點號和檔名同時儲存在目錄中。所以,目錄只是將檔案的名稱和它的索引節點號結合在一起的一張表,目錄中每一對檔名稱和索引節點號稱為一個連線。 對於一個檔案來說有唯一的索引節點號與之對應,對於一個索引節點號,卻可以有多個檔名與之對應。因此,在磁碟上的同一個檔案可以通過不同的路徑去訪問它。
Linux之前預設情況下使用的檔案系統為Ext2,ext2檔案系統的確高效穩定。但是,隨著Linux系統在關鍵業務中的應用,Linux檔案系統的弱點也漸漸顯露出來了:其中系統預設使用的ext2檔案系統是非日誌檔案系統。這在關鍵行業的應用是一個致命的弱點。本文向各位介紹Linux下使用ext3日誌檔案系統應用。
Ext3檔案系統是直接從Ext2檔案系統發展而來,目前ext3檔案系統已經非常穩定可靠。它完全相容ext2檔案系統。使用者可以平滑地過渡到一個日誌功能健全的檔案系統中來。這實際上了也是ext3日誌檔案系統初始設計的初衷。

然而:

 inode分為記憶體中的inode和檔案系統中的inode,為了避免混淆,我們稱前者為VFS inode, 而後者以EXT2為代表,我們稱為Ext2 inode。下面分別對VFS inodee與Ext2 inode做一下簡單的描述:
  1、VFS inode包含檔案訪問許可權、屬主、組、大小、生成時間、訪問時間、最後修改時間等資訊。它是linux管理檔案系統的最基本單位,也是檔案系統連線任何子目錄、檔案的橋樑。inode結構中的靜態資訊取自物理裝置上的檔案系統,由檔案系統指定的函式填寫,它只存在於記憶體中,可以通過inode快取訪問。雖然每個檔案都有相應的inode結點,但是隻有在需要的時候系統才會在記憶體中為其建立相應的inode資料結構,建立的inode結構將形成一個連結串列,我們可以通過遍歷這個連結串列去得到我們需要的檔案結點,VFS也為已分配的inode構造快取和雜湊表,以提 高系統效能。inode結構中的struct inode_operations *i_op為我們提供了一個inode操作列表,通過這個列表提供的函式我們可以對VFS inode結點進行各種操作。每個inode結構都有一個i結點號i_ino,在同一個檔案系統中每個i結點號是唯一的。

  2、EXT2 inode用來定義檔案系統的結構以及描述系統中每個檔案的管理資訊,每個檔案都有且只有一個inode,即使檔案中沒有資料,其索引結點也是存在的。每個檔案用一個單獨的Ext2 inode結構來描述,而且每一個inode都有唯一的標誌號。Ext2 inode為記憶體中的inode結構提供了檔案的基本資訊,隨著記憶體中inode結構的變化,系統也將更新Ext2 inode中相應的內容。Ext2 inode對應的是Ext2_inode結構。
EXT2 inode不包含檔案的建立時間,ext3 inode包含
沒有訪問許可權的記錄。訪問許可權是根據所屬使用者的許可權而定的。

Ext3日誌檔案系統的特點
1、高可用性
系統使用了ext3檔案系統後,即使在非正常關機後,系統也不需要檢查檔案系統。宕機發生後,恢復ext3檔案系統的時間只要數十秒鐘。
2、資料的完整性:
ext3檔案系統能夠極大地提高檔案系統的完整性,避免了意外宕機對檔案系統的破壞。在保證資料完整性方面,ext3檔案系統有2種模式可供選擇。其中之一就是“同時保持檔案系統及資料的一致性”模式。採用這種方式,你永遠不再會看到由於非正常關機而儲存在磁碟上的垃圾檔案。
3、檔案系統的速度:
儘管使用ext3檔案系統時,有時在儲存資料時可能要多次寫資料,但是,從總體上看來,ext3比ext2的效能還要好一些。這是因為ext3的日誌功能對磁碟的驅動器讀寫頭進行了優化。所以,檔案系統的讀寫效能較之Ext2檔案系統並來說,效能並沒有降低。
4、資料轉換
  由ext2檔案系統轉換成ext3檔案系統非常容易,只要簡單地鍵入兩條命令即可完成整個轉換過程,使用者不用花時間備份、恢復、格式化分割槽等。用一個ext3檔案系統提供的小工具tune2fs,它可以將ext2檔案系統輕鬆轉換為ext3日誌檔案系統。另外,ext3檔案系統可以不經任何更改,而直接載入成為ext2檔案系統。
5、多種日誌模式
  Ext3有多種日誌模式,一種工作模式是對所有的檔案資料及metadata(定義檔案系統中資料的資料,即資料的資料)進行日誌記錄(data=journal模式);另一種工作模式則是隻對metadata記錄日誌,而不對資料進行日誌記錄,也即所謂data=ordered或者data=writeback模式。系統管理人員可以根據系統的實際工作要求,在系統的工作速度與檔案資料的一致性之間作出選擇。

ext3的優點
為什麼你需要從ext2遷移到ext3呢?以下有四個主要原因:可用性、資料完整性、速度、易於遷移。

最新的ext4
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" 命令禁用該特性。)

轉:http://blog.csdn.net/macrossdzh/article/details/5973639