美文网首页
阿里云OSS 千万级图片上云实践

阿里云OSS 千万级图片上云实践

作者: 泽_3b5f | 来源:发表于2019-04-07 18:01 被阅读0次

    背景信息

    本作业讲解如何将本地图片数据迁移到OSS。
    图片特点:图片数量1500万张,相对集中在某一两个目录中,小图片偏多(公式、特殊符号)。

    上云要求

    • 避开 OSS热点分区 问题
    • 减少修改html代码src的工作量
    • 三天时间

    准备工作

    阿里云对象存储OSS

    • 创建存储空间(Bucket)
      创建目标存储空间,用于存放迁移的数据。详情请参见创建存储空间

    阿里云ECS

    阿里云默认的inode比较小,通过挂载云盘并 修改inode数量 来解决

    挂载云SSD云盘

    登录阿里云

    1. 购买按量付费ECS,配置为4核4G,100M按量付费宽带
    2. 进入ECS实例列表,点击上面购买的ECS实例,进入管理页面
    3. 左侧菜单选择本实例磁盘
      创建云盘, 调整所需容量
      挂载云盘,选择上述购买的云盘,确定

    ossutil

    参考 ossutil官方文档 进行配置

    最后执行 ossutil64 ls 查看是否能运行

    root@iZwz914pbzq5ymv637xr8qZ:/tmp# ./ossutil64 ls
    CreationTime                                 Region    StorageClass    BucketName
    2018-12-12 16:43:36 +0800 CST       oss-cn-shanghai        Standard    oss://cloudshell-cn-shanghai-ccr3tylw9i
    2017-12-12 10:10:29 +0800 CST       oss-cn-shenzhen        Standard    oss://ennjoydev
    

    附录

    进行图片转存时,您需要确保分区容量和inode容量充足。

    • 分区容量

    运行 df -h 选择分区容量充足的目录

    dev@yinzhuo:/home$ df -h
    Filesystem                   Size  Used Avail Use% Mounted on
    udev                          16G     0   16G   0% /dev
    tmpfs                        3.2G  1.9M  3.2G   1% /run
    /dev/mapper/ubuntu--vg-root  467G   29G  415G   7% /
    tmpfs                         16G     0   16G   0% /dev/shm
    
    • inode容量

    运行 df -i 查看inode使用情况

    dev@yinzhuo:/home$ df -i
    Filesystem                    Inodes  IUsed    IFree IUse% Mounted on
    udev                         4100886    528  4100358    1% /dev
    tmpfs                        4109062   1024  4108038    1% /run
    /dev/mapper/ubuntu--vg-root 31121408 252063 30869345    1% /
    tmpfs                        4109062      1  4109061    1% /dev/shm
    

    若inode不够用, 考虑 修改inode数量

    迁移实施

    步骤一:文件目录二次处理,并压缩

    • 递归遍历文件夹,取出所有文件路径
    • 对文件路径进行md5,截取前几位,作为新路径的根目录
    • 把文件搬迁到新的目录

    提速技巧

    • 利用find把所有文件找出来,写到文件

    find /文件所在绝对路径 -type f -print > /home/files.log

    • 根据自身规划,合理规划目录个数和层级数量,从而降低inode消耗量,减少压缩解压缩工作时间

    md5目录得到十六进制字符串,截取前几位。如本次作业截取前三位,共有 16 * 16 * 16 个一级目录

    • tar 打包文件时,取消压缩参数,以空间换时间,加快压缩和解压缩速度

    本作业属于一次性压缩和解压缩任务,使用 tar -cvf ,而不是 tar -czvf

    步骤二:上传压缩文件到ECS,并解压

    • 上传压缩文件到ECS

    提速技巧

    • 先上传压缩包到oss,然后在ecs使用内网下载压缩包
      改url域名走内网通道

    oss-cn-shenzhen.aliyuncs.com ==> oss-cn-shenzhen-internal.aliyuncs.com/

    步骤三:上传图片文件至OSS

    • 利用ossutil64将文件推送至oss

    ossutil64 cp -rf /图片目录/ oss://ossBucket名称/

    提速技巧

    后续操作

    上传结束后,先卸载释放云盘,再释放ECS

    QA

    为什么不使用OSS的 ECS数据迁移到OSS 方案

    该方案要提交申请,截止19年4月3号,并不是完全商业化的

    为什么不在本地主机,利用ossutil64直接上传到oss

    本地上到oss,走的是外网,ECS到oss,走的是内网。速度有差距

    是整体打包,还是分成几部分打包

    看磁盘容量而定
    如果分几部分,后期可用多台ECS并行上传,提高上传效率
    

    图片完全重命名,还是沿用原来的名称

    沿用原来名字。因为图片完全重命名,收益小于成本
    

    删除大量文件,速度很慢
    可以参考这篇文章

    相关文章

      网友评论

          本文标题:阿里云OSS 千万级图片上云实践

          本文链接:https://www.haomeiwen.com/subject/ofnsiqtx.html