raspberry pi
在这个由三部分组成的系列文章中,我将解释如何设置一个简单,有用的NAS(网络附加存储)系统。 我使用这种设置将文件存储在中央系统上,并每晚自动创建增量备份。 要将磁盘安装在位于同一网络中的设备上,需要安装NFS。 要离线访问文件并与朋友共享,我使用Nextcloud 。
本文将介绍将数据磁盘安装在远程设备上的软件和硬件的基本设置。 在第二篇文章中,我将讨论备份策略并设置cron作业以创建每日备份。 在第三篇也是最后一篇文章中,我们将安装Nextcloud,这是一种工具,可用于通过脱机以及使用Web界面在线同步设备的文件访问。 它支持多个用户和公共文件共享,因此您可以与朋友共享图片,例如,通过发送受密码保护的链接。
我们系统的目标架构如下所示:
硬件
让我们开始使用所需的硬件。 您可能会想出一个不同的购物清单,因此请考虑以下示例。
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所需的端口: 111
和2049
,就可以安装您的数据。 我使用上面的配置,并且只允许使用路由器防火墙访问端口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