按照这些分步说明构建您自己的基于RaspberryPi的NAS系统。我将在接下来的三篇文章中介绍如何搭建一个简单实用的NAS云盘系统。我把数据存储在这个集中存储系统里,让它每晚自动备份增量数据。本系列文章将使用NFS文件系统将磁盘挂载到同一网络下的不同设备上,使用Nextcloud离线访问和共享数据。本文主要介绍将数据盘挂载到远程设备的软硬件步骤。本系列的第二篇文章将讨论数据备份策略以及如何添加定时备份数据任务。***在一篇文章中,我们将安装Nextcloud软件,用户可以通过Nextcloud提供的web界面方便地离线或在线访问数据。本系列教程最终搭建的NAS云盘支持多用户操作、文件共享等功能,你可以通过它轻松共享数据。例如,您可以发送加密链接、与朋友分享您的照片等。最终的系统架构如下图所示:硬件首先需要准备硬件。本文列举的方案只是一个例子,您也可以根据不同的硬件方案进行选购。最重要的是RaspberryPi3,它具有四核CPU、1G内存和(相对)快速的网络接口。数据将存储在两个USB磁盘驱动器上(这里使用一个1TB的磁盘);一个磁盘用于日常数据存储,另一个用于数据备份。请务必使用带电源的USB磁盘驱动器或带有额外电源的USB集线器,因为RaspberryPi无法为两个USB磁盘驱动器供电。这个社区中最活跃的软件操作系统是Raspbian,这使得定制和个性化项目变得容易。关于如何在树莓派上安装Raspbian的操作指南已经有很多,这里不再赘述。在撰写本文时,最受官方支持的版本是RaspbianStretch,它对我来说效果很好。在这一点上,我假设您已经配置了一个基本的Raspbian系统并且可以通过ssh访问您的RaspberryPi。准备U盘为了更好的读写数据,我建议将U盘格式化为ext4文件系统。首先,你必须先找到树莓派连接的磁盘。您可以在/dev/sd/中找到磁盘设备。使用命令fdisk-l,可以找到刚才连接的两个U盘。请注意,按照以下步骤操作将清除U盘上的所有数据,请做好备份。pi@raspberrypi:~$sudofdisk-l<...>Disk/dev/sda:931.5GiB,1000204886016bytes,1953525168sectorsUnits:sectorsof1*512=512bytesSectorsize(logical/physical):512bytesI/512bytes/O大小(最小/最佳):512字节/512字节磁盘标签类型:dosDisk标识符:0xe8900690DeviceBootStartEndSectorsSizeIdType/dev/sda1204819535251671953523120931.5G83LinuxDisk/dev/sdb:931.5GiB,48501910,485015字节sectorsUnits:扇区1*512=512字节扇区大小(逻辑/物理):512字节/512字节I/O大小(最小/最佳):512字节/512字节磁盘标签类型:dosDisk标识符:0x6aa4f598TypeIdectBootSartizeEndSdev/sdb1*204819535216631953519616931.5G83Linux由于这些设备是唯一连接到RaspberryPi的1TB磁盘,我们可以很容易地将/dev/sda和/dev/sdb识别为两个USB磁盘驱动程序。每个磁盘末尾的分区表显示了按照格式化磁盘和创建分区表的步骤后要查找的位置。每个U盘按照下面的步骤操作(假设你的盘也是/dev/sda和/dev/sdb,第二次你只要把命令中的sda换成sdb就可以了)。首先,删除磁盘分区表,新建一个只有一个分区的分区表。在fdisk中,您可以使用交互式单字母命令来告诉程序您要做什么。在提示符后面输入相应的字母即可Command(mforhelp):(可以使用m命令获取更详细的信息):pi@raspberrypi:~$sudofdisk/dev/sdaWelcometofdisk(util-linux2.29.2)。更改将只保留在内存中,直到您决定写入它们。使用写入命令之前要小心。命令(m求助):oCreated一个新的DOS磁盘标签,磁盘标识符为0x9c310964。命令(m求助):nPartition类型pprimary(0primary,0extended,4free)eextended(containerforlogicalpartitions)Select(defaultp):pPartitionnumber(1-4,default1):Firstsector(2048-1953525167,default2048):最后一个扇区,+sectorsor+size{K,M,G,T,P}(2048-1953525167,default1953525167):Createdanewpartition1oftype'Linux'andofsize931.5GiB.Command(mforhelp):pDisk/dev/sda:931.5GiB,1000204886016字节,1953525168扇区单位:1*512=512字节的扇区扇区大小(逻辑/物理):512字节/512字节类型:dosDiskidentifier:0x9c310964DeviceBootStartEndSectorsSizeIdType/dev/sda1204819535251671953523120931.5G83LinuxCommand(mforhelp):wThepartitiontablehasbeenaltered.Syncingdisks.现在,我们将格式化新创建的分区/dev/sda1:pi@raspberrypi:~$sudomkfs.ext4/dev/sda1mke2fs1.43.4(31-Jan-2017)Discardingdeviceblocks:done<...>Allocatinggrouptables:doneWritinginodetables:doneCreatingjournal(1024blocks):doneWritingsuperblocksandfilesystemaccountinginformation:done重复上述步骤后,让我们根据它们的用途为它们创建标签:pi@raspberrypi:~$sudoe2label/dev/sda1datapi@raspberrypi:~$sudoe2label/dev/sdb1backup现在,让我们挂载这些磁盘并存储一些数据根据我运行这个系统一年多的经验,当树莓派开机时,USB磁盘驱动器并不总是挂载(例如断电后),所以我建议在需要时使用autofs挂载。首先,安装autofs并创建一个挂载点:pi@raspberrypi:~$sudoaptinstallautofspi@raspberrypi:~$sudomkdir/nas然后添加以下行来挂载设备/etc/auto.master:/nas/etc/auto.usb如果以下内容不存在,创建/etc/auto.usb,然后重启autofs服务:data-fstype=ext4,rw:/dev/disk/by-label/databackup-fstype=ext4,rw:/dev/disk/by-label/backuppi@raspberrypi3:~$sudoserviceautofsrestart您现在应该能够分别访问/nas/data和/nas/backup磁盘。显然,此时并不太令人兴奋,因为您只是从磁盘上擦除数据。不过可以执行以下命令确认设备是否挂载成功:pi@raspberrypi3:~$cd/nas/datapi@raspberrypi3:/nas/data$cd/nas/backuppi@raspberrypi3:/nas/backup$mount<...>/etc/auto.usbon/nastypeautofs(rw,relatime,fd=6,pgrp=463,timeout=300,minproto=5,maxproto=5,indirect)<...>/dev/sda1on/nas/datatypeext4(rw,relatime,data=ordered)/dev/sdb1on/nas/backuptypeext4(rw,relatime,data=ordered)首先进入对应目录,保证autofs可以挂载装置。autofs跟踪文件系统访问记录并随时挂载所需的设备。然后mount命令将显示两个USB磁盘驱动器已安装到我们想要的位置。设置autofs的过程很容易出错,如果第一次尝试失败,请不要气馁。可以上网搜索教程。安装网络存储现在您已经有了基本的网络存储设置,我们要将它安装到远程Linux机器上。这里使用NFS文件系统,首先在树莓派上安装NFS服务器:pi@raspberrypi:~$sudoaptinstallnfs-kernel-server然后,需要告诉NFS服务器暴露/nas/data目录,这是树莓派外部唯一可以访问的设备(另一个用于备份)。编辑/etc/exports并添加以下内容,以允许所有可以访问NAS云盘的设备挂载存储:/nas/data*(rw,sync,no_subtree_check)有关限制挂载到单个设备的更多详细信息,请参阅manexports.经过上面的配置,任何人都可以访问数据,只要能访问NFS需要的端口:111和2049。通过上面的配置,我只允许通过路由器防火墙访问我家网络的22和443端口。这样,只有家庭网络上的设备才能访问NFS服务器。要在Linux计算机上安装存储,请运行以下命令:you@desktop:~$sudomkdir/nas/datayou@desktop:~$sudomount-tnfs:/nas/data/nas/data同样,我推荐使用autofs挂载网络设备。如果您需要其他帮助,请参阅如何使用Autofs挂载NFS共享。现在您可以通过远程设备上的NFS系统访问位于您的树莓派NAS云磁盘上的数据。在以后的文章中,我将向您展示如何使用rsync自动将数据备份到第二个USB磁盘驱动器。您将学习如何使用rsync创建增量备份,从而在进行日常备份时节省设备空间。