btrfs write hole导致数据丢失处理

大类
Env
技术标签
环境增强
垃圾佬
优先级
Critical
开始日期
Feb 8, 2024
状态
Finalized
Public
Public
最后更新
Feb 9, 2024

预计计划

备份当前状态后,重新格式化缓存盘为zfs,然后用restic backup整体回滚到2月3号的备份

具体步骤

完成scrub:进行中,预计三小时后结束
完成对当前状态的restic backup(必须要在scrub后进行,尽可能减少input output error)
  • restic backup 会触发kernel panic,原因不明
  • 但是操作速度快一点就可以避免
restic diff确定回滚后会损失哪些数据
  • 各种非重要数据:acronis日志、scrutiny的日志、iosdec这周解密的文件
  • seaweedfs的各种测试
  • mongodb数据
  • luoxu
  • matrix synapse
复制restic-bak、warp等关键基础设施文件夹(后续考虑将关键基础设施迁移回u盘)
rclone-restic-server
docker + warp-lb2
restic_bak
在cache_tmp盘上启动临时docker,启动warp
  • 考虑到有几十万个文件新增,但只有126个文件损坏, 还是选择单独回复损坏的服务
在6.5内核中(ubuntu 23.10 iso),备份全盘到hdd
restic backup -H MistyNAS-School --read-concurrency 20 --no-scan --pack-size 128 -v /mnt/cache/appdata /mnt/cache/Backup
在unraid中创建zfs
zpool create -o ashift=14 -f cache \ raidz1 /dev/disk/by-id/nvme-DAPUSTOR_DPRD3104T0T503T8000_RS5U50A21A002G83-part1 /dev/disk/by-id/nvme-KCD61LUL3T84_3150A0XLT7B8-part1 /dev/disk/by-id/nvme-KCD61LUL3T84_71J0A059T7B8-part1 /dev/disk/by-id/nvme-KIOXIA_KCD71RUG3T84_X1R0A077TQN7-part1 \ raidz1 /dev/disk/by-id/nvme-KIOXIA_KCD71RUG3T84_X1R0A079TQN7-part1 /dev/disk/by-id/nvme-P5520DT0384T00_SH211902085-part1 /dev/disk/by-id/nvme-P5910DT0384M00_FL181200133-part1 /dev/disk/by-id/nvme-P6F3840_SE19C04P7050514-part1
恢复备份
在恢复备份的过程中,复制restic snapshot到本地
  • restic copy -r 240203_6f996989_repo --from-repo rest:http://127.0.0.1:58137 6f996989 --verbose -o rest.connections=32
 
  • 对部分服务的对应处置措施
    • MongoDB:近期除了SeaweedFS外,无直接操作,直接回滚240203
      • 考虑到MongoDB的重要性,后续将SeaweedFS的DB转移回leveldb
      luoxu:直接使用240203的数据继续跑
      synapse:放弃20231231迁移到SeaweedFS后~20240209的所有数据
      SeaweedFS:放弃全部数据,完全重新配置