之前已經(jīng)對(duì)Linux系統(tǒng)架構(gòu)的內(nèi)核部分單獨(dú)做了深入介紹,今天就拿Linux系統(tǒng)架構(gòu)中的文件系統(tǒng)做一下介紹吧~先介紹下概念:
文件系統(tǒng)是文件存放在磁盤等存儲(chǔ)設(shè)備上的組織方法。Linux系統(tǒng)能支持多種目前流行的文件系統(tǒng),如EXT2、 EXT3、EXT4、 FAT、 FAT32、 VFAT和ISO9660。
Linux下面的文件類型主要有:
1) 普通文件:C語言元代碼、SHELL腳本、二進(jìn)制的可執(zhí)行文件等。分為純文本和二進(jìn)制。
2) 目錄文件:目錄,存儲(chǔ)文件的唯一地方。
3) 鏈接文件:指向同一個(gè)文件或目錄的的文件。
4) 設(shè)備文件:與系統(tǒng)外設(shè)相關(guān)的,通常在/dev下面。分為塊設(shè)備和字符設(shè)備。
5)管道(FIFO)文件: 提供進(jìn)程之間通信的一種方式
6)套接字(socket) 文件: 該文件類型與網(wǎng)絡(luò)通信有關(guān)
可以通過ls –l, file, stat幾個(gè)命令來查看文件的類型等相關(guān)信息。
文件結(jié)構(gòu)是文件存放在磁盤等存貯設(shè)備上的組織方法。主要體現(xiàn)在對(duì)文件和目錄的組織上;
目錄提供了管理文件的一個(gè)方便而有效的途徑。
Linux使用標(biāo)準(zhǔn)的目錄結(jié)構(gòu),在安裝的時(shí)候,安裝程序就已經(jīng)為用戶創(chuàng)建了文件系統(tǒng)和完整而固定的目錄組成形式,并指定了每個(gè)目錄的作用和其中的文件類型。
Linux采用的是樹型結(jié)構(gòu)。最上層是根目錄,其他的所有目錄都是從根目錄出發(fā)而生成的。
1、主分區(qū),擴(kuò)展分區(qū)和邏輯分區(qū)
Linux硬盤分區(qū)一共有三種:主分區(qū),擴(kuò)展分區(qū)和邏輯分區(qū)。
硬盤的分區(qū)主要分為主分區(qū)(Primary Partion)和擴(kuò)展分區(qū)(Extension Partion)兩種,主分區(qū)和擴(kuò)展分區(qū)的數(shù)目之和不能大于四個(gè)。
主分區(qū)(Primary Partion):可以馬上被使用但不能再分區(qū)。
擴(kuò)展分區(qū)(Extension Partion):必須再進(jìn)行分區(qū)后才能使用,也就是說它必須還要進(jìn)行二次分區(qū)。
邏輯分區(qū)((Logical Partion)):由擴(kuò)展分區(qū)建立起來的分區(qū),邏輯分區(qū)沒有數(shù)量上限制。
擴(kuò)展分區(qū)只不過是邏輯分區(qū)的“容器”,實(shí)際上只有主分區(qū)和邏輯分區(qū)進(jìn)行數(shù)據(jù)存儲(chǔ)。
2、Linux下硬盤分區(qū)的標(biāo)識(shí)
硬盤分區(qū)的標(biāo)識(shí)一般使用/dev/hd[a-z]X或者/dev/sd[a-z]X來標(biāo)識(shí),其中[a-z]代表硬盤號(hào),X代表硬盤內(nèi)的分區(qū)號(hào)。
整塊硬盤分區(qū)的塊號(hào)標(biāo)識(shí):Linux下用hda、hdb、sda、sdb 等來標(biāo)識(shí)不同的硬盤;
其中:
IDE接口硬盤:表示為/dev/hda1、/dev/hdb …;
SCSI 接口的硬盤、SATA接口的硬盤表示為/dev/sda、/dev/sdb … … ;
硬盤內(nèi)的分區(qū):如果X的值是1到4,表示硬盤的主分區(qū)(包含擴(kuò)展分區(qū));邏輯分區(qū)從是從5開始的,比如/dev/hda5肯定是邏輯分區(qū)了;
例如:
用hda1、hda2、 hda5、hda6 來標(biāo)識(shí)不同的分區(qū)。其中,字母a代表第一塊硬盤,b代表第二塊硬盤,依次類推。而數(shù)字1 代表一塊硬盤的第一個(gè)分區(qū)、2 代表第二個(gè)分區(qū),依次類推。1 到4 對(duì)應(yīng)的是主分區(qū)(Primary Partition)或擴(kuò)展分區(qū)(Extension Partition)。從5開始,對(duì)應(yīng)的都是硬盤的邏輯分區(qū)(Logical Partition)。一塊硬盤即使只有一個(gè)主分區(qū),邏輯分區(qū)也是從5開始編號(hào)的,這點(diǎn)應(yīng)特別注意。
文件系統(tǒng)指文件存在的物理空間,linux系統(tǒng)中每個(gè)分區(qū)都是一個(gè)文件系統(tǒng),都有自己的目錄層次結(jié)構(gòu)。linux會(huì)將這些分屬不同分區(qū)的、單獨(dú)的文件系統(tǒng)按一定的方式形成一個(gè)系統(tǒng)的總的目錄層次結(jié)構(gòu)。一個(gè)操作系統(tǒng)的運(yùn)行離不開對(duì)文件的操作,因此必然要擁有并維護(hù)自己的文件系統(tǒng)。
1、文件系統(tǒng)類型:
2、文件系統(tǒng)特性:
磁盤分區(qū)完畢后還需要進(jìn)行格式化(format),之后操作系統(tǒng)才能夠使用這個(gè)分區(qū)。 格式化的目的是能使操作系統(tǒng)可以使用的文件系統(tǒng)格式(即我們上面提到文件系統(tǒng)類型).
Linux正統(tǒng)的文件系統(tǒng)(如ext4等)將硬盤分區(qū)時(shí)會(huì)劃分出超級(jí)塊、inode Table區(qū)塊和data block數(shù)據(jù)區(qū)域。一個(gè)文件由一個(gè)超級(jí)塊、inode和數(shù)據(jù)區(qū)域塊組成。Inode包含文件的屬性(如讀寫屬性、owner等,以及指向數(shù)據(jù)塊的指針),數(shù)據(jù)區(qū)域塊則是文件內(nèi)容。當(dāng)查看某個(gè)文件時(shí),會(huì)先從inode table中查出文件屬性及數(shù)據(jù)存放點(diǎn),再從數(shù)據(jù)塊中讀取數(shù)據(jù)。
這里將 inode與block區(qū)塊用圖解來說明一下,如下圖所示,文件系統(tǒng)先格式化出inode與block的區(qū)塊,假設(shè)某一個(gè)文件的屬性與權(quán)限數(shù)據(jù)是放置到 inode 4號(hào)(下圖較小方格內(nèi)),而這個(gè)inode記錄了文件數(shù)據(jù)的實(shí)際放置點(diǎn)為 2, 7, 13, 15 這四個(gè) block 號(hào)碼,此時(shí)我們的操作系統(tǒng)就能夠據(jù)此來排列磁盤的閱讀順序,可以一口氣將四個(gè) block 內(nèi)容讀出來! 那么數(shù)據(jù)的讀取就如同下圖中的箭頭所指定的模樣了。
這種數(shù)據(jù)存取的方法我們稱為索引式文件系統(tǒng)(indexed allocation)。
linux系統(tǒng)中每個(gè)分區(qū)都是一個(gè)文件系統(tǒng),都有自己的目錄層次結(jié)構(gòu)。linux會(huì)將這些分屬不同分區(qū)的、單獨(dú)的文件系統(tǒng)按一定的方式形成一個(gè)系統(tǒng)的總的目錄層次結(jié)構(gòu)。這里所說的“按一定方式”就是指的掛載。
將一個(gè)文件系統(tǒng)的頂層目錄掛到另一個(gè)文件系統(tǒng)的子目錄上,使它們成為一個(gè)整體,稱為掛載。把該子目錄稱為掛載點(diǎn).
例如要讀取硬盤中的一個(gè)格式化好的分區(qū)、光盤或軟件等設(shè)備時(shí),必須先把這些設(shè)備對(duì)應(yīng)到某個(gè)目錄上,而這個(gè)目錄就稱為“掛載點(diǎn)(mount point)”,這樣才可以讀取這些設(shè)備。 掛載后將物理分區(qū)細(xì)節(jié)屏蔽掉,用戶只有統(tǒng)一的邏輯概念。所有的東西都是文件。
注意:
1、掛載點(diǎn)必須是一個(gè)目錄。
2、一個(gè)分區(qū)掛載在一個(gè)已存在的目錄上,這個(gè)目錄可以不為空,但掛載后這個(gè)目錄下以前的內(nèi)容將不可用。
對(duì)于其他操作系統(tǒng)建立的文件系統(tǒng)的掛載也是這樣。但是需要理解的是:光盤、軟盤、其他操作系統(tǒng)使用的文件系統(tǒng)的格式與linux使用的文件系統(tǒng)格式是不一樣的。光盤是ISO9660;軟盤是fat16或ext2;windows NT是fat16、NTFS;windows98是fat16、fat32;windows2000和windowsXP是fat16、fat32、 NTFS。掛載前要了解linux是否支持所要掛載的文件系統(tǒng)格式。
掛載時(shí)使用mount命令,其格式:mount [-參數(shù)] [設(shè)備名稱] [掛載點(diǎn)]
其中常用的參數(shù)有:
-t 指定設(shè)備的文件系統(tǒng)類型(什么提到的文件類型)
-o 指定掛載文件系統(tǒng)時(shí)的選項(xiàng)。有些也可用在/etc/fstab中。常用的有
codepage=XXX 代碼頁iocharset=XXX 字符集ro 以只讀方式掛載rw 以讀寫方式掛載nouser 使一般用戶無法掛載user 可以讓一般用戶掛載設(shè)備
用ln命令對(duì)一個(gè)已經(jīng)存在的文件再建立一個(gè)新的連接,而不復(fù)制文件的內(nèi)容。連接有軟連接和硬連接之分,軟連接又叫符號(hào)連接。它們各自的特點(diǎn)是:
硬連接:是給文件一個(gè)副本,原文件名和連接文件名都指向相同的物理地址。目錄不能有硬連接;硬連接不能跨越文件系統(tǒng)(不能跨越不同的分區(qū))文件在磁盤中只有一個(gè)拷貝,節(jié)省硬盤空間;
修改其中一個(gè),與其連接的文件同時(shí)被修改。如果刪除其中任意一個(gè)其余的文件將不受影響。
由于刪除文件要在同一個(gè)索引節(jié)點(diǎn)屬于唯一的連接時(shí)才能成功,因此可以防止不必要的誤刪除。
符號(hào)連接(軟連接):用ln -s命令建立文件的符號(hào)連接符號(hào)連接是linux特殊文件的一種,作為一個(gè)文件,它的數(shù)據(jù)是它所連接的文件的路徑名。類似windows下的快捷方式。
當(dāng)然刪除這個(gè)連接,也不會(huì)影響到源文件,但對(duì)連接文件的使用、引用都是直接調(diào)用源文件的。
具體關(guān)系可以看下圖:
從圖上可以看出硬鏈接和軟鏈接的區(qū)別:
1:硬鏈接原文件和新文件的inode編號(hào)一致。而軟鏈接不一樣。
2:對(duì)原文件刪除,會(huì)導(dǎo)致軟鏈接不可用,而硬鏈接不受影響。
3:對(duì)原文件的修改,軟、硬鏈接文件內(nèi)容也一樣的修改,因?yàn)槎际侵赶蛲粋€(gè)文件內(nèi)容的。
聯(lián)系客服