時(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)閱讀
熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP
人氣排行 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ù)載