跟隨這些逐步指導(dǎo)構(gòu)建你自己的基于樹(shù)莓派的 NAS 系統(tǒng)。
我將在接下來(lái)的這三篇文章中講述如何搭建一個(gè)簡(jiǎn)便、實(shí)用的 NAS 云盤(pán)系統(tǒng)。我在這個(gè)中心化的存儲(chǔ)系統(tǒng)中存儲(chǔ)數(shù)據(jù),并且讓它每晚都會(huì)自動(dòng)的備份增量數(shù)據(jù)。本系列文章將利用 NFS 文件系統(tǒng)將磁盤(pán)掛載到同一網(wǎng)絡(luò)下的不同設(shè)備上,使用 Nextcloud 來(lái)離線訪問(wèn)數(shù)據(jù)、分享數(shù)據(jù)。
本文主要講述將數(shù)據(jù)盤(pán)掛載到遠(yuǎn)程設(shè)備上的軟硬件步驟。本系列第二篇文章將討論數(shù)據(jù)備份策略、如何添加定時(shí)備份數(shù)據(jù)任務(wù)。最后一篇文章中我們將會(huì)安裝 Nextcloud 軟件,用戶(hù)通過(guò) Nextcloud 提供的 web 界面可以方便的離線或在線訪問(wèn)數(shù)據(jù)。本系列教程最終搭建的 NAS 云盤(pán)支持多用戶(hù)操作、文件共享等功能,所以你可以通過(guò)它方便的分享數(shù)據(jù),比如說(shuō)你可以發(fā)送一個(gè)加密鏈接,跟朋友分享你的照片等等。
最終的系統(tǒng)架構(gòu)如下圖所示:
硬件
首先需要準(zhǔn)備硬件。本文所列方案只是其中一種示例,你也可以按不同的硬件方案進(jìn)行采購(gòu)。
最主要的就是樹(shù)莓派 3,它帶有四核 CPU、1G RAM,以及(比較)快速的網(wǎng)絡(luò)接口。數(shù)據(jù)將存儲(chǔ)在兩個(gè) USB 磁盤(pán)驅(qū)動(dòng)器上(這里使用 1TB 磁盤(pán));其中一個(gè)磁盤(pán)用于每天數(shù)據(jù)存儲(chǔ),另一個(gè)用于數(shù)據(jù)備份。請(qǐng)務(wù)必使用有源 USB 磁盤(pán)驅(qū)動(dòng)器或者帶附加電源的 USB 集線器,因?yàn)闃?shù)莓派無(wú)法為兩個(gè) USB 磁盤(pán)驅(qū)動(dòng)器供電。
軟件
在該社區(qū)中最活躍的操作系統(tǒng)當(dāng)屬 Raspbian,便于定制個(gè)性化項(xiàng)目。已經(jīng)有很多 操作指南 講述如何在樹(shù)莓派中安裝 Raspbian 系統(tǒng),所以這里不再贅述。在撰寫(xiě)本文時(shí),最新的官方支持版本是 Raspbian Stretch,它對(duì)我來(lái)說(shuō)很好使用。
到此,我將假設(shè)你已經(jīng)配置好了基本的 Raspbian 系統(tǒng)并且可以通過(guò) ssh
訪問(wèn)到你的樹(shù)莓派。
準(zhǔn)備 USB 磁盤(pán)驅(qū)動(dòng)器
為了更好地讀寫(xiě)數(shù)據(jù),我建議使用 ext4 文件系統(tǒng)去格式化磁盤(pán)。首先,你必須先找到連接到樹(shù)莓派的磁盤(pán)。你可以在 /dev/sd/<x>
中找到磁盤(pán)設(shè)備。使用命令 fdisk -l
,你可以找到剛剛連接的兩塊 USB 磁盤(pán)驅(qū)動(dòng)器。請(qǐng)注意,操作下面的步驟將會(huì)清除 USB 磁盤(pán)驅(qū)動(dòng)器上的所有數(shù)據(jù),請(qǐng)做好備份。
pi@raspberrypi:~ $ sudofdisk-l
<...>
Disk/dev/sda:931.5GiB,1000204886016 bytes,1953525168 sectors
Units: sectors of 1*512=512 bytes
Sectorsize(logical/physical):512 bytes /512 bytes
I/O size(minimum/optimal):512 bytes /512 bytes
Disklabel type: dos
Disk identifier:0xe8900690
DeviceBootStartEndSectorsSizeIdType
/dev/sda1 204819535251671953523120931.5G83Linux
Disk/dev/sdb:931.5GiB,1000204886016 bytes,1953525168 sectors
Units: sectors of 1*512=512 bytes
Sectorsize(logical/physical):512 bytes /512 bytes
I/O size(minimum/optimal):512 bytes /512 bytes
Disklabel type: dos
Disk identifier:0x6aa4f598
DeviceBootStartEndSectorsSizeIdType
/dev/sdb1 *204819535216631953519616931.5G83Linux
由于這些設(shè)備是連接到樹(shù)莓派的唯一的 1TB 的磁盤(pán),所以我們可以很容易的辨別出 /dev/sda
和 /dev/sdb
就是那兩個(gè) USB 磁盤(pán)驅(qū)動(dòng)器。每個(gè)磁盤(pán)末尾的分區(qū)表提示了在執(zhí)行以下的步驟后如何查看,這些步驟將會(huì)格式化磁盤(pán)并創(chuàng)建分區(qū)表。為每個(gè) USB 磁盤(pán)驅(qū)動(dòng)器按以下步驟進(jìn)行操作(假設(shè)你的磁盤(pán)也是 /dev/sda
和 /dev/sdb
,第二次操作你只要替換命令中的 sda
為 sdb
即可)。
首先,刪除磁盤(pán)分區(qū)表,創(chuàng)建一個(gè)新的并且只包含一個(gè)分區(qū)的新分區(qū)表。在 fdisk
中,你可以使用交互單字母命令來(lái)告訴程序你想要執(zhí)行的操作。只需要在提示符 Command(m for help):
后輸入相應(yīng)的字母即可(可以使用 m
命令獲得更多詳細(xì)信息):
pi@raspberrypi:~ $ sudofdisk/dev/sda
Welcome to fdisk(util-linux 2.29.2).
Changes will remain in memory only,until you decide to write them.
Be careful before using the write command.
Command(m for help): o
Created a new DOS disklabel with disk identifier 0x9c310964.
Command(m for help): n
Partition type
p primary (0 primary,0 extended,4 free)
e extended (container for logical partitions)
Select(default p): p
Partition number (1-4,default1):
First sector (2048-1953525167,default2048):
Last sector,+sectors or+size{K,M,G,T,P}(2048-1953525167,default1953525167):
Created a new partition 1 of type 'Linux'and of size931.5GiB.
Command(m for help): p
Disk/dev/sda:931.5GiB,1000204886016 bytes,1953525168 sectors
Units: sectors of 1*512=512 bytes
Sectorsize(logical/physical):512 bytes /512 bytes
I/O size(minimum/optimal):512 bytes /512 bytes
Disklabel type: dos
Disk identifier:0x9c310964
DeviceBootStartEndSectorsSizeIdType
/dev/sda1 204819535251671953523120931.5G83Linux
Command(m for help):w
The partition table has been altered.
Syncing disks.
現(xiàn)在,我們將用 ext4 文件系統(tǒng)格式化新創(chuàng)建的分區(qū) /dev/sda1
:
pi@raspberrypi:~ $ sudomkfs.ext4 /dev/sda1
mke2fs1.43.4(31-Jan-2017)
Discarding device blocks:done
<...>
Allocating group tables:done
Writing inode tables:done
Creating journal (1024 blocks):done
Writing superblocks and filesystem accounting information:done
重復(fù)以上步驟后,讓我們根據(jù)用途來(lái)對(duì)它們建立標(biāo)簽:
pi@raspberrypi:~ $ sudo e2label /dev/sda1 data
pi@raspberrypi:~ $ sudo e2label /dev/sdb1 backup
現(xiàn)在,讓我們安裝這些磁盤(pán)并存儲(chǔ)一些數(shù)據(jù)。以我運(yùn)營(yíng)該系統(tǒng)超過(guò)一年的經(jīng)驗(yàn)來(lái)看,當(dāng)樹(shù)莓派啟動(dòng)時(shí)(例如在斷電后),USB 磁盤(pán)驅(qū)動(dòng)器并不是總被掛載,因此我建議使用 autofs 在需要的時(shí)候進(jìn)行掛載。
首先,安裝 autofs 并創(chuàng)建掛載點(diǎn):
pi@raspberrypi:~ $ sudo apt install autofs
pi@raspberrypi:~ $ sudomkdir/nas
然后添加下面這行來(lái)掛載設(shè)備 /etc/auto.master
:
/nas /etc/auto.usb
如果不存在以下內(nèi)容,則創(chuàng)建 /etc/auto.usb
,然后重新啟動(dòng) autofs 服務(wù):
data -fstype=ext4,rw :/dev/disk/by-label/data
backup -fstype=ext4,rw :/dev/disk/by-label/backup
pi@raspberrypi3:~ $ sudo service autofs restart
現(xiàn)在你應(yīng)該可以分別訪問(wèn) /nas/data
以及 /nas/backup
磁盤(pán)了。顯然,到此還不會(huì)令人太興奮,因?yàn)槟阒皇遣脸舜疟P(pán)中的數(shù)據(jù)。不過(guò),你可以執(zhí)行以下命令來(lái)確認(rèn)設(shè)備是否已經(jīng)掛載成功:
pi@raspberrypi3:~ $ cd/nas/data
pi@raspberrypi3:/nas/data $ cd/nas/backup
pi@raspberrypi3:/nas/backup $ mount
<...>
/etc/auto.usb on /nas type autofs (rw,relatime,fd=6,pgrp=463,timeout=300,minproto=5,maxproto=5,indirect)
<...>
/dev/sda1 on /nas/data type ext4 (rw,relatime,data=ordered)
/dev/sdb1 on /nas/backup type ext4 (rw,relatime,data=ordered)
首先進(jìn)入對(duì)應(yīng)目錄以確保 autofs 能夠掛載設(shè)備。autofs 會(huì)跟蹤文件系統(tǒng)的訪問(wèn)記錄,并隨時(shí)掛載所需要的設(shè)備。然后 mount
命令會(huì)顯示這兩個(gè) USB 磁盤(pán)驅(qū)動(dòng)器已經(jīng)掛載到我們想要的位置了。
設(shè)置 autofs 的過(guò)程容易出錯(cuò),如果第一次嘗試失敗,請(qǐng)不要沮喪。你可以上網(wǎng)搜索有關(guān)教程。
掛載網(wǎng)絡(luò)存儲(chǔ)
現(xiàn)在你已經(jīng)設(shè)置了基本的網(wǎng)絡(luò)存儲(chǔ),我們希望將它安裝到遠(yuǎn)程 Linux 機(jī)器上。這里使用 NFS 文件系統(tǒng),首先在樹(shù)莓派上安裝 NFS 服務(wù)器:
pi@raspberrypi:~ $ sudo apt install nfs-kernel-server
然后,需要告訴 NFS 服務(wù)器公開(kāi) /nas/data
目錄,這是從樹(shù)莓派外部可以訪問(wèn)的唯一設(shè)備(另一個(gè)用于備份)。編輯 /etc/exports
添加如下內(nèi)容以允許所有可以訪問(wèn) NAS 云盤(pán)的設(shè)備掛載存儲(chǔ):
/nas/data *(rw,sync,no_subtree_check)
更多有關(guān)限制掛載到單個(gè)設(shè)備的詳細(xì)信息,請(qǐng)參閱 man exports
。經(jīng)過(guò)上面的配置,任何人都可以訪問(wèn)數(shù)據(jù),只要他們可以訪問(wèn) NFS 所需的端口:111
和 2049
。我通過(guò)上面的配置,只允許通過(guò)路由器防火墻訪問(wèn)到我的家庭網(wǎng)絡(luò)的 22 和 443 端口。這樣,只有在家庭網(wǎng)絡(luò)中的設(shè)備才能訪問(wèn) NFS 服務(wù)器。
如果要在 Linux 計(jì)算機(jī)掛載存儲(chǔ),運(yùn)行以下命令:
you@desktop:~ $ sudomkdir/nas/data
you@desktop:~ $ sudomount-t nfs <raspberry-pi-hostname-or-ip>:/nas/data /nas/data
同樣,我建議使用 autofs 來(lái)掛載該網(wǎng)絡(luò)設(shè)備。如果需要其他幫助,請(qǐng)參看 如何使用 Autofs 來(lái)掛載 NFS 共享。
現(xiàn)在你可以在遠(yuǎn)程設(shè)備上通過(guò) NFS 系統(tǒng)訪問(wèn)位于你樹(shù)莓派 NAS 云盤(pán)上的數(shù)據(jù)了。在后面一篇文章中,我將介紹如何使用 rsync
自動(dòng)將數(shù)據(jù)備份到第二個(gè) USB 磁盤(pán)驅(qū)動(dòng)器。你將會(huì)學(xué)到如何使用 rsync
創(chuàng)建增量備份,在進(jìn)行日常備份的同時(shí)還能節(jié)省設(shè)備空間。
via: https://opensource.com/article/18/7/network-attached-storage-Raspberry-Pi
作者:Manuel Dewald 選題:lujun9972 譯者:jrg 校對(duì):wxy
本文由 LCTT 原創(chuàng)編譯,Linux中國(guó) 榮譽(yù)推出