
一、Linux文件系統(tǒng)簡介
任何一個操作系統(tǒng)中,文件管理是其基本功能之一,而文件的管理是由文件系統(tǒng)來完成的。 文件系統(tǒng)主要用于組織和管理計算機存儲設(shè)備上的大量文件, 并提供用戶交互接口。
數(shù)據(jù)在硬盤上是二進制的,文件系統(tǒng)可以將這些二進制數(shù)據(jù)還原為相應(yīng)文件形式,并實現(xiàn)數(shù)據(jù)的查詢和存儲等。 存儲數(shù)據(jù)的物理設(shè)備有硬盤、U盤、SD卡、Flash、網(wǎng)絡(luò)存儲設(shè)備等。 不同的存儲設(shè)備有不同的物理結(jié)構(gòu),因此就需要不同的文件系統(tǒng)去管理,比如管理Nand Flash使用Yaffs文件系統(tǒng),管理硬盤/SD卡使用ext文件系統(tǒng)等。
(資料圖片)
Linux支持的文件系統(tǒng)格式很多,主要分為以下幾類:
磁盤文件系統(tǒng):指本地主機中實際可以訪問到的文件系統(tǒng),包括硬盤、CD-ROM、DVD、USB存儲器、磁盤陣列等。 常見格式有:Ext2、Ext3、Ext4、JFS、NTFS、UFS、FAT、FAT16、FAT32等網(wǎng)絡(luò)文件系統(tǒng):是可以遠(yuǎn)程訪問的文件系統(tǒng),在服務(wù)器端仍是本地磁盤文件系統(tǒng),客戶機通過網(wǎng)絡(luò)遠(yuǎn)程訪問數(shù)據(jù)。 常見格式有:NFS、Samba等專有/虛擬文件系統(tǒng):不駐留在磁盤上的文件系統(tǒng)。 常見格式有:TMPFS、PROCFS等二、Linux磁盤文件系統(tǒng)
接下來主要介紹磁盤文件系統(tǒng)。 目前Ext4(Extended File sytem,擴展文件系統(tǒng))是廣泛使用的一種磁盤文件系統(tǒng)格式。 是在Ext3基礎(chǔ)上發(fā)展起來的,對有效性保護、數(shù)據(jù)完整性、數(shù)據(jù)訪問速度、向下兼容性等方面做了改進,其特點是日志文件系統(tǒng):可將整個磁盤的寫入動作完整地記錄在磁盤的某個區(qū)域上,以便在必要時回溯追蹤。
磁盤是一種計算機的外部存儲器設(shè)備,由一個或多個覆蓋有磁性材料的鋁制或玻璃制的碟片組成,用來存儲用戶的信息,這種信息可以反復(fù)地被讀取和改寫,主要分為以下幾類:
IDE磁盤:價格低廉,兼容性強,性價比高,但是數(shù)據(jù)傳輸慢,不支持熱插拔等SCSI磁盤:傳輸速率高,讀寫性能好,運行穩(wěn)定,可連接多個設(shè)備,支持熱插拔,占用CPU低,但是價格相對較貴,一般用于工作站或服務(wù)器上SATA磁盤:結(jié)構(gòu)簡單、支持熱插拔Linux中硬盤以及分區(qū)等設(shè)備均表示為文件,其命名規(guī)則如下:
IDE磁盤的文件名為:/dev/hdxxSCSI/SATA/USB磁盤文件名為:/dev/sdxx下面是一些具體的命名實例:
/dev/hda #表示第一個IDE硬盤/dev/hda1 #表示第一塊IDE硬盤的第一個主分區(qū)/dev/hda2 #表示第一塊IDE硬盤的擴展分區(qū)(或第二個主分區(qū))/dev/hda5 #表示第一塊IDE硬盤的第一個邏輯分區(qū)/dev/hda8 #表示第一塊IDE硬盤的第四個邏輯分區(qū)/dev/hdb #表示第二個IDE硬盤/dev/sda #表示第一個SCSI硬盤/dev/sda1 #表示第一個SCSI硬盤的第一個主分區(qū)/dev/sdd3 #表示第四個SCSI硬盤的第三個主分區(qū)
為了便于管理和使用,通常會對磁盤進行分區(qū):
主分區(qū):必須要存在的分區(qū),最多能創(chuàng)建4個,最少1個,編號只能是1~4,可以直接格式化,然后安裝系統(tǒng),直接存放文件擴展分區(qū):會占用主分區(qū)位置,即主分區(qū)+擴展分區(qū)之和最多4個。 相當(dāng)于獨立的磁盤,有獨立的分區(qū)表,但不能獨立的存放數(shù)據(jù)邏輯分區(qū):擴展分區(qū)不能直接存放數(shù)據(jù),必須經(jīng)過再次分割,成為邏輯分區(qū)后才能存放數(shù)據(jù)。 一個擴展分區(qū)中的邏輯分區(qū)可以有任意多個,編號只能從5開始下圖中的分區(qū)方案為:2個主分區(qū) + 1個擴展分區(qū),其中擴展分區(qū)又分割出了2個邏輯分區(qū)
交換分區(qū)(swap):安裝系統(tǒng)時建立的,一塊特殊的硬盤空間,當(dāng)實際內(nèi)存不夠用時,操作系統(tǒng)會從內(nèi)存中取出部分暫時不用的數(shù)據(jù),放在swap中,為當(dāng)前程序騰出足夠的內(nèi)存空間。 swap不會使用到目錄樹的掛載,無需指定掛載點(即cd無法進入)。
三、Linux文件系統(tǒng)結(jié)構(gòu)
Linux采用載入/掛載的方式將分區(qū)與目錄聯(lián)系起來,通過訪問目錄就可以訪問分區(qū)的存儲空間。 掛載點就是硬盤分區(qū)掛載到文件系統(tǒng)的某目錄后,該目錄就是相應(yīng)分區(qū)的掛載點。
在掛載點創(chuàng)建的文件,實際上是存儲到硬盤的分區(qū)上,通過掛載點可以訪問分區(qū)上的文件,若將硬盤分區(qū)與目錄的掛載關(guān)系刪除,分區(qū)上的文件不會被刪除,只是原掛載點不能訪問到分區(qū)上的文件。
除了swap分區(qū)外,其他分區(qū)都是在根分區(qū)(/)目錄上操作的。 Linux文件系統(tǒng)是一個樹形的分層組織結(jié)構(gòu),根作為整個文件系統(tǒng)的惟一起點,其他所有目錄都從該點出發(fā),如下圖:
由于Linux是完全開源的軟件,因此眾多Linux發(fā)行版本的目錄結(jié)構(gòu)不盡相同。 為了規(guī)范文件目錄命名和存放標(biāo)準(zhǔn),頒發(fā)了文件層次結(jié)構(gòu)標(biāo)準(zhǔn)(FHS),Ubuntu系統(tǒng)也遵循該標(biāo)準(zhǔn)。
四、文件系統(tǒng)與磁盤管理相關(guān)命令
文件系統(tǒng)與磁盤管理相關(guān)命令非常多,下面僅對幾個較常用的命令做簡單介紹
df命令:disk free,用于列出文件系統(tǒng)的整體磁盤使用量,命令的格式為:
df [-a -h -i -k -H -T -m] [目錄或文件名]
不加參數(shù)使用時,默認(rèn)會將系統(tǒng)內(nèi)所有的(特殊內(nèi)存與swap除外)都以Kbytes容量列出來。 常用的選項如下示:
-a:列出所有的文件系統(tǒng)-k:以KBytes容量顯示各文件系統(tǒng)-m:以MBytes容量顯示各文件系統(tǒng)-h:以GBytes,MBytes,KBytes等格式自行顯示-H:以M=1000K取代M=1024K的進位方式-T:顯示出文件系統(tǒng)類型-i:不用硬盤容量,而以inode數(shù)量來顯示du命令:disk used,用于查看文件和目錄磁盤使用空間的,命令的格式為:
du [-a -h -s -k -m] 文件或目錄名稱
不加參數(shù)使用時,默認(rèn)會分析當(dāng)前所在目錄里的子目錄所占用的硬盤空間。 常用的選項如下示:
-a:列出所有的文件與目錄容量-h:以人們較易讀的容量格式 (G/M) 顯示-s:列出總量,而不是單個目錄占用容量-S:不包括子目錄下的總計-k:以KB列出容量顯示-m:以MB列出容量顯示fdisk命令:磁盤分區(qū)表操作工具,命令的格式為:
fdisk [-l] 裝置名稱
常用的選項如下示:
-l:輸出裝置名稱里所有的分區(qū)內(nèi)容,若為空,則會搜尋系統(tǒng)里所有裝置的分區(qū)并列出來file命令:用于辨識文件類型,命令的格式為:
file [-b -c -L -v -z][-f <名稱文件>][文件或目錄...]
常用的選項如下示:
-b:列出辨識結(jié)果時,不顯示文件名稱-c:詳細(xì)顯示指令執(zhí)行過程,便于排錯或分析程序執(zhí)行的情形-f <名稱文件>:指定名稱文件-L:直接顯示符號連接所指向的文件的類別-v:顯示版本信息-z:嘗試去解讀壓縮文件的內(nèi)容[文件或目錄...] :要確定類型的文件列表,多個文件之間使用空格分開mkdir命令:make directory的縮寫,用于創(chuàng)建目錄,命令的格式為:
mkdir [-p] dirName
常用的選項如下示:
-p:確保目錄名稱存在,不存在的就建一個ln命令:link files,為某一個文件在另外一個位置建立一個同步的鏈接。 命令的格式為:
ln [參數(shù)][源文件或目錄][目標(biāo)文件或目錄]
常用的選項如下示:
-b:刪除,覆蓋以前建立的鏈接-d:允許超級用戶制作目錄的硬鏈接-f:強制執(zhí)行-i:交互模式,文件存在則提示用戶是否覆蓋-n:把符號鏈接視為一般目錄-s:軟鏈接(符號鏈接)-v:顯示詳細(xì)的處理過程--help 顯示幫助信息--version 顯示版本信息標(biāo)簽: