Linux下mount 詳解

  1. 介紹

Linux系統中,磁盤分區是不能夠直接訪問的,需要將其掛載到系統中的某一個目錄中(掛載點),然後通過訪問掛載點來實現分區的訪問. Unix類的操作系統如此,Windows也是一樣;但Unix類的操作系統是通過mount進行的,掛載文件系統時要有掛載點,在安裝Linux的過程中,有時會提示我們分區,然後建立文件系統,接着是選擇掛載點。我們在Linux系統的使用過程中,也會掛載其它的硬盤分區,也要選中掛載點,掛載點通常是一個空置的目錄,最好是我們自建的空置目錄;

一些臨時設備也使用一些臨時的掛載點,通常位於/media , /media/floppy,/media/cdrom , /media/caeram. 通常將/dev/cdrom 掛載至/media/cdrom(mnt/cdrom) ,/dev/fd0 掛載/mnt/floppy (/media/floppy)

爲提升性能,內核對所有設備操作做緩衝,這種機制要求對文件系統先使用umont 進行卸載,否則會造成數據的丟失甚至文件系統的損壞, 因爲暫存在內存的數據來不及寫回磁盤。

 

掛載點:爲訪問磁盤上的分區,將文件系統的根目錄映射至/文件系統中的一個已經存在的目錄下。這個過程叫掛載。已經存在的目錄就稱爲掛載點。可以用mount 查看系統當前的掛載情況。掛載將遮住掛載點原來的文件

掛載權限:默認只有根用戶才能掛載和卸載設備,臨時設備使用不同的機制,控制檯用戶會變成一些設備的所有者。

 

2. sysopsis

mount [option] <device> <mount_point>

mount [option][-o mount_option] <device> <mount_point>

[mount_point]必須是一個已經存在的目錄,這個目錄可以不爲空,但掛載後這個目錄下原有內容不可訪問umount以後會恢復正常。

[device] 可以是一個分區,一個usb設備,光驅,軟盤,網絡共享等。

 

完整選項說明

-t vfstype 

掛載指定的文件系統類型:adfs, affs, autofs, coda, coherent, cramfs, devpts, efs, ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4, ntfs, proc, qnx4, ramfs, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xenix, xfs, xiafs

 

一般文件類型,可以不需要指定就可以有相同自動檢測(adfs, bfs, cramfs, ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, ntfs, qnx4, reiserfs, romfs, udf, ufs, vxfs, xfs, xiafs 等文件系統),如果探測失敗,就將訪問/etc/filesystems ,以指定文件系統探測。說明:如果清楚文件系統,最好指定具體類型。探測錯誤將帶來災難性的。

多個文件系統可以用“,”分割開來

mount -a -t nomsdos,ext 

將掛載fstab文件指定所有的文件系統,除了類型爲 msdos ext 的那一些。

常見文件類型

  1. vfat  可掛載FAT32

  1. ext2 linux目前常用的文件系統

  2. msdos MS-DOSfat,就是fat16 vfat

  3. windows98常用的fat32

  4. nfs 網絡文件系統

  5. smbfs windows共享系統

  6. iso9660 CD-ROM光盤標準文件系統

  7. ntfs windows NT/2000/XP的文件系統

  8. auto 自動檢測文件系統

-o options

掛載時使用mount -o指定,若已經掛載的文件系統可以使用mount -o remount,mount_options 直接修改掛載參數. 指定掛載系統選項:多個選項可以用","分割.某些選項只有在出現在文件 /etc/fstab 中時纔有意義。下列選項可以用於任何要掛載的文件系統

選項

說明

async

所有對文件系統的 I/O 操作都必須是異步完成的。

atime

每次存取時更新 inode 存取時間。這是默認選項。

auto

可以在使用 -a 選項時被掛載。

defaults

包含以下選項:rw, suid, dev, exec, auto, nouser,async.

dev

解析文件系統中的字符設備或塊設備。

exec

允許執行二進制文件

_netdev

文件系統居於需要網絡連接的設備上,避免斷網下,不斷掛載耗資源

noatime

不更新文件系統的inode存取時間(提升新聞服務器的速度)

noauto

只能被顯式地掛載,-a不能使它掛載

nodev

不解析文件系統中的字符設備或塊設備

noexec

不允許執行被加載的文件系統中的任何二進制文件

nosuid

不允許set-user-identifier set-group-identifier位起作用

nouser

禁止普通的掛載文件系統(默認)

remount

試圖重新掛載一個已經掛載的文件系統。通常用來改變掛載選項,如由只讀掛載改成可讀寫的。

ro

以只讀方式掛載

rw

以讀寫方式掛載

suid

允許set-user-identifier set-group-identifier位起作用

sync

以同步方式進行I/O操作,突然斷電不會掉資料,但加重磁盤負擔

只對 ext2ext3 ufs 有效

dirsync

所有對文件系統內目錄的更新應當是同步完成的,影響下列系統調用:creat,link, unlink, symlink, mkdir, rmdir, mknod 以及 rename

user

允許普通的用戶掛載文件系統,掛載者的用戶名被寫入mtab,從而使他可以再次卸載文件系統。這個選項暗含了選項noexec,nosuid, 以及 nodev.

users

允許每個用戶掛載卸載文件系統

codepage

codepage=XXX代碼頁

iocharset

iocharset=XXX 字符集

loop

掛載一個文件,經常掛載iso文件用到

username

username=user 訪問設備的用戶名

password

password=pass 訪問設備的密碼

以下參數只對特殊文件系統有用:

 

uid/gid

uid=value gid=value 以特殊用戶及組 掛載系統

ownmask

ownmask=value owner權限的權限掩碼

othmask

othmask=value othmask權限的權限掩碼

不同文件系統所支持的屬性不一定系統。可以查找相關資料

 

-a

搜索/etc/fstab文件中滿足條件的文件系統,進行掛載操作。

格式: mount -a -t type -o options 不需要指定設備/目錄

-f

測試mount系統,只檢查設備和目錄,並不真正掛載文件系統

-n

不把掛載的記錄,記錄在/etc/mtab 文件中

-r

將文件系統安裝爲只讀,同(-o ro)

-w

將文件系統安裝爲可讀寫,同(-o rw)

-L label

掛載具有指定卷標 label 的分區, 可以使用Label掛載文件系統

-w

將文件系統安裝爲可讀寫,同(-o rw)

-v

顯示詳細的掛載進度

-l

列出所有已經掛載的文件系統列表

--bind

將文件層次的一部分重新掛載到其他地方.只掛接單一的文件系統,如果目錄有其它文件系統,將不能掛載。如果需要都掛載,可以用:--rbind 參數。

mount --bind olddir newdir 2個目錄可以訪問系統內容

--move

將一個目錄移到另外地方,mount --move olddir newdir

-h

顯示幫助

-V

顯示版本

 

3. mount 文件系統的方法

掛載時滿足3個條件:分區文件系統類型,對應設備文件,掛載點

  1. 可以使用mount 手動實現

  2. 配置/etc/fstab (mount 調用)實現自動掛載

  3. 使用autofs 服務按需掛載(需要使用時才自動掛載)

 

自動掛載

/etc/fstab

rc.local 腳本中添加mount命令掛載文件系統

gnome 圖形環境會運行一個automounter程序自動監控光驅和自動掛載它,其只對光驅起作用。

 

 

4. eg

mount   不帶參數,顯示所有已經掛載的文件系統 /proc/mounts

mount | column  -t  以清晰的格式顯示所有掛載的文件系統

mount -a        掛載/etc/fstab中未掛載的設備(掛載/etc/fstab 中所有的文件系統 )

mount /dev/cdrom   掛載/etc/fstab中對應的文件系統

mount -o remount,rw /  重新以讀寫模式掛載/

mount -o remount,rw,auto / 重新掛載/目錄,

mount -t tmpfs tmpfs /mnt -o size=1024m  掛載一個臨時內存分區

mount -t cifs //192.168.1.3/game /media -o username=Joen%password

mount  -t  iso9660  -o  loop <光盤鏡像> <掛載點>  掛載ISO光盤鏡像

mount -o loop file.iso /mnt/cdrom 掛載一個文件或ISO鏡像文件

mount /dev/cdrom /mnt/cdrom

mount /dev/hda2 /mnt/hda2 掛載一個叫做hda2的盤 - 確定目錄 '/ mnt/hda2' 已經存在

umount /dev/hda2 卸載一個叫做hda2的盤 - 先從掛載點 '/ mnt/hda2' 退出

fuser -km /mnt/hda2 當設備繁忙時強制卸載

umount -n /mnt/hda2 運行卸載操作而不寫入 /etc/mtab 文件- 當文件爲只讀或當磁盤寫滿時非常有用

mount /dev/fd0 /mnt/floppy 掛載一個軟盤

mount /dev/hdc /mnt/cdrecorder 掛載一個cdrwdvdrom 

mount -t vfat /dev/hda5 /mnt/hda5 掛載一個Windows FAT32文件系統

mount /dev/sda1 /mnt/usbdisk 掛載一個usb 捷盤或閃存設備

mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 掛載一個windows網絡共享(samba)

showmount -e 192.168.0.30  查看連接

mount -t nfs 192.168.0.30:/tmp /mnt/nfs

mount --bind /olddir /newdir  olddirnewdir掛載到同一個inode,掛載後的目錄(newdir)繼承了被掛載目錄的所有屬性(除了名稱)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章