Linux訪問NFS存儲及自動掛載

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

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

1.1 訪問NFS存儲

前面那篇介紹了本地存儲,本章就來介紹如何使用網絡上上的存儲設備。NFS即網絡文件系統,所實現的是Linux和Linux之間的共享

下面的練習我們將會在redhat8上創建一個文件夾/share,然后通過NFS把它共享,再在node1上把這個共享文件夾掛載到/nfs上

首先在redhat8上啟動nfs-server服務并設置開啟自動啟動

[root@redhat8 ~]# 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@redhat8 ~]#

創建準備共享的目錄/share

[root@redhat8 ~]# mkdir /share
[root@redhat8 ~]#

在/etc/exporets中把目錄/share共享出去

[root@redhat8 ~]# cat /etc/exports
/share *(rw,no_root_squash)
[root@redhat8 ~]#

這里*的意思是表示任何客戶端都可以訪問/share目錄

讓共享生效

[root@redhat8 ~]# exportfs -arv
exporting *:/share
[root@redhat8 ~]#

在redhat8上配置防火墻放行NFS

[root@redhat8 ~]# firewall-cmd --add-service=nfs
success
[root@redhat8 ~]# firewall-cmd --add-service=nfs --permanent 
success
[root@redhat8 ~]# firewall-cmd --add-service=rpc-bind
success
[root@redhat8 ~]# firewall-cmd --add-service=rpc-bind --permanent 
success
[root@redhat8 ~]# firewall-cmd --add-service=mountd 
success
[root@redhat8 ~]# firewall-cmd --add-service=mountd --permanent 
success
[root@redhat8 ~]#

在node1上訪問這個共享文件夾,首先使用showmount命令查看服務器上共享的目錄

[root@node1 ~]# showmount -e 192.168.161.16
Export list for 192.168.161.16:
/share *
[root@node1 ~]#

把服務器上共享的目錄掛載到本地/nfs目錄上

[root@node1 ~]# mkdir /nfs
[root@node1 ~]# mount 192.168.161.16:/share /nfs/
[root@node1 ~]#

查看掛載情況

[root@node1 ~]# df -Th | grep nfs
192.168.161.16:/share   nfs4       38G  5.4G   33G   14% /nfs
[root@node1 ~]#

可以看到,已經掛載好了

如果希望開機能夠自動掛載,則寫入/etc/fstab中

[root@node1 ~]# tail -1 /etc/fstab 
192.168.161.16:/share	/nfs			nfs	defaults	0 0
[root@node1 ~]#

1.2 自動掛載

自動掛載的意思是,把一個外部設備/dev/xx和某個目錄/dir/yy關聯起來。平時/dev/xx 是否掛載到了/dir/yy 上不需要考慮,但訪問 /dir/yy時,系統就知道要訪問 /dev/xx中的數 據,這個時候系統會自動將/dev/xx掛載到/dir/yy 上

安裝軟件包的步驟如下

(1)掛載光盤

[root@redhat8 ~]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@redhat8 ~]#

這里準備把光盤作為yum源

(2)編寫repo文件

[root@redhat8 ~]# cat /etc/yum.repos.d/aa.repo 
[aa]
name=aa
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0[bb]
name=bb
baseurl=file:///mnt/BaseOS
enabled=1
gpgcheck=0
[root@redhat8 ~]#

開始安裝autofs

[root@redhat8 ~]# yum -y install autofs

啟動autofs并設置開機自動啟動

[root@redhat8 ~]# systemctl enable autofs.service --now
Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.
[root@redhat8 ~]#

下面練習把光盤自動掛載到/zz/dvd 上。先把/zz創建出來

[root@redhat8 ~]# mkdir /zz
[root@redhat8 ~]#

記住,這里不需要創建目錄/zz/dvd,這個目錄會自動創建

在/etc/auto.master.d目錄中創建一個后綴為 autofs的文件,后綴必須是autofs,這里 創建的是aa.autofs

[root@redhat8 ~]# cat /etc/auto.master.d/aa.autofs
/zz /etc/auto.aa
[root@redhat8 ~]#

這里的意思是把哪個外部設備掛載到/zz的哪個子目錄上由/etc/auto.aa決定,內容使用 【Tab】鍵進行分隔。下面創建/etc/auto.aa

[root@redhat8 ~]# cat /etc/auto.aa
dvd -fstype=iso9660,ro :/dev/cdrom
[root@redhat8 ~]#

這個文件的格式如下

子目錄 ‐fstype= 文件系統,選項1,選項2 :外部設備

這里外部設備如果是本地磁盤或光盤,冒號前面保持為空,但是冒號不能省略。如果是其 他機器上共享的目錄,則寫遠端的IP

結合/etc/auto.master.d/aa.autofs整體的意思是,當訪問/zz/dvd時,系統會自動 把/dev/cdrom掛載到/zz/dvd 上

?重啟autofs服務,讓我們剛做的配置生效

[root@redhat8 ~]# systemctl restart autofs.service 
[root@redhat8 ~]#

確認現在光盤是沒有掛載到/zz/dvd 上的,而且/zz目錄中也沒有dvd目錄

[root@redhat8 ~]# mount | grep -v auto | grep zz
[root@redhat8 ~]# ls /zz
[root@redhat8 ~]#

下面訪問/zz/dvd

[root@redhat8 ~]# 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@redhat8 ~]#

因為訪問這個目錄時能觸發自動掛載,系統自動創建/zz/dvd并把 /devcdrom掛載到這 個目錄上,再次驗證掛載情況

[root@redhat8 ~]# mount | grep -v auto | grep zz
/dev/sr0 on /zz/dvd type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048)
[root@redhat8 ~]#

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

在redhat上創建一個用戶 mary,家目錄指定為/rhome/mary。在node1上也創建一個 用戶mary,家目錄也指定為/rhome/mary,但是node1上的 mary并不把這個家目錄創建出來,如圖

通過NFS把redhat8上的/rhome共享出去,在node1上配置 autofs,把redhat8上 的/rhome/mary關聯到node1上的/rhome/mary中

當在node1上使用mary登錄時會自動登錄到/rhome/mary,就會觸發autofs自動把redhat:/rhome/mary掛載到node1的/rhome/mary目錄上,這樣node1上的 mary也就有了家目錄

在redhat8上創建/rhome目錄,然后創建用戶 mary,家目錄設置為/rhome/mary,用戶 的uid設置為3001

[root@redhat8 ~]# mkdir /rhome
[root@redhat8 ~]# useradd -u 3001 -d /rhome/mary mary
[root@redhat8 ~]# passwd mary
更改用戶 mary 的密碼 。
新的 密碼:
無效的密碼: 密碼少于 8 個字符
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[root@redhat8 ~]# ls /rhome/
mary
[root@redhat8 ~]# 

此時在redhat8上mary用戶就創建好了,而且mary的家目錄也是存在的

在node1上創建/rhome目錄,然后創建用戶mary,家目錄設置為/rhome/mary。因為 指定了-M選項,這個目錄并沒有被創建,用戶的uid設置為3001,記住必須和 redhat8上的 mary具有相同的uid

[root@node1 ~]# mkdir /rhome
[root@node1 ~]# useradd -u 3001 -d /rhome/mary -M mary
[root@node1 ~]# passwd mary
更改用戶 mary 的密碼 。
新的 密碼:
無效的密碼: 密碼未通過字典檢查 - 它沒有包含足夠的不同字符
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[root@node1 ~]# ls /rhome/
[root@node1 ~]#

可以看到,mary的家目錄/rhome/mary并沒有被創建出來。在node1上切換到mary用戶

[root@node1 ~]# su - mary
su: 警告:無法更改到 /rhome/mary 目錄: 沒有那個文件或目錄
-bash-4.2$ exit
登出
[root@node1 ~]#

在node1上因為mary沒有家目錄,所以會出現上述警告信息,輸入“exit”退回到root 用戶

在redhat8上通過NFS把/rhome共享出去,編輯/etc/exports內容如下

[root@redhat8 ~]# cat /etc/exports
/share *(rw,no_root_squash)
/rhome *(rw,no_root_squash)
[root@redhat8 ~]#

這樣就把/rhome共享出去了,然后讓此共享生效

[root@redhat8 ~]# exportfs -arv
exporting *:/rhome
exporting *:/share
[root@redhat8 ~]#

切換到node1上開始配置autofs,創建/etc/auto.master.d/bb.autofs

[root@node1 ~]# cat /etc/auto.master.d/bb.autofs
/rhome /etc/auto.bb
[root@node1 ~]#

到底把哪個外部設備掛載到/rhome的哪個子目錄上由/etc/auto.bb決定

下面創建/etc/auto.bb

[root@node1 ~]# cat /etc/auto.bb
mary	-fstype=nfs,rw	192.168.161.16://rhome/mary
[root@node1 ~]#

結合/etc/auto.master.d/bb.autofs整體的意思是,當訪問/rhome/mary時,系統會自 動把redhat8:/rhome/mary掛載到node1的/rhome/mary目錄上

[root@node1 ~]# systemctl restart autofs.service 
[root@node1 ~]#

確認現在/rhome/mary是沒有掛載任何東西的

[root@node1 ~]# mount | grep -v auto | grep rhome
[root@node1 ~]#

下面在node1上切換到mary,記住通過su - mary而不是通過su mary

[root@node1 ~]# su - mary
上一次登錄:三 12月  6 12:05:40 CST 2023pts/0 上
[mary@node1 ~]$ pwd
/rhome/mary
[mary@node1 ~]$ exit
登出
[root@node1 ~]#

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

[root@node1 ~]# mount | grep -v auto | grep rhome
192.168.161.16:/rhome/mary on /rhome/mary type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.161.12,local_lock=none,addr=192.168.161.16)
[root@node1 ~]# 

可以看到,已經成功掛載了

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

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

相關文章

通信:mqtt學習網址

看這個網址:講的很詳細,后面補實戰例子 第一章 - MQTT介紹 MQTT協議中文版 (gitbooks.io)https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/01-Introduction.html

【網絡編程】-- 04 UDP

網絡編程 6 UDP 6.1 初識Tomcat 服務端 自定義 STomcat S 客戶端 自定義 C瀏覽器 B 6.2 UDP 6.2.1 udp實現發送消息 接收端: package com.duo.lesson03;import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketExceptio…

【論文極速讀】LVM,視覺大模型的GPT時刻?

【論文極速讀】LVM,視覺大模型的GPT時刻? FesianXu 20231210 at Baidu Search Team 前言 這一周,LVM在arxiv上剛掛出不久,就被眾多自媒體宣傳為『視覺大模型的GPT時刻』,筆者抱著強烈的好奇心,在繁忙工作之…

m.2固態硬盤怎么選擇?

一、什么是固態硬盤 固態硬盤又稱SSD,是Solid State Drive的簡稱,由于采用了閃存技術,其處理速度遠遠超過傳統的機械硬盤,這主要是因為固態硬盤的數據以電子的方式存儲在閃存芯片中,不需要像機械硬盤那樣通過磁頭讀寫磁…

linux查看筆記本電池健康情況

本人的老電腦,筆記本x1 carbon 5th 用久了,電池不行了,實際容量只有27.657%,充電到40%的時候,一瞬間彪滿100%。到某寶淘了一個 model: 01AV430的電池,等更換了再看看使用情況 $ upower --help 用法:upower…

Linux 安裝 中間件 Tuxedo

安裝步聚 一、首先,下載中間件安裝包: tuxedo121300_64_Linux_01_x86 Tuxedo下載地址: Oracle Tuxedo Downloads 二、新建Oracle用戶組(創建Oracle用戶時,需要root權限操作,登陸) [rootloca…

【CiteSpace】引文可視化分析軟件CiteSpace下載與安裝

CiteSpace 譯“引文空間”,是一款著眼于分析科學分析中蘊含的潛在知識,是在科學計量學、數據可視化背景下逐漸發展起來的引文可視化分析軟件。由于是通過可視化的手段來呈現科學知識的結構、規律和分布情況,因此也將通過此類方法分析得到的可…

【Spring教程23】Spring框架實戰:從零開始學習SpringMVC 之 SpringMVC簡介與SpringMVC概述

目錄 1,SpringMVC簡介2、SpringMVC概述 歡迎大家回到《Java教程之Spring30天快速入門》,本教程所有示例均基于Maven實現,如果您對Maven還很陌生,請移步本人的博文《如何在windows11下安裝Maven并配置以及 IDEA配置Maven環境》&…

python使用vtk與mayavi三維可視化繪圖

VTK(Visualization Toolkit)是3D計算機圖形學、圖像處理和可視化的強大工具。它可以通過Python綁定使用,適合于科學數據的復雜可視化。Mayavi 依賴于 VTK (Visualization Toolkit),一個用于 3D 計算機圖形、圖像處理和可視化的強大…

AS安裝目錄

編輯器: sdk: gradle: gradle使用的jdk目錄:Gradle使用的jdk是android studio安裝目錄下的jbr 成功項目的android studio配置:

H264碼流結構

視頻編碼的碼流結構是指視頻經過編碼之后得到的二進制數據是怎么組織的,或者說,就是編碼后的碼流我們怎么將一幀幀編碼后的圖像數據分離出來,以及在二進制碼流數據中,哪一塊數據是一幀圖像,哪一塊數據是另外一幀圖像。…

C++面試寶典第4題:合并鏈表

題目 有一個鏈表,其節點聲明如下: struct TNode {int nData;struct TNode *pNext;TNode(int x) : nData(x), pNext(NULL) {} }; 現給定兩個按升序排列的單鏈表pA和pB,請編寫一個函數,實現這兩個單鏈表的合并。合并后,…

scheduleatfixedrate詳解

scheduleatfixedrate詳解 大家好,我是免費搭建查券返利機器人賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿!在Java開發中,我們常常需要執行定時任務,并且需要保證任務按照一定…

使用Java實現基數排序算法

文章目錄 基數排序算法 基數排序算法 (1)基本思想:將整數按位數切割成不同的數字,然后按每個位數分別比較。 (2)排序過程:將所有待比較數值(正整數)統一為同樣的數位長…

Vuex快速上手

一、Vuex 概述 目標:明確Vuex是什么,應用場景以及優勢 1.是什么 Vuex 是一個 Vue 的 狀態管理工具,狀態就是數據。 大白話:Vuex 是一個插件,可以幫我們管理 Vue 通用的數據 (多組件共享的數據)。例如:購…

VSCode SSH登錄服務器 提示XHR failed

設置->搜索“代理” 把圖中的√去掉 重啟 即可

OVS主線流程

OVS是open virtual switch的簡稱,是現在廣泛使用的軟件實現的虛擬網絡交換機。 各大云廠商普遍使用OVS來實現自身的虛擬網絡,各廠商會根據自身需要加以修改使之符合自身需求,DPU中也使用OVS來實現流表的offload。OVS中的流表基于多級結構&am…

變相增大BatchSize——梯度累積

常規訓練方式 for x,y in train_loader:pred model(x)loss criterion(pred, label)# 反向傳播loss.backward()# 根據新的梯度更新網絡參數optimizer.step()# 清空以往梯度,通過下面反向傳播重新計算梯度optimizer.zero_grad() pytorch每次forward完都會得到一個…

tidb安裝 centos7單機集群

安裝 [rootlocalhost ~]# curl --proto https --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh [rootlocalhost ~]# source .bash_profile [rootlocalhost ~]# which tiup [rootlocalhost ~]# tiup playground v6.1.0 --db 2 --pd 3 --kv 3 --host 192.168.1…

按這個套路寫的年底工作總結,運維人能少背多少鍋?

在職場中,年終工作總結是一項重要的任務,不僅有助于回顧過去一年的工作成果,也為未來設定新的目標提供了參考。在進行年終工作總結的過程中,合理的工作匯報是至關重要的一環。 一、匯報需要堅守的4個法則 01.線索必須單一 觀點&am…