掛載

通過計算機文件系統訪問的過程

掛載(mounting)是指由操作系統使一個存儲設備(諸如硬碟、CD-ROM或共享資源)上的計算機文件和目錄可供用戶通過計算機的文件系統訪問的一個過程。

一般來說,當計算機關機時,每個已掛載存儲都將經歷一次卸載,以確保所有排隊的數據被寫入,並保證介質上文件系統結構的完整性。

掛載概念


在windows操作系統中,
掛載通常是指給磁碟分區(包括被虛擬出來的磁碟分區)分配一個盤符。
這個操作可以通過“計算機管理”中的“磁碟管理”來進行。
第三方軟體,如磁碟分區管理軟體、虛擬磁碟軟體等,通常也附帶掛載功能。
linux操作系統中,
掛載是一個非常重要的功能,使用非常頻繁。
它指將一個設備(通常是存儲設備)掛接到一個已存在的目錄上。
(這個目錄可以不為空,但掛載后這個目錄下以前的內容將不可用。)
需要理解的是,
linux操作系統將所有的設備都看作文件,
它將整個計算機的資源都整合成一個大的文件目錄。
我們要訪問存儲設備中的文件,必須將文件所在的分區掛載到一個已存在的目錄上,
然後通過訪問這個目錄來訪問存儲設備。

掛載條件

1、掛載點必須是一個目錄。
2、一個分區掛載在一個已存在的目錄上,這個目錄可以不為空,但掛載后這個目錄下以前的內容將不可用。對於其他操作系統建立的文件系統的掛載也是這樣。

系統格式

需要理解的是:光碟、軟盤、其他操作系統使用的文件系統的格式與linux使用的文件系統格式是不一樣的。光碟是ISO9660;軟盤是fat16或ext2;
windowsNT是fat16、NTFS
windows2000windowsXP是fat16、fat32、NTFS。
掛載前要了解linux是否支持所要掛載的文件系統格式。

掛載命令

掛載時使用mount命令:
格式:mount[-參數][設備名稱][掛載點]
其中常用的參數有:
-t<文件系統類型>指定設備的文件系統類型,
常見的有:minixlinux最早使用的文件系統
ext2linux目前常用的文件系統
msdosMS-DOS的fat,就是fat16
vfatwindows98常用的fat32
nfs網路文件系統
iso9660CD-ROM光碟標準文件系統
ntfswindowsNT2000的文件系統
hpfsOS/2文件系統
auto自動檢測文件系統
-o<選項>指定掛載文件系統時的選項。有些也可用在/etc/fstab中。
常用的有codepage=XXX代碼頁iocharset=XXX字符集ro以只讀方式掛載
rw以讀寫方式掛載nouser使一般用戶無法掛載user可以讓一般用戶掛載設備

示例

提醒一下,你要把文件系統掛載到哪,首先要先建上個目錄。
例子:windows98裝在hda1分區,同時計算機上還有軟盤和光碟需要掛載。
#mk/mnt/winc
#mk/mnt/floppy
#mk/mnt/cdrom
#mount-tvfat/dev/hda1/mnt/winc
#mount-tmsdos/dev/fd0/mnt/floppy
#mount-tiso9660/dev/cdrom/mnt/cdrom
現在就可以進入/mnt/winc等目錄讀寫這些文件系統了。
要保證最後兩行的命令不出錯,要確保軟碟機和光碟機里有盤。

分區標識

介紹Linux下分區是如何標識的,
通常是hdyN(IDE磁碟)或sdyN(SCSI磁碟)。
y這個字母標明分區所在的設備。
例如,/dev/hda(第一個IDE磁碟)或/dev/sdb(第二個SCSI磁碟)
N這個數字代表分區的編號。
前四個分區(主分區或擴展分區)是用數字從1排列到4。邏輯分區從5開始。
例如,/dev/hda3是在第一個IDE硬碟上的第三個主分區或擴展分區;/dev/sdb6是在第二個SCSI硬碟上的第二個邏輯分區。

中文支持


如果你的windows98目錄里有中文文件名,使用上面的命令掛載后,顯示的是一堆亂碼。
這就要用到-o參數里的codepageiocharset選項。
codepage指定文件系統的代碼頁,簡體中文中文代碼是936;
iocharset指定字符集,簡體中文一般用cp936或gb2312。
當掛載的文件系統linux不支持時,mount一定報錯,如windows2000的ntfs文件系統。
可以重新編譯linux內核以獲得對該文件系統的支持或者下個支持ntfs的補丁。

自動掛載


每次開機訪問windows分區都要運行mount命令顯然太煩瑣,
我們可以設定讓linux在啟動的時候也掛載我們希望掛載的分區,如windows分區,
以實現文件系統的自動掛載。
在/etc目錄下有個fstab文件,它裡面列出了linux開機時自動掛載的文件系統的列表。
我的/etc/fstab文件如下:
LABEL=//ext3defaults11
LABEL=/boot/bootext3defaults12none
/dev/ptsdevptsgid=5,mode=62000none
/procprocdefaults00none
/dev/shmtmpfsdefaults00
/dev/hda8swapswapdefaults00
/dev/cdrom/mnt/cdromudf,iso9660noauto,owner,kudzu,ro00
/dev/fd0/mnt/floppyautonoauto,owner,kudzu00
/dev/cdrom1/mnt/cdrom1udf,iso9660noauto,owner,kudzu,ro00
/dev/hdb1/mnt/wincntfsdefaults,codepage=936,iocharset=cp93600
/dev/hda5/mnt/windvfatdefaults,codepage=936,iocharset=cp93600
/dev/hda6/mnt/winfvfatdefaults,codepage=936,iocharset=cp93600
在/etc/fstab文件里,
第一列是掛載的文件系統的設備名,
第二列是掛載點,
第三列是掛載的文件系統類型,
第四列是掛載的選項,
選項間用逗號分隔。
在最後三行是我手工添加的windows下的C、D、F盤,
加了codepage=936和iocharset=cp936參數以支持中文文件名。
參數defaults實際上包含了一組默認參數
rw以可讀寫模式掛載suid開啟用戶ID和群組ID設置位dev可解讀文件系統上的字元或區塊設備
exec可執行二進位文件auto自動掛載nouser使一般用戶無法掛載
async以非同步方式執行文件系統的輸入輸出操作
大家可以看到在這個列表裡,光碟機和軟碟機是不自動掛載的,參數設置為noauto。

掛載ISO

掛載ISO格式的命令:
mount-loop-oiocharset=cp936xxxxx.iso/mnt/iso