級別: 初級 |
電子商務架構(gòu)師, IBM Developer Relations
2004 年 1 月
IBM 電子商務架構(gòu)師 Chris Walden 將通過他在 developerWorks 上發(fā)表的九篇系列文章來指導您如何在 Linux 環(huán)境中運用您的 Windows 操作技巧。在本部分,我們研究了 Linux 的分層目錄結(jié)構(gòu),以及裝載和設(shè)備。
在 Linux 中文件和存儲設(shè)備的使用與 Windows 中不同。雖然同樣有文件和分層目錄結(jié)構(gòu),但是除此以外您還需要建立一種不同的思維方式。
清單 1. 目錄結(jié)構(gòu)
|
沒有驅(qū)動器字母!
在 Linux 中沒有驅(qū)動器字母,這確實相當有用。如果您曾經(jīng)在復雜的網(wǎng)絡(luò)環(huán)境中使用過 Windows 系統(tǒng),并且運行這個系統(tǒng)的機器帶有若干個設(shè)備,那么您可能會發(fā)現(xiàn)字母表中的字母不夠用。在 Linux 中,只有一個文件結(jié)構(gòu)。它以 root (/) 開始,所有的本地文件系統(tǒng),所有本地設(shè)備,以及所有的遠程文件系統(tǒng)都表示為這個結(jié)構(gòu)中的子目錄。
當 Linux 第一次引導時,它根據(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)核引導文件。Linux 還將裝載一些特殊的文件系統(tǒng)。交換分區(qū)并不表示為文件系統(tǒng)的一部分,但是內(nèi)核會處理它。不過,其他特殊的文件系統(tǒng),比如 proc,被看作是文件系統(tǒng)的常規(guī)部分,可以像普通文件一樣對它進行處理。
什么是 /proc?
這種系統(tǒng)的主要好處在于,您只需要使用簡單的腳本技術(shù),就可以對您的正在運行的系統(tǒng)進行深入而有效的操作。 |
其他文件系統(tǒng),比如可移動的媒體或者遠程文件系統(tǒng),需要手工裝載。裝載一個文件系統(tǒng)時,您需要知道在 Linux 中對它進行引用的正確方法,還需要有一個空目錄作為 裝載點。對于可移動媒體,Linux 可能在安裝時就為您創(chuàng)建了裝載點。在 Red Hat Linux 中,cdrom 設(shè)備被設(shè)置裝載到 /mnt/cdrom 目錄。也就是說,當您將一張 CD 放入 CDROM 設(shè)備后,輸入命令:
mount /mnt/cdrom
CD 就會被添加到文件系統(tǒng)中,CDROM 設(shè)備會被鎖定以使它不會被意外彈出。只需要到 /mnt/cdrom 目錄就可以訪問 CD 中的內(nèi)容。當不再使用 CD 時,您可以用下面的命令將它從文件系統(tǒng)中移除:
umount /mnt/cdrom
/mnt/cdrom 目錄將變空,CDROM 設(shè)備的鎖定被解除。您現(xiàn)在可以安全地彈出 CD。對其他可移動媒體也是如此,比如軟盤驅(qū)動器 (/mnt/floppy)。
運行不帶參數(shù)的 mount
命令會顯示出當前已裝載的文件系統(tǒng)。
為什么都需要加鎖? |
/etc/fstab 文件
設(shè)備與其裝載點之間的關(guān)聯(lián)關(guān)系在 /etc/fstab 中配置。這個文件可以直接修改,也可以由管理工具來維護。下面是一個 /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 |
每一行表示一個要裝載的文件系統(tǒng)。第一列指出的是要裝載的設(shè)備。第二列是裝載點,也就是設(shè)備在文件系統(tǒng)中的位置。第三列指出了文件系統(tǒng)的類型。第四列是處理文件系統(tǒng)的選項。最后一列是文件系統(tǒng)的標志位。第一個數(shù)字是 1 或者 0,指定系統(tǒng)是否應該用 dump(系統(tǒng)備份的一個選項)進行復制。第二個數(shù)字是 0、1 或者 2,指定了在引導時檢查文件系統(tǒng)的次序。0 表示完全不檢查。1 表示要最先檢查, root (/) 文件系統(tǒng)需要指定為 1。其他文件系統(tǒng)應該是 2。
在上面列出的 fstab 文件中,root 文件系統(tǒng)位于第一個 IDE 硬盤驅(qū)動器的第五個分區(qū)中,這個分區(qū)是擴展分區(qū)的第一個邏輯驅(qū)動器。/boot 文件系統(tǒng)位于第一個 IDE 硬盤驅(qū)動器的第二個主分區(qū)中,其中存放的是內(nèi)核啟動文件。交換分區(qū)位于第一個 IDE 硬盤驅(qū)動器的第六個分區(qū),也就是擴展分區(qū)的第二個邏輯驅(qū)動器。列表中的其他文件系統(tǒng)相應的設(shè)備是“none”。我們馬上就要闡述這一問題。現(xiàn)在我們先來關(guān)注物理磁盤。
什么都是文件
這樣復制的是一個二進制映像而不是 CD 的文件結(jié)構(gòu)。 以文件為中心的方法還允許您可以為設(shè)備名稱指定有意義的別名。例如,通常有一個叫做 /dev/cdrom 的別名,指向物理 CDROM 設(shè)備,而這個設(shè)備通常是 /dev/hdc。 一旦創(chuàng)建了別名,您就可以通過 /dev/cdrom 訪問那個設(shè)備,這樣更好記。別名技術(shù)還允許您標準化腳本,使這些腳本可以在物理配置不同的系統(tǒng)上使用。 |
第四列中的選項將隨文件系統(tǒng)類型而不同。在上面的例子中,/ 和 /boot 的裝載選項為“default”。也就是說,它們使用異步 I/O 以可讀寫方式自動裝載。只有 root 可以裝載或者缷載設(shè)備,但是用戶可以執(zhí)行二進制文件和使用“sticky bit”(稍后介紹)。文件系統(tǒng)將被作為塊字符設(shè)備來處理。然而,對 /mnt/cdrom 來說,選項就不同了。它不會被自動裝載,并且將會作為只讀文件系統(tǒng)裝載。用戶將可以在該文件系統(tǒng)中執(zhí)行腳本和程序。
添加文件系統(tǒng)
在 /etc/fstab 文件中添加新的一行,您就可以將文件系統(tǒng)添加到 /etc/fstab。作為一個實際的例子,我有一個 RAID 設(shè)備,存儲的是部門所用到的文件資源。這個設(shè)備中只有數(shù)據(jù)文件,并且保持與操作系統(tǒng)分離,這樣在出現(xiàn)硬件故障時可以將它轉(zhuǎn)移到另一個系統(tǒng)。RAID 已經(jīng)配置好,在 Linux 中識別為 /dev/sdc,即第三個 SCSI 設(shè)備。在第一個分區(qū)上創(chuàng)建了帶日志的 ext3 文件系統(tǒng),這樣我們通過 /dev/sdc1 就可以訪問它。我希望在計算機引導時自動將這個 RAID 裝載到文件系統(tǒng)中。
我在 /etc/fstab 中添加了如下一行:
/dev/sdc1 /data ext3 defaults 0 0
這樣在引導時 RAID 就會像 / 和 /boot 系統(tǒng)一樣被裝載。現(xiàn)在我只要再創(chuàng)建一個目錄作為指定的裝載點:
mkdir /data
一旦創(chuàng)建了這個空目錄,我們可以將文件系統(tǒng)裝載到它:
mount /data
RAID 現(xiàn)在關(guān)聯(lián)到了 /data。如果系統(tǒng)被重新引導,/data 將自動裝載。
分區(qū)
在 Linux 中分區(qū)與 Windows 中本質(zhì)上相同。控制臺命令 fdisk
可以創(chuàng)建和管理分區(qū)。當您使用 fdisk
時,您必須指明它要操作哪個設(shè)備。可使用命令 fdisk -l
來查看可用設(shè)備。
|
上面的清單來自于一臺膝上型電腦,所以它顯示的結(jié)構(gòu)與服務器有些不同。它顯示了一個有若干個分區(qū)的 IDE 硬盤驅(qū)動器。如果有其他設(shè)備,同樣也將會被列出。例如,第二個 IDE 硬盤驅(qū)動器可能會顯示為 /dev/hdb。
指定一個設(shè)備再次運行 fdisk
,您會得到一個簡短的提示。
|
輸入“m”可以查看命令菜單。您可以使用“p”來顯示當前的分區(qū)表。您可以創(chuàng)建、刪除和修改現(xiàn)有分區(qū)的類型。“l(fā)”將為您列出可用分區(qū)類型的完全列表。用“w”將您的修改寫入到分區(qū)表并退出程序,或者使用“q”不保存修改而退出。一些修改會立即生效。有一些修改需要系統(tǒng)重新引導方能生效。
Linux 下的分區(qū)規(guī)則與 Windows 中相同。您可以使用 4 個主分區(qū),每個都可以成為擴展分區(qū)。
文件系統(tǒng)類型
Linux 可以處理內(nèi)核所能識別的任何文件系統(tǒng)類型。相當多的類型是默認編譯到內(nèi)核中的,并且可以再添加新的文件系統(tǒng)。下面是一些重要的文件系統(tǒng)類型:
- ext2:標準 Linux 文件系統(tǒng)
- ext3:帶日志的標準 Linux 文件系統(tǒng)
- vfat:Microsoft 的 Fat32 文件系統(tǒng)
- jfs:IBM 的日志文件系統(tǒng)
- reiserfs:另一個流行的日志文件系統(tǒng)
日志節(jié)約時間,保全數(shù)據(jù) |
格式化分區(qū)
分區(qū)創(chuàng)建完成后,用適當版本的 mkfs
命令對其進行格式化。文件系統(tǒng)將有其自己版本的 mkfs
,比如 mkfs.ext2
或者 mkfs.ext3
。這些助手腳本讓您可以只需要指定分區(qū)就可以創(chuàng)建一個文件系統(tǒng)。下面是一些例子:
|
有一些高級的參數(shù)會影響分區(qū)如何格式化,但是對通常的用途來說,使用默認的參數(shù)就可以了。一旦分區(qū)經(jīng)過了格式化,它就可以裝載到 / 文件系統(tǒng)中。一個文件系統(tǒng)必須在被缷載后才可以重新格式化。
其他文件系統(tǒng)工具
讓我們來看一看其他有用的工具。
控制臺工具
有幾個工具可以查看磁盤和文件系統(tǒng)的狀態(tài)。
df df
表示“disk free”。它會報告裝載的文件系統(tǒng)上已用的和可用的磁盤空間的大小。有用的開關(guān):
df -h |
人類可讀的格式;以易讀的 k、M、G 而不是以字節(jié)為單位來顯示文件的大小 |
df -l |
僅列出本地文件系統(tǒng);默認情況下,遠程文件系統(tǒng)也會被列出 |
du du
表示“disk usage”。它會報告特定的文件和每個子目錄 (參數(shù)中指定的目錄) 所使用的磁盤空間大小。有用的開關(guān):
du -a |
列出所有文件所占的空間,而不僅是目錄 |
du -h |
人類可讀的格式;以易讀的 k、M、G 而不是以字節(jié)為單位來顯示文件的大小 |
du -c |
在所有的參數(shù)處理完成后輸出一個總計;可以用來得到給定的一組文件或目錄所占的總的磁盤空間 |
du -s |
只顯示出每個參數(shù)指定的文件大小的總和 |
fsck
這個程序用來檢查和修復文件系統(tǒng),相當于 Windows 中的 chkdsk
。如同 mkfs
一樣,對應不同的文件系統(tǒng)類型它有不同的版本。 fsck
必須運行于已缷載的卷上,雖然除非是在文件系統(tǒng)沒有缷載完全的時候,否則很少會用到它。 man fsck
和 info fsck
,以及本文最后的 參考資料中都提供了詳細的資料。
Webmin
Webmin 有一些工具用于管理文件系統(tǒng)和分區(qū)。
硬件、本地磁盤上的分區(qū)
每一個磁盤和分區(qū)以及它們的使用情況都被顯示出來。點擊一個文件系統(tǒng)可以查看詳細信息。對于已卸載的分區(qū),可以編輯它的類型,以及格式化它的文件系統(tǒng)。
系統(tǒng)、磁盤和網(wǎng)絡(luò)文件系統(tǒng)
裝載的和卸載的文件系統(tǒng)都在 /etc/fstab 中列出。普通文件系統(tǒng)類型有一個用于創(chuàng)建條目的向?qū)А]有識別出的文件系統(tǒng)類型可以在這里裝載和缷載,但是只能手工編輯 /etc/fstab。大多數(shù)服務器文件系統(tǒng)在這里都可以很好地處理。
完整的體系是分區(qū)的總和
雖然在 Linux 中對分區(qū)和文件系統(tǒng)的管理與 Windows 中有很多類似之處,但是從驅(qū)動器字母過渡到完全的分層樹可能還需要作一些調(diào)整。因此,有一些健壯的控制臺工具可以使用這些功能及 /etc 目錄下的配置文件。Webmin 等基于瀏覽器的前端提供了一些有用的工具。
- 您可以參閱本文在 developerWorks 全球站點上的 英文原文.
- 閱讀 Windows 到 Linux 之旅系列文章的其他部分( developerWorks, 2003 年 11 月)。
- Linux Partition HOWTO深入討論了分區(qū)的機制,并詳細介紹了可用的工具。
- 雖然 Linux Administration Made Easy是一個比較老的參考資料,不過它還是有用的,因為 Linux 通常的程序和技術(shù)仍然一致。
- Multi Disk System Tuning HOWTO描述了 Linux 中如何最好地使用多個磁盤和分區(qū)。
- “ 安裝和配置 SuSE Linux Enterprise Server(SLES)8”介紹了如何安裝和配置 SuSE Linux Enterprise Server (SLES) 8,包括使用 YaST 進行圖形化配置的步驟。
- Linux System Administrator's Guide是為新手準備的 Linux 系統(tǒng)管理介紹。
- developerWorks教程 “ LPI certification 101 exam prep, Part 4: Advanced administration” 中頁介紹了文件系統(tǒng)、quotas 等內(nèi)容。
- IBM developerWorks系列文章 高級文件系統(tǒng)實現(xiàn)者指南關(guān)注的是高級主題,不過也向您介紹了 Linux 下可用的不同文件系統(tǒng)。
- 通過 IBM developerWorks文章 使虛擬文件系統(tǒng)工作來學習如何在您的代碼中使用虛擬文件系統(tǒng)。
- 格式化一個新系統(tǒng)?請首先閱讀來自 IBM developerWorks的兩篇文章:“ Partition planning tips”和“ 在系統(tǒng)工作時調(diào)整分區(qū)”。
- IBM developerWorks的“ 雙引導 Linux”一文向您介紹了如何容易地在一臺機器上同時安裝 Windows 和 Linux。
- IBM developerWorks文章“ Maximum swappage”可以幫助您提高 Linux 服務器的交換分區(qū)的性能。
- Linux Loader,或者說是 LILO,已經(jīng)被取代了! 閱讀 developerWorks教程“ GRUB 入門”了解全部情況。
- 當您學習了 IBM developerWorks上的“ 在 Linux 上燒錄 CD”指導文章后,就可以在 Linux 上輕松燒制光盤。
- Linux Documentation Project 的 Introduction to Linux 指導的 第 3 章講述了文件權(quán)限和安全。
- Linux 用戶技術(shù) FAQ也可以幫助您順利地從 Windows 過渡到 Linux。
- 要開始在 Linux 上使用 IBM 的軟件產(chǎn)品, 為您的 Linux 應用開發(fā)加油提速將為您提供最好的參考資料。您可以找到關(guān)于 DB2、Lotus Domino、WebSphere Application Server、WebSphere Studio 等多種應用軟件的安裝提示和參考資料。您還可以登錄獲得免費的 Linux Software Evaluation Kit,里面有試用軟件和培訓資料。
- 在 developerWorksLinux 專區(qū)可以找到更多 為 Linux 開發(fā)者準備的參考資料。
關(guān)于作者 Chris Walden 是位于德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers )的一名電子商務架構(gòu)師,該公司為 IBM 商業(yè)伙伴提供教育、實現(xiàn)和咨詢。他致力于 Linux 相關(guān)工作,一有機會就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構(gòu)師的職責之外,他還精通 Linux 基礎(chǔ)設(shè)施服務器的各個領(lǐng)域,包括混合平臺用戶環(huán)境下的文件、打印以及其他應用服務等等。Chris 有 10 年的計算機行業(yè)經(jīng)驗,從現(xiàn)場支持到 Web 應用開發(fā)和顧問,各個領(lǐng)域他都曾涉足。您可以通過 cmwalden-at-us.ibm.com 與 Chris 聯(lián)系。 |