
本文是有关构建NAS的系列文章的一部分,是针对特定类型的系统编写的。
备份是我要使用NAS解决的第二项主要任务,仅次于存储库管理系统 。
她的决定拖延了...
关于此主题的文章很多,甚至几本书也已经写好了,而且许多副本在关于此的争议中被打破。
下面是尝试找出这堆材料,将其放在您的脑海中,并比较有能力地构建一个小型系统的尝试。
备份系统(SRK)由以下各项确定:
- 备份策略。 该策略根据每个备份系统的威胁列表确定备份的主要目的和目标以及对备份的要求,并说明其必要性。
- 基于策略的备份规则。 该法规描述了负责备份的备份和恢复算法,备份的存储条件等。
- 工具实施。 实际上是软件和硬件。
常规备份过程分为以下主要部分:
系统与NAS平台的接口点:
tank0/apps/backup
- tank0/apps/backup
存储。tank1/apps/backup
- tank1/apps/backup
存储。https://backup.NAS.cloudns.cc
://backup.NAS.cloudns.cc-基于Web的系统界面。
备份存储库是单独的文件系统 。
这是必要的,因为它们的选项与普通文件系统以及它们之间的选项可能非常不同。
例如,如有必要,可以启用通过FS进行的重复数据删除,并可以禁用压缩。
备份原则

值得理解的是,尽管我在这里描述的是为小型网络的需求量身定制的特殊备份案例,但是原理,观察和模式无处不在。
在简单的情况下,其中一些可以忽略,但是希望知道。
这些原则基于政策和法规。
这里有一些基本的:
- 3-2-1 。 至少以三种存储格式进行三个备份,其中至少一个必须存储在物理上分开的位置。 希望遵守该原理。 就我而言,该原则已部分实施。 首先,在三种不同的机器上部分复制了数据:NAS,办公电脑和笔记本电脑。 其次,计划复制到云。
- 检查已复制的内容 。 否则,可能会在关键时刻无法恢复数据。 在恢复过程中进行更好的检查。
- 使用正确的工具完成任务 。 复制一组虚拟机时,使用计算机上的代理复制文件的系统可能效果不佳。 专用软件将更快地复制机器资源,并且成本更低。 该工具可靠且简单很重要。 IBS不是您通常想了解的东西。
- 最好复制所有内容,但多余的显然是例外 。 或者说“超越不如不要超越”。 可以排除掉多余的文件,但是如果使用反向策略,则可能无法恢复您忘记明确指定的有价值的文件。
- 应该可以快速选择和还原数据 。 建议“单击一次”,而不要等待一个小时。 正式地,您需要具有可接受的低RTO和足够的RPO。 如果IBS允许您还原意外删除的内容,并从多个版本中进行选择,而不仅仅是从最新版本中进行选择(例如,如果已损坏,因为不排除逻辑错误),这将非常方便。
在文章的末尾,有指向您可以研究的资源的链接,以使您更加全面地了解这些要点,并了解其他内容。
备份政策
显然,任何备份的目的都是为了减少紧急情况下计划外数据销毁的成本。
这是通过将有价值的数据从工作机复制到第三方存储来实现的。
备份任务
为备份目的定义了以下任务:
- 突出显示目标数据。
- 保存指定的数据以用于后续恢复。
- 恢复保存的数据。
- 确保存储数据的稳定性以进行更改和销毁。
- 区分访问存储的数据。
- 提供系统控制和备份过程。
系统要求
此外,在列表中,功能需求和非功能需求混合在一起:
- 备份应执行:
- 每天至少应提供1次数据备份,深度为1个月。 拍摄快照以及在工作机器上使用系统的先前版本的实践表明,这对我来说已经足够。
- 每1 GB数据恢复时间不应超过2分钟(网络带宽限制为每1 GB 81 s。)。 考虑到LAN带宽和磁盘速度作为限制因素。
- 所有通道都必须加密。 可以保存敏感数据,例如在线服务中的授权数据。
- 应该可以使用用户计算机上的密钥对用户备份进行加密,而不必在服务器上进行解密。 这很重要,因为根本不需要用户信任服务器。
- 不完整的复制应该不会花费太多时间,例如,超过30分钟。 Internet用于从笔记本电脑复制数据。
- 通过备份的加密,应该存在将副本复制到云的潜力(灵活地为特定的云存储配置复制的能力)。 这也是“ 3-2-1原则”的后果之一。
- 应该有一个简单的集中式管理,并集成到Web界面中。
- 服务器上的最少改进和复杂设置。
预留资源组成
就我而言,这很典型:
- 主要工作机。 台式计算机。
- 移动工作机。 笔记本电脑。
- 局域网路由器。 它存储网络设置,其中可以包含用于Internet连接和某些服务的登录名和密码。
- NAS 是的,NAS配置也是冗余的。 尽管大多数FS都有快照。
威胁构成
这是在什么地方,什么地方以及什么地方应该以什么方式受到保护。
移动计算机的所有主要威胁都重复了对固定计算机的威胁。
从这个角度来看,平板电脑实际上与移动电话没有区别。
附加保单条款
建议考虑以下因素:
- 应该执行定期的恢复测试。
- 故障恢复程序应形成文件。
- 如果发生二次故障,则应采取措施:恢复后,如果系统无法运行或无法恢复数据,该怎么办。
- 有必要测试恢复过程是否取决于特定设备
(在恢复时可能会失败)。 在我的情况下,我将不进行检查,仅限于基本系统检查。 - 如果您具有完整的系统备份,则必须在进行实质性升级后立即备份。
- 如果增量备份的累积量超过了完整备份量,则进行计划外的完整备份是合理的。 也就是说,在这种情况下,应增加创建完整备份的频率。
我没有考虑到策略的最后一点,因为通常我的工作流不会改变,仅在初始设置时就足以监视一段时间。
从经验上看,发现“月,周,日,小时”方案对我来说很好。
对于大型系统,可能需要动态更改每个系统的备份频率。
备份规定
在制定政策之后,可以直接着手制定法规。
在一般情况下,可能会有一些规定:一般,针对IBS管理员,针对用户,对于负责存储的人员,对于目标系统的管理员等...
但是在小型系统中,通常是一个人,因此只有一个规则。
法规目标
- 定义数据备份过程。
- 定义数据恢复过程。
- 定义系统运行状况检查过程。
- 备份存储条件和介质要求。
- 简化工作。
规例
在剧透之下,您可以使用取自开源的Rosreestr规则示例来了解大型组织的规则。
Rosreestr法规。ROSRESTR区域部门中的数据备份规则
目录
- 一般规定
- 备份顺序。
- 监控结果。
- 监管支持。
- 备份媒体的轮换。
- 从备份还原信息。
- 附录1
- 附录2负责备份的人员清单。
1个一般
该法规规定了组织对存储在Rosreestr的地域性服务器上的数据库中的程序和数据进行备份(恢复)以及备份硬件的基本要求。
本法规旨在:
- 确定需要强制备份的信息类别;
- 确定由于硬件或软件的故障或故障,用户错误,紧急情况(火灾,自然灾害等)而导致信息的全部或部分丢失时,备份数据的程序,以便随后恢复信息系统的性能;
- 确定在有这种需要时恢复信息的程序;
- 简化工作并确定与备份和恢复信息有关的官员的责任。
备份信息是指创建Office的生产数据库的完整副本,以便在紧急情况下导致数据损坏或丢失的情况下,快速恢复企业AIS“司法”统一状态登记册的信息管理系统。
该办公室所有领土部门的所有生产数据库都需要备份。
包含备份副本的计算机存储介质被分配了一个机密性标记,以使其中包含的信息的最高标记。
备份存储在服务器机房外部,限制了对备份的访问。 可访问数据的人员列表是根据信息技术(IS)负责人同意的信息技术(IT)负责人的书面申请形成的。 保留技术手段,阵列和存储介质的访问权是根据IT部门负责人同意的信息,根据IT部门负责人的申请进行更改的。 在检测到指定事件后的工作日内,将检测到的未经授权访问保留信息和硬件的尝试以及备份过程中发生的其他IS违规行为与服务说明一起报告给IS部门。
2备份顺序
备份是通过Oracle DBMS的常规方法进行的。 可以进行备份:
- 手动-负责备份的操作员启动Oracle导出过程(在附录1中启动该过程的示例)。
- 自动-操作系统会根据计划自动启动调用Oracle导出过程的可执行文件。
每天至少执行1次数据库备份。 备份数据库的存储期限至少为1个月。
备份策略应保证同步恢复位于不同数据库方案中的数据。 例如,应将HED方案(电子文档库)与AIS Justice方案同时复制。
备份系统的材料和技术手段应提供足够的性能,以按指定的时间间隔及时保存信息。 每天组织备份的人员监视备份所需的磁盘空间量的可用性。
3结果监测
所有备份程序的结果均由附录2中指定的负责人员进行监控,最多可在规定的日期(工作日)后的第10个工作日进行。
如果检测到错误,则负责监视结果的人员应在当前工作日的11小时内将其报告给开发人员的技术支持服务。
4法规支持
要组织备份过程,您必须:
- 定义负责执行备份过程和监视其结果的人员列表(附录2)。
- 准备并批准备份计划。
- 准备并批准有关任命负责备份数据的内部监管文件。
5旋转备份媒体
备份系统应具有定期替换(卸载)备份介质而不会丢失其信息的能力,并且还应确保在任何备份设备发生故障时恢复自动化系统的当前信息。 备份管理员应要求并在客户安全服务负责的员工在场的情况下(根据附录2),执行所有从备份系统加载,卸载媒体以及将媒体传输到安全服务(反之亦然)的过程。
作为新的载体,允许重新使用那些已包含信息的存储期限已过期的载体。
必须使用PGP软件擦除备份系统中不再使用的介质的机密信息。
如有必要,由备份中的数据恢复由附录2中指定的IT部门负责人员执行。
如果由于未经授权访问系统,暴露于病毒,软件错误,员工错误和硬件故障而导致备份丢失或违规,则会从备份中恢复数据。
系统软件和通用软件的恢复是根据制造商的说明从它们的介质中执行的。
根据安装或还原该软件的说明,从分发介质或其备份副本中还原专用软件。
与不断变化的数据库无关的信息将从备份介质中还原。 这将使用信息的最新副本。
如果部分违反或消失了数据库记录,则将从最近的未受干扰的每日副本执行恢复。 所有信息将从最后一个副本中恢复。
7附录1
从命令行启动Oracle导出实用程序的示例:
exp用户ID = JUST_USER /密码@服务器所有者=(JUST_USER,HED_USER)直接= Y一致= Y统计信息=无压缩= N文件= C:\ BACKUP.DMP日志= C:\ BACKUP.LOG
其中:
JUST_USER /密码@服务器-schema_owner_name /密码@ server_name;
owner =(JUST_USER,HED_USER)-复制的方案列表,在此示例中,同时导出AIS Justice方案和HED方案;
file = C:\ BACKUP.DMP-创建的导出文件的路径和名称;
log = C:\ BACKUP.LOG-创建的导出日志文件的路径和名称。
8附录2.负责备份的人员清单
在这里,您将找到另一个带有简短说明的示例。
预约程序
备份数据的组成:
- 工作机:
- 个人用户目录(
/home/*
)。 . - .
- , (
/opt
). - (
/etc
). - .
- .
- .
- .
- :
- NAS:
- :
:
- .
- , .
/etc/apt/apt.conf.d
, , .- Mikrotik .
- NAS .
:

:
, Debian ( Squeeze 2011 ), Slackware ReiserFS .
:
Mikrotik , RouterOS .
, .
, .
:
- Veeam , , . , Acronis, , .
- .
- .
.
, .
.Unix实用程序解决方案
基于rsync,tar,rdiff-backup等的解决方案 由于需要完成大量工作并且缺少必要的WEB界面,因此不考虑使用。

BareOS(开放式备份存档恢复)-自2010年以来Bacula的分支。
优点:
- 稳定的调试系统。
- 支持不同操作系统下的几种类型的代理。
- 它支持各种类型的备份:增量备份,差异备份,完整备份。
- WEB界面非常发达且功能强大。
- 灵活的配置。
- 有一个显示备份的FUSE驱动程序。
- Python有一个绑定,允许您与Director进行交互。
- 有用于备份特定应用程序的代理(例如,DBMS)。
- .
- .
缺点:

.
:
- .
- .
- Web-.
- .
- . , .
- .
- , SMB, rsync.
- Web-.
- , .
- , , .
- .
缺点:
- Perl, CPAN.
- , , .
, , , . , SSH , , , .. . - ( , ).

- .
:
- .
- Web-.
- .
- ( .. ).
- Windows, Linux, MacOS X.
- : , .
- .
- .
- (, Outlook, ).
- . , .
- (, ..) .
- .
- , .
- , .
- .
- Internet.
- (, ) .
- .
- (, USB ).
- .
- GUI .
缺点:
- Windows, , .
- NTFS.
- LDAP, , , AD .
.
:
- .
- .
- . , .
- / . . .
- . .
- .
- FUSE , host/.
缺点:
- Web- .
- RAM (~2.7GB 1TB).
- ACL .
- RAM .
- ( ).
- ( ). .
- restic.

.
:
- .
- .
- ( Python, C ).
- .
- : LZ4, zlib, LZMA.
- FUSE , .
- : Linux, macOS, BSD, etc.
- Web-, .
- .
缺点:
- Web- .
- Windows ( Linux subsystem cygwin).
, rsync.
:
- inotify fsevents . rsync .
- rsync.
- Lua, Lua.
- .
- .
缺点:

.
.
:
- , .
- , TLS, , SSL .
- , "" , .
- .
- , : , .
- , .
- .
- : .
- RAID.
- *nix-like , Windows native, Windows cygwin.
- GUI.
缺点:
UrBackup .
, .
.
UrBackup
, :
# zfs create -o com.sun:auto-snapshot=false -p tank0/apps/backup # zfs set compression=on tank0/apps/backup
, , UrBackup ZFS .
, :
# zfs set dedup=on tank0/apps/backup
UrBackup :
# mkdir /tank0/docker/services/urbackup # cd /tank0/docker/services/urbackup # vim docker-compose.yml # docker-compose up -d
docker-compose .
Web- .
docker-compose.yml version: '2' networks: docker0: external: name: docker0 services: urbackup: uroni/urbackup-server image: restart: always expose: - 55414 ports: # - 55413:55413 - 55415:55415 - 35623:35623/udp volumes: - /tank0/apps/backup/urbackup/database:/var/urbackup - /tank0/apps/backup/urbackup/backups:/backups - /tank0/apps/backup/urbackup/log:/var/log - /etc/localtime:/etc/localtime:ro networks: - docker0 environment: - VIRTUAL_HOST=backup.* - VIRTUAL_PORT=55414 - VIRTUAL_PROTO=http - CERT_NAME=NAS.cloudns.cc - TZ=Europe/Moscow
Docker uroni/urbackup-server
, tristanteu/urbackup-docker
.
.
, :
- . UrBackup LDAP .
- LDAP. LDAP . " ". , .
- .
- , . . . , NAS, .
- -.
:

:

LDAP , : , .
:
ou=users,dc=nas,dc=nas?memberOf,objectClass?sub?(&(memberOf=cn=users_backup,ou=groups,dc=nas,dc=nas)(uid={USERNAME}))
- , .

, , .
, :

-:

, , .
, UrBackup:
- TCP 55415 — .
- TCP 55414 — Web- HTTP.
- TCP 55413 — Web- FastCGI, Web-. 因为 NAS HTTP/HTTPS, .
- TCP 35621 — .
- UDP 35622 — . . .
- TCP 35623 — .
- UDP 35623 — .
, 55415 , 35621, 35622, 35623 .
, .
:
UrBackup , .. , :

.
shell :
TF=`mktemp` && wget "https://NAS.system.cloudns.cc/x?a=download_client&lang=ru&clientid=1&authkey=KEY&os=linux" -O $TF && sh $TF; rm $TF
:
~
NAS , :
- :
/etc;/home;/var;/root;/tank0/apps;/tank0/docker
. - :
/tank0/apps/backup;/tank1/apps/backup;/tank0/apps/cloud/nextcloud/html/data
.
, , , , , .
, , , " ", , :

:
~
问题所在
, UrBackup , . .
— -, .
:
ERROR: Internet mode not enabled. Please set "internet_mode_enabled" to "true".
.
:
~
/etc/default/urbackupclient
, .
, /usr/local/var/urbackup/data/settings.cfg
.
, , :
internet_server=NAS.system.cloudns.cc internet_server_port=55415 internet_authkey=44R3MUIdB computername=zenbook internet_mode_enabled=true
, , -.
, , , .
Debian, , /etc/apt/apt.conf.d/80full-backup
:
DPkg::Post-Invoke {"test -x /usr/local/bin/urbackupclientctl && /usr/local/bin/urbackupclientctl start -f || true"; };
NAS, . , mtbackup SSH, NAS.
Python , , , UrBakup, .
:
, : . , .
, :
, - , .

.
, , .
- , , Storj .
文学作品
, , :
, :
.
, RTO, RPA, RPO. , , , .
- NAS , , , .