Linux操作系統(tǒng)文件系統(tǒng)基礎知識詳解
將一個文件系統(tǒng)的頂層目錄掛到另一個文件系統(tǒng)的子目錄上,使它們成為一個整體,稱為掛載。把該子目錄稱為掛載點。
舉個例子吧:
根分區(qū):
/根目錄
┃
┏━━━━┳━━━━━┳━━━━━┳━━━━━╋━━━━━┳━━━━━┳━━━━━┳━━━━━┓
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
bin home dev etc lib sbin tmp usr var
┃
┏━┻━┓
┃ ┃
rc.d cron.d
┃
┏━━━┳━━━┳━┻━┳━━━━┓
┃ ┃ ┃ ┃ ┃
init.d rc0.d rc1.d rc2.d ……
/usr分區(qū) :
usr
┃
┏━━━━┳━━━╋━━━┳━━━┳━━━┓
┃ ┃ ┃ ┃ ┃ ┃
X11R6 src lib local man bin
┃ ┃
┃ ┏━━━╋━━━┓
┃ ┃ ┃ ┃
linux bin lib src
掛載之后就形成了文章開始時的那個圖。像不像掛上去的?
注意:1、掛載點必須是一個目錄。
2、一個分區(qū)掛載在一個已存在的目錄上,這個目錄可以不為空,但掛載后這個目錄下以前的內(nèi)容將不可用。
對于其他操作系統(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)格式。
掛載時使用mount命令:
格式:mount [-參數(shù)] [設備名稱] [掛載點]
其中常用的參數(shù)有
-t 指定設備的文件系統(tǒng)類型,常見的有:
minix linux最早使用的文件系統(tǒng)
ext2 linux目前常用的文件系統(tǒng)
msdos MS-DOS的fat,就是fat16
vfat windows98常用的fat32
nfs 網(wǎng)絡文件系統(tǒng)
iso9660 CD-ROM光盤標準文件系統(tǒng)
ntfs windows NT 2000的文件系統(tǒng)
hpfs OS/2文件系統(tǒng)
auto 自動檢測文件系統(tǒng)
-o 指定掛載文件系統(tǒng)時的選項。有些也可用在/etc/fstab中。常用的 有
codepage=XXX 代碼頁
iocharset=XXX 字符集
ro 以只讀方式掛載
rw 以讀寫方式掛載
nouser 使一般用戶無法掛載
user 可以讓一般用戶掛載設備
提醒一下,mount命令沒有建立掛載點的功能,因此你應該確保執(zhí)行mount命令時,掛載點已經(jīng)存在。(不懂?說白了點就是你要把文件系統(tǒng)掛載到哪,首先要先建上個目錄。這樣OK?)
例子:windows98裝在hda1分區(qū),同時計算機上還有軟盤和光盤需要掛載。
# mk /mnt/winc
# mk /mnt/floppy
# mk /mnt/cdrom
# mount -t vfat /dev/hda1 /mnt/winc
# mount -t msdos /dev/fd0 /mnt/floppy
# mount -t iso9660 /dev/cdrom /mnt/cdrom
現(xiàn)在就可以進入/mnt/winc等目錄讀寫這些文件系統(tǒng)了。
要保證最后兩行的命令不出錯,要確保軟驅(qū)和光驅(qū)里有盤。(要是硬盤的磁盤片也可以經(jīng)常隨時更換的話,我想就不會犯這樣的錯誤了 :-> )
如果你的windows98目錄里有中文文件名,使用上面的命令掛載后,顯示的是一堆亂碼。這就要用到 -o 參數(shù)里的codepage iocharset選項。codepage指定文件系統(tǒng)的代碼頁,簡體中文中文代碼是936;iocharset指定字符集,簡體中文一般用cp936或 gb2312。
當掛載的文件系統(tǒng)linux不支持時,mount一定報錯,如windows2000的ntfs文件系統(tǒng)??梢灾匦戮幾glinux內(nèi)核以獲得對該文件系統(tǒng)的支持。關(guān)于重新編譯linux內(nèi)核,就不在這里說了。
四 、自動掛載
每次開機訪問windows分區(qū)都要運行mount命令顯然太煩瑣,為什么訪問其他的linux分區(qū)不用使用mount命令呢?
其實,每次開機時,linux自動將需要掛載的linux分區(qū)掛載上了。那么我們是不是可以設定讓linux在啟動的時候也掛載我們希望掛載的分區(qū),如windows分區(qū),以實現(xiàn)文件系統(tǒng)的自動掛載呢?
這是完全可以的。在/etc目錄下有個fstab文件,它里面列出了linux開機時自動掛載的文件系統(tǒng)的列表。我的/etc/fstab文件如下:
/dev/hda2 / ext3 defaults 1 1
/dev/hda1 /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda3 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,codepage=936,iocharset=gb2312 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
/dev/hdb1 /mnt/winc vfat defaults,codepage=936,iocharset=cp936 0 0
/dev/hda5 /mnt/wind vfat defaults,codepage=936,iocharset=cp936 0 0
在/etc/fstab文件里,第一列是掛載的文件系統(tǒng)的設備名,第二列是掛載點,第三列是掛載的文件系統(tǒng)類型,第四列是掛載的選項,選項間用逗號分隔。第五六列不知道是什么意思,還望高手指點。
在最后兩行是我手工添加的windows下的C;D盤,加了codepage=936和iocharset=cp936參數(shù)以支持中文文件名。參數(shù)defaults實際上包含了一組默認參數(shù):
rw 以可讀寫模式掛載
suid 開啟用戶ID和群組ID設置位
dev 可解讀文件系統(tǒng)上的字符或區(qū)塊設備
exec 可執(zhí)行二進制文件
auto 自動掛載
nouser 使一般用戶無法掛載
async 以非同步方式執(zhí)行文件系統(tǒng)的輸入輸出操作
大家可以看到在這個列表里,光驅(qū)和軟驅(qū)是不自動掛載的,參數(shù)設置為noauto。
評論