我有以下系统要求。数据是在边缘服务器上收集的,我需要将这些数据增量地备份到辅助驱动器,该辅助驱动器稍后可以拔出并运送到离岸服务器。最好有一种机制来标记和清除复制的数据。
发布于 2020-08-25 10:27:33
我建议您探索HSM或Tiered Storage领域的解决方案。
如果您想自己创建一个简单的解决方案,您可以执行以下操作:
使用两个独立的文件系统格式化两个磁盘,例如ext4.
中的脚本,将文件从磁盘A移动到磁盘B
例如,步骤2中的脚本可以执行以下操作:
发布于 2020-08-25 21:05:34
准备工作
为了能够对正在运行的系统进行即时备份,您必须将系统安装在LVM: Logical volume management (LVM2 Resource Page)下,并留出一些未使用的磁盘空间来执行。
示例:
这是我的系统的一个截图:
# fdisk -l /dev/sd?
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
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(写入速度较慢,读取速度较快,并且可以防止磁盘故障)。
我的分区:
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)。
在备份磁盘上,准备用于备份的本地根目录:
mkdir -p /medias/backup/backups/base/local备份操作
安装备份磁盘后:
if mount /medias/backup ;then ...创建快照:
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
...然后就像这样:
rsync -aSq --delete --exclude tmp/ /medias/bkRoot/. /medias/backup/backups/base/local/.会有效地备份我所有的东西。
然后
...
umount /medias/bkRoot/var/lib/lxc
umount /medias/bkRoot
lvremove -f Mtc-I/BkROOT
lvremove -f Mtc-I/BkLXC免费的shapshoots。
增量:
完成后,在备份磁盘上:
cd /medias/backup/backups
printf -v bkname "base-%(%F-%H%M)T" $snaptime
cp -al base $bkname
umount /medias/backup注意: cp -al将重新创建所有目录,但所有文件都将是hard linked。因此不再需要更多的空间。
所以硬链接保持不变。
全都做完了。
他们必须保留
F250
https://stackoverflow.com/questions/62361507
复制相似问题