2004 年 1 月 01 日
IBM 電子商務(wù)架構(gòu)師 Chris Walden 將通過他在 developerWorks 上發(fā)表的九篇系列文章來指導(dǎo)您如何在 Linux 環(huán)境中運(yùn)用您的 Windows 操作技巧。在本部分,我們研究了 Linux 的分層目錄結(jié)構(gòu),以及裝載和設(shè)備。
在 Linux 中文件和存儲設(shè)備的使用與 Windows 中不同。雖然同樣有文件和分層目錄結(jié)構(gòu),但是除此以外您還需要建立一種不同的思維方式。
/ |
![]() ![]() |
![]()
|
在 Linux 中沒有驅(qū)動器字母,這確實(shí)相當(dāng)有用。如果您曾經(jīng)在復(fù)雜的網(wǎng)絡(luò)環(huán)境中使用過 Windows 系統(tǒng),并且運(yùn)行這個(gè)系統(tǒng)的機(jī)器帶有若干個(gè)設(shè)備,那么您可能會發(fā)現(xiàn)字母表中的字母不夠用。在 Linux 中,只有一個(gè)文件結(jié)構(gòu)。它以 root (/) 開始,所有的本地文件系統(tǒng),所有本地設(shè)備,以及所有的遠(yuǎn)程文件系統(tǒng)都表示為這個(gè)結(jié)構(gòu)中的子目錄。
當(dāng) Linux 第一次引導(dǎo)時(shí),它根據(jù) /etc/fstab 文件中的信息構(gòu)建這個(gè)文件結(jié)構(gòu)。Windows 為硬盤驅(qū)動器分區(qū)和其他存儲設(shè)備分配驅(qū)動器字母,而 Linux 在 root 文件結(jié)構(gòu)中為它們分配目錄。這個(gè)分層的結(jié)構(gòu)是完全可配置的,并且可以動態(tài)地修改。
![]() ![]() |
![]()
|
將一個(gè)設(shè)備添加到文件系統(tǒng)中,術(shù)語上稱為 裝載。Linux 會自動裝載一個(gè) / (root) 文件系統(tǒng)。也可能會有一個(gè)單獨(dú)的 /boot 文件系統(tǒng),其中存放的是核心的內(nèi)核引導(dǎo)文件。Linux 還將裝載一些特殊的文件系統(tǒng)。交換分區(qū)并不表示為文件系統(tǒng)的一部分,但是內(nèi)核會處理它。不過,其他特殊的文件系統(tǒng),比如 proc,被看作是文件系統(tǒng)的常規(guī)部分,可以像普通文件一樣對它進(jìn)行處理。
![]() |
|
其他文件系統(tǒng),比如可移動的媒體或者遠(yuǎn)程文件系統(tǒng),需要手工裝載。裝載一個(gè)文件系統(tǒng)時(shí),您需要知道在 Linux 中對它進(jìn)行引用的正確方法,還需要有一個(gè)空目錄作為 裝載點(diǎn)。對于可移動媒體,Linux 可能在安裝時(shí)就為您創(chuàng)建了裝載點(diǎn)。在 Red Hat Linux 中,cdrom 設(shè)備被設(shè)置裝載到 /mnt/cdrom 目錄。也就是說,當(dāng)您將一張 CD 放入 CDROM 設(shè)備后,輸入命令:
mount /mnt/cdrom
CD 就會被添加到文件系統(tǒng)中,CDROM 設(shè)備會被鎖定以使它不會被意外彈出。只需要到 /mnt/cdrom 目錄就可以訪問 CD 中的內(nèi)容。當(dāng)不再使用 CD 時(shí),您可以用下面的命令將它從文件系統(tǒng)中移除:
umount /mnt/cdrom
/mnt/cdrom 目錄將變空,CDROM 設(shè)備的鎖定被解除。您現(xiàn)在可以安全地彈出 CD。對其他可移動媒體也是如此,比如軟盤驅(qū)動器 (/mnt/floppy)。
運(yùn)行不帶參數(shù)的 mount
命令會顯示出當(dāng)前已裝載的文件系統(tǒng)。
![]() |
|
![]() ![]() |
![]()
|
設(shè)備與其裝載點(diǎn)之間的關(guān)聯(lián)關(guān)系在 /etc/fstab 中配置。這個(gè)文件可以直接修改,也可以由管理工具來維護(hù)。下面是一個(gè) /etc/fstab 示例:
/dev/hda5 | ext3 | defaults | 1 1 | |
/dev/hda2 | /boot | ext3 | exec,dev,duid,rw | 1 2 |
/dev/hda6 | swap | swap | defaults | 0 0 |
/dev/scd0 | /mnt/cdrom | auto | ro,noauto,exec | 0 0 |
none | /dev/pts | devpts | id=5,mode=620 | 0 0 |
none | /proc | proc | defaults | 0 0 |
none | /dev/shm | tmpfs | defaults | 0 0 |
每一行表示一個(gè)要裝載的文件系統(tǒng)。第一列指出的是要裝載的設(shè)備。第二列是裝載點(diǎn),也就是設(shè)備在文件系統(tǒng)中的位置。第三列指出了文件系統(tǒng)的類型。第四列是處理文件系統(tǒng)的選項(xiàng)。最后一列是文件系統(tǒng)的標(biāo)志位。第一個(gè)數(shù)字是 1 或者 0,指定系統(tǒng)是否應(yīng)該用 dump(系統(tǒng)備份的一個(gè)選項(xiàng))進(jìn)行復(fù)制。第二個(gè)數(shù)字是 0、1 或者 2,指定了在引導(dǎo)時(shí)檢查文件系統(tǒng)的次序。0 表示完全不檢查。1 表示要最先檢查, root (/) 文件系統(tǒng)需要指定為 1。其他文件系統(tǒng)應(yīng)該是 2。
在上面列出的 fstab 文件中,root 文件系統(tǒng)位于第一個(gè) IDE 硬盤驅(qū)動器的第五個(gè)分區(qū)中,這個(gè)分區(qū)是擴(kuò)展分區(qū)的第一個(gè)邏輯驅(qū)動器。/boot 文件系統(tǒng)位于第一個(gè) IDE 硬盤驅(qū)動器的第二個(gè)主分區(qū)中,其中存放的是內(nèi)核啟動文件。交換分區(qū)位于第一個(gè) IDE 硬盤驅(qū)動器的第六個(gè)分區(qū),也就是擴(kuò)展分區(qū)的第二個(gè)邏輯驅(qū)動器。列表中的其他文件系統(tǒng)相應(yīng)的設(shè)備是“none”。我們馬上就要闡述這一問題?,F(xiàn)在我們先來關(guān)注物理磁盤。
![]() |
|
第四列中的選項(xiàng)將隨文件系統(tǒng)類型而不同。在上面的例子中,/ 和 /boot 的裝載選項(xiàng)為“default”。也就是說,它們使用異步 I/O 以可讀寫方式自動裝載。只有 root 可以裝載或者缷載設(shè)備,但是用戶可以執(zhí)行二進(jìn)制文件和使用“sticky bit”(稍后介紹)。文件系統(tǒng)將被作為塊字符設(shè)備來處理。然而,對 /mnt/cdrom 來說,選項(xiàng)就不同了。它不會被自動裝載,并且將會作為只讀文件系統(tǒng)裝載。用戶將可以在該文件系統(tǒng)中執(zhí)行腳本和程序。
![]() ![]() |
![]()
|
在 /etc/fstab 文件中添加新的一行,您就可以將文件系統(tǒng)添加到 /etc/fstab。作為一個(gè)實(shí)際的例子,我有一個(gè) RAID 設(shè)備,存儲的是部門所用到的文件資源。這個(gè)設(shè)備中只有數(shù)據(jù)文件,并且保持與操作系統(tǒng)分離,這樣在出現(xiàn)硬件故障時(shí)可以將它轉(zhuǎn)移到另一個(gè)系統(tǒng)。RAID 已經(jīng)配置好,在 Linux 中識別為 /dev/sdc,即第三個(gè) SCSI 設(shè)備。在第一個(gè)分區(qū)上創(chuàng)建了帶日志的 ext3 文件系統(tǒng),這樣我們通過 /dev/sdc1 就可以訪問它。我希望在計(jì)算機(jī)引導(dǎo)時(shí)自動將這個(gè) RAID 裝載到文件系統(tǒng)中。
我在 /etc/fstab 中添加了如下一行:
/dev/sdc1 /data ext3 defaults 0 0
這樣在引導(dǎo)時(shí) RAID 就會像 / 和 /boot 系統(tǒng)一樣被裝載。現(xiàn)在我只要再創(chuàng)建一個(gè)目錄作為指定的裝載點(diǎn):
mkdir /data
一旦創(chuàng)建了這個(gè)空目錄,我們可以將文件系統(tǒng)裝載到它:
mount /data
RAID 現(xiàn)在關(guān)聯(lián)到了 /data。如果系統(tǒng)被重新引導(dǎo),/data 將自動裝載。
![]() ![]() |
![]()
|
在 Linux 中分區(qū)與 Windows 中本質(zhì)上相同。控制臺命令 fdisk
可以創(chuàng)建和管理分區(qū)。當(dāng)您使用 fdisk
時(shí),您必須指明它要操作哪個(gè)設(shè)備??墒褂妹?fdisk -l
來查看可用設(shè)備。
[root@cmw-t30 root]# fdisk -l |
上面的清單來自于一臺膝上型電腦,所以它顯示的結(jié)構(gòu)與服務(wù)器有些不同。它顯示了一個(gè)有若干個(gè)分區(qū)的 IDE 硬盤驅(qū)動器。如果有其他設(shè)備,同樣也將會被列出。例如,第二個(gè) IDE 硬盤驅(qū)動器可能會顯示為 /dev/hdb。
指定一個(gè)設(shè)備再次運(yùn)行 fdisk
,您會得到一個(gè)簡短的提示。
[root@cmw-t30 root]# fdisk /dev/hda |
輸入“m”可以查看命令菜單。您可以使用“p”來顯示當(dāng)前的分區(qū)表。您可以創(chuàng)建、刪除和修改現(xiàn)有分區(qū)的類型。“l”將為您列出可用分區(qū)類型的完全列表。用“w”將您的修改寫入到分區(qū)表并退出程序,或者使用 “q”不保存修改而退出。一些修改會立即生效。有一些修改需要系統(tǒng)重新引導(dǎo)方能生效。
Linux 下的分區(qū)規(guī)則與 Windows 中相同。您可以使用 4 個(gè)主分區(qū),每個(gè)都可以成為擴(kuò)展分區(qū)。
![]() ![]() |
![]()
|
Linux 可以處理內(nèi)核所能識別的任何文件系統(tǒng)類型。相當(dāng)多的類型是默認(rèn)編譯到內(nèi)核中的,并且可以再添加新的文件系統(tǒng)。下面是一些重要的文件系統(tǒng)類型:
![]() |
|
![]() ![]() |
![]()
|
分區(qū)創(chuàng)建完成后,用適當(dāng)版本的 mkfs
命令對其進(jìn)行格式化。文件系統(tǒng)將有其自己版本的 mkfs
,比如 mkfs.ext2
或者 mkfs.ext3
。這些助手腳本讓您可以只需要指定分區(qū)就可以創(chuàng)建一個(gè)文件系統(tǒng)。下面是一些例子:
# Create an ext2 file system on the third |
有一些高級的參數(shù)會影響分區(qū)如何格式化,但是對通常的用途來說,使用默認(rèn)的參數(shù)就可以了。一旦分區(qū)經(jīng)過了格式化,它就可以裝載到 / 文件系統(tǒng)中。一個(gè)文件系統(tǒng)必須在被缷載后才可以重新格式化。
![]() ![]() |
![]()
|
讓我們來看一看其他有用的工具。
有幾個(gè)工具可以查看磁盤和文件系統(tǒng)的狀態(tài)。
df df
表示“disk free”。它會報(bào)告裝載的文件系統(tǒng)上已用的和可用的磁盤空間的大小。有用的開關(guān):
df -h | 人類可讀的格式;以易讀的 k、M、G 而不是以字節(jié)為單位來顯示文件的大小 |
df -l | 僅列出本地文件系統(tǒng);默認(rèn)情況下,遠(yuǎn)程文件系統(tǒng)也會被列出 |
du du
表示“disk usage”。它會報(bào)告特定的文件和每個(gè)子目錄 (參數(shù)中指定的目錄) 所使用的磁盤空間大小。有用的開關(guān):
du -a | 列出所有文件所占的空間,而不僅是目錄 |
du -h | 人類可讀的格式;以易讀的 k、M、G 而不是以字節(jié)為單位來顯示文件的大小 |
du -c | 在所有的參數(shù)處理完成后輸出一個(gè)總計(jì);可以用來得到給定的一組文件或目錄所占的總的磁盤空間 |
du -s | 只顯示出每個(gè)參數(shù)指定的文件大小的總和 |
fsck
這個(gè)程序用來檢查和修復(fù)文件系統(tǒng),相當(dāng)于 Windows 中的 chkdsk
。如同 mkfs
一樣,對應(yīng)不同的文件系統(tǒng)類型它有不同的版本。 fsck
必須運(yùn)行于已缷載的卷上,雖然除非是在文件系統(tǒng)沒有缷載完全的時(shí)候,否則很少會用到它。 man fsck
和 info fsck
,以及本文最后的 參考資料中都提供了詳細(xì)的資料。
Webmin 有一些工具用于管理文件系統(tǒng)和分區(qū)。
每一個(gè)磁盤和分區(qū)以及它們的使用情況都被顯示出來。點(diǎn)擊一個(gè)文件系統(tǒng)可以查看詳細(xì)信息。對于已卸載的分區(qū),可以編輯它的類型,以及格式化它的文件系統(tǒng)。
系統(tǒng)、磁盤和網(wǎng)絡(luò)文件系統(tǒng)
裝載的和卸載的文件系統(tǒng)都在 /etc/fstab 中列出。普通文件系統(tǒng)類型有一個(gè)用于創(chuàng)建條目的向?qū)?。沒有識別出的文件系統(tǒng)類型可以在這里裝載和缷載,但是只能手工編輯 /etc/fstab。大多數(shù)服務(wù)器文件系統(tǒng)在這里都可以很好地處理。
![]() ![]() |
![]()
|
雖然在 Linux 中對分區(qū)和文件系統(tǒng)的管理與 Windows 中有很多類似之處,但是從驅(qū)動器字母過渡到完全的分層樹可能還需要作一些調(diào)整。因此,有一些健壯的控制臺工具可以使用這些功能及 /etc 目錄下的配置文件。Webmin 等基于瀏覽器的前端提供了一些有用的工具。
![]() | ||
![]() | Chris Walden 是位于德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers )的一名電子商務(wù)架構(gòu)師,該公司為 IBM 商業(yè)伙伴提供教育、實(shí)現(xiàn)和咨詢。他致力于 Linux 相關(guān)工作,一有機(jī)會就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構(gòu)師的職責(zé)之外,他還精通 Linux 基礎(chǔ)設(shè)施服務(wù)器的各個(gè)領(lǐng)域,包括混合平臺用戶環(huán)境下的文件、打印以及其他應(yīng)用服務(wù)等等。Chris 有 10 年的計(jì)算機(jī)行業(yè)經(jīng)驗(yàn),從現(xiàn)場支持到 Web 應(yīng)用開發(fā)和顧問,各個(gè)領(lǐng)域他都曾涉足。您可以通過 cmwalden-at-us.ibm.com 與 Chris 聯(lián)系。 |