序号1:准备阶段必须确认目标VPS可用空间与网络带宽。
- 检查磁盘:使用lsblk、df -h确认分区与剩余空间。
- 带宽与流量:测试带宽iperf3或用curl --speed-time检测,估算传输时间与费用。
- 权限与凭证:确保SSH钥匙互换(ssh-keygen、ssh-copy-id)与root或具备sudo权限用户。
小分段:记录服务停机窗、备份点与回滚联系人。
序号2:依据数据类型选择工具。
- 文件级:推荐rsync或rclone,适用于大量小文件或保留权限、ACL、xattr场景。
- 块级:使用dd/partclone适合完整镜像与快速恢复,但会复制空闲空间(可配合gzip或pv压缩)。
- 数据库:优先逻辑导出(mysqldump、pg_dump)或使用热备(replication)再切换。
小分段:评估是否需要LVM快照以保证一致性(下一节详述)。
序号3:若使用LVM可创建快照再迁移,避免长时间停机。
- 创建快照:lvcreate -L 10G -s -n root_snap /dev/vg0/root(根据实际情况调整大小)。
- 挂载快照:mount /dev/vg0/root_snap /mnt/snap,在快照挂载点运行rsync。
- 删除快照:迁移完成并验证后用lvremove /dev/vg0/root_snap释放空间。
小分段:快照会占用原LV的空间,迁移前确保有足够的空闲。
序号4:全量传输建议使用rsync并保持文件属性。示例命令:
rsync -aAXv --delete --partial --progress -e "ssh -p 22" /data/ user@hk-vps:/data/
- 参数说明:-a归档,-A保留ACL,-X保留xattr,--delete与源同步删除。
- 建议:在screen/tmux中运行,加入--bwlimit=10000按需限制带宽。
小分段:首次同步可能耗时很久,优先在低峰期执行。
序号5:块级迁移命令示例(压缩并显示进度):
dd if=/dev/sdb bs=4M | pv | gzip -c | ssh user@hk-vps "gunzip -c | dd of=/dev/sdb bs=4M"
- 使用partclone可避免复制空闲数据:先在源下运行partclone.ext4 -c -s /dev/sdb1 -o - | ssh ...。
小分段:迁移前确保目标分区大小 >= 源分区,且目标磁盘为offline或未挂载。
序号6:完成首次全量后,用rsync做多次增量同步以减少切换时差异。
- 增量命令:rsync -aAXv --delete --partial --link-dest=/prev /data/ user@hk:/data/(link-dest用于硬链接快照节省空间)。
- 切换前短停机同步:在服务短暂停止后再做一次rsync确保零差异。
小分段:对数据库在短停机内先做flush并锁表或暂停写入,之后再同步。
序号7:校验是关键步骤,避免隐性错误。
- 文件级校验:在源与目的运行find /data -type f -print0 | xargs -0 sha256sum | sort -k2 > /tmp/src.sum并比较。
- rsync验证:可使用rsync --checksum做一次校验同步(但会慢)。
- 权限与SELinux:检查权限、UID/GID是否一致,必要时用restorecon或调整UID表。
小分段:对比大小与文件数:rsync --stats或find | wc -l。
序号8:切换步骤要控制风险并做好回滚。
- DNS切换:降低TTL至60s提前生效,切换后实时观察访问情况。
- IP切换:若可更改浮动IP或NAT规则,优先切换网络层并监控服务。
- 回滚:保留原VPS至少一段时间,保留快照与备份,若问题发生可立即回退DNS与路由。
小分段:记录每一步时间点与负责人员,方便回滚时定位。
序号9:迁移后检查IO、网络、CPU与服务状态。
- IO优化:调整fstab的noatime、使用合适的IO调度器(deadline或mq-deadline)。
- 网络问题:观察丢包与延迟,必要时更换传输端口或启用压缩。
- 文件系统检查:对ext4/xfs做fsck或xfs_repair(下线情况下进行)。
小分段:记录日志(/var/log/syslog、dmesg)以便排查。
问:香港VPS迁移TB级数据最推荐的工具是什么?
答:答:综合可用性与可靠性,文件级推荐rsync(带--partial/--progress/--aAX参数),结合LVM快照或数据库热备以保证一致性;对于块级镜像或整盘迁移,使用dd配合pv压缩或partclone可更快完成。rclone适用于对象存储或云盘同步。
问:如何在不影响线上服务的情况下做最终切换?
答:答:先做多次增量同步,切换窗口里短暂停服务(几分钟内),在停机期间做一次rsync --delete并校验,随后切换DNS/路由并逐步恢复服务;同时保留回滚路径与原机快照,确保能在发现问题时快速切回。
问:迁移后如何验证数据与权限完全一致?
答:答:对比文件数量与总大小(find + wc/du),使用sha256sum或rsync --checksum逐文件校验,检查UID/GID一致性和ACL/xattr(getfacl/setfacl),若使用SELinux则运行restorecon并比对contexts。验证通过后再释放源端快照与备份。