首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现备份盘增量热备?

如何实现备份盘增量热备?
EN

Stack Overflow用户
提问于 2020-06-13 22:58:51
回答 2查看 32关注 0票数 0

我有以下系统要求。数据是在边缘服务器上收集的,我需要将这些数据增量地备份到辅助驱动器,该辅助驱动器稍后可以拔出并运送到离岸服务器。最好有一种机制来标记和清除复制的数据。

EN

回答 2

Stack Overflow用户

发布于 2020-08-25 10:27:33

我建议您探索HSMTiered Storage领域的解决方案。

如果您想自己创建一个简单的解决方案,您可以执行以下操作:

使用两个独立的文件系统格式化两个磁盘,例如ext4.

  • Write一个脚本,比如说使用
  1. ,它可以执行您想做的任何事情,例如,根据您的criteria
  2. Create a cron job定期运行step 2

中的脚本,将文件从磁盘A移动到磁盘B

例如,步骤2中的脚本可以执行以下操作:

  1. 查找新创建的应用程序文件
  2. 将文件系统A上新创建的文件复制到文件系统B。如果由于文件系统B已满而复制失败,请通过日志消息、寻呼机通知等方式通知用户。
  3. 查找您认为太旧的应用程序文件
  4. 删除旧文件(这些文件应已在步骤2中复制到文件系统B)。
票数 0
EN

Stack Overflow用户

发布于 2020-08-25 21:05:34

准备工作

为了能够对正在运行的系统进行即时备份,您必须将系统安装在LVM: Logical volume management (LVM2 Resource Page)下,并留出一些未使用的磁盘空间来执行。

示例:

这是我的系统的一个截图:

# fdisk -l /dev/sd?

代码语言:javascript
复制
Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt

Device          Start        End    Sectors   Size Type
/dev/sda1        2048     780287     778240   380M BIOS boot
/dev/sda2      780288 7032031231 7031250944   3.3T Linux RAID
/dev/sda3  7032031232 7814037134  782005903 372.9G Linux RAID


Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt

Device          Start        End    Sectors   Size Type
/dev/sdb1        2048     780287     778240   380M BIOS boot
/dev/sdb2      780288 7032031231 7031250944   3.3T Linux RAID
/dev/sdb3  7032031232 7814037134  782005903 372.9G Linux RAID

两个3Tb硬盘,其中3个用于/boot、Raid 1(镜像)和Raid 0(剥离)。

注意:在我的系统上,需要一个很小的第一个分区。

$ cat /proc/mdstat

代码语言:javascript
复制
Personalities : [raid0] [raid1] [linear] [multipath] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sda2[2] sdb2[0]
      3515494400 blocks super 1.2 [2/2] [UU]
      bitmap: 2/27 pages [8KB], 65536KB chunk

md2 : active raid0 sdb3[1] sda3[0]
      781741056 blocks super 1.2 512k chunks
      
unused devices: <none>

因此,我可以使用745.53Mb作为Raid 0(快速但不安全)和3.27 as作为Raid 1(写入速度较慢,读取速度较快,并且可以防止磁盘故障)。

我的分区:

代码语言:javascript
复制
sda1   380.00M  - UNUSED SPACE -
sda2     3.27T md:md0[raid1-2/2]
sda3   372.89G md:md2[raid0-1/2]
sdb1   380.00M  - UNUSED SPACE -
sdb2     3.27T md:md0[raid1-1/2]
sdb3   372.89G md:md2[raid0-2/2]

# pvs
  PV         VG    Fmt  Attr PSize   PFree
  /dev/md0   Mtc-I lvm2 a--    3.27t 599.05g
  /dev/md2   Mtc-O lvm2 a--  745.52g 365.52g
# vgs
  VG    #PV #LV #SN Attr   VSize   VFree
  Mtc-I   1  17   0 wz--n-   3.27t 599.05g
  Mtc-O   1   4   0 wz--n- 745.52g 365.52g
# lvs
  LV          VG    Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  BOOT        Mtc-I -wi-ao----  476.00m
  ROOT        Mtc-I -wi-ao----   <1.86g
  swap        Mtc-I -wi-ao----   22.35g
  TMP         Mtc-O -wi-ao----   40.00g
  USR         Mtc-I -wi-ao----  <27.94g
  VAR         Mtc-I -wi-ao----  <27.94g
  LXC         Mtc-I -wi-ao----  386.26g
...

那么我们就准备好了..。

备份磁盘

任何具有单个分区的>= 6Tb USB3或eSATA ...或者没有,在任何兼容的FS (ext4、xfs、btrfs、reiserfs等)中格式化。使用或不使用LUKS (encryption)

在备份磁盘上,准备用于备份的本地根目录:

代码语言:javascript
复制
mkdir -p /medias/backup/backups/base/local

备份操作

安装备份磁盘后:

代码语言:javascript
复制
if mount /medias/backup ;then ...

创建快照:

代码语言:javascript
复制
printf -v snaptime '%(%s)T' -1
lvcreate -s -L 10G -n BkLXC Mtc-I/LXC
lvcreate -s -L 10G -n BkROOT Mtc-I/ROOT
...
mount -o ro /dev/Mtc-I/BkROOT /medias/bkRoot
mount -o ro /dev/Mtc-I/BkLXC /medias/bkRoot/var/lib/lxc
...

然后就像这样:

代码语言:javascript
复制
rsync -aSq --delete --exclude tmp/ /medias/bkRoot/. /medias/backup/backups/base/local/.

会有效地备份我所有的东西。

然后

代码语言:javascript
复制
...
umount /medias/bkRoot/var/lib/lxc
umount /medias/bkRoot
lvremove -f Mtc-I/BkROOT
lvremove -f Mtc-I/BkLXC

免费的shapshoots。

增量:

完成后,在备份磁盘上:

代码语言:javascript
复制
cd /medias/backup/backups
printf -v bkname "base-%(%F-%H%M)T" $snaptime
cp -al base $bkname
umount /medias/backup

注意: cp -al将重新创建所有目录,但所有文件都将是hard linked。因此不再需要更多的空间。

所以硬链接保持不变。

全都做完了。

他们必须保留

  • 过去24小时每天1次
  • 备份1周
  • 过去6周每周1次备份
  • 去年每月1次备份
  • 每年(永远)1次备份。

F250

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62361507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档