导图社区 ceph
这篇主要介绍了cph的基础安装基本命令以及调优状态检查文件存储,系统硬盘包括物理盘,逻辑盘和系统文件格式。
编辑于2021-12-28 15:07:45ceph
系统硬盘概要
物理盘
逻辑盘
系统文件格式
分区
fdisk
parted
lsblk 查看设备信息
dmsetup ls 查看谁在占用
ceph基础
Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点
ceph概览
RADOS 全称Reliable Autonomic Distributed Object Store,即可靠的、自动化的、分布式对象存储系统
Librados Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
Crush算法是Ceph的两大创新之一,通过Crush算法的寻址操作,Ceph得以摒弃了传统的集中式存储元数据寻址方案
Pool是存储对象的逻辑分区
简单来说块存储读写快,不利于共享,文件存储读写慢,利于共享
Bluestore
ceph-osd的新后端存储BlueStore已经稳定,是新创建的OSD的默认设置 BlueStore内嵌支持使用zlib,snappy或LZ4进行压缩。
ceph安装
ceph版本
| Argonaut | 0.48版本(LTS) | 2012年6月3日 | | Bobtail | 0.56版本(LTS) | 2013年5月7日 | | Cuttlefish | 0.61版本 | 2013年1月1日 | | Dumpling | 0.67版本(LTS) | 2013年8月14日 | | Emperor | 0.72版本 | 2013年11月9 | | Firefly | 0.80版本(LTS) | 2014年5月 | | Giant | Giant | October 2014 - April 2015 | | Hammer | Hammer | April 2015 - November 2016| | Infernalis | Infernalis | November 2015 - June 2016 | | Jewel | 10.2.9 | 2016年4月 | | Kraken | 11.2.1 | 2017年10月 | | Luminous |12.2.12 | 2017年10月 | | mimic | 13.2.7 | 2018年5月 | | nautilus | 14.2.5 | 2019年2月 |
系统优化
echo "ulimit -SHn 102400" >> /etc/rc.local cat >> /etc/security/limits.conf << EOF * soft nofile 65535 * hard nofile 65535 EOF
cat >> /etc/sysctl.conf << EOF kernel.pid_max = 4194303 vm.swappiness = 0 EOF sysctl -p echo "8192" > /sys/block/sda/queue/read_ahead_kb
磁盘io优化
查看磁盘IO调度 #dmesg | grep -i scheduler 临时生效方法 I/O Scheduler,SSD要用noop,SATA/SAS使用deadline #echo "deadline" >/sys/block/sd[x]/queue/scheduler #echo "noop" >/sys/block/sd[x]/queue/scheduler 永久生效方法 #grubby --update-kernel=ALL --args="elevator=noop"
架设内部ceph/epel yum源
ceph-deploy手动安装步奏(版本14以下)
部署机安装 #yum install -y ceph-deploy #ceph-deploy new ceph1 ceph2 ceph3 安装Ceph软件(每个节点执行) # yum -y install epel-release # yum install -y ceph 生成monitor检测集群所使用的的秘钥 # ceph-deploy mon create-initial 安装Ceph CLI,方便执行一些管理命令 # ceph-deploy admin ceph1 ceph2 ceph3 配置mgr,用于管理集群 # ceph-deploy mgr create ceph1 ceph2 ceph3 部署多个rgw对象网关 # yum install -y ceph-radosgw # ceph-deploy rgw create ceph1 # ceph-deploy rgw create ceph2 部署MDS(CephFS) # ceph-deploy mds create ceph1 ceph2 ceph3 添加osd #ceph-deploy osd create --data /dev/sda ceph1 #ceph-deploy osd create --data /dev/sdb ceph1 #ceph-deploy osd create --data /dev/sdc ceph1 #ceph-deploy osd create --data /dev/sda ceph2 #ceph-deploy osd create --data /dev/sdb ceph2 #ceph-deploy osd create --data /dev/sdc ceph2 #ceph-deploy osd create --data /dev/sdb ceph3
cephadm手动安装步(版本15以上)
Cephadm环境
Cephadm快速部署
Cephadm部状态署
Cephadm管理
mon管理
osd管理
Cephadm部署RGW
Cephadm部署CephFS
Rook
K8S基础
Cockpit图形化快速部署ceph集群
https://github.com/cockpit-project/cockpit.git
ceph基本命令
#ceph -s #ceph health detail #ceph osd tree #ceph osd pool ls #ceph osd pool get cephfs-data size #ceph osd pool set cephfs-data 3
增加data节点
#yum install -y ceph #ceph-deploy --overwrite-conf admin ceph1 ceph2 ceph3 ceph4 ceph5 #ceph-deploy osd create --data /dev/sda ceph4 #ceph-deploy osd create --data /dev/sdb ceph4 #ceph-deploy osd create --data /dev/sdc ceph4 #ceph-deploy osd create --data /dev/sda ceph5 #ceph-deploy osd create --data /dev/sdb ceph5 #ceph-deploy osd create --data /dev/sdc ceph5 #ceph osd crush reweight osd.35 1.74660
ceph osd 的扩容
横向扩容
加osd #ceph-delpay disk list nodename #ceph-delpay disk zap nodename {disk name} {disk name} #ceph-delpay disk create --data {disk name} nodename #ceph-delpay disk create --data {disk name} nodename
纵向扩容
加节点
加osd
扩容时调整策略
关闭重建 #ceph osd set norebalance #ceph osd set nobackfill 开启重建 #ceph osd unset nobackfill/norebalance
停止自动重均衡 #ceph osd set noout #ceph osd unset noout
查看最小可用副本 #ceph osd pool ls detail
ceph调优
手动编辑(略过)
ceph故障域调整(cephmap定制)
#ceph osd getcrushmap -o crushmap 导出getcrushmap #crushtool -d crushmap -o real_crushmap 反编译 #ceph osd tree #ceph -s 先备份 #ceph osd getcrushmap -o crushmap.bak #ceph osd crush rule ls 查看策略 #ceph osd crush add-bucket rackA rack #ceph osd crush add-bucket rackB rack #ceph osd crush add-bucket rackC rack 新建rack 容载域 #ceph osd crush move rackA root=default #ceph osd crush move rackB root=default #ceph osd crush move rackC root=default #ceph osd tree #ceph osd crush move ceph1 rack=rackA #ceph osd crush move ceph2 rack=rackB #ceph osd crush move ceph3 rack=rackC osd主机迁移rack中 #ceph osd crush rule create-replicated replicated_rule_rack default rack #设置容灾域为默认 #ceph osd tree #ceph osd crush rule ls #查询策略容灾的级别 #ceph osd crush rule dump replicated_rule #ceph osd crush rule dump replicated_rule_rack #ceph osd crush rule ls #rados lspools #ceph -s #for i in $(rados lspools | grep -v ssdpool);do ceph osd pool set $i crush_rule replicated_rule_rack ;done 查看策略 #ceph osd pool ls detail #ceph osd tree ceph -s ceph osd tree ceph osd crush rule ls ceph osd pool get poolname crush_rule #查看具体pool应用的规则 rbd -p rbd ls #查看pool 中对象情况 ceph osd map rbd imagename #查看具体镜像的分布情况 #修改过crushmap 的 需要加参数 #[osd] #osd crush update on start = false
ceph 配置调优
[global]#全局设置 fsid = xxxxxxxxxxxxxxx #集群标识ID mon host = 10.0.1.1,10.0.1.2,10.0.1.3 #monitor IP 地址 auth cluster required = cephx #集群认证 auth service required = cephx #服务认证 auth client required = cephx #客户端认证 osd pool default size = 3 #最小副本数 默认是3 osd pool default min size = 1 #PG 处于 degraded 状态不影响其 IO 能力,min_size是一个PG能接受IO的最小副本数 public network = 10.0.1.0/24 #公共网络(monitorIP段) cluster network = 10.0.2.0/24 #集群网络 max open files = 131072 #默认0#如果设置了该选项,Ceph会设置系统的max open fds mon initial members = cephnode01, cephnode03, node3 #初始monitor (由创建monitor命令而定) ############################################################## [mon] mon data = /var/lib/ceph/mon/ceph-$id mon clock drift allowed = 1 #默认值0.05#monitor间的clock drift mon osd min down reporters = 13 #默认值1#向monitor报告down的最小OSD数 mon osd down out interval = 600 #默认值300 #标记一个OSD状态为down和out之前ceph等待的秒数 ############################################################## [osd] osd data = /var/lib/ceph/osd/ceph-$id osd mkfs type = xfs #格式化系统类型 osd max write size = 512 #默认值90 #OSD一次可写入的最大值(MB) osd client message size cap = 2147483648 #默认值100 #客户端允许在内存中的最大数据(bytes) osd deep scrub stride = 131072 #默认值524288 #在Deep Scrub时候允许读取的字节数(bytes) osd op threads = 16 #默认值2 #并发文件系统操作数 osd disk threads = 4 #默认值1 #OSD密集型操作例如恢复和Scrubbing时的线程 osd map cache size = 1024 #默认值500 #保留OSD Map的缓存(MB) osd map cache bl size = 128 #默认值50 #OSD进程在内存中的OSD Map缓存(MB) osd mount options xfs = "rw,noexec,nodev,noatime,nodiratime,nobarrier" #默认值rw,noatime,inode64 #Ceph OSD xfs Mount选项 osd recovery op priority = 2 #默认值10 #恢复操作优先级,取值1-63,值越高占用资源越高 osd recovery max active = 10 #默认值15 #同一时间内活跃的恢复请求数 osd max backfills = 4 #默认值10 #一个OSD允许的最大backfills数 osd min pg log entries = 30000 #默认值3000 #修建PGLog是保留的最大PGLog数 osd max pg log entries = 100000 #默认值10000 #修建PGLog是保留的最大PGLog数 osd mon heartbeat interval = 40 #默认值30 #OSD ping一个monitor的时间间隔(默认30s) ms dispatch throttle bytes = 1048576000 #默认值 104857600 #等待派遣的最大消息数 objecter inflight ops = 819200 #默认值1024 #客户端流控,允许的最大未发送io请求数,超过阀值会堵塞应用io,为0表示不受限 osd op log threshold = 50 #默认值5 #一次显示多少操作的log osd crush chooseleaf type = 0 #默认值为1 #CRUSH规则用到chooseleaf时的bucket的类型 osd crush update on start = false #重启服务或者增加硬盘时改变规则,修改过容灾域后,一定得改 ############################################################## [client] rbd cache = true #默认值 true #RBD缓存 rbd cache size = 335544320 #默认值33554432 #RBD缓存大小(bytes) rbd cache max dirty = 134217728 #默认值25165824 #缓存为write-back时允许的最大dirty字节数(bytes),如果为0,使用write-through rbd cache max dirty age = 30 #默认值1 #在被刷新到存储盘前dirty数据存在缓存的时间(seconds) rbd cache writethrough until flush = false #默认值true #该选项是为了兼容linux-2.6.32之前的virtio驱动,避免因为不发送flush请求,数据不回写 #设置该参数后,librbd会以writethrough的方式执行io,直到收到第一个flush请求,才切换为writeback方式。 rbd cache max dirty object = 2 #默认值0 #最大的Object对象数,默认为0,表示通过rbd cache size计算得到,librbd默认以4MB为单位对磁盘Image进行逻辑切分#每个chunk对象抽象为一个Object;librbd中以Object为单位来管理缓存,增大该值可以提升性能 rbd cache target dirty = 235544320 #默认值16777216 #开始执行回写过程的脏数据大小,不能超过 rbd_cache_max_dirty
ceph 配置案例
[global] fsid = 521ff291-0bdb-4550-9c9b-8f3d193426e3 mon_host = 10.10.132.14:6789,10.10.132.15:6789,10.10.132.16:6789 public_network = 10.10.132.0/24 cluster_network = 10.10.132.0/24 rgw_enable_usage_log = true rgw_usage_log_tick_interval = 3 rgw_usage_log_flush_threshold = 1024 rgw_usage_max_shards = 32 rgw_usage_max_user_shards = 1 rbd_cache = false mon_max_pg_per_osd = 1024 mon_osd_full_ratio = 0.900000 mon_osd_nearfull_ratio = 0.800000 mon_osd_backfillfull_ratio = 0.850000 auth_cluster_required = none auth_service_required = none auth_client_required = none bluestore_csum_type = crc32c rbd_disable_wal = false [mon] mon_allow_pool_delete = true mon_osd_auto_mark_in = true
机械盘中使用SSD加速
bluestore分离WAL/DB到SSD加速 #可以使用逻辑盘 fdisk /dev/sdb #添加data盘时指定--BLOCK-DB --BLOCK-WAL盘 ceph-deploy osd create node1 --bluestore --data /dev/sdc --block-db /dev/sdb1 --block-wal /dev/sdb2
ceph 的纠删码
调整最小单位大小
使用zlib,snappy或LZ4进行压缩
ceph集群服务的高可用
mon高可用
mds高可用
ceph集群
Ceph带两地三中心
realm
:一个realm包含1个或多个zonegroup。如果realm包含多个zonegroup,必须指定一个zonegroup为master zonegroup, 用来处理系统操作
zonegroup
一个zonegroup如果包含1个或多个zone。
zone
包含多个RGW实例的一个逻辑概念。zone不能跨集群。同一个zone的数据保存在同一组pool中。
子主题
ceph备份
ceph-backup
基于镜像的备份
rbd mirror
基于镜像的同步
ceph故障排除
更换故障盘
#ceph osd tree 移除权重 ceph osd out osd.* 移除crush中定义 #ceph osd crush rm osd.* 移除坏盘 #ceph osd rm osd.* 移除认证中的信息 #ceph auth list #ceph auth rm osd.*
mon损坏
mds损坏
服务器故障,多盘离线
删除找不到的pg,用新pg填充 #ceph osd force-create-pg 3.1e --yes-i-really-mean-it
性能压测
fio
4K随机写-iops #fio -filename=/mnt/rbd-test/fio.img -direct=1 -iodepth 32 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=200m -numjobs=8 -runtime=60 - group_reporting -name=mytest #4k随机读-iops fio -filename=/mnt/rbd-test/fio.img -direct=1 -iodepth 32 -thread -rw=randread -ioengine=libaio -bs=4k -size=200m -numjobs=8 -runtime=60 - group_reporting -name=mytest 4k随机读写-iops #fio -filename=/mnt/rbd-test/fio.img -direct=1 -iodepth 32 -thread -rw=randrw -rwmixread=70 -ioengine=libaio -bs=4k -size=200m -numjobs=8 - runtime=60 -group_reporting -name=mytest 1M顺序写-吞吐 #fio -filename=/mnt/rbd-test/fio.img -direct=1 -iodepth 32 -thread -rw=write -ioengine=libaio -bs=1M -size=200m -numjobs=8 -runtime=60 - group_reporting -name=mytest
RBD bench
4K随机写 #rbd bench --io-size 4K --io-threads 16 --io-pattern rand --io-type write ceph-demo/test.img 4K随机读 #rbd bench --io-size 4K --io-threads 16 --io-pattern rand --io-type read ceph-demo/test.img 4K随机混合读写 #rbd bench --io-size 4K --io-threads 16 --io-pattern rand --io-type readwrite --rw-mix-read 70 ceph-demo/test.img #1M顺序写 rbd bench --io-size 1M --io-threads 16 --io-pattern rand --io-type write ceph-demo/test.img
ceph状态检查
监控集群
ceph -s ceph -w ceph df ceph osd tree ceph daemon ceph --admin-daemon config show|grep clock
pool 查看
ceph osd pool create poolname 32 32 ceph osd pool get poolname size ceph osd pool get poolname pg_num ceph osd pool get poolname pgp_num ceph osd pool application enable poolname application-name #application(Ceph-FS/RBD/RGW) ceph osd pool application get poolname application-name #设置pool 配额 ceph osd pool set-quota {pool-name} [max_objects {obj-count}] [max_bytes {bytes}] ceph osd pool rename {current-pool-name} {new-pool-name} #查看pool状态 rados df ceph osd pool stats [{pool-name}] #删除ceph pool ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]
#查看osd的延迟 ceph osd perf
守护进程
#查看节点上所有自动启动的ceph服务 systemctl list-unit-files|grep enabled|grep ceph ceph-crash.service enabled ceph-mds@.service enabled ceph-mgr@.service enabled ceph-mon@.service enabled ceph-osd@.service enabled-runtime ceph-radosgw@.service enabled ceph-volume@.service enabled ceph-mds.target enabled ceph-mgr.target enabled ceph-mon.target enabled ceph-osd.target enabled ceph-radosgw.target enabled ceph.target enabled systemctl start ceph.target # start all daemons systemctl status ceph-osd@12 # check status of osd.12 systemctl restart ceph-osd@* #重启所有osd systemctl start/stop ceph-osd.target systemctl start/stop ceph-mon.target systemctl start/stop ceph-mds.target
pg 状态检查
#数据一致性检查 ceph -h|grep scrub #查看所有的pg id ceph pg dump|grep "active+clean"|awk '{print $1}' pg deep-scrub <pgid> pg scrub <pgid>
日志检查
/var/log/ceph/ceph.log /var/log/ceph/ceph-osd.4.log /var/log/ceph/ceph-volume.log /var/log/ceph/ceph-mon.ceph1 /var/log/ceph/ceph-mds.ceph-1.log /var/log/ceph/ceph-client.rgw.ceph-1.log
ceph监控报警
在每个mgr节点安装 # yum install ceph-mgr-dashboard 开启mgr功能 # ceph mgr module enable dashboard 生成并安装自签名的证书 # ceph dashboard create-self-signed-cert 创建一个dashboard登录用户名密码 # ceph dashboard ac-user-create guest 1q2w3e4r administrator 查看服务访问方式 # ceph mgr services
子主题
ceph文件存储
Ceph File System (CephFS) 是与 POSIX 标准兼容的文件系统, 能够提供对 Ceph 存储集群上的文件访问 - OSDs (ceph-osd): CephFS 的数据和元数据就存储在 OSDs 上 - MDS (ceph-mds): Metadata Servers, 管理着 CephFS 的元数据 - Mons (ceph-mon): Monitors 管理着集群 Map 的主副本 Ceph 存储集群的协议层是 Ceph 原生的 librados 库, 与核心集群交互
设置多mds #ceph fs status #ceph fs set cephfs standby_count_wanted #ceph fs set cephfs max_mds 1 #ceph mds deactivate {cephfs-name}:{mdes-rank}
ceph 的纠删码
ceph块存储RBD
RADOS Block Device的简称,RBD块存储是最稳定且最常用的存储类型
# RBD常用命令 | 命令 | 功能 | | rbd create | 创建块设备映像 | | rbd ls | 列出 rbd 存储池中的块设备 | | rbd info | 查看块设备信息 | | rbd diff | 可以统计 rbd 使用量 | | rbd map | 映射块设备 | | rbd showmapped | 查看已映射块设备 | | rbd remove | 删除块设备 | | rbd resize | 更改块设备的大小 |
RBD 快照
创建快照 rbd create --size 10240 image02 rbd snap create image02@image02_snap01 列出创建的快照 # rbd snap list image02 # rbd ls -l 查看快照详细信息 # rbd info image02@image02_snap01 克隆快照(快照必须处于被保护状态才能被克隆) # rbd snap protect image02@image02_snap01 # rbd clone rbd/image02@image02_snap01 kube/image02_clone01 查看快照的children # rbd children image02 去掉快照的parent # rbd flatten kube/image02_clone01 恢复快照 # rbd snap rollback image02@image02_snap01 删除快照 # rbd snap unprotect image02@image02_snap01 # rbd snap remove image02@image02_snap01
RBD镜像离线备份
导出RBD镜像 #rbd export image02 /tmp/image02 导出RBD镜像 # rbd import /tmp/image02 rbd/image02 --image-format 2 增量导出 # rbd export-diff 增量导出恢复 # rbd import-diff
RBD回收站
把镜像移入回收站 #rbd trash move rbd/image02_clone01 查看回收站内的rbd #rbd trash -p rbd ls 恢复回收站内的rbd #rbd trash restore -p rbd ID 删除回收站内的rbd #rbd trash remove rbd ID
块存储应用
对接kvm
qemu模拟RBD块设备 #qemu-img create -f raw rbd:ceph-demo/kvm-test.img 5G #qemu-img info rbd:ceph-demo/kvm-test.img #rbd -p ceph-demo ls #rbd -p ceph-demo info kvm-test.img #qemu-img resize rbd:ceph-demo/kvm-test.img 6G libvirt对接RBD存储 #ceph auth get-or-create client.libvirt mon 'profile rbd' osd 'profile rbd pool=libvirt' #[client.libvirt] #key = AQCcy6NeQc1dKxAAdCW4baHv5/QFrlu0r7TIDg== 定义secret,关联key #Cat secret.xml <<EOF #<secret ephemeral='no' private='no'> #<usage type='ceph'> #<name>client.libvirt secret</name> #</usage> #</secret> #virsh secret-define --file secret.xml #virsh secret-set-value --secret 9c734551-ebbc-4db4-954a-f2cdce886dbe -- base64 AQCcy6NeQc1dKxAAdCW4baHv5/QFrlu0r7TIDg== KVM的XML⽂文件内容,分对接KVM虚拟机的系统和数据盘 #<disk type='network' device='disk'> #<driver name='qemu' type='raw'/> #<auth username='libvirt'> #<secret type='ceph' uuid='9c734551-ebbc-4db4-954a-f2cdce886dbe'/> #</auth> #<source protocol='rbd' name='libvirt/demo.img'> #<host name='10.211.55.201' port='6789'/> #<host name='10.211.55.202' port='6789'/> #<host name='10.211.55.203' port='6789'/> #</source> #<target dev='vda' bus='virtio'/> #<alias name='virtio-disk0'/> #<address type='pci' domain='0x0000' bus='0x00' slot='0x06' #function='0x0'/> #</disk> #<disk type='network' device='disk'> #<driver name='qemu' type='raw'/> #<auth username='libvirt'> #<secret type='ceph' uuid='9c734551-ebbc-4db4-954a-f2cdce886dbe'/> #</auth> #<source protocol='rbd' name='libvirt/kvm.img'> #<host name='10.211.55.201' port='6789'/> #<host name='10.211.55.202' port='6789'/> #<host name='10.211.55.203' port='6789'/> #</source> #<target dev='vdb' bus='virtio'/> #<alias name='virtio-disk1'/>
对接openstack
建存储池
#https://ceph.com/pgcalc/ ceph osd pool create cinder-backup 1024 ceph osd pool set cinder-backup size 3 while [ $(ceph -s | grep creating -c) -gt 0 ]; do echo -n .;sleep 1; done ceph osd pool create cinder-volumes 2048 ceph osd pool set cinder-volumes size 3 while [ $(ceph -s | grep creating -c) -gt 0 ]; do echo -n .;sleep 1; done ceph osd pool create ephemeral-vms 512 ceph osd pool set ephemeral-vms size 3 while [ $(ceph -s | grep creating -c) -gt 0 ]; do echo -n .;sleep 1; done ceph osd pool create glance-images 256 ceph osd pool set glance-images size 3 while [ $(ceph -s | grep creating -c) -gt 0 ]; do echo -n .;sleep 1; done
子主题
对接K8S
卷
pv/pvc
class
ceph对象存储
bucket管理
# 查看bucket名称 radosgw-admin bucket list # 查看metadata中有哪些用户 radosgw-admin metadata list user # 指定bucket的相关信息 radosgw-admin bucket stats --bucket="first-bucket.s3.amazonaws.com" # 查看指定用户的相关信息 radosgw-admin user info --uid=test # 查看bucket中的文件名 radosgw-admin bucket list --bucket=first-bucket.s3.amazonaws.com # 删除bucket中的某个文件(--object:bucket中的file) radosgw-admin object rm --bucket=testab --object=passwd # 查看bucket中object的相关信息 radosgw-admin object stat --bucket=first-bucket.s3.amazonaws.com --object=hosts # 删除buckets,及其内容 radosgw-admin bucket rm --bucket=first-bucket.s3.amazonaws.com --purge-objects # 删除某个用户及其buckets radosgw-admin user rm --uid=<username> --purge-data
用户管理
# 创建S3用户 radosgw-admin user create --uid=test --display-name="Test User" # 创建swift用户 radosgw-admin subuser create --uid=test --subuser=test:swift --access=full # swift用户生成secret_key radosgw-admin key create --subuser=test:swift --key-type=swift --gen-secret
bucket权限管理
[root@rgw01-backup ~]# cat acl1 { "Version": "2012-10-17", "Statement": [ { "Action": ["s3:ListBucket", "s3:GetObject"], "Resource": [ "arn:aws:s3:::bucket", "arn:aws:s3:::bucket/*" ], "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam:::user/usename"] } } ] } s3cmd setpolicy acl1 s3://bucket s3cmd delpolicy s3://bucket
s3客户端操作
安装客户端 #yum install s3cmd S3客户端配置 [root@OPS0-h ~]# s3cmd --configure Enter new values or accept defaults in brackets with Enter. Refer to user manual for detailed description of all options. Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables. Access Key: P4EU3KV0RX50I051NNID Secret Key: NyAQOxQulsPhi7tjHGtbLVQp2t1c7DEJKDdkMGY1 Default Region [US]: S3客服端操作 # 创建bucket [root@OPS0-h ~]# s3cmd mb s3://three-bucket Bucket 's3://three-bucket/' created 上传文件测试 # s3cmd put --acl-public 3.sh s3://three-bucket/3.sh upload: '3.sh' -> 's3://three-bucket/3.sh' [1 of 1] 53 of 53 100% in 0s 1551.07 B/s done Public URL of the object is: http://three-bucket.ceph.s3.int.zuzuche.com/3.sh 设置S3 bucket的Public权限 (只能加现有的,后期加进来的访问还是会403) #s3cmd setacl s3://first-bucket --acl-public --recursive #curl -I http://first-bucket.s3.amazonaws.com/group 上传并将权限设置为所有人可读 #s3cmd put --acl-public file.txt s3://first-bucket/file.txt 下载文件 #s3cmd get s3://first-bucket/hosts ./ 批量下载 #s3cmd get s3://first-bucket/* ./
RGW高可用集群
keepalive(略)
haproxy(略)
浮动主题