迁移需要多长时间?
迁移前的评估
首先测试源端到目的端服务器的TCP速度。
其中:
T表示迁移时间,单位为h。
C表示源端服务器所有使用数据量,单位为GB。
S表示源端到目的端服务器的TCP速度,单位为Mbit/s。
U表示网络利用率,与网络质量(抖动、时延、丢包)有关,通常在50%~80%之间。
例如:迁移源端服务器所有使用数据量为100GB,iperf测试出来的TCP速度为100Mbit/s,网络利用率为70%,那么迁移时间为:
迁移时间T =100GB * 1000*8 / 100Mbit/s/ 3600 /70%≈ 3.17h
表 迁移时间参考值
源端服务器所有使用数据量C(GB) | TCP速度S(Mbit/s) | 迁移时间T(h) |
---|---|---|
10G | ≤1Mbit/s | 不推荐使用主机迁移服务 |
10G | 5Mbit/s~500Mbit/s | 6.35h~4min |
30G | ≤1Mbit/s | 不推荐使用主机迁移服务 |
30G | 5Mbit/s~500Mbit/s | 19.04h~11min |
50G | ≤5Mbit/s | 不推荐使用主机迁移服务 |
50G | 10Mbit/s~500Mbit/s | 15.87h~19min |
100G | ≤10Mbit/s | 不推荐使用主机迁移服务 |
100G | 100Mbit/s~500Mbit/s | 3.17h~38min |
500G | ≤10Mbit/s | 不推荐使用主机迁移服务 |
500G | 100Mbit/s~500Mbit/s | 15.87h~3.17h |
1TB | ≤100Mbit/s | 不推荐使用主机迁移服务 |
1TB | 500Mbit/s | 6.5h |
>1TB | - | 不推荐使用主机迁移服务迁移 |
迁移中的评估
剩余时间T(h)=主机数据量C(GB)10008*(80%-当前传输进度P)/60%/迁移速度S(Mbit/s)/3600
- 主机数据量指的主机所有数据量。
- 当前数据传输进度P可以在主机迁移服务界面查看,如果进度P>80%,说明数据已经传输完毕,无需进行剩余时间评估。
- 迁移中的迁移速度S不能使用iperf测试,因为这个时候测试不准。windows请使用以下方式获取准确的迁移速度,Linux推荐使用sar工具监控,也可以使用
/proc/net/dev
命令监控网卡的速度。
如何查看剩余迁移时间?
迁移剩余时间是根据您的剩余数据量与迁移过程中的实际迁移速率计算得来,由于您迁移的过程中的速率存在一定的波动,因此剩余迁移时间无法被准确计算,且会随之波动。您可参考以下方式查看剩余迁移时间。
- 登录目的端管理控制台。
- 单击“服务列表”,选择“迁移 > 主机迁移服务”。进入“主机迁移服务”页面。
- 在左侧导航树中,选择“迁移服务器”。进入服务器列表页面。
- 单击服务器名称前的按钮,即可查看预测的剩余迁移时间。
SMS控制台显示的迁移速率等数据是如何计算出来的?
名词解释
迁移过程中指标 | Windows块级 | Linux文件级 | Linux块级 |
---|---|---|---|
总共数据量 | 待迁移的所有分区已用空间之和,右键点击“分区>属性>常规”可以查看 | 待迁移的所有分区已用空间之和,通过df -TH可以查看 | 待迁移的所有分区大小之和,通过 fdisk -lu 可以查看 |
已迁数据量 | 已迁移的数据块的大小,只计算分区中已用空间的数据块 | 已迁移的文件大小 | 已迁移的数据块的大小,包括分区中的所有数据块 |
已迁移时间 | 开始迁移的时间,从任务开始时间计算 | 开始迁移的时间,从任务开始时间计算 | 开始迁移的时间,从任务开始时间计算 |
剩余时间 | (总共数据量-已迁数据量)/迁移速率 | (总共数据量-已迁数据量)/迁移速率 | (总共数据量-已迁数据量)/迁移速率 |
迁移速率 | 计算最近5s内迁移数据量。如5s迁移了200MB,则迁移速率200MB*8/5s = 320Mbps;由于迁移数据经过网卡传输迁移会被压缩,因此迁移速率不等于网卡速率。 | 从目的端网卡中获取,实际迁移速率。 | 最近5s内迁移数据量。如5s迁移200MB,则速率200MB*8/5s = 320Mbps;由于块级还没有压缩,因此迁移速率等于网卡速率。 |
Windows块级别
Windows块级迁移速率分为两种速率:第一种是SMS控制台显示的迁移速率,是近5s平均迁移速率。 第二种是迁移占用实际网卡传输速率,比第一种速率小,原因是网卡传输数据前会先进行压缩。
- SMS控制台显示的迁移率计算方法(压缩前)
在控制台页面上看到的迁移速率是每秒实际传输的迁移数据量,是压缩前的速率。计算方法是求最近5s传输的数据量,例如近5s内传输的实际数据为200MB,压缩后为50MB,页面上查看到的速率是320Mbps ( 200MB**8/5s=320Mb/s*) , 任务管理器占用网卡的速率是80Mb/s(50MB*8/5s=80Mb/s)。
- 迁移实际网卡速率(压缩后)
Windows 块级传输过程时,Agent会先压缩数据,然后通过网络传输到目的端,目的端代理再解压数据后写入磁盘。通过任务管理器(以Windows Server 2012为例)中可以看到实际迁移网卡速率,这个速率显示的是网络带宽的占用情况(即迁移传输速率),可以在源端任务管理器中查看(迁移过程中目的端服务器会自动锁定,需解锁后才能查看)。
Linux文件级
Linux文件级迁移没有压缩数据,因此Console页面显示的迁移速率和网卡传输速率一致。
例外场景:Linux文件级迁移在传输小文件时效率低,无法充分使用网络带宽,因此当系统中存在大量小文件时,迁移速率会远低于网络带宽。
Linux块级迁移
Linux块级迁移没有压缩数据,因此SMS控制台页面显示的迁移速率和网卡传输速率一致。
如何加快迁移速度?
- 需要提升您的网络速率。如果网络速率小于500kbit/s,您需要排查以下三个方面:
- 如果源端服务器在数据中心,请您排查源端服务器所在网络到公网的带宽、交换设备、路由设备、安全设备(防火墙等)、网络线路、协议网络相关因素等是否有限制或者使用不正确。如果有问题,需要您联系网络专业人员修复。建议您源端服务器所在网络到天翼云公网的网络速率大于10Mbit/s。
- 排查源端出口带宽和目的端入云带宽大小,扩大两者之间较小的带宽,也可根据需求将两者同时扩大。
- 确保源端服务器与目的端服务器的OS设置正确。对于Windows系统,您可以使用
perfmon
命令调用资源监视器监控网络;对于Linux系统,推荐使用sar工具监控或者使用/proc/net/dev
监控网卡的速度。如果网速较慢,说明您的OS配置可能不正确。需要提醒的是,您的OS服务、进程等不能对网卡做限速。
- 如果您源端服务器有大量的文件(例如50万个100KB的文件),并且这些文件是残留的无用数据,请提前删除再做迁移。
- 请排查您源端服务器的I/O读写性能、CPU性能。Windows可以使用
perfmon
命令调用资源监视器监控CPU和I/O读写性能,Linux使用top/ps
和iostat/iotop
来监控CPU和I/O性能。如果您的源端I/O读写性能、CPU性能差,建议您增加I/O和CPU的资源或者减少服务器运行的负载。
为什么迁移进度条进度时快时慢?
在主机迁移的过程中,除了迁移还包含了模块初始化、备份、清理等各种操作,这些操作也会推动进度条的增长,而这些操作的用时难以准确预估,因此会导致迁移进度条增速时快时慢。该现象属于正常现象,请耐心等待迁移完成即可。
Iperf的测试网络的方法?
前提条件
- 保证源端与目的端网络连通,以及天翼云上目的端服务器的安全组规则允许Iperf测试端口开放。
- 该测试需要在迁移前进行,而且在源端服务器上运行的业务对网络影响不大,否则测试数据不准。
测试步骤
-
根据源端服务器的OS类型下载对应iperf版本。
-
在源端服务器和目的端服务器(或者目的端服务器同一Region下的其他弹性云服务器)某一个目录下解压iperf工具。例如在Windows操作系统的iperf工具:
-
在目的端服务器上,以命令行方式运行iperf(服务端模式运行,以Windows操作系统为例):
-
执行以下命令,进入iperf目录。
cd /d path
其中,path指2中iperf工具解压后在目的端服务器中的路径。
-
执行以下命令,以服务端运行iperf。
iperf3 -p port -s
其中,port表示iperf工具的服务端监听端口,建议Windows操作系统使用8900端口(8900为目的端服务器使用的数据传输端口),Linux操作系统使用22端口(22为目的端服务器使用的数据传输端口)。您测试的时候也可以使用其他端口,但要保证目的端服务器安全组规则允许开放该TCP或者UDP端口。以Windows操作系统使用8900端口为例,当回显信息为Server listening on 8900时,表明服务端已经运行就绪。
-
-
在源端服务器上,以命令行方式运行iperf(客户端模式运行),测试TCP带宽和UDP的抖动、丢包率和带宽(以Windows操作系统为例)。
-
执行以下命令,进入iperf目录
cd /d path
其中,path指2中iperf工具解压后在源端服务器中的路径。
-
执行以下命令,运行iperf工具,测试TCP带宽。
iperf3 -c target_IP -p port -t time
其中,-c是客户端模式运行。
target_IP 表示目的端服务器(即以服务端模式运行iperf的服务器)的IP地址。
port表示连接目的端服务器的端口。
time表示测试总时间,默认单位为秒。以Windows操作系统使用8900端口为例,iperf客户端连接到iperf服务端成功后会进行带宽(Bandwidth)测试,测试结束后查看结果即可:
-
执行以下命令,运行iper测试UDP的抖动、丢包率和带宽。
iperf3 -c target_IP -p port -u -t time
其中,-u表示测试UDP的抖动、丢包率和带宽。
target_IP 表示目的端服务器(即以服务端模式运行iperf的服务器)的IP地址。
port表示连接目的端服务器的端口。
time表示测试总时间,默认单位为秒。以Windows操作系统使用8900端口为例,iperf客户端连接到iperf服务端成功后会测试UDP的抖动(Jitter)、丢包率(Lost/Total Datagrame)和带宽(Bandwidth),测试结束后查看结果即可。
-
若需要测试网络时延,可以使用ping命令。
ping target_iP
target_IP 表示目的端服务器(即以服务端模式运行iperf的服务器)的IP地址。需要配置目的端服务器所在的VPC的安全组规则,允许ICMP协议报文通过。
-
-
执行命令
iperf3 -h
,获取更多的iperf的使用帮助。
迁移中升级带宽后,迁移使用的是升级前的带宽还是升级后的带宽?
升级带宽后,迁移使用的实际带宽取决于下面最小的带宽。升级带宽后,需要等待5-10分钟,才可生效,请耐心等待。
- 源端服务器升级后的带宽。
- 目的端服务器入云带宽。
- SMS控制台设置的网速限制。
迁移速度由源端带宽决定还是目的端带宽决定?
迁移速度取决于源端的出口带宽和目的端的入云带宽。取两者中较小值进行迁移。
如何判断迁移任务是不是卡住?
迁移任务如果长时间不动,可能是以下三种情况,需要查看源端Agent日志确定。
- 情况一:迁移任务处于“持续同步”阶段。
“持续同步”是主机迁移服务新增的功能,会自动同步源端数据。在配置目的端时,“是否持续同步”选择“是”,全量复制完成后会自动进入“持续同步”阶段。
迁移任务处于“持续同步”阶段的时候,迁移并没有完成,需要手动启动目的端,因此,在未手动启动目的端前,迁移任务会一直处于“持续同步”阶段。启动目的端完成后,才算一次完整的迁移。
- 情况二:数据迁移中。
数据迁移进行全量复制时,长时间处于某一进度,可能是由于迁移数据量大,迁移速率慢,导致长时间内进度无明显变化,需要查看日志进行确认。若迁移速率不为0,已迁移数据量持续增加,则表明迁移正常。
- 情况三:启动目的端卡住。
1、启动目的端后任务进度条长时间为0,可能是在执行最后一次同步任务。启动目的端时会进行一次数据同步,期间进度条无变化,数据同步时间长短由源端数据量决定,如果数据量过大,会导致数据比对时间长,该现象为正常现象。若要确定是否在进行数据同步,可查看sms_Info.log最新日志,若启动目的端之后未出现error级别日志,则表明任务正常。
2、启动目的端后任务进度条有进度但长时间无变化,可尝试暂停任务,再次启动任务,等待一段时间(10分钟左右)再次查看是否发生变化。
影响迁移速度的因素有哪些?
可能会导致迁移速度慢、迁移时间长的因素如下表。
操作系统 | 影响因素 | 说明 |
---|---|---|
- | CPU和内存占用率 | 迁移过程中会占用源端主机的一部分内存和CPU,占用情况根据主机的实际情况有所不同。迁移前确保源端主机CPU和内存占用率不高于75%,实际预留内存不少于520MB。 |
网络带宽 | 主机迁移对网络有较为严格的要求,需要保证源端和目的端网络通畅,源端与目的端的网络延迟不能过高,迁移带宽取源端和目的端之间较小值。 | - |
Windows | 磁盘碎片 | Windows是块级迁移,迁移会读取磁盘中的有效块,由于Windows的特性,在日常使用中会产生大量的磁盘碎片,通常Windows使用时间越长,磁盘碎片会越多,从而影响迁移时长。 |
Linux | 文件过大 小文件过多 |
Linux是文件级迁移,源端小文件过多或者有比较大的文件,都会影响迁移速度。 源端单个文件超过2GB,可能导致迁移时间长。 源端小文件数据量过多,比如有超过一万个小于20KB的小文件,可能导致迁移时间长 |
可能会导致同步时间长的因素如下表。
操作系统 | 影响因素 | 说明 |
---|---|---|
- | 源端增量数据较多 源端变化数据较多 |
在同步过程中,如果源端产生的增量数据较多或者源端较多数据发生变化,会导致同步时间较长。 |
Windows | 碎片文件过多 | 在同步过程中,如果源端产生的碎片文件较多,会导致同步时间长。 |
Linux | 存在较大的稀疏文件 | 在同步过程中,系统会扫描稀疏文件,但不会迁移稀疏文件,如果源端有较大的稀疏文件,会导致同步时间长。 |
Linux块迁移,为什么实际迁移速率显示很低?
Linux块迁移时,实际迁移速率显示很低,远小于宽带的速率。
出现这种现象的原因,一般但不限于以下场景:
- 磁盘中数据占有率较低。
- 磁盘中存储了大量的稀疏文件。
Linux块迁移,在执行迁移的过程中会对数据进行压缩,当需要迁移的磁盘块本身存储数据较少,或者是空的磁盘块,会导致数据压缩率很高(如:100M压缩为5M),而迁移执行过程中传输的数据为压缩后的数据,所以在传输这些数据较小的磁盘块时,显示的传输速率很低。实际上,在这种场景下迁移还在正常快速的执行,网络连接、带宽等都是正常的。