歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux文件系統精通指南(一)

Linux文件系統精通指南(一)

日期:2017/2/25 10:38:10   编辑:Linux教程
 盡管內核是 Linux 的核心,但文件卻是用戶與操作系統交互所采用的主要工具。這對 Linux 來說尤其如此,這是因為在 UNIX 傳統中,它使用文件 I/O 機制管理硬件設備和數據文件。

  遺憾的是,新手通常會混淆介紹 Linux 文件系統概念的術語。術語文件系統可以在 Linux 文件編制中互換使用,用於指代幾個不同但相關的概念。除磁盤分區的具體實例外,文件系統還指代數據結構以及分區中文件的管理方法。

  另新手更感困惑的是,該術語還用於指代系統中文件的整體組織形式:目錄樹。此外,該術語還可以指代目錄樹中的每個子目錄,如在 /home 文件系統中。某些人認為,這些目錄和子目錄不能稱作真正意義上的文件系統,除非它們均駐留在各自的磁盤分區上。然而,其他人卻將其稱作文件系統,這無疑又增添了困惑。

  Linux 老手可以從上下文中理解這些術語的含義。而新手卻很難在一時半會兒就辨別出這樣的上下文。

  本文的主要目標就是提供足夠的背景知識,以幫助您辨別此術語的上下文。在闡明文件系統術語的細微差別的過程中,您還將學習如何將某些非常有用的相關工具從理論應用上升到實際應用。

  本文主要介紹了 2.4 版 Linux 內核中的 Linux 磁盤分區和文件管理系統特性。此外,還介紹了 2.6 版 Linux 內核中的新特性。

  磁盤分區概述

  Linux 和 UNIX 中的基本文件存儲單元都是磁盤分區,即將一個或多個硬盤的邏輯劃分,操作系統將每個邏輯分區視為獨立的磁盤。文件和文件管理系統“居住”在磁盤分區中。Linux 將這些磁盤分區作為設備處理,進而通過 /dev 目錄中的特殊文件使用文件 I/O 機制。

  有兩種類型的設備文件:塊和字符/原始。兩者之間的一個重要差別是,塊設備被緩沖,而字符設備因為沒有文件管理系統,所以不被緩沖。在 Oracle 集群文件系統 (OCFS) 推出之前,使用原始設備是提高 Oracle 數據文件分區性能的常見方法。(在本文的後續部分,我們將詳細介紹原始設備。)

  存儲在磁盤最開始位置的分區表提供了該磁盤上分區的映射。可以使用 fdisk 命令查看系統的分區表。

  # fdisk -l

  Disk /dev/hda:240 heads, 63 sectors, 1940 cylinders

  Units = cylinders of 15120 * 512 bytes

  Device Boot Start End Blocks Id System

  /dev/hda 1 286 2162128+ c Win95 FAT32 (LBA)

  /dev/hda2 * 288 1940 12496680 5 Extended

  /dev/hda5 288 289 15088+ 83 Linux

  /dev/hda6 290 844 4195768+ 83 Linux

  /dev/hda7 845 983 1050808+ 82 Linux swap

  /dev/hda8 984 1816 6297448+ 83 Linux

  /dev/hda9 1817 1940 937408+ 83 Linux

  分區表中的名稱 /dev/hda 至 /dev/hdd 分別代表 IDE 驅動器 1 至 4,其中 hda 代表驅動器 1,hdb 代表驅動器 2,依此類推。驅動器內的分區用數字指代,因此 /dev/hda5 是第一個 IDE 驅動器上的第五個分區。對於 SCSI 驅動器,使用了類似的命名模式:/dev/sda to /dev/sdd。

  第一至第四個分區保留給主分區,第五個及隨後的分區用於邏輯分區。因此,以上所示的分區表中有一個驅動器 hda,它包含一個主分區 hda1、一個擴展分區 hda2 和五個邏輯分區 /dev/hda5 至 /dev/hda9。以名稱 shmfs 列出的文件系統表示根據 Linux 2.4 中的 POSIX 標准掛載為特殊文件系統的共享內存文件系統。

  您可能已經注意到,在 fdisk 列表中 LBA 是括在括號中的。LBA 表示邏輯塊尋址,它將硬盤的柱面、塊和扇區模式轉換為線性塊編號進行處理。

  在 Linux 中,分區分為主分區、擴展分區和邏輯分區。術語主分區 是先前 x86 系統上四個分區限制的遺留產物。與 DOS 和 Windows 不同,Linux 可以從主分區或邏輯分區啟動。用作邏輯分區占位符的主分區稱作擴展分區。擴展分區本身擁有指向一個或多個邏輯分區(它們只是主分區的子分區)的分區表。在以上的 fdisk 列表中,hda2 就是一個擴展分區。

  文件管理系統概述

  要使分區後的磁盤可用,必須在其上構建文件系統。這種情況下,通常還將文件系統稱作“分區類型”、“基於磁盤的文件系統”和“文件系統類型”。實際上,可以將這些文件系統看作是文件管理系統,這是因為該稱呼正體現了它們的功能:它們通過維護文件上的元數據,使系統上的文件保持狀態一致。

  Linux 項目的特點之一是需要實現與每個可用實用程序的多個樣式和首選設置的兼容性,而這種兼容性在可用文件管理系統的選擇上體現得最為明顯。Linux 內核內部的虛擬文件系統 (VFS) 實現了此選擇。VFS 采用了一組可由其他文件管理系統使用的基本數據結構。這些數據結構是超級塊、inode、dentry(或目錄文件)和數據塊。

  每個分區都包含一個超級塊,用於維護分區中文件系統上的信息,包括一組在每個超級塊中唯一編號的 inode、空閒 inode 的數目以及 inode 總數、數據塊總數、空閒數據塊數和文件系統的狀態。文件系統的狀態有兩種:干淨(當文件處於未更改狀態時)和髒(當有未寫入磁盤的文件系統更改時)。超級塊中的一個 inode 對應著一個文件。

Copyright © Linux教程網 All Rights Reserved