目錄樹
在 Linux 中,只有一個文件結(jié)構(gòu)胀溺。它以 root (/) 開始裂七,所有的本地文件系統(tǒng),所有本地設(shè)備仓坞,以及所有的遠程文件系統(tǒng)都表示為這個結(jié)構(gòu)中的子目錄背零。
當(dāng) Linux 第一次引導(dǎo)時,它根據(jù) /etc/fstab 文件中的信息構(gòu)建這個文件結(jié)構(gòu)扯躺。Windows 為硬盤驅(qū)動器分區(qū)和其他存儲設(shè)備分配驅(qū)動器字母捉兴,而 Linux 在 root 文件結(jié)構(gòu)中為它們分配目錄。這個分層的結(jié)構(gòu)是完全可配置的录语,并且可以動態(tài)地修改倍啥。
掛載
將一個設(shè)備添加到文件系統(tǒng)中,術(shù)語上稱為 裝載澎埠。Linux 會自動裝載一個 / (root) 文件系統(tǒng)虽缕。也可能會有一個單獨的 /boot 文件系統(tǒng),其中存放的是核心的內(nèi)核引導(dǎo)文件蒲稳。Linux 還將裝載一些特殊的文件系統(tǒng)氮趋。交換分區(qū)并不表示為文件系統(tǒng)的一部分伍派,但是內(nèi)核會處理它。不過剩胁,其他特殊的文件系統(tǒng)诉植,比如 proc,被看作是文件系統(tǒng)的常規(guī)部分昵观,可以像普通文件一樣對它進行處理晾腔。
什么是 /proc?
/proc 文件系統(tǒng)是 Windows 思想與 Linux 思想不同之處的極好示例。 /proc 存儲的是對正在運行的系統(tǒng)各個方面的虛擬描述啊犬。在那里有 IRQ 設(shè)置灼擂、內(nèi)存使用、加載的設(shè)備驅(qū)動器觉至、網(wǎng)絡(luò)狀態(tài)等很多信息剔应。甚至有一個叫做 /proc/kcore 的文件,是所有用到的系統(tǒng)內(nèi)存的虛擬描述语御。這里的每一個文件都可以像普通文件或二進制文件一樣解析峻贮。可以編寫某些文件來改變運行著的內(nèi)核的行為应闯,而不用重新引導(dǎo)月洛。例如,為打開系統(tǒng)中啟用的第一個以太網(wǎng)設(shè)備的 IP 轉(zhuǎn)發(fā)孽锥,您可以使用一個文件命令:
echo 1 > /proc/sys/net/ipv4/conf/eth0/forwarding
這種系統(tǒng)的主要好處在于,您只需要使用簡單的腳本技術(shù)细层,就可以對您的正在運行的系統(tǒng)進行深入而有效的操作惜辑。
其他文件系統(tǒng),比如可移動的媒體或者遠程文件系統(tǒng)疫赎,需要手工裝載盛撑。裝載一個文件系統(tǒng)時,您需要知道在 Linux 中對它進行引用的正確方法捧搞,還需要有一個空目錄作為 裝載點抵卫。
mount /mnt/cdrom
CD 就會被添加到文件系統(tǒng)中,CDROM 設(shè)備會被鎖定以使它不會被意外彈出胎撇。只需要到 /mnt/cdrom 目錄就可以訪問 CD 中的內(nèi)容介粘。當(dāng)不再使用 CD 時,您可以用下面的命令將它從文件系統(tǒng)中移除:
umount /mnt/cdrom
/mnt/cdrom 目錄將變空晚树,CDROM 設(shè)備的鎖定被解除姻采。您現(xiàn)在可以安全地彈出 CD。
運行不帶參數(shù)的 mount 命令會顯示出當(dāng)前已裝載的文件系統(tǒng)爵憎。
為什么都需要加鎖慨亲?
不要忘記婚瓜,Linux 不僅是多用戶的,而且是多會話的刑棵。也就是說幾個用戶可以同時登錄到系統(tǒng)中巴刻、運行程序、使用資源蛉签。這與 Windows 中的登錄后使用共享文件不同胡陪。每一個用戶都可以像自己坐在控制臺前一樣使用系統(tǒng)。為了保持穩(wěn)定正蛙,Linux 不允許任意釋放當(dāng)前正在使用的文件系統(tǒng)督弓,通過鎖定 CD,在直到?jīng)]有人再使用之前 CD 不會被彈出乒验。
/etc/fstab 文件
設(shè)備與其裝載點之間的關(guān)聯(lián)關(guān)系在 /etc/fstab 中配置愚隧。
每一行表示一個要裝載的文件系統(tǒng)。第一列指出的是要裝載的設(shè)備锻全。第二列是裝載點狂塘,也就是設(shè)備在文件系統(tǒng)中的位置。第三列指出了文件系統(tǒng)的類型鳄厌。第四列是處理文件系統(tǒng)的選項荞胡。最后一列是文件系統(tǒng)的標(biāo)志位。第一個數(shù)字是 1 或者 0了嚎,指定系統(tǒng)是否應(yīng)該用 dump(系統(tǒng)備份的一個選項)進行復(fù)制泪漂。第二個數(shù)字是 0、1 或者 2歪泳,指定了在引導(dǎo)時檢查文件系統(tǒng)的次序萝勤。0 表示完全不檢查。1 表示要最先檢查呐伞, root (/) 文件系統(tǒng)需要指定為 1敌卓。其他文件系統(tǒng)應(yīng)該是 2。
文件系統(tǒng)類型
Linux 可以處理內(nèi)核所能識別的任何文件系統(tǒng)類型伶氢。相當(dāng)多的類型是默認編譯到內(nèi)核中的趟径,并且可以再添加新的文件系統(tǒng)。下面是一些重要的文件系統(tǒng)類型:
- ext2:標(biāo)準(zhǔn) Linux 文件系統(tǒng)
- ext3:帶日志的標(biāo)準(zhǔn) Linux 文件系統(tǒng)
- vfat:Microsoft 的 Fat32 文件系統(tǒng)
- jfs:IBM 的日志文件系統(tǒng)
- reiserfs:另一個流行的日志文件系統(tǒng)
日志節(jié)約時間癣防,保全數(shù)據(jù)
日志文件系統(tǒng)有助于在非正常關(guān)閉時保護數(shù)據(jù)蜗巧。如果一個卷沒有缷載就被關(guān)閉,可能還遺留下未完成的工作蕾盯,以及處于 in-between 狀態(tài)的文件惧蛹。在典型的文件系統(tǒng)中,需要對這個卷進行全面的檢查,對較大的卷來說這需要比較長的時間香嗓。日志文件系統(tǒng)會對磁盤的每一個寫操作的事務(wù)記錄保持一段時間(比如 5 秒)迅腔。當(dāng)這個卷沒有被完全地缷載時,文件系統(tǒng)只需要回滾到最后一個已知的正常狀態(tài)靠娱。原來恢復(fù)一個卷需要 20 分鐘時間沧烈,現(xiàn)在只需要幾秒!
格式化分區(qū)
分區(qū)創(chuàng)建完成后,用適當(dāng)版本的 mkfs 命令對其進行格式化像云。文件系統(tǒng)將有其自己版本的 mkfs 锌雀,比如 mkfs.ext2 或者 mkfs.ext3 。這些助手腳本讓您可以只需要指定分區(qū)就可以創(chuàng)建一個文件系統(tǒng)迅诬。下面是一些例子:
清單 4. 使用 mkfs
# Create an ext2 file system on the third
# parition of the first IDE hard drive
mkfs.ext2 /dev/hda3
# Create an ext3 file system on the first
# partition of the 2nd SCSI hard drivemkfs.ext2
mkfs.ext3 /dev/sdb1
# Create a jfs file system in an extended
# partition on the first IDE hard drive.
mkfs.jfs /dev/hda5
有一些高級的參數(shù)會影響分區(qū)如何格式化腋逆,但是對通常的用途來說,使用默認的參數(shù)就可以了侈贷。一旦分區(qū)經(jīng)過了格式化惩歉,它就可以裝載到 / 文件系統(tǒng)中。一個文件系統(tǒng)必須在被缷載后才可以重新格式化俏蛮。