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

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

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

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

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

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

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

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

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

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

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

  磁盤分區(qū)概述

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

  有兩種類型的設(shè)備文件:塊和字符/原始。兩者之間的一個(gè)重要差別是,塊設(shè)備被緩沖,而字符設(shè)備因?yàn)闆]有文件管理系統(tǒng),所以不被緩沖。在 Oracle 集群文件系統(tǒng) (OCFS) 推出之前,使用原始設(shè)備是提高 Oracle 數(shù)據(jù)文件分區(qū)性能的常見方法。(在本文的后續(xù)部分,我們將詳細(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ū)動(dòng)器 1 至 4,其中 hda 代表驅(qū)動(dòng)器 1,hdb 代表驅(qū)動(dòng)器 2,依此類推。驅(qū)動(dòng)器內(nèi)的分區(qū)用數(shù)字指代,因此 /dev/hda5 是第一個(gè) IDE 驅(qū)動(dòng)器上的第五個(gè)分區(qū)。對于 SCSI 驅(qū)動(dòng)器,使用了類似的命名模式:/dev/sda to /dev/sdd。

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

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

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

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

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

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

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

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

  地址

  類型

  大小

  所有者

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

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

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

  $ ls -i

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

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

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

  您可以從以下輸出中看到,同的文件管理系統(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

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

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

相關(guān)閱讀

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

熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP Linux操作系統(tǒng)修改IP

相關(guān)下載

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