V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
cellargalaxy
V2EX  ›  Linux

请教建议,硬盘扩展坞的数据冷备方案

  •  
  •   cellargalaxy · 199 天前 · 1848 次点击
    这是一个创建于 199 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目标:热数据暂存在日常使用的电脑(Arch Linux)里,每月使用硬盘扩展坞,把数据备份到两个硬盘里做冷备。不折腾 NAS 群晖 Raid 之类的。会有比较多的小文件图片之类的,属于比较重要的数据不希望丢失损坏。

    1. 问题一:硬盘使用哪种文件格式
      1. 因为有大量小文件,两块硬盘之间做文件对比实现难度太大。网上查了一轮,感觉 ZFS 的数据校验与修复挺适合我需要的。然而 ZFS 在 linux 里的稳定性并没有查到比较多的说法。
      2. 目前设想是一块硬盘是 ZFS ,另一块是 ext4 。两块硬盘之间做镜像。ZFS 没炸就以 ZFS 为准,ZFS 炸了就用 ext4 兜底。
      3. 担心这样的多种文件格式会不会引入其他风险或者操作难度。
    2. 问题二:两块硬盘之间如何做数据同步?
      1. 由于是每月手动操作,所以用不着 cron 之类的东西,大家有什么推荐吗

    参考文章

    「如何确保移动硬盘的大量数据不会损坏?」 https://www.v2ex.com/t/868676

    「 Linux 上,架 NAS 用什么文件系统?」 https://www.v2ex.com/t/642574

    18 条回复    2024-05-16 10:11:49 +08:00
    ltkun
        1
    ltkun  
       199 天前 via Android
    zfs 用错地方了 zfs 不是用来做冷备份的
    busier
        2
    busier  
       199 天前
    用 btrfs !因为他 subvolume 有快照功能。多次备份的时候可以只存储改变的部分,节省时间和空间。

    另外,他可以发现存储位反转而磁盘不报错的情况。对年久的备份数据是否损坏的判定很有帮助。
    greenskinmonster
        3
    greenskinmonster  
       199 天前
    restic 增量备份,支持快照,不限分区格式
    我 200 多 G 的 / 分区,NVME 硬盘,每 2 天增量备份一次,每次 2-3 分钟左右
    cellargalaxy
        4
    cellargalaxy  
    OP
       199 天前
    二楼提醒了 btrfs 支持进行校验和。
    一开始没有考虑 btrfs 是因为有不少人反馈过 btrfs 会炸,网上有人说 zfs 比 btrfs 稳定。
    查了一下资料,btrfs 除了支持校验和,在有 Raid 下还能对损坏文件进行自修复。
    由于我不打算组 Raid ,因此目前看来,两块硬盘都 btrfs ,定期独自进行校验和,手动替换损坏文件,比较可行。

    https://superuser.com/questions/904331/how-does-btrfs-scrub-work-and-what-does-it-do

    https://superuser.com/questions/1595765/btrfs-check-scrub-what-is-the-difference
    basncy
        5
    basncy  
       199 天前
    同需求, 蹲个使用三年以上的稳定方案.

    所以 btrfs 如果检验失败并且修复失败, 整个分区就炸了. 存的文件越多, 概率越大. 这特性不适合用在 rootfs 上.
    chinni
        6
    chinni  
       199 天前
    borg
    restic
    kopia

    这 3 个我至少 4 年了
    chinni
        7
    chinni  
       199 天前
    @greenskinmonster 其实我刚才说的 3 个里 最推荐的是 kopia 你如果直接备份根目录 他有 .kopiaignore 还有针对每个 path 的 备份策略 比 restic 好用(
    GrayXu
        8
    GrayXu  
       199 天前
    这场景明显是 borg 这种增量备份,而不是手动跑 btrfs 手动替换。
    infinet
        9
    infinet  
       199 天前
    都用 zfs ,定期发送 snapshot 到冷备份盘。用 sanoid 在热机器上定时 snapshot ,syncoid 发送到冷备份。
    apiQuantify
        10
    apiQuantify  
       199 天前
    学习了,收藏
    busier
        11
    busier  
       199 天前
    @busier 说炸大多是 n 年前的老资料,我这边底层直跑 debian 稳定版,跟进新内核,多年就没炸过!
    还有一种炸的情况就是 ext4 转换出来的 btrfs ,所以初始化最好是格式化成 btrfs 。
    busier
        12
    busier  
       199 天前
    @basncy “以 btrfs 如果检验失败并且修复失败, 整个分区就炸了”
    我们说的是针对用户文件 checksum ,这功能目前只有 btrfs 和 zfs 有。
    况且针对用户文件的 checksum 出问题即便不能恢复也是单文件故障,更炸分区有毛线关系,炸分区只可能分区元数据损坏和目录结构损坏造成的。
    basncy
        13
    basncy  
       198 天前
    @busier 说的正是元数据损坏的情况, 还有锁的问题造成引用错误.
    我的数据分区有多个系统访问, 这些系统上的 btrfs 版本不一致, 炸怕了.


    所以大家看看我的方案是否可行:
    主力用 ext4(或 ntfs), 保留最新状态的同时避免一颗屎坏了一锅汤, 用 syncthing 同步到备份机的 latest volume.
    冷备用 btrfs, 定期对 latest volume 拍照. btrfs 的完整性检查通过 syncthing 反馈到主力系统, 及时发现 ext4 分区中单个文件损坏.
    ecloud
        14
    ecloud  
       198 天前
    反正你是备份,不在乎时间,那就定期打成 img 再存到 btfs 不就得了,甚至存到 ntfs 我觉得也没啥大问题
    libook
        15
    libook  
       198 天前
    本地和备份系统都用 Btrfs ,本地做快照,往备份盘进行快照的增量同步。这样还能多保存几个版本的快照。
    MrKrabs
        16
    MrKrabs  
       198 天前
    外置 apfs raid1+macOS 时间机器自动增量备份
    cellargalaxy
        17
    cellargalaxy  
    OP
       198 天前
    整理一下思路。误删文件与文件损坏两种问题,叉乘发现问题与修复问题两个步骤。

    1. 发现误删:貌似只能靠人发现,毕竟代码怎么知道是不是误删
    2. 修复误删:使用快照回滚
    2.1. 使用有快照功能的文件格式,例如 btrfs/zfs
    2.2. 使用有快照功能的备份软件,例如楼上提到的 borg/restic/kopia
    3. 发现损坏:hash 校验
    3.1. 使用 checksum 功能的文件格式,例如 btrfs/zfs
    3.2. 使用有 checksum 功能的软件对文件进行校验
    4. 修复损坏:保存多份数据
    4.1. 使用 Raid
    4.2. 使用软件手动实现类似 Raid 的效果,目前找到最贴近的是用 freefilesync 对两份文件进行比较替换
    4.3. 如果有更好的软件/方案欢迎推荐

    至于 btrfs/zfs 会不会炸,是不是 ext4 更稳,其实这个问题好像并不是很核心。手抖摔了硬盘 ext4 也一样会炸,这好像得通过备份保障,而不是选一个万无一失的文件格式(当然更加稳的文件格式是更好的)

    目前我偏向于使用 btrfs 实现回滚误删与发现损坏,使用 freefilesync 修复损坏
    busier
        18
    busier  
       195 天前
    @cellargalaxy RAID 镜像解决的是不停机更换硬盘,高可用范畴。对备份来说没什么意义。

    "使用软件手动实现类似 Raid 的效果,目前找到最贴近的是用 freefilesync 对两份文件进行比较替换"
    这实现的叫同步,与 RAID 镜像是两个概念
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1061 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:21 · PVG 06:21 · LAX 14:21 · JFK 17:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.