-
背景s3fs是一款开源的,支持将对象存储中的bucket以文件形式导出的文件系统接口,兼容POSIX语义。本文介绍了使用s3fs,将OBS的桶挂载至本地目录,从而通过文件系统的风格进行OBS桶内基本操作。同时,基于性能比对测试,本文推荐了一组s3fs挂载参数参数,以供参考使用。s3fs挂载示意图如下所示:s3fs环境搭建1、 申请一台CentOS版本的ECS。2、 在OBS上创建一个桶,用于后续挂载访问。3、 安装s3fs工具:登录ECS并在root权限下,参考如下步骤安装s3fs。(1)创建挂载目录mkdir /data_obs(2)安装fuse组件(原因:s3fs依赖fuse组件),CentOS可采用如下方式安装。yum install fuse (3) 参考官方网页(https://github.com/s3fs-fuse/s3fs-fuse)安装s3fs,CentOS的安装方式如下:sudo yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel git clone https://github.com/s3fs-fuse/s3fs-fuse cd s3fs-fuse ./autogen.sh ./configure make sudo make install 注意:如果操作系统为Centos6.5,则需要手动安装fuse2.8.4(Centos6.5缺省fuse为2.8.3),详细操作如下cd /data/software/ wget https://github.com/libfuse/libfuse/releases/download/fuse_2_9_4/fuse-2.8.4.tar.gz tar -zxvf fuse-2.8.4.tar.gz cd fuse-2.8.4 ./configure make make install export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib64/pkgconfig/:/usr/local/lib/pkgconfig modprobe fuse echo "/usr/local/lib" >> /etc/ld.so.conf ldconfig pkg-config --modversion fuse //看到版本为2.8.4表示安装成功 (4) 在/root/下创建.passwd-s3fs的文件,设置文件权限为600chmod 600 /root/.passwd-s3fs 文件中的内容为AK:SK,如下所示,修改完毕的.passwd-s3fs文件如下所示:(5) 执行如下格式命令实施mount(以下示例中,桶名为obs-hpc-test,在实际使用时,桶名,挂载点,以及url需根据实际情况修改)s3fs -o allow_other obs-hpc-test /data_obs -o url= -o umask=0挂载后的结果如下所示:挂载目录卸载 卸载已挂载目录的方式为,使用root账户执行如下命令:umount -l /data_obs/ 其中/data_obs/目录为示例的挂载路径。参数调优 经过比对测试,从性能优化的角度,推荐以下一组参数作为挂载参数。s3fs obs-hpc-test /data_obs/ -o passwd_file=/root/.passwd-s3fs -o url=http://obs.cn-north-1.myhwclouds.com/ -o allow_other -o umask=0 -o max_write=131072 -o use_cache=/dev/shm -o big_writes -o enable_noobj_cache -o sigv2 -o del_cache-o allow_other本参数用于设置挂载目录可以被任意登陆服务器的用户使用,且可以将该挂载目录用于创建NFS/SMB共享。-o umask=0本参数用于设置挂载挂载后资源的访问权限,确保挂载后所有用户能够对挂载目录下资源具有访问权限。umask与chmod配套,当设置umask=0时对于文件权限为777,若需要设置权限为755则设置umask=022,以此类推配置所需权限-o max_write本参数用于设置vfs的上传块大小,默认值为4096,可将该数值设置为fuse所支持的最大值128k(即设置-o max_write=131072),以提升性能。-o use_cache 使用内存作为缓存目录,而非本地磁盘作为cache将提升文件读写性能,即将该值设置为-o use_cache=/dev/shm。如果系统内存使用较高则建议另外挂载一个SSD盘作为缓存目录-o enable_noobj_cache 使用本参数后,将减少s3fs发送的列举桶的请求,从而提升性能。-o big writes 开启本参数后,内核会进行IO合并,对于大块读写,提升性能。-o sigv2 缺省值为采用V4鉴权,使用V2鉴权效率更高,兼容性更好。-o del_cache 文件使用完成后及时清理缓存中的数据。-o multipart_size(default="10"(10MB)) 设定上传是单个分段的大小,缺省值为10MB,按照对象存储支持最大1万个分段,最大支持上传约98GB的对象。如果待上传的文件大小超过100,000MB,则需要调大该参数,最大支持5120单位为MB(对象存储支持单个分片最大5GB) 设置开机启动为确保客户端重启后,仍可自动挂载OBS桶至本地目录,需在/etc/fstab中新增一行s3fs的开机启动的挂载命令。参考上述最优参数,则新增的/etc/fstab中的挂载命令格式如下:s3fs#obs-hpc-test /data_obs/ fuse _netdev,allow_other,umask=0,use_cache=/dev/shm,max_write=131072,big_writes,enable_noobj_cache,sigv2,del_cache,url=http://obs.eu-de.otc.t-systems.com/其中obs-hpc-test为示例的桶名,/data_obs为示例的挂载路径,http://obs.eu-de.otc.t-systems.com为示例的url,实际配置时,需根据实际情况修改。同时,对比s3fs直接挂载命令可发现,/etc/fstabl中的s3f3开机启动命令中,各项参数无需-o连接,而是直接使用逗号分隔即可。补充说明 如果需要挂载桶内指定目录,而非整个桶,在桶名后添加“:/”再接目录名即可。如:obs-hpc-test:/dir01
-
通过s3fs工具以文件系统方式访问obs背景s3fs是一款开源的,支持将对象存储中的bucket以文件形式导出的文件系统接口,兼容POSIX语义。本文介绍了使用s3fs,将OBS的桶挂载至本地目录,从而通过文件系统的风格进行OBS桶内基本操作。同时,基于性能比对测试,本文推荐了一组s3fs挂载参数参数,以供参考使用。s3fs挂载示意图如下所示:s3fs环境搭建1、 申请一台CentOS版本的ECS。2、 在OBS上创建一个桶,用于后续挂载访问。3、 安装s3fs工具:登录ECS并在root权限下,参考如下步骤安装s3fs。(1) 创建挂载目录mkdir /data_obs(2) 安装fuse组件(原因:s3fs依赖fuse组件),CentOS可采用如下方式安装。yum install fuse(3) 参考官方网页(https://github.com/s3fs-fuse/s3fs-fuse)安装s3fs,CentOS的安装方式如下:sudo yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-develgit clone https://github.com/s3fs-fuse/s3fs-fuse.gitcd s3fs-fuse./autogen.sh./configuremakesudo make install(4) 在/root/下创建.passwd-s3fs的文件,设置文件权限为600chmod 600 /root/.passwd-s3fs文件中的内容为AK:SK,如下所示,修改完毕的.passwd-s3fs文件如下所示:(5) 执行如下格式命令实施mount(以下示例中,桶名为obs-hpc-test,在实际使用时,桶名,挂载点,以及url需根据实际情况修改)s3fs -o allow_other obs-hpc-test /data_obs -o url=http://obs.eu-de.otc.t-systems.com/ -o umask=0挂载后的结果如下所示:挂载目录卸载 卸载已挂载目录的方式为,使用root账户执行如下命令:umount -l /data_obs/ 其中/data_obs/目录为示例的挂载路径。参数调优 经过比对测试,从性能优化的角度,推荐以下一组参数作为挂载参数。s3fs -o allow_other obs-hpc-test /data_obs/ -o passwd_file=/root/.passwd-s3fs -o url=http://obs.cn-north-1.myhwclouds.com/ -o umask=0 -o max_write=131072 -o use_cache=/dev/shm -o big_writes -o enable_noobj_cache -o max_write 本参数用于设置vfs的上传块大小,默认值为4096,可将该数值设置为fuse所支持的最大值128k(即设置-o max_write=131072),以提升性能。 -o use_cache 使用内存,而非本地磁盘作为cache将提升文件读写性能,即将该值设置为-o use_cache=/dev/shm。 -o enable_noobj_cache 使用本参数后,将减少s3fs发送的列举桶的请求,从而提升性能。 -o big writes 开启本参数后,内核会进行IO合并,对于大块读写,提升性能。设置开机启动为确保客户端重启后,仍可自动挂载OBS桶至本地目录,需在/etc/fstab中新增一行s3fs的开机启动的挂载命令。参考上述最优参数,则新增的/etc/fstab中的挂载命令格式如下:s3fs#obs-hpc-test /data_obs/ fuse _netdev,allow_other,umask=0,use_cache=/dev/shm, max_write=131072,big_writes,enable_noobj_cache,url=http://obs.eu-de.otc.t-systems.com/其中obs-hpc-test为示例的桶名,/data_obs为示例的挂载路径,http://obs.eu-de.otc.t-systems.com为示例的url,实际配置时,需根据实际情况修改。同时,对比s3fs直接挂载命令可发现,/etc/fstabl中的s3f3开机启动命令中,各项参数无需-o连接,而是直接使用逗号分隔即可。
-
通过s3fs工具以文件系统方式访问obss3fs是一款开源的,支持将对象存储中的bucket以文件形式导出的文件系统接口,兼容POSIX语义。本文介绍了使用s3fs,将OBS的桶挂载至本地目录,从而通过文件系统的风格进行OBS桶内基本操作。同时,基于性能比对测试,本文推荐了一组s3fs挂载参数参数,以供参考使用。[最佳实践]通过s3fs工具以文件系统方式访问obs.pdf( 预览 )
-
链接:https://support.huaweicloud.com/wtsnew-obs/index.html位置:OBS帮助中心左侧导航栏第一本手册攻略:OBS最新发布的特性、文档、SDK以及相关介绍都在“最新动态”中记录,如果您想了解OBS服务发展历程,或是服务最新特性,千万不要错过哦。小锦囊:想了解特性的详细描述,可以单击“操作指导”获取。
-
【OBS专题】新上线此专题页面汇聚了OBS产品介绍、入门使用、视频帮助、最佳实践、问题处理、帮助文档、SDK等精华内容,可帮助用户快速了解并使用OBS。
-
为实现数据的高可靠和高性能,专属对象存储采用ErasureCode(EC,纠删码)算法做数据冗余,由于不同大小的数据存入专属OBS,数据冗余比不完全一致,所以专属云的实际使用容量与下单时预估的存储容量会存在一定的不一致。不一致的原因在于,下单时购买专属对象存储,实际是购买了一定数量的专属存储服务器,为了便于理解,我们把固定数量的专属存储硬件的裸容量做了转换,根据EC算法典型的数据冗余比率,转换成了预估的有效容量。 不同大小数据的冗余比不一致的原因,我们从EC算法的原理进行解释,专属OBS EC算法原理:专属OBS首先会对接收到的数据进行条带化,然后对每N个原数据条带,使用EC算法进行冗余计算,计算得到M个冗余数据条带,不同的条带会存入不同的硬盘,以此来提升数据读写的带宽和保障数据可靠性。但实际上对象切分的数据条带可能不足N个,也会产生固定的M个冗余条带,此时容量利用率会低于典型冗余比N/(N+M)。也就是说固定数量的专属对象存储设备,在存储不同大小的对象时,有效容量不是完全一致的。特别是小对象,容量利用率会低于大对象的容量利用率。 所以如果存储的小文件(小于3MB)过多,实际可使用的容量会小于下单时的预估容量。
-
尊敬的华为云客户:华为云计划于2018/09/07 00:00:00将对象存储迁移服务(Object Storage Migration Service, 简称OMS)正式转商用。对象存储迁移服务是一种线上数据迁移服务,帮助客户把对象存储数据从其他云服务商的公有云轻松、平滑地迁移到华为云。对象存储迁移服务正式商用后,将有一段时间免费期,免费时间到2019/06/30 23:59:59,服务将于2019/07/01 00:00:00开始收费,按迁移数据累积流量计费,收费标准:0.1元/GB。华为云在此提醒您,如果不再使用对象存储迁移服务,请于服务免费期结束前(2019/06/30 23:59:59)登陆对象存储迁移服务控制台,停止所有迁移任务,避免产生费用。更多关于对象存储迁移服务的产品介绍请您点击了解。如您在使用过程中有宝贵意见,欢迎您拨打华为云服务热线:4000-955-988与我们联系。感谢您对华为云的支持!https://www.huaweicloud.com/notice/2018/20180830102724523.html
-
对象存储迁移服务 OMS在迁移过程中,如果源端数据发生变化,目的端会同步变化吗,在相关文档上查不到这个信息。
-
每次都是到这就异常了,已经跑了一晚上了,还是没有下载下来:异常1:异常2:
-
概念:媒体转码服务使用对象存储服务管理媒体文件,使用转码服务前,需要先进行对象存储服务的授权并上传媒体文件。操作步骤登录对象存储服务控制台,单击“创建桶”。创建媒体转码服务需要的桶,用于存储媒体转码服务的输入、输出文件。创建桶过程中,如果输入文件和输出文件分别以不同的桶进行存储时,结合媒体转码服务的业务特性,推荐存储输入文件的桶设置为“低频访问存储”,存储输出文件的桶设置为“标准存储”。说明: 当前媒体转码服务部署在华北区,在对象存储服务创建桶时,请选择华北区。单击桶名称,点击“对象 > 新建文件夹” ,配置转码服务输入、输出文件存放目录。单击桶名称,点击“对象 > 上传文件” ,上传媒体资源文件。OBS文档中提供了多种上传方式,包含大文件上传、批量上传,文件上传的详细操作方法请参考对象存储服务帮助文档。登录媒体转码服务控制台,进入“云资源授权”页面并授权。转码服务只能从经过授权的桶上获取媒体文件,并将输出的转码文件写入经过授权的桶。
-
为公司有通知文件管理和归档的需求,所以购买了一个华为云OBS服务,使用自开发接口来进行通知文件的上传下载,由于通知文件有短时高并发访问的特点,决定使用nodejs来实现,毕竟node在通讯和IO上有他独特的优势。开发过程中遇到了一些小坑,但是在华为云服务技术人员的支持下,完成了核心的功能上传和下载,这里简单的分享下。华为文档在官网上都可以查询到,需要根据文档来进行开发的,部分文档说明不明确的地方可能会造成开发人员的困惑,我这里会对这些进行简单的说明。华为云OBS有标准的nodejs-SDK,可以进行下载使用,只是该SDK不是很适用于我们的项目,因为我们小文件居多,也有自己的业务组件,所以没有采用SDK的方式进行实现,而使用了更轻量级的head携带信息进行请求的方式来进行实现。查阅head方式调用api的文档。核心内容就是head的Authorization的签名生成,这里直接举例子进行签名的生成,下面将分别从实例上介绍上传和下载的功能实现。至于秘钥文件的获取和部分前台操作相信大部分运维人员会搞定,这里就不做详细说明了。 场景:桶下有一个文件需要下载,桶命:buk1,文件名:test.txt,下载到本地项目目录./buk1/test/ 路径下第一步,构造请求的URL,这里注意。需要把文件的key拼接在云服务桶的endpoint后。比如,从前台获取到的桶的endpoint是http://桶名.obs.cn-south-1.myhwclouds.com,你要下载文件的key是/test.txt,这个时候你的完整的请求url就是http://桶名.obs.cn-south-1.myhwclouds.com/test.txt;第二步,构造Authorization参数,这里的组成请参考官网文档,值得注意的是,不要随意颠倒拼接的顺序,要严格按照官网的顺序进行拼接,拼接的时候注意以下几点:1.标准时间,这里注意的是,使用的是格林威治的标准时间,不需要进行时区的转换,node重获取这个时间和时间字符串的方法如下var gmdate = new Date();var utcdate = gmdate.toUTCString();2.请求方法,下载的请求方法为GET,node中直接定义var httpMethod = ‘GET’ 即可;3.SK:SK全名SecretAccessKeyID,作为加密的秘钥,这个可以从前台获取4.AK:AK全名AccessKeyid,作为一个标识,放入Authorization头,后面会说明5.CanonicalizedHeaders 和 CanonicalizedResource,按照文档进行配置,下载这里有时候需要加入一个Content-Type字符串避免签名验证失败,例如txt类型的文件的Content-Type就是text/plain准备好以上的变量后就是开始计算Signature了,根据华为OBS文档,这里直接展示拼接的字符串在node中的代码var beforestr = ‘GET’+ "\n" + "\n" + "text/plain\n" + 时间(utcdate变量) + "\n" + "/桶名/test.txt";这个字符串注意几点,除了最后,每个字符串拼接需要拼接一个‘\n’,直接使用字符串即可,不用考虑转义。关于text/plain就是txt文件的Content-Type,有时候必须加入这个参数后才不会出现403签名错误,最后的字符串参照文档即可,即/桶名/key名,具体各种文件的Content-Type可以查阅附件(从官方标准SDK中剥出来的)ContentType.rar接下来就是对这个字符串进行加密,。加密的过程很标准,这里直接给出代码,如下 var signaturestr =crypto.createHmac("sha1",秘钥(SecretAccessKeyID)).update(utf8.encode(beforestr)).digest().toString("base64"); 到此获取完最复杂的签名后就是构造请求头部,这里比较简单,直接贴出代码做简单说明 var headarr = { "Date": utcdate, //这里的时候就是注意使用上方的签名中的时间字符串,避免在new一个新的,会造成时间不一致导致签名失败 "Host": "桶名.obs.cn-south-1.myhwclouds.com",//照抄,注意这里不要在尾部添加文件key "Authorization": "OBS AK(AccessKeyid):" + signaturestr, //注意空格和: "Content-Type": " text/plain " //这里尤其要注意和上方加密的字符串保持一致,意思就是字符串中有,这里必须有,否则将导致签名错误 }; 至此,需要准备的变量都完成了,准备进行API请求,我使用的是node的request模块,这里比较简单,直接贴出代码。注意保存路径必须存在,否则会出错,相关验证请自行根据应用场景添加var options = { url: http://桶名.obs.cn-south-1.myhwclouds.com/test.txt headers: headarr };httprequest(options).pipe(fs.createWriteStream(‘./buk1/test/test.txt’)).on("close", function (err) { if (err) { console.log(err); //错误操作 } //成功操作 });关于上传: 有了下载的经验,实现上传就简单的多了。直接贴出代码(代码片段,比如模块引入等,不全请注意自行补全). 场景:把代码目录下的test.txt上传到:桶名/test.txt 的key中 但是有个注意点需要特别注意,就是自定义CanonicalizedHeaders 和 CanonicalizedResource的时候,必须要按照文档的顺序,从上至下添加,不能违反文档的顺序,截图如下,并且要注意各个API允许的CanonicalizedHeaders 和 CanonicalizedResource是不一样的,要遵循文档结合应用场景进行设计。 var crypto = require('crypto');var utf8 = require('utf8');var fs = require('fs');var httprequest = require(‘request’)fs.readFile('./test.txt', function (err, data) { if (err) { console.log(err); } console.log('----------data---------------') console.log(data); console.log('-----------------------------'); var datalength = data.length; var url = 'http://桶名. obs.cn-south-1.myhwclouds.com/test.txt'; console.log('url---->' + url); var gmdate = new Date(); var utcdate = gmdate.toUTCString(); var httpMethod = "PUT"; //注意,上传使用的是PUT方式 var beforestr = httpMethod + "\n" + "\n" + "text/plain\n" + utcdate + "\n" + 'x-obs-acl:public-read\nx-obs-storage-class:STANDARD\n' + "/桶名/test.txt"; //注意x-obs-*的顺序 console.log('------------para-------------'); console.log(beforestr); console.log('-----------------------------'); var SecretAccessKeyID = "你的SK"; var signaturestr = crypto.createHmac("sha1", SecretAccessKeyID).update(utf8.encode(beforestr)).digest().toString("base64"); console.log('sing------------->' + signaturestr); var headarr = { "Date": utcdate, "User-Agent": "curl/7.15.5", "Host": "obs-e06d.obs.cn-south-1.myhwclouds.com", "x-obs-acl": "public-read", //注意x-obs-*的顺序和上方字符串一致 "x-obs-storage-class": "STANDARD", //注意x-obs-*的顺序和上方字符串一致 "Authorization": "OBS 你的AK:" + signaturestr, //注意空格和: "Content-Type": "text/plain", //和上方字符串保持一致 "Content-Length": datalength //长度不可省略 }; console.log('------------head-------------'); console.log(head); console.log('-----------------------------'); var options = { url:url, headers: headarr, body: data }; httprequest.put(options, function (error, response, body) { if (!error && response.statusCode == 200) { //可以使用response获取返回的header,里面有部分OBS返回参数 } else { //错误处理 }); }) 至此,node通过head签名方式实现文件上传和下载就实现了。这里为了展示过程,没有进行任何代码封装,比较直观,方便看到具体过程。如有遇到问题或者更好的建议,欢迎各位大神指出,共同进步!谢谢!
-
适用场景:1.用户可以将本地实例上的数据库通过全量备份生成备份文件,并通过OBS服务与DRS服务,将该备份文件直接还原到RDS SQL SERVER实例上2.用户从本地备份出来的备份文件的版本必须小于等于要还原的目标实例的版本。例如:你本地是2012标准版的实例,你备份出来的文件就只能还原到2014,2016标准版或企业版,不能还原到2008 的所有版本,和2014,2016的Web版上 操作步骤:1.首先备份你的本地实例上的一个数据库或多个数据库到一个备份文件中,备份文件后缀必须为.bak。脚本命令如下,我们可以将多个数据库备份到同一个备份文件中,也可分开来备份:BACKUP DATABASE [AdventureWorks] TO DISK = N'D:\RDSDBDATA\BACKUP\LocalDatabase.bak' WITH NOFORMAT, NOINIT, NAME = N'本地备份文件上传RDS [AdventureWokrs]', SKIP, NOREWIND, NOUNLOAD, STATS = 10 BACKUP DATABASE [CBC] TO DISK = N'D:\RDSDBDATA\BACKUP\LocalDatabase.bak' WITH NOFORMAT, NOINIT, NAME = N'本地备份文件上传RDS [AdventureWokrs]', SKIP, NOREWIND, NOUNLOAD, STATS = 10 BACKUP DATABASE [RDM_Count] TO DISK = N'D:\RDSDBDATA\BACKUP\LocalDatabase.bak' WITH NOFORMAT, NOINIT, NAME = N'本地备份文件上传RDS [AdventureWokrs]', SKIP, NOREWIND, NOUNLOAD, STATS = 10 2.在备份前,需要对每一个数据库进行以下信息的确认:1.点击数据库属性,确认该数据库的恢复模式必须是完整;兼容性级别必须大于等于100;如果不是请更新该数据库,避免迁移报错2.同时数据库的恢复模式请改为完整 3.完成以上工作后,我们账号登录华为云官网,进入对象存储服务 4.我们在上面先创建一个公共桶。注意:1.该桶所在区域必须跟RDS SQL SERVER 实例所在区域一致 2.该桶最好设置为公共读写5.桶建好之后,可以直接通过在线页面能进行上传点击刚才生成的桶,在对象里面可以上传文件到根目录。注意:1.小于50M的文件支持页面上传2.目前DRS服务仅支持根目录上的备份文件上传,所以请直接上传文件,不要添加文件夹 6.如果你的备份文件大于50M,则需要下载OBS客户端进行上传操作。a.工具下载地址:https://developer.huaweicloud.com/toolsb.选择业务工具,下载OBS Browser工具 到本地,下载完成后可直接解压使用c.解压后双机obs.exe打开客户端通过AKSK密钥登录,AKSK可以在我的凭证下进行创建和管理,具体为:1).进入我的凭证2).选中管访问密钥,改密钥如果遗失,仅能通过删除重建进行重置。3).通过新获得的密钥,登录OBS Browser4).打开OBS Browser,点中右上方用户信息,选择账号管理,在账号管理中,输入上面的信息,在确认后跳转到该账号5).登录成功后选择添加桶,选择添加外部桶,输入下载页面上给出的桶名6).添加成功后点击进入该桶,在根目录下上传bak文件。 7.备份文件上传成功后就可以进入DRS服务,进行离线还原操作了。a.在页面上找到DRS数据库复制服务b.进入DRS控制台界面后,点击左侧离线迁移管理,再点击右侧创建迁移任务备注:如果你欠费了就看不到右边的创建迁移任务的按钮,请充值哦c.进入任务界面后在下方选中刚才上传备份文件的桶名,这是他会自动刷出该桶根目录下的所有.bak的备份文件,选中刚才上传的备份文件,点击下一步。备注:1.备份文件后缀必为.bak2.备份文件必须在桶的根目录下d.在目标RDS实例名选中你要还原的目标实例;在待还原数据库名输入你要还原的数据库名称,如果已有同名数据库存在于该目标实例上,请选中覆盖还原按钮。备注:1.目标实例的版本必须要大于等于你的备份文件源实例的版本,例如:你是从2014实例上备份下来的备份文件,你就只能在2014,2016实例上进行还原,无法还原到2008上2.待还原数据库名称需要注意大小写,必须跟备份文件中的数据库名称一致。e.点击下一步,最后生成离线迁移任务,并在离线迁移管理界面可查看到该任务的进展。备注:1.迁移过程中请耐心等待,原则上100G大小的备份文件还原只需要1小时2.迁移过程失败会有详细的报错提示,可根据报错提示修改对应设置再行上传,如有问题可联系在线客服或提工单寻求帮助f.迁移任务成功后可通过实例管理界面登录功能连接在线实例进行查看。1)进入关系型数据库管控面,点击登录2)在弹出页面输入该实例rdsuser主账号+密码,即可登入Das在线管理工具。3)登入后我们可以看到3个数据库已经全部还原成功,大家快去使用吧。备注:DAS是华为公有云RDS全新上线的在线数据库管理工具,兼容MYSQL&SQL SERVER,便捷易用,目前公测中,申请入口:http://www.huaweicloud.com/product/das.html
-
OBS权限管理配置实践参考1 背景介绍 华为云与Amazon S3的权限管理实现一致,对象存储是采用结合统一身份管理服务来做的访问权限控制。 具体来说就是在统一身份管理中创建用户组并对该用户组赋予特定资源的特定访问权限,然后创建用户将用户加入到所需对应资源和访问权限的用户组,该统一身份管理中资源的粒度是服务,不支持更细粒度的资源控制,如果要做到更细粒度的资源权限控制就需要靠桶策略来进行控制。在完成用户和用户组的配置后,在对象存储的桶权限管理中桶策略的高级设置,通过添加高级桶策略来完成指定资源特定访问权限配置。 这两天在华为云上摸索了一下通过查看资料和提工单搞了一下简单验证,详细成果在这里给大家分享一下。本文中首先通过控制台完成相关资源创建和策略配置,然后采用开源工具s3curl进行业务验证,工具下载路径:https://github.com/rtdp/s3curl。2 场景一:给子账户授权2.1 方案说明通常一个大企业下面可能会分设多个业务部门,多个业务部门之间的数据需要独立管理的场景下可以考虑使用不同子用户进行独立的资源和权限配置。A账户下创建两个子账户A1/A2,为两个子账户授予桶的上传对象权限,然后验证两个子账户的权限是否正确。2.2 配置操作2.2.1 使用统一身份认证服务控制台 创建用户组输入用户组名后点击确认进行创建(以创建“obstest”为例)2.2.2 修改创建的用户组中对象存储服务权限为Buckets Viewer1)在用户组中点击新创建用户组的修改按钮2)点击用户组权限的对象存储服务对应的修改按钮3)选中权限为“OBS Buckets Viewer”权限,赋予该用户组内用户具有列举该主账户所有桶的权限2.2.3 创建用户并将用户加入用户组中依次创建userA1、userA2后可以看到该用户组的权限及用户配置信息2.2.4 获取账户ID(租户ID)和子账户ID配置桶策略1)在账户-我的凭证中获取账号ID2)在统一身份管理用户-基本信息中获取子账户ID3)登陆对象存储控制台,使用账户A创建桶:obs-bucketpolicy,该桶内创建子目录abc,在桶策略-高级配置中添加桶策略。a.同时为userA1、userA2配置特定桶内特定资源上传权限说明:1、 桶策略中“被授权用户”字段: 被授权用户指本条桶策略作用的账户或用户。被授权用户可以选择,可以同时选择多个。2、 桶策略中“资源”字段:资源指桶或对象。您可以指定一个对象或对象集,比如fileA*,fileB*,当指定给对象集时,使用通配符“*”。如果不输入,则表示指定资源为桶,且在动作处只能选择与桶相关的。多个资源使用英文逗号分隔。3、 桶策略中的“动作”字段:指定本条桶策略可以执行的操作。例如:上传、下载、删除等。4、 桶策略中的“条件”字段:指定本条桶策略可以执行的操作。通过设置该字段可以实现指定IP、指定域名等访问该策略所限定的资源。2.3 权限验证使用子账号的AK/SK进行业务验证2.3.1 获取主账号和子用户的AK/SK1. 主账号AK/SK获取在主账号-我的凭证-管理访问密钥中,通过新增访问密钥来创建主账号的密钥。2. 子用户AK/SK获取在统一身份认证服务控制台-用户列表中,通过对应用户的“设置凭证”按钮进入密钥创建控制台。在设置凭证页面通过“管理访问密钥”-“新增访问密钥”来创建子用户的访问密钥。注意:创建子用户密钥时提示需要输入“登陆密码”,此次需要输入的密码为主账号的登陆密码,不是子用户密码。2.3.2 开源工具s3curl配置用户的AK/SK并在s3curl中添加obs的endpoint1) vim 编辑s3curl工具目录下的.s3curl文件,添加2个子用户的AK/SK2) vim编辑s3curl工具目录下的s3curl.pl脚本,添加obs的endpoint2.3.3 使用userA1、userA2上传对象到桶内的abc/目录下上传成功,上传到其他目录失败,下载资源也失败1) userA1上传对象到abc/目录下,上传成功。2) userA2上传对象到abc/目录下,上传成功。登陆控制台可以看到对应路径下有上传成功的文件。3) userA1/A2上传对象到非abc目录下,上传失败。a. 使用userA1上传对象到桶根目录下,上传失败,提示无权限访问。b. 使用userA2上传对象到def目录下,上传失败,提示无权限访问。4) userA1/A2下载桶内对象,下载失败,提示无权限访问。a.使用userA1下载桶根目录下的资源,下载失败。b.使用userA2下载赋予其上传权限路径下资源,下载失败。3 场景二:子账户桶资源隔离3.1 方案说明按照前一个场景的配置虽然可以实现不同子账号只能访问配置了特定访问策略的资源,但是每个子用户都可以看到该租户账号下面的所有桶资源无法做到每个子用户只能看到自己有权限访问的桶。通过使用OBSBrowser挂载外部桶的方式可以实现子用户的桶资源隔离。A账户下创建子账户userB,为子账户授予特定桶内资源的完全访问权限,然后使用OBSBrowser挂载外部桶方式验证子账户的权限是否正确。3.2 配置操作3.2.1 直接创建子用户,不添加到任何用户组或者添加到不具有OBS访问权限的用户组中使用A账户登录华为云,创建子用户userB,此用户不设置OBS访问权限。创建userB后可以看到该用户未配置相关用户组。3.2.2 获取账户ID(租户ID)和子账户ID配置桶策略1)在账户-我的凭证中获取账号ID。2)在统一身份管理用户-基本信息中获取子账户ID。3)登陆对象存储控制台,找到需要配置子账户访问的桶,在桶策略-高级配置中添加桶策略。a.为userB配置特定桶内特定资源完全访问权限。b.为userB配置特定桶的列举权限。配置结果重复该步骤,为另外一个桶也配置相同的用户策略。3.3 权限验证使用子账号的AK/SK进行业务验证3.3.1 获取主账号和子用户的AK/SK1. 主账号AK/SK获取在主账号-我的凭证-管理访问密钥中,通过新增访问密钥来创建主账号的密钥。2. 子用户AK/SK获取在统一身份认证服务控制台-用户列表中,通过对应用户的“设置凭证”按钮进入密钥创建控制台。在设置凭证页面通过管理访问密钥-新增访问密钥来创建子用户的访问密钥。注意:创建子用户密钥时提示需要输入“登陆密码”,此次需要输入的密码为主账号的登陆密码,不是子用户密码。3.3.2 使用OBSBrowser配置子账户的AK/SK通过挂载外部桶方式挂载配置有访问权限的桶1) 配置子账户AK/SK2) 挂载两个外部桶在直接使用添加的子账户进行登录时会遇到如下报错信息,请点击确认后忽略该报错。然后点击“添加桶”按钮,并在添加桶的配置窗体中选择“添加外部桶”并输入正确桶名点击确定,即可完成外部桶挂载。重复操作将两个桶都挂载上3.3.3 对挂载的桶进行上传下载删除对象均成功4 景三:给不同租户(账户)授权4.1 方案说明A/B/C三个账户,A账户为桶owner,A账户给B账户赋予上传对象权限,给C账户赋予下载对象权限。4.2 配置操作4.2.1 获取租户的账户ID4.2.2 使用A账户登录console,为特定桶配置桶策略举例:为账户配置obs-ydy-des桶上传对象的权限为B账户配置写入权限,为C账户配置读取桶内资源的权限。4.3 权限验证使三个账户的AK/SK使用S3Curl工具进行验证业务4.3.1 配置工具A/B/C三个账户的AK/SK(A账户:usertzf B账户:userydy C账户:userhqh)4.3.2 使用A账户上传对象成功使用A账户,上传成功Console控制台可以看到上传的文件4.3.3 使用B账户上传对象成功,上传是指定桶owner具有该对象完全控制权限 使用B账户,上传成功Console控制台客户查看到上传成功的文件4.3.4 使用B账户只能下载自己上传的对象,无法下载A账户上传的对象1) B账号下载自己上传的对象,下载成功2) B账号下载A账户上传的对象,下载失败4.3.5 使用C账户下载对象成功1) C账户下载A账户上传的对象,下载成功2) C账户下载B账户上传的对象,下载失败失败原因:桶策略由桶Owner设定,只会对桶Owner上传的对象生效,无法对其他用户上传的对象生效。4.3.6 使用C账户无法上传对象使用C账户上传对象时提示无权限,上传失败5 场景四:委托服务进行OBS访问5.1 方案说明 在需要使用其他服务来对OBS中的数据进行访问时,可以通过创建委托的方式来实现。委托创建后被委托的服务可以用创建委托的租户身份来对OBS资源进行访问。本方案例中以委托ECS通过AK/SK+STStoken访问OBS为例进行说明。5.2 配置操作5.2.1 登陆统一身份认证服务控制台,创建委托选择委托类型为“云服务”,在云服务中选择“ECS BMS”,在权限选择中配置“全局服务-对象存储服务的策略为Tenant Administrator”5.2.2 创建ECS时在高级中配置使用创建的委托5.3 55.3 权限验证5.3.1 登陆ECS获取临时AK/SK和STSToken执行命令: curl http://169.254.169.254/openstack/latest/securitykey 获取临时AK/SK和STSToken,其中169.254.169.254是ECS服务委托时的IP,如果其他云服务创建委托,需要使用各自云服务的IP地址。具体IP地址需要从云服务接口人获取。5.3.2 使用s3curl验证访问权限添加临时AK/SK用户执行命令:./s3curl.pl --id=linshi -- -H "x-amz-security-token:***(token的内容)*** " http://obs-wjl2.obs.cn-north-1.myhwclouds.com/123.txt -v注意:通过委托形式访问OBS不支持跨Region的访问,原因是IAM为非全局服务,每个Region的IAM独立提供鉴权服务。但是创建的委托配置全局共享。如果ECS跨Region采用临时AK/SK+STStoken访问访问OBS会提示找不到AK/SK记录。6 场景五:委托租户采用临时AK/SK+Ststoken进行OBS访问6.1 方案说明 假设非华为云服务的账户为ThomasYang,使用非华为云服务的租户为shan0304。在需要使用应用市场上的非华为云自身服务来对OBS中的数据进行访问时,可以通过shan0304创建委托提供该服务的第三方应用的租户ThomasYang的方式来实现。委托创建后被委托的租户可以用创建委托的租户身份来对OBS资源进行访问。本方案例中以委托某租户通过AK/SK+STStoken访问OBS为例进行说明。6.2 配置操作租户shan0304登陆统一身份认证服务控制台,创建租户委托。选择委托类型为“普通账号”,委托账号中输入被委托租户的账号名称,在权限选择中赋予对象存储Tenant_Administrator权限。 6.3 权限验证6.3.1 获取被委托租户具有te_agency权限的token以postman为例进行说明,采用post方法调用IAM的v3/auth/tokens接口,在header中配置Content-Type为application/json,然后在Body中输入如下信息(参考截图):执行如下命令:https://iam.myhuaweicloud.com/v3/auth/tokens在响应消息的Headers中获取X-Subject-Token字段,该字段即为所需的token信息。可以在响应消息的body中查看roles字段,确认该token具有te_agency权限。6.3.2 使用具有te_agency权限的token获取临时AK/SK+Ststoken以postman为例进行说明,采用post方法调用IAM的v3.0/OS-CREDENTIAL/securitytokens接口,在Header中输入Content-Type为application/json,以及X-Auth-Token字段添加前一步中获取到的token信息。并在Body中输入如下信息(参考截图):在响应消息的Body中获取所需的临时AK/SK和Ststoken,参考下图6.3.3 使用s3curl验证临时AK/SK+Ststoken的权限添加临时AK/SK用户执行命令:./s3curl.pl –id=linshi -- -H “x-amz-security-token:****” http://dfv-video.obs.cn-north-1.myhwclouds.com -v其中dfv-video是tangzifu账户中的桶。7 场景六:配置桶策略限定权限的子用户临时AK/SK+Ststoken进行OBS访问7.1 方案说明当前IAM无法提供权限伸缩功能,类似于阿里云的RAM中“角色”功能(具有一定权限的用户)。华为云可以提供子用户+桶策略的方式来达到相同效果。首先在统一身份管理中创建一个子用户,该子用户不具备对象存储的任何访问权限,然后给指定桶配置该子用户的桶策略限定该子用户具有某个桶特定资源的特定操作权限。以子用户的用户名密码获取到子用户的token,再获取子用户的临时AK/SK+STStoken,以临时AK/SK+Ststoken的方式访问资源。7.2 配置操作7.2.1 直接创建子用户,不添加到任何用户组或者添加到不具有OBS访问权限的用户组中7.2.2 给指定桶配置该子用户的桶策略以自定义模式给子用户7.3 权限验证7.3.1 获取子用户的token以postman为例进行说明,采用post方法调用IAM的v3/auth/tokens接口,在header中配置Content-Type为application/json,然后在Body中输入如下信息(参考截图):在响应消息的Headers中获取X-Subject-Token字段,该字段即为所需的token信息。7.3.2 使用子用户的token获取临时AK/SK+Ststoken以postman为例进行说明,采用post方法调用IAM的v3.0/OS-CREDENTIAL/securitytokens接口,在Header中输入Content-Type为application/json,以及X-Auth-Token字段添加前一步中获取到的token信息。并在Body中输入如下信息(参考截图):在响应消息的Body中获取所需的临时AK/SK和Ststoken,参考下图7.3.3 使用s3curl验证临时AK/SK+Ststoken的权限添加临时AK/SK用户执行命令:./s3curl.pl –id=zhihu –put=./README -- -H “x-amz-security-token:****” http://obs-mei1.obs.cn-north-1.myhwclous.com/zhihu/123.txt -v
-
WordPress默认上传后的地址是本地服务器,有没有写好的插件使得同时上传至对象存储,默认地址自动变成对象存储的地址?
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第三期2026/08/21 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;念擎-华为云AI开发者运营案例开发专家
本期直播内容:AI六层能力首次详细解读 + 新一代华为云开发者空间亮相 + 校园案例直播带练
回顾中 -
华为云监控CES新特性解读2026/08/26 周三 19:00-20:30
刘英杰-华为云监控产品专家
华为云监控 CES H1 版本重磅全新升级!本次直播特邀华为云监控产品专家,围绕特性深度解读 + 现场实操演示 + 实时线上答疑三大模块,全方位拆解版本核心亮点,直击运维各类痛点难题。助力实现告警高效配置、指标快速检索、插件便捷部署,切实降低运维工作负担,提升监控运维工作效率。欢迎预约观看,互动提问交流!
回顾中
热门标签