久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何將樹莓派家庭實驗室變成一個網絡文件系統

154次閱讀
沒有評論

共計 6876 個字符,預計需要花費 18 分鐘才能閱讀完成。

這篇文章將為大家詳細講解有關如何將樹莓派家庭實驗室變成一個網絡文件系統,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

共享文件系統是為家庭實驗室增加通用性和功能性的好方法。在實驗室中為客戶端共享一個集中的文件系統,使得組織數據、進行備份和共享數據變得相當容易。這對于在多個服務器上進行負載均衡的 Web 應用和  Kubernetes  使用的持久化卷來說,尤其有用,因為它允許在任何數量的節點上用持久化數據來輪轉 Pod。

無論你的家庭實驗室是由普通計算機、多余的企業服務器,還是樹莓派或其他單板計算機(SBC)組成,共享文件系統都是一種有用的資產,而網絡文件系統(NFS)服務器是創建共享文件系統的好方法。

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

Raspberry Pi with a USB hard disk

安裝 NFS 服務器軟件

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

如果你的系統中還沒有這些軟件包,請使用  dnf  命令安裝它們。

#  安裝  nfs-utils  和  rpcbind$ sudo dnf install nfs-utils rpcbind

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

nfs-common:這些文件是 NFS 服務器和客戶端的通用文件。

nfs-kernel-server:主要的 NFS 服務器軟件包。

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

#  對于  Raspbian  系統,使用  apt-get  來安裝  NFS  軟件包 $ sudo apt-get install nfs-common nfs-kernel-server

準備一個 USB 硬盤作為存儲設備

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

#  使用  fdisk  找到你的硬盤 #  無關的硬盤信息已經省略 $ sudo fdisk -l Disk /dev/sda: 1.84 TiB, 2000398933504 bytes, 3907029167 sectorsDisk model: BUP Slim BKUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisklabel type: dosDisk identifier: 0xe3345ae9 Device Boot Start End Sectors Size Id Type/dev/sda1 2048 3907028991 3907026944 1.8T 83 Linux

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

注意:請確保正確識別你的設備的磁盤和分區。它可能與上面的例子不同。

在驅動器上創建的每個分區都有一個特殊的通用唯一標識符(UUID)。計算機使用 UUID 來確保它使用  /etc/fstab  配置文件將正確的分區掛載到正確的位置。你可以使用  blkid  命令檢索分區的 UUID。

#  獲取該分區的塊設備屬性 #  確保你使用了合適的分區,它應該有所不同。$ sudo blkid /dev/sda1 /dev/sda1: LABEL= backup  UUID= bd44867c-447c-4f85-8dbf-dc6b9bc65c91  TYPE= xfs  PARTUUID= e3345ae9-01

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

配置樹莓派在啟動時掛載這個磁盤,然后掛載它

現在你已經確定了要使用的磁盤和分區,你需要告訴計算機如何掛載它,每次啟動時都要這樣做。現在就去掛載它。因為這是一個 USB 磁盤,可能會被拔掉,所以你還要配置樹莓派在啟動時如果磁盤沒有插入或有其它不可用情況時不要等待。

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

#  創建該磁盤分區的掛載點 $ sudo mkdir -p /srv/nfs

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

disk id   mountpoint   filesystem type   options   fs_freq   fs_passno

使用你之前確定的 UUID 作為磁盤 ID。正如我在上一步提到的,掛載點是  /srv/nfs。對于文件系統類型,通常最好選擇其實際的文件系統,但是因為這是一個 USB 磁盤,所以使用  auto。

對于選項值,使用  nosuid,nodev,nofail。

關于手冊頁的一個旁白

其實,有很多可能的選項,手冊頁(man)是查看它們的最好方法。查看  fstab  的手冊頁是一個很好的開始。

#  打開  fstab  的手冊頁 $ man fstab

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

你可以從  mount  的手冊頁中獲得更多關于你將使用的選項的信息。數字 8 表示手冊頁的章節。在這里,第 8 章節是系統管理工具和守護進程。

你可以從  man  的手冊頁中得到標準章節的列表。

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

#  打開第  8  章節的  mount  手冊頁 $ man 8 mount

在這個手冊頁中,你可以查看上面列出的選項的作用。

nosuid:不理會 suid/guid 位。不允許放在 U 盤上的任何文件以 root 身份執行。這是一個良好的安全實踐。

nodev:不識別文件系統中的字符或塊特殊設備,即不理會在 U 盤上的任何設備節點。另一個良好的安全實踐。

nofail:如果設備不存在,不要記錄任何錯誤。這是一個 U 盤,可能沒有插入,所以在這種情況下,它將被忽略。

回到你正在添加到  /etc/fstab  文件的那一行,最后還有兩個選項:fs_freq  和  fs_passno。它們的值與一些過時的選項有關,大多數現代系統對這兩個選項都只用  0,特別是對 USB 磁盤上的文件系統而言。fs_freq  的值與  dump  命令和文件系統的轉儲有關。fs_passno  的值定義了啟動時要  fsck  的文件系統及其順序,如果設置了這個值,通常根分區是  1,其他文件系統是  2,將該值設置為  0  以跳過在該分區上使用  fsck。

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

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

啟用并啟動 NFS 服務器

安裝好軟件包,并將分區添加到你的  /etc/fstab  文件中,現在你可以開始啟動 NFS 服務器了。在 Fedora 系統中,你需要啟用和啟動兩個服務:rpcbind  和  nfs-server。使用  systemctl  命令來完成這項工作。

#  啟動  NFS  服務器和  rpcbind$ sudo systemctl enable rpcbind.service$ sudo systemctl enable nfs-server.service$ sudo systemctl start rpcbind.service$ sudo systemctl start nfs-server.service

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

RPCBind

rpcbind 工具用于將遠程過程調用(RPC)服務映射到其監聽的端口。根據 rpcbind 手冊頁:

“當一個 RPC 服務啟動時,它會告訴 rpcbind 它正在監聽的地址,以及它準備服務的 RPC 程序號。當客戶機想對給定的程序號進行 RPC 調用時,它首先與服務器機器上的 rpcbind 聯系,以確定 RPC 請求應該發送到哪里的地址。”

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

導出掛載的文件系統

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

 目錄   主機 (選項)

在這個例子中,你將導出掛載到  /srv/nfs  的分區。這是“目錄”部分。

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

第三部分包括應用于該導出的選項。

ro/rw:將文件系統導出為只讀或讀寫。

wdelay:如果即將進行另一次寫入,則推遲對磁盤的寫入,以提高性能(如果你使用的是固態 USB 磁盤,這可能沒有那么有用)

root_squash:防止客戶機上的任何 root 用戶在主機上有 root 權限,并將 root UID 設置為  nfsnobody  作為安全防范措施。

測試導出你掛載在  /srv/nfs  處的分區到一個客戶端 mdash; mdash; 例如,一臺筆記本電腦。確定你的客戶機的 IP 地址(我的筆記本是  192.168.2.64,但你的可能會不同)。你可以把它共享到一個大的子網,但為了測試,請限制在單個 IP 地址上。這個 IP 的 CIDR 標識是  192.168.2.64/32,/32  子網代表一個 IP。

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

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

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

#  恢復  /etc/exports  文件的  SELinux  上下文 $ sudo restorecon /etc/exports

完成后,重新啟動 NFS 服務器,以接收對  /etc/exports  文件的更改。

#  重新啟動  NFS  服務器 $ sudo systemctl restart nfs-server.service

給 NFS 服務打開防火墻

有些系統,默認不運行防火墻服務。比如  Raspbian,默認是開放 iptables 規則,不同服務打開的端口在機器外部立即就可以使用。相比之下,Fedora 服務器默認運行的是  firewalld 服務,所以你必須為 NFS 服務器(以及 rpcbind,如果你將使用 NFSv3)打開端口。你可以通過  firewall-cmd  命令來實現。

檢查 firewalld 使用的區域并獲取默認區域。對于 Fedora 服務器,這是  FedoraServer  區域。

#  列出區域 #  出于簡潔省略了部分輸出 $ sudo firewall-cmd --list-all-zones # R 獲取默認區域信息#  記下默認區域 $ sudo firewall-cmd --get-default-zone #  永久加入  nfs  服務到允許端口列表 $ sudo firewall-cmd --add-service=nfs --permanent #  對于  NFSv3,我們需要再加一些端口: nfsv3、 rpc-mountd、 rpc-bind$ sudo firewall-cmd --add-service=(nfs3,mountd,rpc-bind) #  查看默認區域的服務,以你的系統中使用的默認區域相應替換 $ sudo firewall-cmd --list-services --zone=FedoraServer #  如果一切正常,重載  firewalld$ sudo firewall-cmd --reload

就這樣,你已經成功地將 NFS 服務器與你掛載的 U 盤分區配置在一起,并將其導出到你的測試系統中進行共享。現在你可以在你添加到導出列表的系統上測試掛載它。

測試 NFS 導出

首先,從 NFS 服務器上,在  /srv/nfs  目錄下創建一個文件來讀取。

#  創建一個測試文件以共享 echo  Can you see this?    /srv/nfs/nfs_test

現在,在你添加到導出列表中的客戶端系統上,首先確保 NFS 客戶端包已經安裝好。在 Fedora 系統上,它是  nfs-utils  包,可以用  dnf  安裝。Raspbian 系統有  libnfs-utils  包,可以用  apt-get  安裝。

安裝 NFS 客戶端包:

#  用  dnf  安裝  nfs-utils  軟件包 $ sudo dnf install nfs-utils

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

#  掛載  NFS  服務器的輸出到客戶端主機 #  確保替換為你的主機的相應信息 $ sudo mount 192.168.2.109:/srv/nfs /mnt #  查看  nfs_test  文件是不是可見 $ cat /mnt/nfs_testCan you see this?

關于“如何將樹莓派家庭實驗室變成一個網絡文件系統”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計6876字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 定远县| 拉孜县| 沂南县| 莱芜市| 昌邑市| 宜春市| 河南省| 长治县| 中西区| 渑池县| 莆田市| 兴城市| 日喀则市| 宝应县| 福海县| 汝阳县| 红桥区| 秦皇岛市| 萝北县| 巨野县| 德保县| 水富县| 望都县| 容城县| 长子县| 达日县| 晋城| 金秀| 河北省| 台湾省| 营山县| 江油市| 田林县| 福州市| 平潭县| 东兴市| 瑞金市| 汾西县| 蓬莱市| 泊头市| 巩义市|