Linux 基礎知識 | 檔案系統__Linux

來源:互聯網
上載者:User
Linux 基礎知識 | 檔案系統 前言

Linux的傳統的檔案系統為Ext2(Linux second extended file system,ext2fs),在傳統的磁碟和檔案系統中,
一個分區就只能被格式化為一個檔案系統,所以可以說成一個filesystem就是一個分區,但是由於新技術的利用。這些
技術可以將一個分區格式化為多個檔案系統。所以,通常我們稱呼一個可被掛載的資料為一個檔案系統而不是一個分區。 Ext2檔案系統

在Linux系統中,一個檔案除了檔案的實際資料內容之外,還包含著非常多的屬性,比如檔案的許可權和屬性等,檔案系統通常會將這兩部分資料分別存到不同的區塊,許可權和屬性放置到inode中,實際資料則放置在data block中。此外還有一個超級區塊super block 記錄了整個檔案系統的資訊,包括inode和block的總量、使用量、剩餘量等。這3個概念的解釋如下: superblock: 記錄檔案系統的整體資訊,包括inode/block的總量、使用量、剩餘量,以及檔案系統的格式與相關資訊 inode: 記錄檔案的屬性,一個檔案佔用一個inode,同時記錄此檔案的資料所在的block號碼。 block: 實際記錄檔案的內容,若檔案太大時,會佔用多個block(當你輸入ll命令時,第一行顯示的total xx則表示該目錄佔用的block塊的個數 * block size) block 相關知識

檔案系統在格式化的時候就已經將inode和block規劃好了,其中block是用來存放資料的地方,在ext2檔案系統中所支援的block大小有1k,2k以及4k。由於block大小的差異,會對系統的檔案有一些限制: 最大單一檔案大小限制:如果block是1kb,則單一檔案最大的大小支援為16GB,2kb支援的最大為256GK。4kb支援的最大為2TB 最大檔案系統總量限制:1kb的block支援2TB的最大容量,2kb的block支援8TB的最大容量,4kb支援16TB最大容量 block的大小和數量在安裝系統前的格式化磁碟就已經決定,無法更改,除非重新格式化 每個block最多存放一個檔案的資料。 如果檔案大小大於block,則一個檔案會佔用多個block數量 如果檔案大小小於block,則該block的剩餘容量則不能夠再使用(磁碟空間會浪費)

可以通過一下命令查看作業系統的block size (只適用於ext2、ext3、ext4的檔案系統)

# 列出掛載點df -h # 根據上一個命令中的掛載點查看block sizetune2fs -l  /dev/sda3 |grep -i 'block size'
inode 相關知識

inode記錄的資料有如下幾部分: 該檔案的存模數式 該檔案的擁有者與群組 該檔案的容量 該檔案建立時間或狀態改變時間 該檔案最近一次讀取時間 該檔案最近修改時間 該檔案真正內容的指向

inode的數量和大小也是在格式化的時候已經固定,除此之外,inode還有以下特點: 每個inode大小固定為128B(新的ext4和xfs可設定到256B) 每個檔案佔用一個inode 檔案系統能建立的檔案數量以inode數量有關 系統讀取檔案的時候,要先找到inode,並分析inode所記錄的許可權與使用者是否符合,若符合才能開始讀block的內容 super block相關知識

super block記錄著整個檔案系統的相關資訊,記錄了block與inode的總量和大小。同時儲存了一份inode和block的對照表,用來記錄inode是否已經被使用,已經block是否為空白(可以存資料),通過這些資訊可以知道檔案應該存在那個地方。 系統目錄組成

當我們在Linux下的檔案系統建立一個目錄是,檔案系統會分配一個inode和至少一個block給該目錄,如果想要觀察某個檔案的inode號碼,可以通過輸入ll -i命令來查看。

下面查看根目錄的inode號碼

[root@xxx info]# ls -lid /2 dr-xr-xr-x. 21 root root 4096 Mar 13 11:47 /

如上,查看了根目錄的inode的編號為2。而且可以看到該檔案佔用大小4096。由此我們可以猜測該檔案系統的block塊大小為4k。

ext2檔案系統的局限性在於寫入資料錯誤的時候,系統啟動恢複的時候需要檢查磁碟花費大量時間,所以就有了ext3、
ext4這類日誌式檔案系統。這些檔案系統最佳化了資料一致性的保障功能,通過日誌的方式,可以很快速的檢查是否有檔案錯誤。 掛載點

一個檔案系統需要掛載到主機上的某個目錄才可以工作。一個分類樹可以掛載多個檔案系統,而linux支援很多檔案系統,當我們訪問某個目錄的時候,有可能在目錄路徑中掛載的檔案系統不同,此時會有一個一個Linux VFS(Virtual Filesystem Switch)的功能幫我們自動切換檔案系統。 XFS檔案系統

ContOs 7 開始,預設的檔案系統由Ext4改成了XFS。XFS幾乎相容Ext4所有的功能,但是為什麼要使用XFS呢。這是因為
Ext系列的檔案系統在格式化大容量硬碟的時候需要劃分inode以及block等需要花費大量時間。而XFS檔案系統基本上就是為了適應大容量磁碟的檔案系統。XFS也是採用inode和block的檔案內容分布方式,但是inode和block並不是在格式化磁碟的時候指定的,他是根據建立檔案的時候動態計算的。所以速度相對比較快,至於XFS比較深入一點的知識這裡就不介紹了。 操作檔案系統 列出檔案系統磁碟使用量

命令:df

參數: a 列出所有檔案系統 k 以KB輸出大小 m 以MB輸出大小 h 以人類易讀的格式輸出 H 以M = 1000K取代M = 1024K的方式顯示 T 連同分區的檔案系統名稱列出 i 以inode的數量來顯示檔案大小

# 查看 /usr 目錄的檔案系統[root@xxxx info]# df -T /usr Filesystem     Type 1K-blocks     Used Available Use% Mounted on/dev/xvda1     ext4 103079200 19937072  77882972  21% /# 查看容量使用方式[root@xxx info]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev/xvda1       99G   20G   75G  21% /devtmpfs        3.9G     0  3.9G   0% /devtmpfs           3.9G     0  3.9G   0% /dev/shmtmpfs           3.9G  1.6M  3.9G   1% /runtmpfs           3.9G     0  3.9G   0% /sys/fs/cgrouptmpfs           783M     0  783M   0% /run/user/0
顯示檔案數量

命令: du

預設情況下,這個命令會列出系統總共的檔案個數。這個命令有如下參數: a 列出某個目錄的檔案以及所佔用的空間大小 h 以人類易讀的格式輸出 s 列出總量 S 不包括子目錄的容量 k 以KB輸出大小 m 以MB輸出大小

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.