背景
阿里云云存储网关(Cloud Storage Gateway, CSG)软件版(以下简称CSG软件版)是一款可以安装在阿里云用户机器(ECS,或用户自建机房服务器)上的云存储网关产品。使用CSG软件版可以实现将OSS Bucket挂载到用户机器,以POSIX文件系统接口进行访问。
目前CSG软件版同时支持Linux系统和Windows系统。
对于备份上云的场景,通常需要将文件完整上传到OSS中,这个过程会将文件从头到尾按顺序进行传输。我们将这种数据的写入模式称为顺序写模式。在顺序写的场景下,CSG软件版根据这种写入模式的特点,使用内存作为缓冲区,避免磁盘写入的性能瓶颈,充分利用网络带宽进行文件上云。
顺序写模式与标准模式的对比
标准模式 |
顺序写模式 |
|
缓存磁盘 |
需要 |
不需要数据缓存部分,仅需要元数据部分 |
内存 |
少 |
多,该模式使用内存进行传输加速,内存使用和使用方法有关,需要合理评估内存使用量 |
写入性能 |
受限于磁盘带宽 |
受限于网络带宽,顺序写入的业务负载在该模式下远高于标准模式 |
读取性能 |
已经缓存在磁盘中的数据读取比较快 单流自带预取策略,并发场景受限于磁盘带宽 |
无本地缓存 单流受限于OSS性能,高并发下可充分利用带宽 |
随机和覆盖写 |
支持 |
不支持,覆盖写入同名文件需要先删除老文件 |
文件上云模式 |
异步上云,挂载点写入成功后触发上传 |
同步上云,挂载点写入成功后OSS立即可见 |
创建文件夹(mkdir) |
支持 |
支持 |
重命名(mv) |
支持 |
支持,同步串行进行OSS文件Copy,文件过大耗时较长。 |
修改文件属性操作(chmod) |
支持 |
不支持,请求不报错但不生效 |
软链接(symlink) |
支持 |
不支持 |
根据上述对比表格可以发现,CSG软件版顺序写模式是针对文件纯上云场景下的特殊优化版本,在纯顺序写场景下可以充分发挥机器的网络带宽,高效上云。下面对CSG软件版顺序写模式的使用方式做进一步介绍。
前提条件
- 已注册阿里云账号,并完成实名认证。
- 已开通云存储网关服务。
- 已有可用的Linux客户端机器,目前支持的操作系统为:CentOS 7、Alibaba Cloud Linux 2。
- 线上CSG软件版:在创建CSG软件版的地域,已有可用的阿里云服务器ECS作为客户端机器。
- 线下CSG软件版:要求机器可以访问公网或者通过阿里云专线等方式接入阿里云VPC。
- 已创建OSS Bucket,且OSS Bucket的地域应当与客户端机器的地域保持一致。
- 已创建阿里云AccessKey信息。
具体可以参考:https://help.aliyun.com/document_detail/286329.html。
使用步骤
步骤一:下载安装包
当前最新版本:0.6.1。
Linux操作系统
下载链接:
- Ubuntu 16.04:CsgAgent-latest-ubuntu1604.deb
- Ubuntu 18.04:CsgAgent-latest-ubuntu1804.deb
- Ubuntu 20.04:CsgAgent-latest-ubuntu2004.deb
- Centos 7:CsgAgent-latest-centos7.rpm
Windows操作系统
下载链接:
Windows Server 2016、Windows Server 2019:CsgAgent-latest-win64.zip
下面以centos7版本进行举例。
步骤二:安装
从官网下载安装包CsgAgent-latest-centos7.rpm至客户端。
执行下列命令进行安装:
sudo rpm -i CsgAgent-latest-centos7.rpm sudo /usr/local/bin/Aliyun/csg/scripts/install.sh
可以执行命令csgfsctl --help
查看云存储网关软件版安装情况。
步骤三:激活
云存储网关软件版安装完成后,需要对其进行激活才能正常使用。使用前,您需要获得自己AccessKey(ak)和AccessKey Secret(sk)信息。如果是您是RAM用户,则需要具备AliyunHCSSGWFullAccess 权限。
- 线上CSG软件版:执行命令行 csgfsctl activate --ak=xxx --sk=xxx 进行激活。
- 线下CSG软件版:执行命令行 csgfsctl activate --region=xxx --ak=xxx --sk=xxx 进行激活。其中,region只能填写CSG软件版控制台支持的地域,以杭州地域为例,region为cn-hangzhou。
激活完成之后,您可以登录CSG软件版控制台,选择对应的地域,即可以查看到对应的CSG软件版客户端信息。
步骤四:创建顺序写模式挂载点
以一个在杭州地域的阿里云ECS客户端上创建挂载点为例。使用的OSS Bucket名称为gw1-test,工作模式为seq-write,数据缓存大小为20GB,在顺序写模式下不会占用数据缓存的空间,CSG软件版支持顺序写模式与标准模式进行切换,配置中的20GB为给标准模式预留。
csgfsctl create --mp=/mnt/test --cd=/root/cache --ak=xxx --sk=xxx --ep=oss-cn-hangzhou-internal.aliyuncs.com --bucket=gw1-test --dc=20-c=30--work-mode=seq-write
创建成功使用csgfsctl get可以看到对应的挂载点。
简单测试
测试一:复制本地文件到挂载点
- 创建一个seq-demo的测试文件夹。
- 将安装包copy到测试目录下:
在OSS控制台可以看到文件的mtime与本地一致,表明文件同步上云没有延迟。
测试二:使用dd命令测试文件写入速度
dd if=/dev/zero of=/mnt/test/seq-demo/file bs=1M count=1024oflag=direct status=progress
带宽性能和机器规格有关,可以看到单路文件的上传已经超过了普通高效云盘的带宽。
测试三:覆盖写文件
- 尝试二次cp安装包到测试目录,覆盖写入被拒绝。
- 将老文件重命名为xxx.old,再次进行cp,成功。
内存使用评估方法
顺序写模式的内存使用和写入的并发程度相关,每个文件的在写入时会分配临时的内存缓冲区,在0.6.1版本及以前默认为20MB*2的内存,即单文件写入需要40MB内存占用,当文件关闭后对应缓冲区自动释放。当同时写入10个文件时,则需要占用40MB*10=400MB的内存空间,每个挂载点本身也需要预留约512MB的内存空间作为文件上传缓冲。
请根据自己的机器规格合理的安排同时写入的文件的个数,在顺序写入的模式下,由于CSG软件版往OSS上传数据也是多线程进行的,串行写入文件也可以获得比较好的性能,建议同时写入的文件不要超过4个。
另外,支持写入的文件大小与缓冲区大小有关,默认支持小于20MB*10000=200GB文件上传。若遇到需要支持更大文件上传的情况时,请联系阿里云售后支持。