简介
我们在在自建NAS的时候,通常最需要关注的除了品牌、功能、性能、扩展性、还有最重要的就是数据安全性。在我们正常使用nas的过程中,为了保护数据安全通常有以下几种方式:
RAID备份:RAID(冗余独立磁盘阵列)是一种常见的NAS数据备份方式,常见的有RAID 0、RAID 1、RAID 5、RAID6、RAID10、RAID60等。
外部硬盘备份:你可以定期将NAS上的重要数据复制到外部硬盘上,如果NAS出现问题,你还可以从外部硬盘恢复数据。
网络备份:如果你有两台NAS,可以设置一台为主NAS,另一台为备份NAS,主NAS定期将数据备份到备份NAS上。
云备份:许多NAS支持与云存储服务(如Google Drive、Dropbox等)同步,你可以将重要数据定期备份到云端,以防止本地灾难性故障。
快照备份:某些高级NAS设备支持快照功能,可以在数据发生变化时自动保存数据状态,如果误删除或修改文件,可以通过快照恢复数据。
通常用的最多的方式就是使用raid或者使用单独的硬盘进行数据备份。不同raid方式的对比如下:
RAID 0:
数据分布方式:数据被分割成多个块,并在多个磁盘上交替存储(条带化)。
数据保护:不提供冗余性,如果任何一个磁盘故障,整个阵列的数据都会丢失。
性能:提供了最高的性能,因为数据可以同时从多个磁盘读取或写入。
存储效率:不提供冗余,所以存储效率是最低的。
RAID 1:
数据分布方式:数据被完全镜像到多个磁盘上。
数据保护:提供了最高级别的冗余性,任何一个磁盘故障都不会导致数据丢失。
性能:读性能较高,写性能与单个磁盘相当。
存储效率:存储效率为50%,因为数据被完全复制到多个磁盘上。
RAID 5:
数据分布方式:数据和奇偶校验信息交错存储在多个磁盘上。
数据保护:提供了一定程度的冗余性,可以容忍单个磁盘的故障。
性能:读性能较高,写性能受到奇偶校验计算的影响。
存储效率:存储效率较高,其中一块磁盘的空间用于存储奇偶校验信息。
RAID 6:
数据分布方式:类似于RAID 5,但使用了两个奇偶校验信息,分别存储在不同的磁盘上。
数据保护:提供了更高级别的冗余性,可以容忍两个磁盘的故障。
性能:读性能较高,写性能相对于RAID 5更受影响。
存储效率:存储效率较高,但比RAID 5略低,因为需要额外的奇偶校验信息存储空间。
RAID 10(也称为RAID 1+0):
数据分布方式:数据首先被镜像到多组磁盘上,然后这些镜像组之间进行条带化。
数据保护:提供了较高级别的冗余性,可以容忍多个磁盘的故障。
性能:提供了很好的读/写性能,尤其适用于IO密集型工作负载。
存储效率:存储效率较低,只有RAID 1的一半,因为数据被完全复制到多个磁盘上。
RAID 50:
数据分布方式:类似于RAID 5,但在RAID 5的基础上使用了条带化来提高性能。
数据保护:提供了一定程度的冗余性,可以容忍单个磁盘的故障。
性能:提供了较高的读/写性能,尤其适用于需要高性能和容错的环境。
存储效率:存储效率较高,但比单独的RAID 5或RAID 10低。
RAID 60:
数据分布方式:类似于RAID 6,但在RAID 6的基础上使用了条带化来提高性能。
数据保护:提供了更高级别的冗余性,可以容忍多个磁盘的故障。
性能:提供了较高的读/写性能,尤其适用于需要高性能和高冗余性的环境。
存储效率:存储效率较高,但比单独的RAID 6低。
使用单独空间进行备份的特点
成本效益: 单独空间备份(存储池/单独硬盘/外置空间等)通常是成本效益最高的备份解决方案之一,价格相对较低。
易于设置和使用: 单独空间备份通常只需要简单地连接到计算机或设备上,并通过备份软件或操作系统的内置功能进行配置。
移动性: 如果使用外部硬盘备份通常是便携式的,可以轻松携带到不同的地方。这使得备份数据和存储数据分离,从而提高了数据的安全性。
离线备份: 单独空间备份提供了离线备份的选项,这意味着备份数据不受网络攻击或网络连接问题的影响。这可以提供额外的安全性和保护。
缺点:
容量限制: 单独空间备份的容量通常根据使用的方式可能有所限制,存储池的可能大点,如果是单独外置硬盘或者u盘空间会较小,可能无法满足大量数据的备份需求。如果数据量增长很快,可能需要购买更大容量的硬盘或者多个硬盘进行备份。
人为错误风险: 外部硬盘备份需要手动进行,容易受到人为错误的影响。如果用户忘记定期备份或者不小心删除了备份数据,可能会导致数据丢失。
安全性: 外部硬盘备份的安全性取决于用户如何管理和存储备份硬盘。如果备份硬盘丢失或被盗,备份数据可能会遭受损失或泄露的风险。
单点故障: 单独硬盘备份存在单点故障的风险。如果备份硬盘发生故障,可能会导致备份数据无法访问或丢失。因此,建议定期检查备份硬盘的健康状态,并考虑使用多个备份硬盘轮换备份。
备份方式的选择
上面我们介绍了常用的几种备份方式和其特点。如果是企业级nas或者数据存储,对于数据的可靠性要求较高,可以使用多种备份方式并存的方式。这里我们只展开家用nas的数据备份方式的理想选择。
在我们购买家用nas的时候,开销最大的就是两个,一个是nas机器的成本,还有一个就是硬盘的成本。所以在家用nas中,硬盘的成本会是一个非常重要的衡量nas效率的指标。那么如何选择家用nas的备份方式,就会对成本造成直接影响。
通常我们选择nas的备份方式的时候,都是一raid为主,因为这是所有成品nas都支持的备份方式,自建nas如果主板支持硬件的raid或者有raid卡,也会配置raid进行数据的安全保护。如果自建nas主板不支持硬件raid那么需要raid的话,还需要使用软raid,例如使用truenas的时候,可以用zfs。最关键的是raid不是万能的,它只是一种冗余机制,尤其是家用环境下,使用大容量磁盘做raid后,当某块磁盘故障时,raid进行重建,其数据丢失风险非常高。因为使用大容量磁盘进行raid重建时,需要花费的时间将会随着硬盘的增大而变得非常漫长。在这个过程中,如果出现断电、其他硬盘故障等会对raid重建造成非常严重的影响,所以重要数据还是需要多种备份方式并存。
家用nas数据存储和备份的最佳选择
为了最大化的利用磁盘空间降低成本保障数据的安全性,我目前使用的nas最高效最低成本的数据存储和备份方式如下:
存储:使用多块磁盘组成一个存储池pool(不是raid),该存储池不做任何冗余机制,任何一块磁盘损坏,只影响该磁盘上的数据,不影响其他磁盘的数据,其他磁盘的数据依旧可以访问。但是所有磁盘对外呈现一个存储池,可以挂载在同一个目录下。该存储方式可以参考虚拟存储(Linux挂载点合并)。
备份:使用脚本周期性的进行增量备份,只对重要数据进行备份(如果自己的备份空间足够大可以进行全量备份),备份数据存储在单独的存储空间(根据自己的需求,可以存储在另一个单独的硬盘或者u盘)。
备份工具和测试
备份工具为我自己写的一个备份脚本,通过脚本来实现备份功能。
#!/bin/bash
SNAPSHOT=/backup/snap/backup-snap.file #备份是进行对比的镜像文件,我这里使用的是增量备份方式
SOURCE=/home/op/test1 #要备份的目录,可以根据自己的需求进行修改
DESTINATION=/backup/test1/backup-$(date +%Y%m%d%H%M%S).tar.gz #备份到的位置,我后面使用的是gz压缩方式,也可以根据自己的需求和设备性能修改压缩方式,可以修改为bz2或者xz。
LOGFILE=/backup/backuplog/logfile.log #备份结果的日志存储位置,这个自己可以结合其他的日志告警功能增加提示,可以知道备份成功的状态。需要自己根据自己的需求进行自定义。
if [ ! -f $SNAPSHOT ]; then
tar -cpzf $DESTINATION -g $SNAPSHOT $SOURCE
else
tar -cpzf $DESTINATION -G -g $SNAPSHOT $SOURCE
fi
if [ $? -eq 0 ]; then
echo "$(date): Backup succeeded!" >> $LOGFILE
else
echo "$(date): Backup failed!" >> $LOGFILE
fi
测试
我在自己的家目录中创建一个test1目录,该目录是我需要备份的目录
备份
查看备份结果
进行增量备份
再次进行备份
备份恢复
#!/bin/bash
RESTORE_DIR=/backup/restore2/
for file in $(ls /backup/test1/*.tar.gz | sort); do
pv $file | tar -xzf - -C $RESTORE_DIR
done
#注意,因为是增量备份,所以恢复的时候需要从第一个备份文件逐次开始恢复
查看数据
设置周期性备份
设置crontab,通过周期性执行脚本功能,对数据进行周期性备份。
当你使用 crontab -e 命令编辑 crontab 时,你需要了解一些 crontab 的基本参数:
分钟(minute):表示小时中的分钟数,范围为 0 到 59。
小时(hour):表示一天中的小时数,范围为 0 到 23。
日期(day of month):表示一个月中的日期,范围为 1 到 31。
月份(month):表示一年中的月份,范围为 1 到 12。
星期几(day of week):表示一周中的某一天,范围为 0 到 7(0 和 7 都表示周日)。
除了上述的数字表示之外,还可以使用一些特殊字符来表示特定的时间点:
*:代表所有可能的值。例如,* 在分钟字段中表示每分钟都执行。
/:用于指定间隔值。例如,*/5 表示每隔 5 个单位执行一次。
,:用于列出多个值。例如,1,3,5 表示分别在第 1、3 和 5 分钟执行。
-:用于指定一个范围。例如,1-5 表示 1 到 5 分钟。
总结
以上我自己家用nas数据存储和备份方式的全部过程。整个过程没有使用raid,可以最大程度节约硬盘空间和磁盘利用率,保护重要数据不丢失。不需要其他额外的插件,可以将数据周期性备份至自己需要备份的位置,简单高效。