IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當前所在位置:首頁操作系統(tǒng)LINUX → Linux文件系統(tǒng)精通指南

Linux文件系統(tǒng)精通指南

時間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評論(0)

  究竟什么是"文件系統(tǒng)"?Sheryl Calish 介紹了這個概念以及它的實際應(yīng)用

  盡管內(nèi)核是 Linux 的核心,但文件卻是用戶與操作系統(tǒng)交互所采用的主要工具。這對 Linux 來說尤其如此,這是因為在 UNIX 傳統(tǒng)中,它使用文件 I/O 機制管理硬件設(shè)備和數(shù)據(jù)文件。

  遺憾的是,新手通常會混淆介紹 Linux 文件系統(tǒng)概念的術(shù)語。術(shù)語文件系統(tǒng) 可以在 Linux 文件編制中互換使用,用于指代幾個不同但相關(guān)的概念。除磁盤分區(qū)的具體實例外,文件系統(tǒng)還指代數(shù)據(jù)結(jié)構(gòu)以及分區(qū)中文件的管理方法。

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

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

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

  本文主要介紹了 2.4 版 Linux 內(nèi)核中的 Linux 磁盤分區(qū)和文件管理系統(tǒng)特性。此外,還介紹了 2.6 版 Linux 內(nèi)核中的新特性。

  磁盤分區(qū)概述

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

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

  存儲在磁盤最開始位置的分區(qū)表提供了該磁盤上分區(qū)的映射?梢允褂 fdisk 命令查看系統(tǒng)的分區(qū)表。

  # 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

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

  第一至第四個分區(qū)保留給主分區(qū),第五個及隨后的分區(qū)用于邏輯分區(qū)。因此,以上所示的分區(qū)表中有一個驅(qū)動器 hda,它包含一個主分區(qū) hda1、一個擴展分區(qū) hda2 和五個邏輯分區(qū) /dev/hda5 至 /dev/hda9。以名稱 shmfs 列出的文件系統(tǒng)表示根據(jù) Linux 2.4 中的 POSIX 標準掛載為特殊文件系統(tǒng)的共內(nèi)存文件系統(tǒng)。

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

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

  文件管理系統(tǒng)概述

  要使分區(qū)后的磁盤可用,必須在其上構(gòu)建文件系統(tǒng)。這種情況下,通常還將文件系統(tǒng)稱作"分區(qū)類型"、"基于磁盤的文件系統(tǒng)"和"文件系統(tǒng)類型"。實際上,可以將這些文件系統(tǒng)看作是文件管理系統(tǒng),這是因為該稱呼正體現(xiàn)了它們的功能:它們通過維護文件上的元數(shù)據(jù),使系統(tǒng)上的文件保持狀態(tài)一致。

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

  每個分區(qū)都包含一個超級塊,用于維護分區(qū)中文件系統(tǒng)上的信息,包括一組在每個超級塊中唯一編號的 inode、空閑 inode 的數(shù)目以及 inode 總數(shù)、數(shù)據(jù)塊總數(shù)、空閑數(shù)據(jù)塊數(shù)和文件系統(tǒng)的狀態(tài)。文件系統(tǒng)的狀態(tài)有兩種:干凈(當文件處于未更改狀態(tài)時)和臟(當有未寫入磁盤的文件系統(tǒng)更改時)。超級塊中的一個 inode 對應(yīng)著一個文件。

  除文件名外,inode 包含了有關(guān)文件的所有信息,其中包括:

  地址

  類型

  大小

  所有者

  對文件數(shù)據(jù)所在塊的引用

  文件最后一次修改和訪問的時間戳。

  可以使用以下命令查看文件的 inode:

  $ ls -i

  正如前面已經(jīng)提到的,inode 只在超級塊中唯一編號,且每個分區(qū)只有一個超級塊,這就是硬鏈接無法跨越多個分區(qū)的原因。

  文件名通過 dentry 對象(用戶看到的是目錄文件)鏈接到一個 inode 編號。數(shù)據(jù)塊保存實際的文件數(shù)據(jù)。

  Linux 支持任何具備 VFS 定義的基本函數(shù)集的文件管理系統(tǒng)。對于像 vfat 這樣的文件管理系統(tǒng),Linux 項目提供了它自己的設(shè)備驅(qū)動程序。

  您可以從以下輸出中看到,同的文件管理系統(tǒng)可以存在于同一系統(tǒng)的不同分區(qū)上。

  df -T

  Filesystem    Type   1K Blocks    Used      Available   Use%   Mounted on

  /dev/hda6     reiserfs     4195632      2015020   2180612     49%    /

  /dev/hda5     ext2   14607  3778      10075  8%    /boot

  /dev/hda9     reiserfs     937372 202368    735004      22%    /home

  /dev/hda8     reiserfs     6297248      3882504   2414744     62%    /opt

  shmfs   shm    256220 0   256220 0%    /dev/shm

  /dev/hda1     vfat   2159992      1854192   305800      86%    /windows/C

  當前,Oracle 用戶遇到的最常用的文件管理系統(tǒng)是 ext2/ext3、ReiserFS(不受 Oracle 支持)和 OCFS。以下是非 Oracle 分區(qū)主

關(guān)鍵詞標簽:Linux,文件系統(tǒng)

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程使用screen管理你的遠程會話使用screen管理你的遠程會話GNU/Linux安裝vmwareGNU/Linux安裝vmware如何登錄linux vps圖形界面 Linux遠程桌面連如何登錄linux vps圖形界面 Linux遠程桌面連

相關(guān)下載

人氣排行 Linux下獲取CPUID、硬盤序列號與MAC地址linux tc實現(xiàn)ip流量限制dmidecode命令查看內(nèi)存型號linux下解壓rar文件安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程Ubuntu linux 關(guān)機、重啟、注銷 命令lcx.exe、nc.exe、sc.exe入侵中的使用方法查看linux服務(wù)器硬盤IO讀寫負載