mount的使用

来源:互联网 发布:mac web原型设计工具 编辑:程序博客网 时间:2024/06/10 04:20

我們知道在存取磁碟前,必須先將該磁碟「掛入」(mount) 一個目錄中,而掛入檔案系統的指令為 mount。它的用法如下:

# mount device mount-point

例如,我們要將 ad0s1e 掛入 /home2 中:

# mount /dev/ad0s1e /home2

在執行 mount 指令前,我們必須確定掛入點存在,如果不在必須先建立目錄。

如果執行 mount 時不加任何參數則可以顯示目前已掛入的檔案系統:

# mount/dev/ad0s1a on / (ufs, local)devfs on /dev (devfs, local)/dev/ad0s1d on /tmp (ufs, local, soft-updates)/dev/ad0s1f on /usr (ufs, local, soft-updates)/dev/ad0s1e on /var (ufs, local, soft-updates)/dev/ad0s1g on /volume2 (ufs, local, soft-updates)/dev/da0s1d on /volume1 (ufs, local, soft-updates)

如果您要卸載一個檔案系統,可以使用 umount 指令。例如,我們要卸載 /usr/local:

# umount /usr/local

如果在卸載檔案系統時出現下列訊息,表示該檔案系統忙碌中,有可能有其它人正在存取它。

# umount /varumount: unmount of /var failed: Device busy

6.3.2 掛入與卸載其它檔案系統

mount 指令除了可以讓我們掛入 FreeBSD 的預設的檔案系統 UFS 外,我們還可以用它來掛入其它 FreeBSD 支援的檔案系統格式。例如,FreeBSD 安裝光碟是一般標準的資料光碟,它的檔案系統格式是 CD9660,我們將該 CD 掛入系統目錄中。首先,請先將光碟放入光碟機中,接著請使用下列指令來掛入光碟片:

# mount -t cd9660 /dev/acd0 /cdrom

在使用 mount 指令時,我們加上參數 -t cd9660 以指定檔案系統格式為 cd9660。我們可以看到在掛入之前,/cdrom 這個目錄是空的,而掛入後就出現了許多資料。光碟機掛入後,您會發現光碟機的退片鍵將失去作用,我們必須先卸載它才可以取出光碟片。

如果您要卸載它,可以使用 umount 指令。如果您在卸載時發生錯誤,請注意您的所在目錄是不是在 /cdrom 下,如果是,必須先離開才可以順利 umount:

# cd /# umount /cdrom

我們說過,掛入點和磁碟分割區之間並沒有必然的關係,您也可以將光碟掛入 /mnt 中,不一定要掛入 /cdrom,將 CDROM 掛入 /cdrom 只是習慣用法而已。

除了一般資料光碟的 cd9660 檔案格式外,FreeBSD 還支援下列常用的檔案格式:

檔案系統格式 說明 ufs FreeBSD 預設的檔案系統。 ext2fs Linux EXT2 檔案格式。 msdosfs FAT/FAT32,DOS 相容的檔案系統。 ntfs Windows 的 NTFS。 cd9660 CD-ROM 的檔案系統。 udf DVD 資料光碟格式。 nfs 和 Sun Microsystems 相容的 "Network File System"。 smbfs CIFS/SMB 檔案格式,也就是 Windows 的網路芳鄰,請參考 Samba 網路芳鄰一章。 mfs 本地的 memory-based UNIX 檔案系統。 swap 用來作 swapping 的檔案系統。 procfs 用來存取執行程序(process)的檔案系統。 kernfs 用來存取核心參數(kernel parameter)的檔案系統。

您可以在 mount 指令的參數 -t 之後加入上述檔案格式做為參數以掛入正確的檔案系統。或者,您也可以依檔案系統的不同使用 mount_xxxx 指令。例如,要掛入 msdos 檔案系統時,可以使用 mount_msdosfs;要掛入 cd9660 時,可以使用指令 mount_cd9660。您可以在 /sbin 目錄下看到這些 mount 的指令:

# ls /sbin/mount*/sbin/mount*             /sbin/mount_mfs*        /sbin/mount_procfs*/sbin/mount_cd9660*      /sbin/mount_msdosfs*    /sbin/mount_std*/sbin/mount_devfs*       /sbin/mount_nfs*        /sbin/mount_udf*/sbin/mount_ext2fs*      /sbin/mount_nfs4*       /sbin/mount_umapfs*/sbin/mount_fdescfs*     /sbin/mount_ntfs*       /sbin/mount_unionfs*/sbin/mount_linprocfs*   /sbin/mount_nullfs*

實際上,當您執行 mount 加參數 -t 時,mount 就是會依據 -t 所給的檔案系統去執行相對映的 mount_xxx。

必須注意的是,在 Windows/DOS 作業系統中,有所謂的延伸磁區 (Extended Partitions)。延伸磁區有點像是 FreeBSD 的 slice,在延伸磁區下,會在細分成多個邏輯磁區 (Logical Partitions),當 FreeBSD 遇到這種磁區時,會將各個邏輯磁區編號從第五個 slice 開始 (跳過最多 4 個 slice 的限制)。所以,DOS 中第一個邏輯磁區在 FreeBSD 中的編號就是 ad0s5,第二個邏輯磁區就是 ad0s6,依此類推。

另外,有些檔案系統在 FreeBSD 中只有唯讀的能力。例如 NTFS,我們只能夠讀取該磁區的資料,而無法進行任何寫入的動作。

6.3.3 開機時自動掛入

如果您在安裝 FreeBSD 時是以光碟安裝,您也許會發現只要以下列二個指令其中一個就可以掛入光碟機:

# mount /cdrom# mount /dev/acd0

我們之所以可以這麼做是因為在 /etc/fstab 中已經記錄了 /cdrom 應該要掛入另一個裝置。讓我們來看一下這個檔:

# DeviceMountpointFStypeOptionsDumpPass#/dev/ad0s1bnoneswapsw00/dev/ad0s1a/ufsrw11/dev/ad0s1d/tmpufsrw22/dev/ad0s1f/usrufsrw22/dev/ad0s1e/varufsrw22/dev/acd0/cdromcd9660ro,noauto00

我們可以看到最後一行掛入點 (Mount point) /cdrom 所對映的裝置是 /dev/acd0,而檔案系統格式的欄位中 (FStype) 所指定的格式是 cd9660,所以我們可以不必打完整的指令就可以掛入光碟。

在系統開機時,FreeBSD 會參考 fstab 來決定要將哪些檔案系統掛進來。在 fstab 各個欄位所代表的意義如下:

  • Device:裝置名稱,就是要掛入的來源,最常用的是 /dev/ 的檔案,我們說過FreeBSD 將裝置視為檔案,所以這裡填的是 /dev/*。裝置也可以是NFS或是其他的虛擬裝置,如 proc,linpro 等。
  • Mountpoint:掛入點,就是你要將來源掛到什麼地方,其中 swap 沒有掛入點,所以是 none。
  • FStype:檔案系統就是要掛入的類型,必須在 kernel 中有定義。一般 FreeBSD 的檔案是 ufs,硬碟要掛入的設定就是 ufs。如果是 cdrom 就是 cd9660。請參考上方的檔案系統格式說明。
  • Options:參數依各裝置而有所不同,如果開機時不掛入的話(如 cdrom),就必須加入參數 noauto。defaults 設定為 rw、dev、exec、auto、nouser、async。可用的參數如下,加上no 則為相反,如 nouser、noauto:
      rw 可讀可寫。 ro 只可讀不可寫。 async 所有資料以非同步方式完成。 atime 每次存取動作都更新檔案時間。 auto 能被 mount -a 自動掛入系統。 dev 解譯檔案系統特性與儲存裝置規格。 exec 允許檔案系統中的二進位元檔被執行。 user 允許一般user 掛入。 sync 所有資料以同步方式完成。 sw swap。 noauto 開機時不掛入。 userquota 使用者磁碟配額限制 (須 kernel 支援 quota)。 groupquota 群組磁碟配額限制 (須 kernel 支援 quota)。
  • dump:表示使用指令 dump 時要備份的檔案系統,0表示不要、1表示要。
  • pass:這個欄位是給指令 fsck 用的,是檢查的順序。/ 的數字應該是1而其他的檔案系統為2。不需檢查的就是0(如 cdrom,swap 等)。

如果您新增一個分割區,並且希望在開機時自動載入,可以編輯 fstab,並加入您所要掛入的磁區。