温馨提示×

如何通过Linux分卷进行数据迁移

小樊
46
2025-11-22 09:06:26
栏目: 智能运维

Linux分卷数据迁移实用指南

一、场景与方案总览

  • 跨网络或介质传输大文件时,先对数据做分卷压缩,再逐包传输,最后在目标端合并与校验,可显著降低中断重传成本,适合带宽不稳或介质容量受限的环境。
  • 在同一台服务器或同网段内做存储迁移时,使用LVM的在线迁移能力,可将数据从旧磁盘无中断迁移到新磁盘,业务无需停机。
  • 需要按目录或选择性打包时,结合zip 分包与排除规则,分批迁移并可在目标端直接解压首个分卷完成合并。

二、基于分卷压缩的迁移步骤

  • 源端打包分卷
    • 文件夹整体分包:zip -r -s 100G image2.zip ./image2/(-s 指定分卷大小,如100G1G)。
    • 单文件分包:zip -s 10G image2.zip image.tar。
    • 排除目录:zip -r -s 100G image2.zip /image2/ -x “image2/exclude_dir1/" "image2/exclude_dir2/”。
  • 传输分卷
    • 使用 rsync/scp/对象存储/移动硬盘等,将生成的分卷(如 image2.z01、image2.z02、…、image2.zip)全部传至目标端。
  • 目标端合并与解压
    • 直接解压首个分卷即可自动拼合:unzip image2.zip。
    • 若遇到“bad zipfile offset (local header sig)”等损坏提示,先修复再解压:zip -F A.zip --out B.zip && unzip B.zip。
  • 完整性校验
    • 对比源端与目标端校验值:md5sum image2.zip 或 md5sum image.tar,确保一致。

三、基于 LVM 的在线磁盘到磁盘迁移

  • 适用前提
    • 数据位于LVM 逻辑卷上;新增一块磁盘(如 /dev/sdb)准备承接数据。
  • 操作步骤
    1. 准备新盘并加入卷组
      • 分区并初始化:pvcreate /dev/sdb1(分区类型建议 Linux LVM/8e)。
      • 扩容卷组:vgextend <VG名> /dev/sdb1。
    2. 在线迁移数据
      • 方式一(推荐)镜像后剥离:
        • 添加镜像:lvconvert -m 1 /dev/<VG名>/<LV名> /dev/sdb1(将镜像放到新盘)。
        • 同步完成后移除旧盘镜像:lvconvert -m 0 /dev/<VG名>/<LV名> /dev/<旧PV>。
      • 方式二 直接数据迁移:pvmove /dev/<旧PV> /dev/sdb1(将旧盘数据迁到新盘)。
    3. 清理旧盘
      • 从卷组移除旧盘:vgreduce <VG名> /dev/<旧PV>;必要时 pvremove。
    4. 验证
      • 检查 LV 设备映射与数据可用性:lvs -o+devices;mount | grep <挂载点>;业务侧读写验证。
  • 说明
    • 上述迁移过程在线进行,通常无需停机;LVM 支持在不同类型磁盘(如 SATA/SSD/SAS/iSCSI/FC)间迁移。

四、仅扩容逻辑卷与文件系统

  • 当卷组已有空闲空间,可直接扩展 LV 并调整文件系统大小:
    • 扩展 LV:lvextend -l +100%FREE /dev/<VG名>/<LV名>。
    • 调整文件系统:
      • ext4:resize2fs /dev/<VG名>/<LV名>
      • xfs:xfs_growfs <挂载点>
    • 验证:df -h 查看容量变化。

五、注意事项与最佳实践

  • 校验与回滚
    • 任何迁移前后都进行校验和(如 md5sum/sha256sum);重要业务先演练,准备回滚方案
  • 一致性与可用性
    • 迁移期间避免对源数据做结构性变更(如大量删除/重命名);数据库等场景建议停写或维护窗口
  • 工具与兼容性
    • LVM 方案需系统安装 lvm2 工具;跨平台或离线介质传输时,zip 分卷通用性更好。
  • 故障处理
    • 分卷压缩若损坏,优先用 zip -F 修复再解压;LVM 迁移失败可回退镜像或中止 pvmove 后检查。

0