【低成本 Raspberry Pi 家用伺服器】之二 - Raspberry Pi NAS | 使用USB外接硬碟設定 RAID 1 1

【低成本 Raspberry Pi 家用伺服器】之二 – Raspberry Pi NAS | 使用USB外接硬碟設定 RAID 1

這個系列是關於如何使用 Raspberry Pi 來建立一個低成本的家用伺服器,在上一篇文章中,我們在Raspberry Pi上面安裝好了Ubuntu並且設定了ssh,接下來我們要來探討如何接著建置一個簡單的Raspberry Pi NAS系統。我們將從了解什麼是 NAS 和 RAID1 開始,然後逐步介紹實作步驟,包括安裝必要的軟體、格式化硬碟、建立 RAID 1 陣列。

NAS是什麼?

NAS(Network-Attached Storage)是一種專用於儲存和共享數據的硬體設備,它通常連接到你的家用網路,允許多個裝置同時使用及儲存在其中的檔案。這種系統的存在簡化了檔案共享和備份過程,使家庭或小型辦公室用戶能夠輕鬆存取數據。

市面上有很多NAS產品,例如最受新手歡迎的Synology,便宜的 2 Bay 入門版在寫這篇文章時的價格約是$250美金。這是尚未包括硬碟的價錢。

市面上的NAS系統好處就是不太需要自己設定,有很多好用的套裝軟體可以使用。不過今天我們的目標是使用兩組 USB 外接硬碟來用手上的Raspberry Pi 設定 RAID 1 NAS。

RAID1是什麼?

RAID(Redundant Array of Independent Disks)是一種用於數據儲存的技術。RAID可以使用特殊的數據儲存方式,將數據分佈在多個硬碟上。這種方式可以提高數據讀取和寫入的效率,以及增加數據的冗餘性,從而減少數據丟失的風險。

RAID 技術有不同的級別,每個級別提供不同的性能和冗餘特性。常見的 RAID 級別包括:

  • RAID 0: Striping(條帶化)方式,提高性能,但沒有冗餘。故障一個硬碟會導致數據完全丟失。
  • RAID 1: 鏡像方式,提供完全冗餘,也就是兩個磁碟上儲存相同的資料,這種方式安全但存儲成本較高。
  • RAID 5: Striping + 分佈式奇偶校驗,提供性能和冗餘,通常需要至少三個硬碟。
  • RAID 6: 類似 RAID 5,但提供更高的冗餘性,可以容忍兩個硬碟故障。
  • RAID 10(1+0): 一種組合方式,將 RAID 1 鏡像和 RAID 0 條帶化結合,提供高性能和高冗餘性。

RAID 通常使用多個硬碟驅動器來創建一個硬碟陣列。這些硬碟可以是獨立的磁碟,也可以是硬碟陣列控制器管理的磁碟。在這裡我們將使用USB外接硬碟,來配置一個RAID1磁碟陣列。不使用更高級別的RAID是因為對家用來說通常不會需要非常高的儲存效能,而且RAID1只需要兩個硬碟。配置RAID並非必須,但是可以避免硬碟損壞的時候資料丟失的可能性,是一般購買NAS系統的常見考量。

Raspberry Pi NAS 實作步驟

首先我們準備兩顆一樣大小的磁碟外接到Raspberry Pi上。這邊使用的硬體可以看自己的需求,例如買兩顆一樣大小的USB SSD。我最常用的USB外接硬碟是Sandisk SSD,輕薄短小,缺點就是比較貴。

如果不重視可攜帶性(畢竟是放在家裡當NAS用),想要比較便宜的大空間,可以考慮直接買3.5吋硬碟,再使用USB Dock來外接。要注意的就是如果是用這種外接的Dock,如果準備要使用大容量硬碟的話要確認一下規格是否有支援。硬碟我比較喜歡買NAS Server級,大家根據自己使用需求決定容量等級就好。

分割磁碟

如果你使用的是全新的磁碟,我們首先將硬碟作磁碟分割。首先用lsblk找出兩個硬碟的label。

lsblk

結果會是類似的畫面,假設我們剛剛接上的是2T的硬碟,則我們要找的是叫作sda的硬碟。假設你的Raspberry Pi 系統沒有其他外接硬碟的話,兩顆硬碟應該會是sda和sdb。

嶄新的硬碟可能是沒有分割過的,硬碟分割(Disk Partitioning)是在一個物理硬碟上將其分成多個邏輯區域的過程。對到手的新硬碟,我們要先在這兩個硬碟上各製作一個分區。我們使用gdisk來完成這個步驟。

sudo gdisk /dev/sda

gdisk 將顯示硬碟的詳細信息,包括分割表信息(如果有的話)。這邊可以看到硬碟上的現有分割情況。如果硬碟是全新的或沒有分割,按 o 鍵來創建一個新的分割表。

接下來,使用 n 鍵來創建一個新分割區。gdisk將要求提供分割區的起始和結束位置。因為我們是要創建一個占據整個硬碟的分割區,只需按 Enter 接受預設值。接著是選擇分割區的類型。可以按 Enter 接受預設的 Linux 分割區類型(8300)。到此就完成分割區設置,使用 w 鍵將更改寫入硬碟並退出 gdisk。如果改變心意,可以使用 q 鍵退出而不保存更改。

同樣的步驟,我們也要在sdb上做一遍。

sudo gdisk /dev/sdb

Option 1: 一般格式化

做好磁碟分割之後,接下來是將分割好的磁碟格式化。假如沒有打算要做RAID1,可以用mkfs直接格式化硬碟:

sudo mkfs.ext4 /dev/sda1
sudo mkfs.ext4 /dev/sdb1

Option 2: 格式化為RAID1磁碟陣列

想要做RAID的話,開始之前,您需要安裝 mdadm 軟體,它用於管理軟體 RAID 陣列。

sudo apt install madam

使用以下命令將兩個硬碟分割區合併為一個 RAID1 陣列區/dev/md/myraid:

sudo mdadm --create --verbose /dev/md/myraid --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
sudo mdadm --detail /dev/md/myraid

現在我們來格式化/dev/md/myraid:

sudo mkfs.ext4 /dev/md/myraid

掛載分區至資料夾

為了要存取可用的空間,我們必須在Ubuntu系統上將格式化好的空間掛載。掛載(Mounting)是指將一個文件系統(通常是一個硬碟分割或儲存設備上的文件系統)連接到 Linux 或 Unix 系統的指定目錄(稱為掛載點)上,以便系統可以訪問和管理該文件系統中的文件和目錄。在此我們要掛載的就是剛剛格式化好的一般或RAID1文件系統。

首先準備一個空資料夾。

mkdir /mnt/myraid

再來我們將剛剛做好的系統掛載上這個空資料夾的路徑。

sudo mount /dev/md/myraid /mnt/myraid

設定這個資料夾的ownership為原本的user。

sudo chown -R ubuntu:ubuntu /mnt/myraid

這時候我們對/mnt/myraid資料夾作任何存取,實際上就是在對接上的硬碟或陣列做檔案存取囉。

不過這樣手動掛載在重開機之後就必須每次重新掛載,所以如果以上測試沒問題的話,我們可以到/etc/fstab檔案去設定自動掛載:

sudo nano /etc/fstab

在檔案中加上一行,這樣自動掛載就完成了。

/dev/md/myraid  /mnt/myraid     ext4    defaults        0       0

使用SFTP存取NAS

如果在前一篇文章中,你已經設定好了ssh和固定的內網IP,實際上你已經完成了一個基本陽春的NAS設定,因為ssh server有支援SFTP,所以你可以在任何內網的電腦上以SFTP連上我們剛剛設定好的檔案系統。

我這邊僅提供簡單的敘述:

  1. 下載和安裝 FileZilla: 找到另外一台電腦,如果尚未安裝 FileZilla,請前往官方網站(https://filezilla-project.org/)下載
  2. 打開 FileZilla: 安裝完成後,打開 FileZilla 軟體。
  3. 連接到 SFTP 伺服器: 使用以下資訊連接:
    • 主機:輸入 SFTP 伺服器的地址,這邊填寫我們給Raspberry Pi設定好的內網IP。
    • 用戶名:輸入您在伺服器上的用戶名。
    • 密碼:輸入您的帳戶密碼。
    • 端口:22
  4. 切換到對應路徑∶ 一旦連接成功,你會在右側的遠程瀏覽器窗格中看到伺服器上的文件和目錄。因為我們現在是想要存取剛剛設定好的外接硬碟,所以請在右側的路徑欄中填上Raspberry Pi上的對應路徑/mnt/myraid並按下enter。
  5. 傳輸文件:在本地瀏覽器窗格(左側)中則是看到本地文件,並在遠程瀏覽器窗格(右側)中找到伺服器上的文件。要將文件從一邊傳輸到另一邊,只需將它們拖放到適當的位置。

其他存取方式

如果想要將這個RAID作為可以直接拖放的網路磁碟,可以使用 Samba。Samba 是一個開源的軟體套件,用於在不同的操作系統之間實現文件和印表機共享。它允許Linux和Unix系統(包括 macOS)與Windows操作系統之間共享文件和資源。我在這篇文章中不討論,如果想要設定Samba,有興趣可以參照這篇

磁碟陣列的管理

使用RAID陣列的好處就是當一個硬碟壞掉時系統仍可以使用另外一個,我們只需要將壞掉的硬碟換掉就可以了。

將來如果發現其中一個磁碟壞掉,可以將其從陣列中移除。例如假設是sdb壞掉:

sudo mdadm --manage /dev/md/myraid --remove /dev/sdb

之後再換一個好的硬碟,作好分割之後加回陣列中。

sudo mdadm --manage /dev/md/myraid --add /dev/sdb

謝謝你看完這篇文章。如果你喜歡我的文章,請追蹤Facebook粉專TwitterIG

發表迴響取消回覆