RHEL8_Linux訪問NFS存儲及自動掛載

本章主要介紹NFS客戶端的使用

  • 創建FNS服務器并通過NFS共享一個目錄
  • 在客戶端上訪問NFS共享的目錄
  • 自動掛載的配置和使用

1.訪問NFS存儲

????????前面介紹了本地存儲,本章就來介紹如何使用網絡上的存儲設備。NFS即網絡文件系統,所實現的是 Linux 和 Linux 之間的共享。
????????下面的練習我們將會在node01上創建一個文件夾/share,然后通過NFS把它共享,再在node02上把這個共享文件夾掛載到/nfs上,如圖所示。
實戰:
1)首先在node01上啟動nfs-server 服務并設置開啟自動啟動,命令如下。
[root@node01 ~]# systemctl enable nfs-server.service --now
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.
[root@node01 ~]# 
2)創建準備共享的目錄/share,命令如下。
[root@node01 ~]# mkdir /share
3)在/etc/exports中把目錄/share共享出去,命令如下。
[root@node01 ~]# vim /etc/exports
[root@node01 ~]# cat /etc/exports
/share 192.168.182.0/24(rw,no_root_squash)
[root@node01 ~]# 
  1. 這里可以用通配符 “*” 表示任何客戶端都可以訪問目錄
  2. 可以使用網段例如:192.168.182.0/24
  3. 也可以使用IP地址,例如:192.168.182.210/24
4)讓共享生效,命令如下
[root@node01 ~]# exportfs -arv
exporting 192.168.182.0/24:/share
[root@node01 ~]# 
5)在server上配置防火墻放行NFS,命令如下。
[root@node01 ~]# firewall-cmd --add-service=nfs
success
[root@node01 ~]# firewall-cmd --add-service=nfs --permanent 
success
[root@node01 ~]# firewall-cmd --add-service=rpc-bind 
success
[root@node01 ~]# firewall-cmd --add-service=rpc-bind --permanent 
success
[root@node01 ~]# firewall-cmd --add-service=mountd 
success
[root@node01 ~]# firewall-cmd --add-service=mountd --permanent 
success
[root@node01 ~]#
6)查看防火墻是否成功添加服務
[root@node01 ~]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens160sources: services: cockpit dhcpv6-client mountd nfs rpc-bind sshports: protocols: forward: nomasquerade: noforward-ports: source-ports: icmp-blocks: rich rules: 
[root@node01 ~]#
關于防火墻的配置,后續會有專門章節講解。
7)在node02上訪問這個共享文件夾,首先使用show mount命令查看服務器上共享的目錄,命今如下。
[root@node02 ~]# showmount -e 192.168.182.200
Export list for 192.168.182.200:
/share 192.168.182.0/24
[root@node02 ~]# 
8)把服務器上共享的目錄掛載到本地/nfs目錄上,命令如下。
[root@node02 ~]# mount 192.168.182.200:/share /nfs/
[root@node02 ~]# 
9)查看掛載情況,命令如下。可以看到已經掛載好了
[root@node02 ~]# df -Th | grep nfs
192.168.182.200:/share      nfs4       44G  5.4G   39G   13% /nfs
[root@node02 ~]#
10)如果希望開機能夠自動掛載,則寫入/etc/fstab中,命令如下
[root@node02 ~]# vim /etc/fstab         //編輯文件
[root@node02 ~]# cat /etc/fstab | grep nfs    //查看并過濾內容
192.168.182.200:/share	    /nfs              nfs      defaults     0 0
[root@node02 ~]# 

2.自動掛載

????????自動掛載的意思是,把一個外部設備/dev/xx和某個目錄/dir/yy關聯起來。平時/dev/xx 是否掛載到了/dir/yy 上不需要考慮,但訪問 /dir/yy時,系統就知道要訪問 /dev/xx中的數據,這個時候系統會自動將/dev/xx掛載到/dir/yy 上。
安裝軟件包的步驟如下。
1)掛載光盤,命令如下
[root@node01 ~]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@node01 ~]# 

這里準備發光盤作為本地YUM源

2)編寫repo文件,命令如下
[root@node01 ~]# cat /etc/yum.repos.d/aa.repo 
[aa]
name=aa
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0[bb]
name=bb
baseurl=///mnt/BaseOS
enabled=1
gpgcheck=0
[root@node01 ~]#
3)更新yum倉庫
[root@node01 ~]# updatedb
4)開始安裝autofs,命令如下。
[root@node01 ~]# yum -y install autofs
5)啟動autofs并設置開機自動啟動,命令如下。
[root@node01 ~]# systemctl enable autofs.service --now
Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.
[root@node01 ~]# 
6)下面練習把光盤自動掛載到/zz/dvd 上。先把/zz創建出來,命令如下。
[root@node01 ~]# mkdir /zz

注意:這里不需要創建目錄/zz/dvd,這個目錄會自動創建。

7)在/etc/auto.master.d目錄中創建一個后綴為 autofs的文件,后綴必須是autofs,這里創建的是aa.autofs,命令如下。
[root@node01 ~]# cat /etc/auto.master.d/aa.autofs 
/zz	/etc/auto.aa
[root@node01 ~]# 
8)這里的意思是把哪個外部設備掛載到/zz的哪個子目錄上由/etc/auto.aa決定,內容使用【Tab】鍵進行分隔。下面創建/etc/auto.aa,命令如下。
[root@node01 ~]# df -Th | grep iso    //查看文件系統
/dev/sr0              iso9660    11G   11G     0  100% /mnt
[root@node01 ~]#
[root@node01 ~]# vim /etc/auto.aa    //編輯文件內容
[root@node01 ~]# cat /etc/auto.aa     //添加以下內容
dvd	-fstype=iso9660,ro	:/dev/cdrom
[root@node01 ~]# 

這個文件的格式如下。
子目錄    -fstype=    文件系統,選項1,選項2    :外部設備
????????這里外部設備如果是本地磁盤或光盤,冒號前面保持為空,但是冒號不能省略。如果是其他機器上共享的目錄,則寫遠端的IP。
????????結合/etc/auto.master.d/aa.autofs整體的意思是,當訪問/zz/dvd時,系統會自動把/dev/cdrom掛載到/zz/dvd 上。
9)重啟autofs服務,讓我們剛做的配置生效,命令如下。
[root@node01 ~]# systemctl restart autofs.service 
10)確認現在光盤是沒有掛載到/zz/dvd 上的,而且/zz目錄中也沒有dvd目錄,命令如下。
[root@node01 ~]# mount | grep -v auto | grep zz
[root@node01 ~]# ls /zz
[root@node01 ~]# 
11)下面訪問/zz/dvd,命令如下。
[root@node01 ~]# ls /zz/dvd
AppStream  EULA              images      RPM-GPG-KEY-redhat-beta
BaseOS     extra_files.json  isolinux    RPM-GPG-KEY-redhat-release
EFI        GPL               media.repo  TRANS.TBL
[root@node01 ~]# 
12)因為訪問這個目錄時能觸發自動掛載,系統自動創建/zz/dvd并把 /devcdrom掛載到這個目錄上,再次驗證掛載情況,命令如下。
[root@node01 ~]# mount | grep -v auto | grep zz
/dev/sr0 on /zz/dvd type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048)
可以看到,現在已經掛載上去了。

實戰:下面練習自動掛載NFS共享文件夾,整個實驗思路如下。

????????在node01上創建一個用戶 bob,家目錄指定為/rhome/mary。在node02上也創建一個用戶bob,家目錄也指定為/rhome/mary,但是node02上的 bob并不把這個家目錄創建出來,如圖所示。
????????通過NFS把node01上的/rhome共享出去,在node02上配置 autofs,把192.168.26.11上 的/rhome/mary關聯到node02上的/rhome/mary中。
????????當在node02上使用mary登錄時會自動登錄到/rhome/bob,就會觸發autofs自動把 192.168.26.11:/rhome/bob掛載到node02的/rhome/bob目錄上,這樣node02上的bob也就有了家目錄。
1)在node01上創建/bhome目錄,然后創建用戶 bob,家目錄設置為/rhome/bob,用戶的uid設置為2023,命令如下。
[root@node01 /]# mkdir /bhome
[root@node01 /]# useradd -u 2023 -d /bhome/bob bob
[root@node01 /]# echo 123456 | passwd --stdin bob 
更改用戶 bob 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@node01 /]# 
此時在server 上mary用戶就創建好了,且 mary的家目錄也是存在的。
2)在node02上創建/bhome目錄,然后創建用戶bob,家目錄設置為/bhome/bob。因為指定了-M選項,這個目錄并沒有被創建,用戶的uid設置為2023,記住必須和 node01上的bob具有相同的uid,命令如下。
[root@node02 ~]# mkdir /bhome
[root@node02 ~]# useradd -u 2023 -d /bhome/bob -M bob
[root@node02 ~]# echo 123456 | passwd --stdin bob 
更改用戶 bob 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@node02 ~]# 
[root@node02 ~]# ls /bhome/
[root@node02 ~]# 
3)可以看到,bob的家目錄/bhome/bob并沒有被創建出來。在node02上切換到mary用戶,命令如下。
[root@node02 ~]# su - bob 
su: 警告:無法更改到 /bhome/bob 目錄: 沒有那個文件或目錄
-bash-4.2$ exit
登出
[root@node02 ~]# 
????????在node02上因為bob沒有家目錄,所以會出現上述警告信息,輸入“exit”退回到root用戶。
3)在node01上通過NFS把/bhome共享出去,編輯/etc/exports內容如下。
[root@node01 /]# cat /etc/exports
/share 192.168.182.0/24(rw,no_root_squash)
/bhome	192,168,182,0/24(rw,no_root_squash)
[root@node01 /]# 
4)這樣就把/bhome共享出去了,然后讓此共享生效。
[root@node01 /]# exportfs -arv
exportfs: Invalid IP address 192,168,182,0/24
exportfs: Invalid IP address 192,168,182,0/24
exporting 192.168.182.0/24:/share
[root@node01 /]# 
5)切換到node02上開始配置autofs,創建/etc/auto.master.d/bb.autofs,內容如下。
[root@node02 ~]# cat /etc/auto.master.d/bb.autofs 
/bhome	/etc/auto.bb
[root@node02 ~]# 
到底把哪個外部設備掛載到/bhome的哪個子目錄上由/etc/auto.bb決定。

6)下面創建/etc/auto.bb,內容如下。
[root@node02 ~]# cat /etc/auto.bb 
bob	-fstype=nfs,rw 192.168.182.200:/bhome/bob
[root@node02 ~]# 
????????結合/etc/auto.master.d/bb.autofs整體的意思是,當訪問/bhome/bob時,系統會自動把192.168.182.200:/bhome/bob掛載到node02的/bhome/bob目錄上。
7)重啟autofs,命令如下。
[root@node02 ~]# systemctl restart autofs.service
8)確認現在/bhome/bob是沒有掛載任何東西的,命令如下。
[root@node02 ~]# mount | grep -v auto | grep bhome
[root@node02 ~]# 
9)下面在node02上切換到bob,記住通過su - mary而不是通過su mary,命令如下。
[root@node02 /]# su - bob 
[bob@node02 ~]$ pwd
/bhome/bob
[bob@node02 ~]$ 

????????我們知道su - bob,用戶切換到bob的同時也會切換到bob的家目錄,這樣會觸發 autofs,再次查看掛載情況,

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207534.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207534.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207534.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新手搭建知識付費平臺必備攻略:如何以低成本實現高轉化?

我有才知識付費平臺 一、引言 隨著知識經濟的崛起,越來越多的知識提供者希望搭建自己的知識付費平臺。然而,對于新手來說,如何以低成本、高效率地實現這一目標,同時滿足自身需求并提高客戶轉化率,是一大挑戰。本文將…

SPA, SEO, SSR總結

SPA單頁面Web應用 SPA(Single page web application) 單頁面Web應用 Web不再是一張張頁面,而是一個整體的應用,一個由路由系統,數據系統,頁面(組件)系統等等,組成的應用程序, 讓用戶不需要每次與服務器進行頁面刷新來獲得新的內容, 從而提供了更快,跟流暢的用戶體驗, 在SPA中…

參與創作①周年啦~

寫在前面 今天看了消息才知道,原來開始創作已經一年了。此篇無干貨,純白話,純記錄。 機緣 參與CSDN創作已經一年有余,猶記得第一篇博文是為了整理好所學內容,方便自己復習。沒想到后面也陸陸續續發了些其他內容&…

關于read函數阻塞的問題

關于read函數阻塞的問題 上一篇文章IO多路轉接之select 末尾提到了一點,服務端讀取每次是讀取10個字節的,如果超過10個字節,需要讀取多次,但是客戶端只會read一次,第二次read的時候,直接阻塞了。 那么如何…

Windows server flask

1、Windows server 通過python的flask執行命令 from flask import Flask, request, abort import subprocess from flask_basicauth import BasicAuth app Flask(__name__) # 獲取url是進行賬號密碼認證,設置url的賬號密碼 app.config[BASIC_AUTH_USERNAME] 賬號…

12.8作業

1.頭文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> #include <QMovie>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nul…

spring-boot-starter-validation是什么Validation參數校驗使用概要

spring-boot-starter-validation是什么&Validation參數校驗使用概要 來源Valid和Validated的用法(區別)引入依賴Valid和Validated的用法 在日常的項目開發中&#xff0c;為了防止非法參數對業務造成的影響&#xff0c;需要對接口的參數做合法性校驗&#xff0c;例如在創建用…

基于Docker安裝Mysql:5.5

一、拉取鏡像 sudo docker pull mysql:5.5二、啟動mysql鏡像 1. 創建MySQL的conf目錄和data目錄 mkdir -p /home/docker/mysql/conf /home/docker/mysql/data2. 利用鏡像創建容器 sudo docker run --restartalways -d --name mysql -v /home/docker/mysql/conf/my.cnf:/etc…

系統設計-微服務架構

典型的微服務架構圖 下圖展示了一個典型的微服務架構。 負載均衡器&#xff1a;它將傳入流量分配到多個后端服務。CDN&#xff08;內容交付網絡&#xff09;&#xff1a;CDN 是一組地理上分布的服務器&#xff0c;用于保存靜態內容以實現更快的交付。客戶端首先在 CDN 中查找內…

methods

類型&#xff1a;{ [key: string]: Function } 詳細&#xff1a; methods 將被混入到 Vue 實例中。可以直接通過 VM 實例訪問這些方法&#xff0c;或者在指令表達式中使用。方法中的 this 自動綁定為 Vue 實例。 注意&#xff0c;不應該使用箭頭函數來定義 method 函數 (例如…

臨床骨科常用的肩關節疾病量表,醫生必備!

根據骨科醫生的量表使用情況&#xff0c;常笑醫學整理了臨床骨科常用的肩關節疾病量表&#xff0c;為大家分享臨床常見的肩關節疾病量表評估內容&#xff0c;均支持量表下載和在線使用&#xff0c;建議收藏&#xff01; 1.臂、肩、手功能障礙&#xff08;disabilites of the ar…

useradd 在Linux原生應用開發過程中的簡單應用

useradd命令是用于在Linux系統中創建新用戶的命令。它可以創建一個新用戶&#xff0c;并設置該用戶的屬性、家目錄、默認shell等。useradd命令實際上是一個包裝了一系列系統調用的高級命令。 在Linux系統中&#xff0c;用戶信息存儲在/etc/passwd文件中。當執行useradd命令時&…

flstudio21破解漢化版2024最新水果編曲使用教程

? 如果你一直夢想制作自己的音樂(無論是作為一名制作人還是藝術家)&#xff0c;你可能會想你出生在這個時代是你的幸運星。這個水果圈工作室和上一版之間的改進水平確實令人欽佩。這僅僅是FL Studio 21所提供的皮毛。你的音樂項目的選擇真的會讓你大吃一驚。你以前從未有過這…

ChatGPT的常識

什么是ChatGPT&#xff1f; ChatGPT是一個基于GPT模型的聊天機器人&#xff0c;GPT即“Generative Pre-training Transformer”&#xff0c;是一種預訓練的語言模型。ChatGPT使用GPT-2和GPT-3兩種模型來生成自然語言響應&#xff0c;從而與人類進行真實的對話。 ChatGPT的設計…

2023年全球軟件開發大會(QCon廣州站2023)-核心PPT資料下載

一、峰會簡介 本次峰會包含&#xff1a;泛娛樂時代的邊緣計算與通訊、穩定性即生命線、下一代軟件架構、出海的思考、現代數據架構、AGI 與 AIGC 落地、大前端技術探索、編程語言實戰、DevOps vs 平臺工程、新型數據庫、AIGC 浪潮下的企業出海、AIGC 浪潮下的效能智能化、數據…

【池式組件】線程池的原理與實現

線程池的原理與實現 線程池簡介1.線程池1.線程池2.數量固定的原因3.線程數量如何確定4.為什么需要線程池5.線程池結構 線程池的實現數據結構設計1.任務結構2.任務隊列結構3.線程池結構 接口設計 線程池的應用reactorredis 中線程池skynet 中線程池 線程池簡介 1.線程池 1.線程…

第7課 SQL入門之創建計算字段

文章目錄 7.1 計算字段7.2 拼接字段使用別名 7.3 執行算術計算 這一課介紹什么是計算字段&#xff0c;如何創建計算字段&#xff0c;以及如何從應用程序中使用別名引用它們。 7.1 計算字段 存儲在數據庫表中的數據一般不是應用程序所需要的格式&#xff0c;下面舉幾個例子。 …

前端Excel導出實用方案(完整源碼,可直接應用)

目錄 前言&#xff1a; 技術選型&#xff1a; 主要功能點&#xff1a; 核心代碼&#xff1a; 完整代碼&#xff1a; 開發文檔 前言&#xff1a; 在前后端分離開發為主流的時代&#xff0c;很多時候&#xff0c;excel導出已不再由后端主導&#xff0c;而是把導出的操作移…

關于鎖的粒度問題——面試

鎖的粒度劃分主要有三種&#xff1a;表級鎖、頁級鎖和行鎖 1.表級鎖&#xff1a; 對整張表加鎖&#xff0c;粒度最大&#xff0c;加鎖的并發度最低&#xff0c;會導致其他事務無法訪問該表&#xff0c;只有當前事務提交或者回滾后才能釋放鎖。表級鎖適用于對表進行全表操作的場…

DeepIn,UOS統信專業版安裝運行Java,JavaFx程序

因為要適配國產統信UOS系統&#xff0c;要求JavaFx程序能簡便雙擊運行&#xff0c;由于網上UOS開發相關文章少&#xff0c;多數文章沒用&#xff0c;因此花了不少時間&#xff0c;踩了不少坑&#xff0c;下面記錄一些遇到的問題&#xff0c;我的程序環境是jdk1.8&#xff0c;為…