本文档详细介绍了通过新版在线迁移服务将源端数据迁移到OSS所涉及的费用构成,包括OSS产品的内外网传输费用、API请求费用、解冻费用以及流量费用。
计费组成
概述
不同源端到目的端迁移数据的收费情况如下表所示:
源端 | 目的端 | 源端下行流量费 | 源端请求费 | 目的端请求费 | 传输加速的费用 |
OSS | OSS | 请参见阿里云OSS之间迁移,以获取OSS之间迁移数据的详细收费信息。 | 收费 | 收费 | 收费(开启时) 说明 在中国内地向非中国内地,或者非中国内地向中国内地迁移数据时,建议开启传输加速,以提高数据迁移效率。开启传输加速时,会产生传输加速的费用,此费用由目的端OSS收取。 |
AWS S3 | OSS | 收费 | 收费 | 收费 | - |
七牛kodo | OSS | 收费 | 收费 | 收费 | - |
腾讯COS | OSS | 收费 | 收费 | 收费 | - |
华为OBS | OSS | 收费 | 收费 | 收费 | - |
火山TOS | OSS | 收费 | 收费 | 收费 | - |
HTTP/HTTPS | OSS | 收费 | 收费 | 收费 | - |
LocalFS | OSS | - | - | 收费 | - |
LocalFS | LocalFS | - | - | - | - |
OSS | LocalFS | 请参见OSS迁移至LocalFS,以获取OSS迁移至LocalFS迁移数据的详细收费信息。 | 收费 | - | - |
计费场景
阿里云OSS之间迁移
阿里云OSS之间迁移的计费项组成如下图所示,详细示例请参见源端为OSS:
源端和迁移服务部署同地域
当数据源所在地域与所选的迁移服务部署地域一致时,数据源OSS将不会产生外网读取费用。
源端和迁移服务部署跨地域
当数据源所在地域与所选的迁移服务部署地域不一致时,数据源OSS将会产生外网读取流量费用。
OSS之间如需跨境迁移数据,建议目的端OSS开启传输加速,此费用将由目的端OSS收取。
HTTP/HTTPS迁移至OSS
HTTP/HTTPS迁移至OSS的计费项组成如下图所示:
第三方存储服务迁移至OSS
第三方存储服务迁移至OSS的计费项组成如下图所示:
LocalFS迁移至OSS
LocalFS迁移至OSS的计费项组成如下图所示:
OSS迁移至LocalFS
OSS迁移至LocalFS的计费项组成如下图所示:
源端和迁移服务部署同地域
源端和迁移服务部署跨地域
LocalFS之间迁移
LocalFS之间迁移的计费项组成如下图所示:
API请求费用
在线迁移任务在进行数据迁移前,需要进行以下操作:对源端数据进行扫描(ListObject)、对源地址和目的地址的文件进行对比(HeadObject)、在迁移时将源文件下载后上传到目的地址,并在迁移完成后对文件的元数据进行校验,这些过程都会产生相应的API请求。
由于源端的文件数量不同,对源端数据进行扫描(ListObject)请求的次数也不同,每次最多返回1000个文件。在不同的数据迁移场景下以及选择不同的覆盖方式,API请求的次数也会有所不同。对于单个文件,API请求次数的介绍如下:
数据从OSS迁移到OSS时,对于150MB以上的appendable类型文件,不会进行分片迁移,而是按照小文件计算API请求次数。
若待迁移的文件大小大于或等于150MB,系统将在进行数据迁移时对文件进行分片后再上传,每个分片大小为50MB。因此,实际的数据迁移请求次数将取决于迁移数据的大小,而请求的次数则取决于文件的分片数量(N)。举例来说,如果文件大小为159MB,则N = 159MB/50MB ≈ 4;如果文件大小为150MB,则N = 150MB/50MB = 3。N的计算公式如上所述。(以上阈值仅供参考,建议以实际访问次数为准。)
以下说明默认为文件迁移成功的状态,不涉及迁移失败时的API请求。
覆盖方式:不覆盖
针对源地址中存在,目的地址中不存在的文件
当源地址中的文件大小小于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
GetObject × 1
-
2
目的地址
HeadObject × 1
PutObject × 1
HeadObject × 1
3
当源地址中的文件大小大于或等于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
GetObject × N
-
1+N
目的地址
HeadObject × 1
InitiateMultipartUpload × 1
UploadPart × N
ListParts × 1
CompleteMultipartUpload×1
HeadObject × 1
5+N
针对源地址和目的地址都存在的同名文件
当源地址中的文件大小小于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
-
-
1
目的地址
HeadObject × 1
-
-
1
当源地址中的文件大小大于或等于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
-
-
1
目的地址
HeadObject × 1
-
-
1
覆盖方式:全部覆盖
针对源地址中存在,目的地址中不存在的文件
当源地址中的文件大小小于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
GetObject × 1
-
2
目的地址
-
PutObject × 1
HeadObject × 1
2
当源地址中的文件大小大于或等于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
GetObject × N
-
1+N
目的地址
-
InitiateMultipartUpload × 1
UploadPart × N
ListParts × 1
CompleteMultipartUpload×1
HeadObject × 1
4+N
针对源地址和目的地址都存在的同名文件
当源地址中的文件大小小于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
GetObject ×1
-
2
目的地址
-
PutObject × 1
HeadObject × 1
2
当源地址中的文件大小大于或等于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
GetObject × N
-
1+N
目的地址
-
InitiateMultipartUpload ×1
UploadPart × N
ListParts × 1
CompleteMultipartUpload ×1
HeadObject × 1
4+N
覆盖方式:根据最后修改时间覆盖
针对源地址中存在,目的地址中不存在的文件
当源地址中的文件大小小于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
GetObject × 1
-
2
目的地址
HeadObject × 1
PutObject × 1
HeadObject × 1
3
当源地址中的文件大小大于或等于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
GetObject × N
-
1+N
目的地址
HeadObject × 1
InitiateMultipartUpload × 1
UploadPart × N
ListParts ×1
CompleteMultipartUpload ×1
HeadObject × 1
5+N
针对源地址和目的地址都存在的同名文件,且目的地址文件版本均早于源地址文件
当源地址中的文件大小小于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
GetObject × 1
-
2
目的地址
HeadObject × 1
PutObject × 1
HeadObject × 1
3
当源地址中的文件大小大于或等于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
GetObject × N
-
1+N
目的地址
HeadObject × 1
InitiateMultipartUpload × 1
UploadPart × N
ListParts × 1
CompleteMultipartUpload×1
HeadObject × 1
5+N
针对源地址和目的地址都存在的同名文件,且目的地址文件版本均晚于源地址文件
当源地址中的文件大小小于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
-
-
1
目的地址
HeadObject × 1
-
-
1
当源地址中的文件大小大于或等于150MB时:
操作位置
迁移前数据对比请求
迁移数据请求
迁移后数据校验请求
API请求次数
源地址
HeadObject × 1
-
-
1
目的地址
HeadObject × 1
-
-
1
计费案例
用户场景:某用户需要迁移1000个文件,其中900个文件大小均为500KB,还有100个大小均为160MB的文件。
示例默认迁移任务正常完成,未产生迁移错误。
案例一:目的地址都没有同名文件
覆盖方式:不覆盖
描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 |
小文件 | HeadObject: 900 GetObject: 900 | 1800 | HeadObject: 900*2 PutObject: 900 | 2700 |
大文件 | HeadObject: 100 GetObject: 100*4 | 500 | HeadObject: 100*2 InitiateMultipartUpload: 100 UploadPart: 100*4 ListParts: 100 CompleteMultipartUpload: 100 | 900 |
扫描次数 | ListObject: 1 | 1 | - | - |
合计请求次数 | - | 2301 | - | 3600 |
覆盖方式:全部覆盖
描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 |
小文件操作 | HeadObject: 900 GetObject: 900 | 1800 | HeadObject: 900 PutObject: 900 | 1800 |
大文件操作 | HeadObject: 100 GetObject: 100*4 | 500 | HeadObject: 100 InitiateMultipartUpload: 100 UploadPart: 100*4 ListParts: 100 CompleteMultipartUpload: 100 | 800 |
扫描次数 | ListObject: 1 | 1 | - | - |
合计请求次数 | - | 2301 | - | 2600 |
案例二:目的地址已存在同名文件,且目的地址文件版本均早于源地址文件
覆盖方式:不覆盖
描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 |
小文件操作 | HeadObject: 900 | 900 | HeadObject: 900 | 900 |
大文件操作 | HeadObject: 100 | 100 | HeadObject: 100 | 100 |
扫描次数 | ListObject: 1 | 1 | - | - |
总计 | - | 1001 | - | 1000 |
覆盖方式:全部覆盖
描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 |
小文件操作 | HeadObject: 900 + GetObject: 900 | 1800 | HeadObject: 900 + PutObject: 900 | 1800 |
大文件操作 | HeadObject: 100 + GetObject: 100×4 | 500 | HeadObject: 100 + InitiateMultipartUpload: 100 + UploadPart: 100×4 + ListParts: 100 + CompleteMultipartUpload: 100 | 800 |
扫描次数 | ListObject: 1 | 1 | - | - |
总计 | - | 2301 | - | 2600 |
覆盖方式:根据最后修改时间覆盖
描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 |
小文件操作 | HeadObject: 900 + GetObject: 900 | 1800 | HeadObject: 900×2 + PutObject: 900 | 2700 |
大文件操作 | HeadObject: 100 + GetObject: 100×4 | 500 | HeadObject: 100×2 + InitiateMultipartUpload: 100 + UploadPart: 100×4 + ListParts: 100 + CompleteMultipartUpload: 100 | 900 |
扫描次数 | ListObject: 1 | 1 | - | - |
总计 | - | 2301 | - | 3600 |
案例三:目的地址和源地址均存在同名文件,且目的地址文件均晚于源地址文件
覆盖方式:不覆盖或者根据最后修改时间覆盖
描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 |
小文件 | HeadObject: 900 | 900 | HeadObject: 900 | 900 |
大文件 | HeadObject: 100 | 100 | HeadObject: 100 | 100 |
扫描次数 | ListObject: 1 | 1 | ||
总计 | 1001 | 1000 |
覆盖方式:全部覆盖
描述 | 源地址操作 | 源地址请求次数 | 目的地址操作 | 目的地址请求次数 |
小文件 | HeadObject: 900 GetObject: 900 | 1800 | HeadObject: 900 PutObject: 900 | 1800 |
大文件 | HeadObject: 100 GetObject: 100×4 | 500 | HeadObject: 100 InitiateMultipartUpload: 100 UploadPart: 100×4 CompleteMultipartUpload: 100 | 800 |
扫描次数 | ListObject: 1 | 1 | ||
总计 | 2301 | 2600 |
API请求的实际费用以各存储服务商的定价为准。,OSS的费用请参见计量项和计费项。
解冻取回费用
对于归档类型的数据,需要您提前进行解冻操作,待解冻完成后再创建迁移任务,解冻时请注意如下事项:
请您务必完成解冻操作后再创建源数据地址和迁移任务。
请您根据待迁移的数据总量确保解冻时长,以防迁移期间数据再次变成冻结状态。
解冻操作会收取数据取回的费用,部分解冻服务收费较高。具体计费规则可咨询您的源存储空间服务运营商。
在线迁移服务并不会对源端数据执行解冻操作。若您源端有未解冻、解冻中的文件,则这些文件都会迁移失败。
下载与上传流量费用
数据迁移时,在线迁移服务会先将数据从源端下载,再将数据上传至OSS。这个过程会产生一定的流量费用,不同场景下的流量费用如下:
以下说明默认为迁移成功的状态,不涉及迁移失败时流量费用。
源端为第三方存储服务商
此时会在源端产生数据下载费用,产生的流量由数据的实际大小决定,由源地址所在存储服务商收取。数据在一定带宽范围内上传至OSS不收取流量费用,更多信息,请参见使用限制。
源端为OSS
两个OSS Bucket之间的数据迁移操作是否产生下行流量费,与您是否在控制台上选择了正确的迁移服务部署地域有关,此处所指的迁移服务部署地域,是指如下图中所示的地域选择,您需要在创建任务前选择地域。
1.当数据源所在地域与所选的迁移服务部署地域一致时,数据源OSS将不会产生外网读取费用。
示例:源和目的同为北京OSS,在线迁移服务部署地域选择北京,迁移时不会在源端OSS产生外网读取费用。
2.当数据源所在地域与所选的迁移服务部署地域不一致时,数据源OSS将会产生外网读取费用。
示例:源为北京OSS,目的为新加坡OSS,在线迁移服务部署地域选择新加坡,迁移时会在源端OSS产生外网读取费用。
为了遵循传输链路最短原则,建议在迁移前,将迁移服务部署地域与数据源所在的地域保持一致。如果没有可用的地域,建议选择靠近您业务的地域,以确保迁移效果最佳。