raspberry pi_使用Raspberry Pi构建网络连接的存储设备

raspberry pi

在这个由三部分组成的系列文章中,我将解释如何设置一个简单,有用的NAS(网络附加存储)系统。 我使用这种设置将文件存储在中央系统上,并每晚自动创建增量备份。 要将磁盘安装在位于同一网络中的设备上,需要安装NFS。 要离线访问文件并与朋友共享,我使用Nextcloud

本文将介绍将数据磁盘安装在远程设备上的软件和硬件的基本设置。 在第二篇文章中,我将讨论备份策略并设置cron作业以创建每日备份。 在第三篇也是最后一篇文章中,我们将安装Nextcloud,这是一种工具,可用于通过脱机以及使用Web界面在线同步设备的文件访问。 它支持多个用户和公共文件共享,因此您可以与朋友共享图片,例如,通过发送受密码保护的链接。

我们系统的目标架构如下所示:

raspberry pi nas_part1.png

硬件

让我们开始使用所需的硬件。 您可能会想出一个不同的购物清单,因此请考虑以下示例。

Raspberry Pi 3提供了计算能力, Raspberry Pi 3带有四核CPU,千兆字节的RAM和(有点)快速以太网。 数据将存储在两个USB硬盘驱动器(我使用1-TB磁盘)上; 一个用于日常流量,另一个用于存储备份。 确保使用活动的USB硬盘驱动器或带有额外电源的USB集线器,因为Raspberry Pi无法为两个USB驱动器供电。

软件

Raspbian ,非常适合自定义项目。 有很多指南可以解释如何在Raspberry Pi上安装Raspbian,因此在此不再赘述。 在撰写本文时,最新的官方支持版本是Raspbian Stretch ,对我来说效果很好。

至此,我假设您已经配置了基本的Raspbian,并且能够通过ssh连接到Raspberry Pi。

准备USB驱动器

为了获得读写USB硬盘的良好性能,我建议使用ext4对其进行格式化。 为此,您必须首先找出将哪些磁盘连接到Raspberry Pi。 您可以在/dev/sd/<x>找到磁盘设备 。 使用命令fdisk -l ,可以找出刚连接的两个USB驱动器。 请注意,按照以下步骤操作后,USB驱动器上的所有数据都会丢失。


   
   
pi @ raspberrypi:~ $ sudo fdisk -l

< ... >

Disk / dev / sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size ( logical / physical ) : 512 bytes / 512 bytes
I / O size ( minimum / optimal ) : 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe8900690

Device     Boot Start        End    Sectors   Size Id Type
/ dev / sda1         2048 1953525167 1953523120 931.5G 83 Linux


Disk / dev / sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size ( logical / physical ) : 512 bytes / 512 bytes
I / O size ( minimum / optimal ) : 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6aa4f598

Device     Boot Start        End    Sectors   Size Id Type
/ dev / sdb1   *     2048 1953521663 1953519616 931.5G   83 Linux

由于这些设备是Raspberry Pi附带的唯一1TB磁盘,因此我们可以很容易地看到/dev/sda/dev/sdb是两个USB驱动器。 每个磁盘末尾的分区表显示了执行以下步骤后的外观,这些步骤创建了分区表并格式化了磁盘。 为此,通过第二次将sda替换为sdb来对两个设备中的每一个重复以下步骤(假设您的设备在fdisk中也被列为/dev/sda/dev/sdb )。

首先,删除磁盘的分区表,然后创建一个仅包含一个分区的新分区表。 在fdisk ,您可以使用交互式单字母命令来告诉程序该怎么做。 只需将它们插入在Command (m for help):如下(您也可以随时使用m命令以获取更多信息):


   
   
pi @ raspberrypi:~ $ sudo fdisk / 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 , default 1 ) :
First sector ( 2048 - 1953525167 , default 2048 ) :
Last sector, +sectors or + size { K,M,G,T,P } ( 2048 - 1953525167 , default 1953525167 ) :

Created a new partition 1 of type 'Linux' and of size 931.5 GiB.

Command ( m for help ) : p

Disk / dev / sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size ( logical / physical ) : 512 bytes / 512 bytes
I / O size ( minimum / optimal ) : 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9c310964

Device     Boot Start        End    Sectors   Size Id Type
/ dev / sda1         2048 1953525167 1953523120 931.5G 83 Linux

Command ( m for help ) : w
The partition table has been altered.
Syncing disks.

现在,我们将使用ext4文件系统格式化新创建的分区/dev/sda1


   
   
pi @ raspberrypi:~ $ sudo mkfs.ext4 / dev / sda1
mke2fs 1.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

重复上述步骤后,让我们根据新分区在系统中的使用来标记它们:


   
   
pi @ raspberrypi:~ $ sudo e2label / dev / sda1 data
pi @ raspberrypi:~ $ sudo e2label / dev / sdb1 backup

现在让我们挂载那些磁盘以存储一些数据。 根据运行此设置超过一年的经验,我发现Raspberry Pi引导时(例如断电后)并不总是可以挂载USB驱动器,因此我建议在以下情况下使用autofs挂载它们:需要。

首先安装autofs并创建存储的安装点:


   
   
pi @ raspberrypi:~ $ sudo apt install autofs
pi @ raspberrypi:~ $ sudo mkdir / nas

然后通过/etc/auto.master下行添加到/etc/auto.master来挂载设备:

 / nas    / etc / auto . usb 

创建文件/etc/auto.usb如果不存在),并包含以下内容,然后重新启动autofs服务:


   
   
data -fstype =ext4,rw : / dev / disk / by-label / data
backup -fstype =ext4,rw : / dev / disk / by-label / backup
 pi@raspberrypi3:~ $ sudo service autofs restart 

现在,您应该能够分别访问/nas/data/nas/backup的磁盘。 显然,由于您只是擦除了磁盘上的所有数据,因此内容不会太令人激动。 但是,您应该能够通过执行以下命令来验证设备是否已安装:


   
   
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 )

首先进入目录,以确保autofs挂载设备。 Autofs跟踪对文件系统的访问,并在旅途中挂载所需的设备。 然后mount命令显示两个设备实际上已安装在我们想要的位置。

设置autofs有点容易出错,因此如果第一次尝试安装不起作用,请不要感到沮丧。 给它另一个机会,搜索更多详细的资源(在线上有很多文档),或发表评论。

挂载网络存储

现在您已经设置了基本的网络存储,我们希望将其安装在远程Linux机器上。 我们将为此使用网络文件系统(NFS)。 首先,在Raspberry Pi上安装NFS服务器:

 pi @ raspberrypi:~ $ sudo apt install nfs-kernel-server 

接下来,我们需要告诉NFS服务器公开/nas/data目录,这是从Raspberry Pi外部可访问的唯一设备(另一个将仅用于备份)。 要导出目录,请编辑文件/etc/exports并添加以下行,以允许所有有权访问NAS的设备挂载存储:

 / nas / data * ( rw, sync ,no_subtree_check ) 

有关将安装限制为单个设备等的更多信息,请参阅man exports 。 在上面的配置中,任何人只要能够访问NFS所需的端口: 1112049 ,就可以安装您的数据。 我使用上面的配置,并且只允许使用路由器防火墙访问端口22和443的我的家庭网络。 这样,只有家庭网络中的设备才能访问NFS服务器。

要将存储安装在Linux计算机上,请运行以下命令:


   
   
you @ desktop:~ $ sudo mkdir / nas / data
you @ desktop:~ $ sudo mount -t nfs < raspberry-pi-hostname-or-ip > : / nas / data / nas / data

同样,我建议使用autofs挂载此网络设备。 要获得更多帮助,请查看如何使用autofs挂载NFS共享

现在,您可以使用NFS挂载从远程设备访问存储在自己的RaspberryPi驱动的NAS上的文件。 在本系列的下一部分中,我将介绍如何使用rsync将数据自动备份到第二个硬盘驱动器。 为了在仍然进行日常备份的同时节省设备空间,您将学习如何使用rsync创建增量备份。

翻译自: https://opensource.com/article/18/7/network-attached-storage-Raspberry-Pi

raspberry pi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值