自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

把你的樹莓派家庭實(shí)驗(yàn)室變成一個(gè)網(wǎng)絡(luò)文件系統(tǒng)

系統(tǒng) Linux
使用 NFS 服務(wù)器將共享文件系統(tǒng)添加到你的家庭實(shí)驗(yàn)室。無論你的家庭實(shí)驗(yàn)室是由普通計(jì)算機(jī)、多余的企業(yè)服務(wù)器,還是樹莓派或其他單板計(jì)算機(jī)(SBC)組成,共享文件系統(tǒng)都是一種有用的資產(chǎn),而網(wǎng)絡(luò)文件系統(tǒng)(NFS)服務(wù)器是創(chuàng)建共享文件系統(tǒng)的好方法。

[[333666]]

使用 NFS 服務(wù)器將共享文件系統(tǒng)添加到你的家庭實(shí)驗(yàn)室。

共享文件系統(tǒng)是為家庭實(shí)驗(yàn)室增加通用性和功能性的好方法。在實(shí)驗(yàn)室中為客戶端共享一個(gè)集中的文件系統(tǒng),使得組織數(shù)據(jù)、進(jìn)行備份和共享數(shù)據(jù)變得相當(dāng)容易。這對(duì)于在多個(gè)服務(wù)器上進(jìn)行負(fù)載均衡的 Web 應(yīng)用和 Kubernetes 使用的持久化卷來說,尤其有用,因?yàn)樗试S在任何數(shù)量的節(jié)點(diǎn)上用持久化數(shù)據(jù)來輪轉(zhuǎn) Pod。

無論你的家庭實(shí)驗(yàn)室是由普通計(jì)算機(jī)、多余的企業(yè)服務(wù)器,還是樹莓派或其他單板計(jì)算機(jī)(SBC)組成,共享文件系統(tǒng)都是一種有用的資產(chǎn),而網(wǎng)絡(luò)文件系統(tǒng)(NFS)服務(wù)器是創(chuàng)建共享文件系統(tǒng)的好方法。

我之前寫過關(guān)于建立“家庭私有云”的文章,這是一個(gè)由樹莓派或其他 SBC 組成的家庭實(shí)驗(yàn)室,也許還有其他一些消費(fèi)類硬件或臺(tái)式 PC。NFS 服務(wù)器是這些組件之間共享數(shù)據(jù)的理想方式。由于大多數(shù) SBC 的操作系統(tǒng)是通過 SD 卡運(yùn)行的,所以存在一些挑戰(zhàn)。尤其是在用作計(jì)算機(jī)的操作系統(tǒng)磁盤時(shí),SD 卡的故障率會(huì)增加,它們并不是用來不斷地讀寫的。你實(shí)際需要的是一個(gè)真正的硬盤:它們通常比 SD 卡的每 GB 價(jià)格便宜,特別是對(duì)于較大的磁盤,而且它們不太可能持續(xù)發(fā)生故障。樹莓派 4 現(xiàn)在帶有 USB 3.0 接口,而 USB 3.0 硬盤無處不在,價(jià)格也很實(shí)惠。這是一個(gè)完美的搭配。在這個(gè)項(xiàng)目中,我將使用一個(gè) 2TB 的 USB 3.0 外置硬盤插入到運(yùn)行 NFS 服務(wù)器的樹莓派 4 中。

 

[[333667]]

Raspberry Pi with a USB hard disk

安裝 NFS 服務(wù)器軟件

我在樹莓派上運(yùn)行 Fedora 服務(wù)器,但這個(gè)項(xiàng)目也可以在其他發(fā)行版上運(yùn)行。要在 Fedora 上運(yùn)行 NFS 服務(wù)器,你需要 nfs-utils 包,幸運(yùn)的是它已經(jīng)安裝好了(至少在 Fedora 31 中是這樣)。如果你打算運(yùn)行 NFSv3 服務(wù),你還需要 rpcbind 包,但它不是 NFSv4 的嚴(yán)格要求。

如果你的系統(tǒng)中還沒有這些軟件包,請(qǐng)使用 dnf 命令安裝它們。

  1. # 安裝 nfs-utils rpcbind
  2. $ sudo dnf install nfs-utils rpcbind

Raspbian 是另一個(gè)與樹莓派一起使用的流行操作系統(tǒng),設(shè)置幾乎完全相同。軟件包名稱不同而已,但這是唯一的主要區(qū)別。要在運(yùn)行 Raspbian 的系統(tǒng)上安裝 NFS 服務(wù)器,你需要以下軟件包。

  • nfs-common:這些文件是 NFS 服務(wù)器和客戶端的通用文件。
  • nfs-kernel-server:主要的 NFS 服務(wù)器軟件包。

Raspbian 使用 apt-get 來管理軟件包(而不是像 Fedora 那樣使用 dnf),所以用它來安裝軟件包。

  1. # 對(duì)于 Raspbian 系統(tǒng),使用 apt-get 來安裝 NFS 軟件包
  2. $ sudo apt-get install nfs-common nfs-kernel-server

準(zhǔn)備一個(gè) USB 硬盤作為存儲(chǔ)設(shè)備

正如我上面提到的,USB 硬盤是為樹莓派或其他 SBC 提供存儲(chǔ)的好選擇,尤其是用于操作系統(tǒng)磁盤鏡像的 SD 卡并不適合這個(gè)用途。對(duì)于家庭私有云,你可以使用廉價(jià)的 USB 3.0 硬盤進(jìn)行大規(guī)模存儲(chǔ)。插入磁盤,使用 fdisk 找出分配給它的設(shè)備 ID,就可以使用它工作了。

  1. # 使用 fdisk 找到你的硬盤
  2. # 無關(guān)的硬盤信息已經(jīng)省略
  3. $ sudo fdisk -l
  4.  
  5. Disk /dev/sda: 1.84 TiB, 2000398933504 bytes, 3907029167 sectors
  6. Disk model: BUP Slim BK
  7. Units: sectors of 1 * 512 = 512 bytes
  8. Sector size (logical/physical): 512 bytes / 512 bytes
  9. I/O size (minimum/optimal): 512 bytes / 512 bytes
  10. Disklabel type: dos
  11. Disk identifier: 0xe3345ae9
  12.  
  13. Device     Boot Start        End    Sectors  Size Id Type
  14. /dev/sda1        2048 3907028991 3907026944  1.8T 83 Linux

為了清楚起見,在上面的例子輸出中,除了我感興趣的那個(gè)磁盤,我省略了所有其它磁盤的信息。你可以看到我想使用的 USB 磁盤被分配了設(shè)備 /dev/sda,你可以看到一些關(guān)于型號(hào)的信息(Disk model: BUP Slim BK),這有助于我識(shí)別正確的磁盤。該磁盤已經(jīng)有了一個(gè)分區(qū),它的大小也證實(shí)了它就是我要找的磁盤。

注意:請(qǐng)確保正確識(shí)別你的設(shè)備的磁盤和分區(qū)。它可能與上面的例子不同。

在驅(qū)動(dòng)器上創(chuàng)建的每個(gè)分區(qū)都有一個(gè)特殊的通用唯一標(biāo)識(shí)符(UUID)。計(jì)算機(jī)使用 UUID 來確保它使用 /etc/fstab 配置文件將正確的分區(qū)掛載到正確的位置。你可以使用 blkid 命令檢索分區(qū)的 UUID。

  1. # 獲取該分區(qū)的塊設(shè)備屬性
  2. # 確保你使用了合適的分區(qū),它應(yīng)該有所不同。
  3. $ sudo blkid /dev/sda1
  4.  
  5. /dev/sda1: LABEL="backup" UUID="bd44867c-447c-4f85-8dbf-dc6b9bc65c91" TYPE="xfs" PARTUUID="e3345ae9-01"

在這里,/dev/sda1 的 UUID 是 bd44867c-447c-4f85-8dbf-dc6b9bc65c91。你的 UUID 會(huì)有所不同,所以要記下來。

配置樹莓派在啟動(dòng)時(shí)掛載這個(gè)磁盤,然后掛載它

現(xiàn)在你已經(jīng)確定了要使用的磁盤和分區(qū),你需要告訴計(jì)算機(jī)如何掛載它,每次啟動(dòng)時(shí)都要這樣做?,F(xiàn)在就去掛載它。因?yàn)檫@是一個(gè) USB 磁盤,可能會(huì)被拔掉,所以你還要配置樹莓派在啟動(dòng)時(shí)如果磁盤沒有插入或有其它不可用情況時(shí)不要等待。

在 Linux 中,通過將分區(qū)添加到 /etc/fstab 配置文件中,包括你希望它被掛載的位置和一些參數(shù)來告訴計(jì)算機(jī)如何處理它。這個(gè)例子將把分區(qū)掛載到 /srv/nfs,所以先創(chuàng)建這個(gè)路徑:

  1. # 創(chuàng)建該磁盤分區(qū)的掛載點(diǎn)
  2. $ sudo mkdir -p /srv/nfs

接下來,使用以下語(yǔ)法格式修改 /etc/fstab 文件:

  1. <disk id>     <mountpoint>      <filesystem type>     <options>     <fs_freq> <fs_passno>

使用你之前確定的 UUID 作為磁盤 ID。正如我在上一步提到的,掛載點(diǎn)是 /srv/nfs。對(duì)于文件系統(tǒng)類型,通常最好選擇其實(shí)際的文件系統(tǒng),但是因?yàn)檫@是一個(gè) USB 磁盤,所以使用 auto。

對(duì)于選項(xiàng)值,使用 nosuid,nodev,nofail

關(guān)于手冊(cè)頁(yè)的一個(gè)旁白

其實(shí),有很多可能的選項(xiàng),手冊(cè)頁(yè)(man)是查看它們的最好方法。查看 fstab 的手冊(cè)頁(yè)是一個(gè)很好的開始。

  1. # 打開 fstab 的手冊(cè)頁(yè)
  2. $ man fstab

這將打開與 fstab 命令相關(guān)的手冊(cè)/文檔。在手冊(cè)頁(yè)中,每個(gè)選項(xiàng)都被分解成了不同的內(nèi)容,以顯示它的作用和常用的選擇。例如,“第四個(gè)字段(fs_mntopts)”給出了該字段中可用選項(xiàng)的一些基本信息,并引導(dǎo)你到 man 8 mount 中獲取 mount 選項(xiàng)更深入的描述。這是有道理的,因?yàn)?nbsp;/etc/fstab 文件,本質(zhì)上是告訴計(jì)算機(jī)如何自動(dòng)掛載磁盤,就像你手動(dòng)使用 mount 命令一樣。

你可以從 mount 的手冊(cè)頁(yè)中獲得更多關(guān)于你將使用的選項(xiàng)的信息。數(shù)字 8 表示手冊(cè)頁(yè)的章節(jié)。在這里,第 8 章節(jié)是系統(tǒng)管理工具和守護(hù)進(jìn)程

你可以從 man 的手冊(cè)頁(yè)中得到標(biāo)準(zhǔn)章節(jié)的列表。

回到掛載磁盤,讓我們看看 man 8 mount

  1. # 打開第 8 章節(jié)的 mount 手冊(cè)頁(yè)
  2. $ man 8 mount

在這個(gè)手冊(cè)頁(yè)中,你可以查看上面列出的選項(xiàng)的作用。

  • nosuid:不理會(huì) suid/guid 位。不允許放在 U 盤上的任何文件以 root 身份執(zhí)行。這是一個(gè)良好的安全實(shí)踐。
  • nodev:不識(shí)別文件系統(tǒng)中的字符或塊特殊設(shè)備,即不理會(huì)在 U 盤上的任何設(shè)備節(jié)點(diǎn)。另一個(gè)良好的安全實(shí)踐。
  • nofail:如果設(shè)備不存在,不要記錄任何錯(cuò)誤。這是一個(gè) U 盤,可能沒有插入,所以在這種情況下,它將被忽略。

回到你正在添加到 /etc/fstab 文件的那一行,最后還有兩個(gè)選項(xiàng):fs_freq 和 fs_passno。它們的值與一些過時(shí)的選項(xiàng)有關(guān),大多數(shù)現(xiàn)代系統(tǒng)對(duì)這兩個(gè)選項(xiàng)都只用 0,特別是對(duì) USB 磁盤上的文件系統(tǒng)而言。fs_freq 的值與 dump 命令和文件系統(tǒng)的轉(zhuǎn)儲(chǔ)有關(guān)。fs_passno 的值定義了啟動(dòng)時(shí)要 fsck 的文件系統(tǒng)及其順序,如果設(shè)置了這個(gè)值,通常根分區(qū)是 1,其他文件系統(tǒng)是 2,將該值設(shè)置為 0 以跳過在該分區(qū)上使用 fsck。

在你喜歡的編輯器中,打開 /etc/fstab 文件,添加 U 盤上分區(qū)的條目,將這里的值替換成前面步驟中得到的值。

  1. # With sudo, or as root, add the partition info to the /etc/fstab file
  2. UUID="bd44867c-447c-4f85-8dbf-dc6b9bc65c91"    /srv/nfs    auto    nosuid,nodev,nofail,noatime 0 0

啟用并啟動(dòng) NFS 服務(wù)器

安裝好軟件包,并將分區(qū)添加到你的 /etc/fstab 文件中,現(xiàn)在你可以開始啟動(dòng) NFS 服務(wù)器了。在 Fedora 系統(tǒng)中,你需要啟用和啟動(dòng)兩個(gè)服務(wù):rpcbind 和 nfs-server。使用 systemctl 命令來完成這項(xiàng)工作。

  1. # 啟動(dòng) NFS 服務(wù)器和 rpcbind
  2. $ sudo systemctl enable rpcbind.service
  3. $ sudo systemctl enable nfs-server.service
  4. $ sudo systemctl start rpcbind.service
  5. $ sudo systemctl start nfs-server.service

在 Raspbian 或其他基于 Debian 的發(fā)行版上,你只需要使用 systemctl 命令啟用并啟動(dòng) nfs-kernel-server 服務(wù)即可,方法同上。

RPCBind

rpcbind 工具用于將遠(yuǎn)程過程調(diào)用(RPC)服務(wù)映射到其監(jiān)聽的端口。根據(jù) rpcbind 手冊(cè)頁(yè):

“當(dāng)一個(gè) RPC 服務(wù)啟動(dòng)時(shí),它會(huì)告訴 rpcbind 它正在監(jiān)聽的地址,以及它準(zhǔn)備服務(wù)的 RPC 程序號(hào)。當(dāng)客戶機(jī)想對(duì)給定的程序號(hào)進(jìn)行 RPC 調(diào)用時(shí),它首先與服務(wù)器機(jī)器上的 rpcbind 聯(lián)系,以確定 RPC 請(qǐng)求應(yīng)該發(fā)送到哪里的地址。”

在 NFS 服務(wù)器這個(gè)案例中,rpcbind 會(huì)將 NFS 的協(xié)議號(hào)映射到 NFS 服務(wù)器監(jiān)聽的端口上。但是,NFSv4 不需要使用 rpcbind。如果你使用 NFSv4 (通過從配置中刪除版本 2 和版本 3),則不需要使用 rpcbind。我把它放在這里是為了向后兼容 NFSv3。

導(dǎo)出掛載的文件系統(tǒng)

NFS 服務(wù)器根據(jù)另一個(gè)配置文件 /etc/exports 來決定與哪些遠(yuǎn)程客戶端共享(導(dǎo)出)哪些文件系統(tǒng)。這個(gè)文件只是一個(gè) IP(或子網(wǎng))與要共享的文件系統(tǒng)的映射,以及一些選項(xiàng)(只讀或讀寫、root 去除等)。該文件的格式是:

  1. <目錄>     <主機(jī)>(選項(xiàng))

在這個(gè)例子中,你將導(dǎo)出掛載到 /srv/nfs 的分區(qū)。這是“目錄”部分。

第二部分,主機(jī),包括你要導(dǎo)出這個(gè)分區(qū)的主機(jī)。這些主機(jī)可以是單個(gè)主機(jī):使用具有完全限定域名(FQDN)或主機(jī)名、主機(jī)的 IP 地址來指定;也可以是一組主機(jī):使用通配符字符來匹配域(如 *.example.org)、IP 網(wǎng)絡(luò)(如無類域間路由 CIDR 標(biāo)識(shí))或網(wǎng)組表示。

第三部分包括應(yīng)用于該導(dǎo)出的選項(xiàng)。

  • ro/rw:將文件系統(tǒng)導(dǎo)出為只讀或讀寫。
  • wdelay:如果即將進(jìn)行另一次寫入,則推遲對(duì)磁盤的寫入,以提高性能(如果你使用的是固態(tài) USB 磁盤,這可能沒有那么有用)
  • root_squash:防止客戶機(jī)上的任何 root 用戶在主機(jī)上有 root 權(quán)限,并將 root UID 設(shè)置為 nfsnobody 作為安全防范措施。

測(cè)試導(dǎo)出你掛載在 /srv/nfs 處的分區(qū)到一個(gè)客戶端 —— 例如,一臺(tái)筆記本電腦。確定你的客戶機(jī)的 IP 地址(我的筆記本是 192.168.2.64,但你的可能會(huì)不同)。你可以把它共享到一個(gè)大的子網(wǎng),但為了測(cè)試,請(qǐng)限制在單個(gè) IP 地址上。這個(gè) IP 的 CIDR 標(biāo)識(shí)是 192.168.2.64/32,/32 子網(wǎng)代表一個(gè) IP。

使用你喜歡的編輯器編輯 /etc/exports 文件,寫上你的目錄、主機(jī) CIDR 以及 rw 和 root_squash 選項(xiàng)。

  1. # 像這樣編輯你的 /etc/exports 文件,替換為你的系統(tǒng)上的信息
  2. /srv/nfs    192.168.2.64/32(rw,root_squash)

注:如果你從另一個(gè)地方復(fù)制了 /etc/exports 文件,或者用副本覆蓋了原文件,你可能需要恢復(fù)該文件的 SELinux 上下文。你可以使用 restorecon 命令來恢復(fù)。

  1. # 恢復(fù) /etc/exports 文件的 SELinux 上下文
  2. $ sudo restorecon /etc/exports

完成后,重新啟動(dòng) NFS 服務(wù)器,以接收對(duì) /etc/exports 文件的更改。

  1. # 重新啟動(dòng) NFS 服務(wù)器
  2. $ sudo systemctl restart nfs-server.service

給 NFS 服務(wù)打開防火墻

有些系統(tǒng),默認(rèn)不運(yùn)行防火墻服務(wù)。比如 Raspbian,默認(rèn)是開放 iptables 規(guī)則,不同服務(wù)打開的端口在機(jī)器外部立即就可以使用。相比之下,F(xiàn)edora 服務(wù)器默認(rèn)運(yùn)行的是 firewalld 服務(wù),所以你必須為 NFS 服務(wù)器(以及 rpcbind,如果你將使用 NFSv3)打開端口。你可以通過 firewall-cmd 命令來實(shí)現(xiàn)。

檢查 firewalld 使用的區(qū)域并獲取默認(rèn)區(qū)域。對(duì)于 Fedora 服務(wù)器,這是 FedoraServer 區(qū)域。

  1. # 列出區(qū)域
  2. # 出于簡(jiǎn)潔省略了部分輸出
  3. $ sudo firewall-cmd --list-all-zones
  4.  
  5. # R獲取默認(rèn)區(qū)域信息
  6. # 記下默認(rèn)區(qū)域
  7. $ sudo firewall-cmd --get-default-zone
  8.  
  9. # 永久加入 nfs 服務(wù)到允許端口列表
  10. $ sudo firewall-cmd --add-service=nfs --permanent
  11.  
  12. # 對(duì)于 NFSv3,我們需要再加一些端口: nfsv3、 rpc-mountd、 rpc-bind
  13. $ sudo firewall-cmd --add-service=(nfs3,mountd,rpc-bind)
  14.  
  15. # 查看默認(rèn)區(qū)域的服務(wù),以你的系統(tǒng)中使用的默認(rèn)區(qū)域相應(yīng)替換
  16. $ sudo firewall-cmd --list-services --zone=FedoraServer
  17.  
  18. # 如果一切正常,重載 firewalld
  19. $ sudo firewall-cmd --reload

就這樣,你已經(jīng)成功地將 NFS 服務(wù)器與你掛載的 U 盤分區(qū)配置在一起,并將其導(dǎo)出到你的測(cè)試系統(tǒng)中進(jìn)行共享?,F(xiàn)在你可以在你添加到導(dǎo)出列表的系統(tǒng)上測(cè)試掛載它。

測(cè)試 NFS 導(dǎo)出

首先,從 NFS 服務(wù)器上,在 /srv/nfs 目錄下創(chuàng)建一個(gè)文件來讀取。

  1. # 創(chuàng)建一個(gè)測(cè)試文件以共享
  2. echo "Can you see this?" >> /srv/nfs/nfs_test

現(xiàn)在,在你添加到導(dǎo)出列表中的客戶端系統(tǒng)上,首先確保 NFS 客戶端包已經(jīng)安裝好。在 Fedora 系統(tǒng)上,它是 nfs-utils 包,可以用 dnf 安裝。Raspbian 系統(tǒng)有 libnfs-utils 包,可以用 apt-get 安裝。

安裝 NFS 客戶端包:

  1. # dnf 安裝 nfs-utils 軟件包
  2. $ sudo dnf install nfs-utils

一旦安裝了客戶端包,你就可以測(cè)試 NFS 的導(dǎo)出了。同樣在客戶端,使用帶有 NFS 服務(wù)器 IP 和導(dǎo)出路徑的 mount 命令,并將其掛載到客戶端的一個(gè)位置,在這個(gè)測(cè)試中是 /mnt 目錄。在這個(gè)例子中,我的 NFS 服務(wù)器的 IP 是 192.168.2.109,但你的可能會(huì)有所不同。

  1. # 掛載 NFS 服務(wù)器的輸出到客戶端主機(jī)
  2. # 確保替換為你的主機(jī)的相應(yīng)信息
  3. $ sudo mount 192.168.2.109:/srv/nfs /mnt
  4.  
  5. # 查看 nfs_test 文件是不是可見
  6. $ cat /mnt/nfs_test
  7. Can you see this?

成功了!你現(xiàn)在已經(jīng)有了一個(gè)可以工作的 NFS 服務(wù)器,可以與多個(gè)主機(jī)共享文件,允許多個(gè)讀/寫訪問,并為你的數(shù)據(jù)提供集中存儲(chǔ)和備份。家庭實(shí)驗(yàn)室的共享存儲(chǔ)有很多選擇,但 NFS 是一種古老的、高效的、可以添加到你的“家庭私有云”家庭實(shí)驗(yàn)室中的好選擇。本系列未來的文章將擴(kuò)展如何在客戶端上自動(dòng)掛載 NFS 共享,以及如何將 NFS 作為 Kubernetes 持久卷的存儲(chǔ)類。

 

責(zé)任編輯:龐桂玉 來源: Linux中國(guó)
相關(guān)推薦

2021-03-17 10:16:39

樹莓派音樂系統(tǒng)Linux

2020-06-03 19:00:40

樹莓派磁盤鏡像Linux

2021-12-30 09:40:33

CentOS家庭實(shí)驗(yàn)室Linux

2021-04-03 21:40:51

硬件防火墻家庭實(shí)驗(yàn)室

2023-11-29 14:18:32

2020-12-31 12:09:56

Ansible實(shí)驗(yàn)室Linux

2022-11-22 06:43:33

Kubernetes云服務(wù)Linux

2019-03-23 19:33:14

樹莓派Linux操作系統(tǒng)

2011-12-19 09:24:50

虛擬化家庭實(shí)驗(yàn)室虛擬桌面

2013-04-07 09:38:00

HPC硬件HPC高性能計(jì)算

2011-06-10 09:37:50

2021-08-04 09:48:05

數(shù)字化

2015-02-06 09:23:52

賽可達(dá)實(shí)驗(yàn)室網(wǎng)絡(luò)安全

2021-11-19 14:44:17

樹莓派Linux

2015-10-10 11:23:49

2024-06-17 09:08:55

Linuxloop設(shè)備

2019-01-31 09:00:00

開源實(shí)驗(yàn)室管理系統(tǒng)

2011-05-25 17:51:40

2015-03-30 16:30:50

浪潮

2023-08-09 15:11:26

FedoraLinux實(shí)驗(yàn)室
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)