首先,需要澄清讀者對於文件系統的一些錯誤理解,經常有這樣的說法,“我的硬盤是FAT32格式的”,“C盤是NTFS格式”等,它們的錯誤在於,NTFS或是FAT32並不是格式,而是管理文件的系統,其次剛買回來的硬盤並沒有文件系統,必須使用FDISK或Windows 2000/XP的分區工具等對其進行分區並格式化後纔會有管理文件的系統,因此文件系統是對應分區的,而不是硬盤,不管是將硬盤分成一個分區,還是幾個分區。
舉個通俗的比喻,一塊硬盤就像一個塊空地,文件就像不同的材料,我們首先得在空地上建起倉庫(分區),並且指定好(格式化)倉庫對材料的管理規範(文件系統),這樣才能將材料運進倉庫保管。
文件不會受所在分區的文件系統影響,就像同樣是汽車輪胎在A倉庫可能直接堆在地上,而B倉庫則會掛在牆上,僅僅是放置和管理方法不同而已,因此,在NTFS分區和FAT32分區的文件可以隨意在分區間移動,內容不會因此產生任何不同。
---------------下面進入正文 Linux文件系統詳解(轉自:linux之家 作者:崔航)
---- 在Linux的系統管理與使用過程中,文件系統是管理員打交道最多,也是最基本的管理對象。對於Linux的普通使用者,文件系統同樣是深入瞭解Linux的重要概念。在Linux系統中,所有內容被表示爲文件,組織文件的各種方法便稱爲不同的文件系統。Linux支持多種文件系統,使之能夠與不同的操作環境實現資源共享,這也是Linux作爲網絡操作系統的明顯優勢。
---- 一、Linux中的文件系統及配置
---- Linux支持的文件系統不僅包括Unix世界廣泛採用的各種類型,還特別加入了對MS Windows9x/NT文件系統的支持,並可以方便的在CD-ROM、軟盤等介質上建立相應的文件系統。爲了確定你的Linux支持的文件系統類型,可以查閱/proc/filesystems中的內容。如果所需類型不在其中,那就只能去找升級內核並重新編譯了。Linux中常見的文件系統主要有:
---- ext2——這是Linux中使用最多的文件系統,因爲它是專門爲Linux設計,擁有最快的速度和最小的CPU佔用率。ext2既可以用於標準的塊設備(如硬盤),也被應用在軟盤等移動存儲設備上。
---- msdos——DOS、Windows和OS/2使用該文件系統,它使用標準的DOS文件名格式,不支持長文件名。
---- vfat——擴展的DOS文件系統,支持長文件名,被MS Windows9x/NT所採用。
---- umsdos——Linux所使用的擴展DOS文件系統,不僅支持長文件名,還保持了對UID/GID、POSIX權限和特殊文件(如設備、管道等)的兼容。
---- iso9660——CD-ROM的標準文件系統。
---- Minix——這是Linux的前身Minix採用的文件系統,但其有一個致命的弱點:分區不大於64MB,因此一般只用於軟盤或RAM Disk。
---- sysV——這是Unix世界裏廣泛應用的SystemV的文件系統。
---- nfs——網絡文件系統,在文章後部會有詳細介紹。
---- hpfs——OS/2使用的高性能文件系統,但在Linux中只能作爲只讀文件系統使用。
---- smb——支持SMB協議的網絡文件系統,可用於Linux與Windows for Workgroups、Windows NT或LAN Manager之間的文件共享,需要特殊的加載程序。
---- Ncpfs——Novell Netware使用的支持NCP協議的網絡文件系統,但需要特殊程序支持。
---- swap——用於Linux磁盤交換分區的特殊文件系統。在內核引導過程時,它首先從LILO指定的設備上安裝根文件系統,隨後將加載/etc/fstab文件中列出的文件系統。/etc/fstab指定了該系統中的文件系統的類型、安裝位置及可選參數。fstab是一個文本文件,可以用任何編輯軟件進行修改,但請在修改前作好備份,因爲破壞或刪除其中的任何一行將導致下次系統引導時該文件系統不能被加載。以下是一個/etc/fstab的示例:
#/etc/fstab
/dev/hda1/ext2defaults11
/dev/hda2noneswapsw
/dev/hda5/homeext2defaults12
/dev/cdrom/mnt/cdrom iso9660 noauto,ro0 0
---- 從上面可以看出,每一個文件系統佔一行,參數間由< TAB >隔開。其中,第一列表示將被加載的塊設備或網絡上的文件系統;第二列表示該文件系統的安裝點(mount point),對於交換分區/dev/hda2不存在安裝位置;第三列是該文件系統的類型,即上文提及的各種文件系統中的一種;第四列的內容是該文件系統加載參數,常用的有defaults(缺省)、sw(交換分區用)、rw(讀/寫)和ro(只讀),而noauto(不自動加載)參數一般用於CD-ROM、軟盤等可移動存儲設備,防止系統引導時安裝該文件系統;第五、六列分別是兩個數字,左邊的數字供備份程序確定該文件系統上次備份距現在的天數,以通知管理員進行備份,右邊的數字代表fsck(文件系統檢查命令)在系統引導時檢測文件系統的順序,根文件系統一般最先被檢查,隨後檢查其他設備上的文件系統,而該列爲0的文件系統根本不做檢查(如CD-ROM或軟驅)。
---- 要把一個文件系統安裝,即使其工作,可以使用mount命令。Mount命令的格式爲:
---- #mount –t [type] –o[option] device_name mount_point
---- 其中type指文件系統的類型,option爲選項,如remount選項可使該文件系統重新加載,以實現某些參數的改變。device_name處填寫設備名稱,如/dev/hda1, mount_point處爲安裝位置。將文件系統/home安裝的命令爲:
---- #mount –t ext2 /dev/hda5 /home
---- 如果文件系統已在/etc/fstab中出現,則加載時只需指出安裝位置或設備名稱,如:
---- #mount /home
---- 與此相對應,卸載一個文件系統的命令爲umount, 將文件系統/home卸載:
---- #umount /home
---- 在Linux系統安裝過程中,系統會自動建立並加載一些文件系統,如果需要爲用戶建立各自的文件系統,就要用到mkfs命令,其格式爲:
---- #mkfs –t [type] device_name
---- 它可以在任何指定的塊設備上建立不同類型的文件系統,在軟盤上建立一個ext2文件系統:
---- #mkfs –t ext2 /dev/fd0
---- 這時,軟盤上已建立好ext2文件系統,可以對其進行加載或讀寫操作,並在必要時寫入/etc/fstab文件中,以便在引導時安裝。
---- 另外,Linux系統還帶有一套DOS文件工具Mtools,它可以使Unix系統讀寫或傳送DOS文件(一般在軟盤上),其命令包括Mcd、Mcopy、Mmove等,都是模擬DOS下相應的命令。使用Mtools工具,在讀寫DOS的文件軟盤時,就不必加載、卸載其文件系統了。
---- 二、磁盤空間配額管理
---- 公共機房的管理員都有這樣的煩惱:用戶總把一些很大的文件下載到主機,或在服務器上安裝佔用大量磁盤空間的應用軟件,硬盤很快就撐得滿滿當當。其實,在Linux下,可以通過對用戶的磁盤空間進行配額管理,用戶佔用的空間不會超過所規定的上限。下面就一個示例說明配額管理的方法。
---- 假設有一名用戶Fred,規定其在文件系統/home上最大的磁盤佔有量爲1000 blocks。
---- 1.首先,建立相應的系統使用文件quota.user和quota.group,前者是用戶磁盤配額文件,後者則是針對組用戶的。
# touch /quota.user
# touch /quota.group
# chmod 600 /quota.user
---- 2.對該系統的/etc/fstab文件中的文件系統/home所在行進行修改,在參數列上加入usrquota,表明該文件系統將實施配額管理。
/dev/hda5ext2/homedefaults, usrquota12
---- 3.重新加載該文件系統,使上述改動生效。
# mount –o remount,defaults, usrquota /home
---- 4.下面,可以確定該用戶配額的具體上限。用命令edquota Fred打開配額文件,其內容爲:
/dev/hda5:
blocks in use: 0, limits(soft = 1200, hard = 1000)
inodes in use: 0, limits(soft = 0, hard = 0)
---- 在這裏,只需改動limits後面的數值。Hard項代表該用戶在此文件系統擁有的磁盤最大使用量,Soft項表示用戶可以臨時超過其配額,達到該容量,但期限一過,用戶只能按其配額數量使用磁盤。一般只改變blocks的使用限制,而對inodes不做限制(使其limits項均爲0),由系統自動分配inode數量。改變完畢,可存盤退出。
---- 5.最後,打開該用戶磁盤配額控制。
# quotaon –uv Fred
---- 此時,用戶Fred在文件系統/home中僅擁有1000 blocks的空間,一旦該上限被突破,便會得到警告信息,無法繼續增加磁盤使用量。用戶可通過quota命令查看自己的磁盤配額,而root用戶可以用repquota檢查所有用戶的配額情況。
---- 三、NFS的配置與使用
---- NFS,也即網絡文件系統,是Unix系統間實現磁盤文件共享的一種方法,它由Sun Microsystems公司發展起來,逐漸成爲主機間共享資源的一個標準。
---- NFS使用遠程過程調用(RPC)方法,由後臺的駐留服務和配置文件控制。要啓動NFS進程,需要以root身份登錄並執行:# /etc/rc.d/init.d/nfs start
---- NFS的主要配置文件爲/etc/exports和/etc/fstab。首先要把準備共享的文件目錄(注意:這裏是文件目錄,而非文件系統)和有關選項填入/etc/exports,格式爲:
---- Dir_to_export host1(permission) host2(permission)
---- 其中hostn爲允許共享該目錄的其他主機,permission是它們使用該目錄時的權限,分爲rw(讀寫)、ro(只讀)和no_root_squash(承認客戶機的root用戶權限)。
---- 配置好/etc/exports後,利用exportfs命令向後臺駐留服務發出信號,要NFS相關進程重新讀此文件並做更新。如:
---- # exportfs -a
---- 此時,即可在客戶端安裝該目錄,如果主機名爲server1, 共享目錄爲/home/exports, 則在客戶機上使用mount命令安裝此輸出文件系統:
---- # mount server1:/home/exports /home/share
---- 如果需要客戶機在引導時即加載該輸出文件系統,則在/etc/fstab中加入此目錄名。不同的是,在設備名一列使用server1:/home/exports, 並將其類型設爲nfs