【服務器管理】Ubuntu實現目錄手動掛載和自動掛載
鑑於本人需要開始服務器管理生涯,故此整理一系列關於服務器管理的知識等,作爲個人技術筆記,也希望對同行有幫助。需要注意的是,本人是在Ubuntu,特別是Ubuntu16.04下,進行服務器管理的!
一、什麼是掛載?
掛載:指由操作系統使一個存儲設備(諸如硬盤、CD-ROM或共享資源)上的計算機文件和目錄可供用戶通過計算機的文件系統訪問的一個過程。
針對服務器管理,本文主要解決以下問題:我在服務器上的其中一個服務器端節點/主機(假如這個節點是110.xxx.yyy.145)對應的硬件設備爲10TB,我希望用戶登錄其他客戶端節點/主機的時候,能通過某個文件夾,實現讀寫110.123.86.145節點上的某個文件夾。也就是,我希望把110.xxx.yyy.145這個節點/主機的某個文件夾掛載到其他節點/主機。
進一步給出後文具體示例:在110.123.86.145上創建文件夾/home/145dataset,在110.xxx.yyy.155、110.xxx.yyy.156上創建/145Dataset,並且實現訪問110.xxx.yyy.155、110.xxx.yyy.156上的145Dataset等同於訪問110.xxx.yyy.145上的145dataset。
二、配置服務器端的共享文件夾
1、在服務器端(110.xxx.yyy.145)創建需要掛載的文件夾/目錄:
cd /home
mkdir 145dataset
2、打開/etc/exports 文件,進行配置:
vim /etc/exports
在/etc/exports文件當中的最後一行,添加
/home/145dataset *(rw,no_root_squash,no_all_squash,sync)
該語句說明:
參數 | 說明 |
---|---|
/home/145dataset | 要共享的目錄 |
* | 代表限制訪問的ip段,這裏代表所有人可以訪問,可以填110.xxx.yyy.145/24 、110.xxx.yyy.*等。 |
括號內第1個參數 | 填 rw或ro ,該目錄分享的權限是可擦寫 (read-write) 或只讀 (read-only),但最終能不能讀寫,還是與文件系統的 rwx 及身份有關 |
括號內第2個參數 | no_root_squash:客戶端用root訪問該共享文件夾時,不映射root用戶;root_squash:客戶端用root用戶訪問該共享文件夾時,將root用戶映射成匿名用戶 |
括號內第3個參數 | all_squash:不論登入 NFS 的使用者身份爲何, 他的身份都會被壓縮成爲匿名用戶;no_all_squash:並非所有用戶的身份都會被壓縮成爲匿名用戶 |
括號內第4個參數 | sync:資料同步寫入到內存與硬盤中;async:資料會先暫存於內存中,而非直接寫入硬盤 |
以上爲常用參數,更多參數可以自行搜索/etc/exports文件中可以設定的參數
。
3、刷新配置並且重啓NFS
exportfs -r
service nfs restart
如果報錯:
exportfs: could not open /var/lib/nfs/.etab.lock for locking: errno 13 (Permission denied)
exportfs: can't lock /var/lib/nfs/etab for writing
則使用超級用戶模式
sudo exportfs -r
sudo service nfs restart
另外,可能因爲版本原因,你需要使用nfs-kernel-server
代替nfs
,也就是使用以下語句刷新配置並且重啓NFS:
sudo exportfs -r
sudo service nfs-kernel-server restart
4、查看主機的 /etc/exports 所分享的目錄數據是否更新:
showmount -e localhost
終端返回如下結果,說明已經成功配置服務器端的/home/145dataset爲共享文件夾:
Export list for localhost:
/home/145dataset *
三、客戶端實現手動掛載服務端的目錄
1、在110.xxx.yyy.155、110.xxx.yyy.156上分別創建/145Dataset,這個目錄我們把它叫做110.xxx.yyy.145:/home/145dataset的掛載點:
ssh [email protected] # rootusername就是你的root用戶賬號名
su # 使用su或者sudo進入超級用戶模式
cd / # 切換到根目錄
mkdir 145Dataset # 創建掛載點
chmod 777 144Dataset # 修改目錄的讀寫權限
2、查看服務器拋出的共享目錄信息
showmount -e 110.xxx.yyy.145
返回如下結果:
Export list for 110.xxx.yyy.145:
/home/145dataset *
3、掛載目錄:
mount -t nfs -o vers=3 110.xxx.yyy.145:/home/145dataset /145Dataset -o proto=tcp -o nolock
上述命令只需要修改IP:共享目錄以及掛載點,也就是110.xxx.yyy.145:/home/145dataset /145Dataset
4、查看掛載結果:
df -h # \查看當前主機的掛載情況
你可以在打印信息中找到:
Filesystem Size Used Avail Use% Mounted on
...
110.xxx.yyy.145:/home/145dataset 7.3T 92M 6.9T 1% /144Dataset
四、客戶端實現自動掛載服務端的目錄
磁盤被手動掛載之後,我們還必須把掛載信息寫入/etc/fstab這個文件中,否則下次開機啓動時仍然需要重新掛載。
系統開機時會主動讀取/etc/fstab這個文件中的內容,根據文件裏面的配置掛載磁盤。這樣我們只需要將磁盤的掛載信息寫入這個文件中,我們就不需要每次開機啓動之後手動進行掛載了。
1、修改 /etc/fstab:
ssh [email protected] # rootusername就是你的root用戶賬號名
su # 使用su或者sudo進入超級用戶模式
vim /etc/fstab
在文件尾部添加下列語句:
110.xxx.yyy.145:/home/145dataset /144Dataset nfs rw,defaults,bg 0 0
這裏,你需要把110.xxx.yyy.145
換成你的服務器端的IP,把/home/145dataset
換成需要共享的目錄,把/144Dataset
換成當前客戶端的掛載點。
退出並保存!
2、將/etc/fstab的所有內容重新加載:
mount -a # 重新加載/etc/fstab
df -h # \查看當前主機的掛載情況
五、日常管理共享目錄
當我們需要了解服務器端的共享目錄與客戶端的 NFS 聯機分享的狀態時,=可以使用下列命令:
ssh [email protected] # 進入服務器端主機
showmount -a localhost # 查看聯機分享的狀態
終端返回以下內容:
All mount points on localhost:
110.xxx.yyy.155:/home/145dataset
110.xxx.yyy.156:/home/145dataset
...
本篇博文所有IP均爲虛構!!!
【作者簡介】陳藝榮,男,目前在華南理工大學電子與信息學院廣東省人體數據科學工程技術研究中心攻讀博士,擔任IEEE Access、IEEE Photonics Journal的審稿人。兩次獲得美國大學生數學建模競賽(MCM)一等獎,獲得2017年全國大學生數學建模競賽(廣東賽區)一等獎、2018年廣東省大學生電子設計競賽一等獎等科技競賽獎項,主持一項2017-2019年國家級大學生創新訓練項目獲得優秀結題,參與兩項廣東大學生科技創新培育專項資金、一項2018-2019年國家級大學生創新訓練項目獲得良好結題,發表SCI論文3篇,授權實用新型專利8項,受理髮明專利13項。
我的主頁
我的Github
我的CSDN博客
我的Linkedin