LFCS 系列第五講:如何在 Linux 中掛載/卸載本地文件系統和網路文件系統(Samba 和 NF
LFCS 系列第五講
請看以下視頻,這裡邊介紹了 Linux 基金會認證程序。
本講是系列教程中的第五講,在這一講裡邊,我們會解釋如何在 Linux 中掛載/卸載本地和網路文件系統。這些都是 LFCS 認證中的必備知識。
掛載文件系統
在個硬碟分好區之後,Linux 需要通過某些方式對硬碟分區上的數據進行訪問。Linux 並不會像 DOS 或者 Windows 那樣給每個硬碟分區分配一個字母來作為盤符,而是將硬碟分區掛載到統一的目錄樹上的掛載點。
掛載點是一個目錄,掛載是一種訪問分區上文件系統的方法,掛載文件系統實際上是將一個確切的文件系統(比如一個分區)和目錄樹中指定的目錄聯繫起來的過程。
換句話說,管理存儲設備的第一步就是把設備關聯到文件系統樹。要完成這一步,通常可以這樣:用 mount 命令來進行臨時掛載(用完的時候,使用 umount 命令來卸載),或者通過編輯 /etc/fstab 文件之後重啟系統來永久性掛載,這樣每次開機都會進行掛載。
不帶任何選項的 mount 命令,可以顯示當前已掛載的文件系統。
# mount
檢查已掛載的文件系統
另外,mount 命令通常用來掛載文件系統。其基本語法如下:
# mount -t type device dir -o options
該命令會指引內核將在設備上找到的文件系統(如已格式化為指定類型的文件系統)掛載到指定目錄。像這樣的形式,mount 命令不會再到 /etc/fstab 文件中進行確認。
除非像下面,掛載指定的目錄或者設備:
# mount /dir -o options
或
# mount device -o options
mount 命令會嘗試尋找掛載點,如果找不到就會查找設備(上述兩種情況下,mount 命令會在 /etc/fstab 查找相應的設備或掛載點),最後嘗試完成掛載操作(這個通常可以成功執行,除非你的掛載點或者設備正在使用中,或者你調用 mount 命令的時候沒有 root 許可權)。
你可以看到,mount 命令的每行輸出都是如下格式:
device on directory type (options)
例如:
/dev/mapper/debian-home on /home type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
讀作:
設備 dev/mapper/debian-home 掛載在 /home 下,它被格式化為 ext4,並且有以下掛載選項: rw,relatime,user_xattr,barrier=1,data=ordered。
mount 命令選項
下面列出 mount 命令的常用選項
- async:允許在將要掛載的文件系統上進行非同步 I/O 操作
- auto:標示該文件系統通過 mount -a 命令掛載,與 noauto 相反。
- defaults:該選項相當於
async,auto,dev,exec,nouser,rw,suid
的組合。注意,多個選項必須由逗號隔開並且中間沒有空格。倘若你不小心在兩個選項中間輸入了一個空格,mount 命令會把後邊的字元解釋為另一個參數。 - loop:將鏡像文件(如 .iso 文件)掛載為 loop 設備。該選項可以用來模擬顯示光碟中的文件內容。
- noexec:阻止該文件系統中可執行文件的執行。與 exec 選項相反。
- nouser:阻止任何用戶(除 root 用戶外) 掛載或卸載文件系統。與 user 選項相反。
- remount:重新掛載文件系統。
- ro:只讀模式掛載。
- rw:讀寫模式掛載。
- relatime:只要訪問時間早於修改時間,就更新文件的的訪問時間。
- user_xattr:允許用戶設置和移除可擴展文件系統屬性。
以 ro 和 noexec 模式掛載設備
# mount -t ext4 /dev/sdg1 /mnt -o ro,noexec
在本例中,我們可以看到,在掛載點 /mnt 中嘗試寫入文件或者運行可執行文件都會顯示相應的錯誤信息。
# touch /mnt/myfile
# /mnt/bin/echo 「Hi there」
可讀寫模式掛載設備
以默認模式掛載設備
以下場景,我們在重新掛載設備的掛載點中,像上例一樣嘗試你寫入文件和運行可執行文件。
# mount -t ext4 /dev/sdg1 /mnt -o defaults
掛載設備
在這個例子中,我們發現寫入文件和命令都完美執行了。
卸載設備
使用 umount 命令卸載設備,意味著將所有的「在使用」數據全部寫入到文件系統,然後可以安全移除文件系統。請注意,倘若你移除一個沒有事先正確卸載的設備,就會有造成設備損壞和數據丟失的風險。
也就是說,你必須「離開」設備的塊設備描述符或者掛載點,才能卸載設備。換言之,你的當前工作目錄不能是需要卸載設備的掛載點。否則,系統將返回設備繁忙的提示信息。
卸載設備
離開需卸載設備的掛載點最簡單的方法就是,運行不帶任何選項的 cd 命令,這樣會回到當前用戶的家目錄。
掛載常見的網路文件系統
最常用的兩種網路文件系統是 SMB( 伺服器消息塊 )和 NFS( 網路文件系統 )。如果你只向類 Unix 客戶端提供共享,用 NFS 就可以了,如果是向 Windows 和其他類 Unix 客戶端提供共享服務,就需要用到 Samba 了。
擴展閱讀
- Setup Samba Server in RHEL/CentOS and Fedora
- Setting up NFS (Network File System) on RHEL/CentOS/Fedora and Debian/Ubuntu
下面的例子中,假設 Samba 和 NFS 已經在地址為 192.168.0.10 的伺服器上架設好了(請注意,架設 NFS 伺服器也是 LFCS 考試中需要考核的能力,我們會在後邊中提到)。
在 Linux 中掛載 Samba 共享
第一步:在 Red Hat 以 Debian 系發行版中安裝 samba-client、samba-common 和 cifs-utils 軟體包,如下:
# yum update && yum install samba-client samba-common cifs-utils
# aptitude update && aptitude install samba-client samba-common cifs-utils
然後運行下列命令,查看伺服器上可用的 Samba 共享。
# smbclient -L 192.168.0.10
並輸入遠程機器上 root 賬戶的密碼。
掛載 Samba 共享
上圖中,已經對可以掛載到我們本地系統上的共享進行高亮顯示。你只需要與一個遠程伺服器上的合法用戶名及密碼就可以訪問共享了。
第二步:當掛載有密碼保護的網路文件系統時候,將你的訪問憑證寫入到 /etc/fstab 文件中並非明智的選擇。你需要將這些信息寫入到具有 600 許可權的隱藏文件中,像這樣:
# mkdir /media/samba
# echo 「username=samba_username」 > /media/samba/.smbcredentials
# echo 「password=samba_password」 >> /media/samba/.smbcredentials
# chmod 600 /media/samba/.smbcredentials
第三步:然後將下面的內容添加到 /etc/fstab 文件中。
# //192.168.0.10/gacanepa /media/samba cifs credentials=/media/samba/.smbcredentials,defaults 0 0
第四步:現在可以掛載你的 Samba 共享了。手動掛載(mount //192.168.0.10/gacanepa)或者重啟系統並應用 /etc/fstab 中相應行來用就掛載都可以。
掛載有密碼保護的 Samba 共享
在 Linux 系統中掛載 NFS 共享
第一步:在 Red Hat 以 Debian 系發行版中安裝 nfs-common 和 portmap 軟體包。如下:
# yum update && yum install nfs-utils nfs-utils-lib
# aptitude update && aptitude install nfs-common
第二步:為 NFS 共享創建掛載點。
# mkdir /media/nfs
第三步:將下面的內容添加到 /etc/fstab 文件中。
192.168.0.10:/NFS-SHARE /media/nfs nfs defaults 0 0
第四步:現在可以掛載你的 Samba 共享了。手動掛載(mount 192.168.0.10:/NFS-SHARE)或者重啟系統並應用 /etc/fstab 中相應行來用就掛載都可以。
掛載 NFS 共享
永久性掛載文件系統
像前面兩個例子那樣,/etc/fstab 控制著Linux如何訪問硬碟分區及可移動設備。/etc/fstab 由六個欄位的內容組成,各個欄位之間通過一個空格符或者製表符來分開。井號(#)開始的行只是會被忽略的注釋。
每一行都按照這個格式來寫入:
<file system> <mount point> <type> <options> <dump> <pass>
其中:
-
: 第一個欄位指定掛載的設備。大多數發行版本都通過分區的標卷(label)或者 UUID 來指定。這樣做可以避免分區號改變時帶來的錯誤。 -
: 第二個欄位指定掛載點。 -
:文件系統的類型代碼與 mount 命令掛載文件系統時使用的類型代碼是一樣的。通過 auto 類型代碼可以讓內核自動檢測文件系統,這對於可移動設備來說非常方便。注意,該選項可能不是對所有文件系統可用。 : 一個(或多個)掛載選項。 -
: 你可能把這個欄位設置為 0(否則設置為 1),使得系統啟動時禁用 dump 工具(dump 程序曾經是一個常用的備份工具,但現在越來越少用了)對文件系統進行備份。 -
: 這個欄位指定啟動系統是是否通過 fsck 來檢查文件系統的完整性。0 表示 fsck 不對文件系統進行檢查。數字越大,優先順序越低。因此,根分區(/)最可能使用數字 1,其他所有需要檢查的分區則是以數字 2.
Mount 命令例示
1、在系統啟動時,通過 TECMINT 標捲來掛載文件系統,並具備 rw 和 noexec 屬性,你應該將以下語句添加到 /etc/fstab 文件中。
LABEL=TECMINT /mnt ext4 rw,noexec 0 0
2、若你想在系統啟動時掛載 DVD 光碟機中的內容,添加以下語句。
/dev/sr0 /media/cdrom0 iso9660 ro,user,noauto 0 0
其中 /dev/sr0 為你的 DVD 光碟機。
總結
不用懷疑,在命令行中掛載/卸載本地和網路文件系統將是你作為系統管理員的日常責任的一部分。同時,你需要掌握 /etc/fstab 文件的編寫。希望本文對你有幫助。隨時在下邊發表評論(或者提問),並分享本文到你的朋友圈。
參考鏈接
via: http://www.tecmint.com/mount-filesystem-in-linux/
作者:Gabriel Cánepa 譯者:GHLandy 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive