当前位置: 首页 > news >正文

第二课 ceph基础学习-OSD扩容换盘和集群运维

第二课 ceph基础学习-OSD扩容换盘和集群运维

文章目录

  • 第二课 ceph基础学习-OSD扩容换盘和集群运维
    • 第一节 OSD扩容
      • 1.1 扩容背景
      • 1.2 横向扩容
      • 1.3 纵向扩容
      • 1.4 数据重分步rebalancing
      • 1.5 OSD磁盘缩容
      • 1.6 一致性检查
    • 第二节 Ceph集群运维
      • 2.1 服务进程管理
      • 2.2 Ceph日志分析
      • 2.3 Ceph集群信息查看
        • 2.3.1 集群健康状态查看
        • 2.3.2 osd 资源查看
        • 2.3.3 mon资源查看
        • 2.3.4 mds 资源查看
        • 2.3.5 ADMIN SOCKET
      • 2.4 Ceph Pool 资源池管理
      • 2.5 Ceph PG 数据分布

第一节 OSD扩容

1.1 扩容背景

  1. 在企业生产环境中,随着时间的迁移数据会存在磁盘空间不足,或者机器节点故障等情况。OSD又是实际存储数据,所以扩容和缩容OSD就很有必要性
  2. 随着我们数据量的增长,后期可能我们需要对osd进行扩容。目前扩容分为两种,一种为横向扩容,另外一种为纵向扩容
    • 横向扩容scale out增加节点,添加更多的节点进来,让集群包含更多的节点
    • 纵向扩容scale up增加磁盘,添加更多的硬盘进行,来增加存储容量

1.2 横向扩容

  1. 横向扩容实际上就是把ceph osd节点安装一遍,增加节点。
# NTP SERVER (ntp server 与阿里与ntp时间服务器进行同步)
#首先我们配置ntp server,我这里在ceph01上面配置
yum install -y ntp
systemctl start ntpd
systemctl enable ntpd
timedatectl set-timezone Asia/Shanghai
# 将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
# 重启依赖于系统时间的服务
systemctl restart rsyslog 
systemctl restart crond
# 这样我们的ntp server自动连接到外网,进行同步 (时间同步完成在IP前面会有一个*号)
ntpq -pn
# NTP Agent (ntp agent同步ntp server时间)
# ntp agent需要修改ntp server的地址
vim /etc/ntp.conf 
server  192.168.44.137  iburst

# 注释默认的server,添加一条我们ntp server的地址
systemctl restart ntpd
systemctl enable ntpd
#等待几分钟出现*号代表同步完成
ntpq -pn
crontab -e
*/5 * * * *  /usr/sbin/ntpdate 192.168.44.137
# ntp时间服务器设置完成后在所有节点修改时区以及写入硬件
timedatectl set-timezone Asia/Shanghai
# 将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
# 重启依赖于系统时间的服务
systemctl restart rsyslog 
systemctl restart crond
date


# 添加host
vim /etc/hosts
192.168.44.140  ceph-04
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat
iptables -P FORWARD ACCEPT
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
#ceph yum源配置
#配置centos、epeo、ceph源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/ceph.repo http://down.i4t.com/ceph/ceph.repo
yum clean all
yum makecache
#安装ceph
yum install -y ceph vim wget 
# 进入mon节点,分发配置文件,添加osd节点
cd /root/ceph-deploy/
ceph-deploy --overwrite-conf config push ceph-04
ceph-deploy osd create --data /dev/sdb ceph-04
# 这时候可以看到节点已经添加进来了,并且ceph状态已经是OK
ceph osd tree
ceph -s

1.3 纵向扩容

  1. 纵向扩容即添加一块新硬盘即可 (我这里只添加ceph-01服务器一块10G盘)
# 新增的硬盘有数据和分区需要初始化,可以通过下面的命令进行处理
fdisk -l /dev/sdc            # 查看目前的硬盘空间
# 需要进入到我们的ceph.conf目录,否则执行命令会报错
cd ceph-deploy
# 执行初始化命令,ceph-01为需要初始化的节点,/dev/sdc初始化硬盘 zap可以清理分区
# 实际下面的命令只是执行了一个dd命令,将我们服务器的数据表内容清除
ceph-deploy disk zap ceph-01 /dev/sdc    

# 执行扩容ceph-01为扩容节点名称,--data为扩容节点硬盘
ceph-deploy osd create ceph-01 --data /dev/sdc
# 扩容完成我们可以看到ceph的状态,此时我们的osd已经发生变化
ceph -s
# 通过ceph osd tree可以看到我们三台节点,一共有4个osd,其中ceph-01节点有2台osd节点
ceph osd tree

1.4 数据重分步rebalancing

  1. 数据重分布原理。当Ceph OSD添加到Ceph存储集群时,集群映射会使用新的 OSD 进行更新。回到计算 PG ID中,这会更改集群映射。因此,它改变了对象的放置,因为它改变了计算的输入。
  2. 下图描述了重新平衡过程(尽管相当粗略,因为它对大型集群的影响要小得多),其中一些但不是所有 PG 从现有 OSD(OSD 1 和 OSD 2)迁移到新 OSD(OSD 3) )。即使在再平衡时,许多归置组保持原来的配置,每个OSD都获得了一些额外的容量,因此在重新平衡完成后新 OSD 上没有负载峰值。
  3. PG中存储的是subject,因为subject计算比较复杂,所以ceph会直接迁移pg保证集群平衡
    在这里插入图片描述
# 查看信息,每个OSD最多只有一个线程再做填充 "osd_max_backfills": "1",
ceph --admin-daemon /var/run/ceph/ceph-mon.ceph-01.asok config show | grep max_b
    "bluestore_compression_max_blob_size": "0",
    "bluestore_compression_max_blob_size_hdd": "524288",
    "bluestore_compression_max_blob_size_ssd": "65536",
    "bluestore_max_blob_size": "0",
    "bluestore_max_blob_size_hdd": "524288",
    "bluestore_max_blob_size_ssd": "65536",
    "bluestore_rocksdb_options": "compression=kNoCompression,max_write_buffer_number=4,min_write_buffer_number_to_merge=1,recycle_log_file_num=4,write_buffer_size=268435456,writable_file_max_buffer_size=0,compaction_readahead_size=2097152,max_background_compactions=2",
    "client_readahead_max_bytes": "0",
    "filestore_queue_max_bytes": "104857600",
    "filestore_rocksdb_options": "max_background_jobs=10,compaction_readahead_size=2097152,compression=kNoCompression",
    "kstore_max_bytes": "67108864",
    "ms_max_backoff": "15.000000",
    "osd_bench_max_block_size": "67108864",
    "osd_map_message_max_bytes": "10485760",
    "osd_max_backfills": "1",
    "osd_tier_promote_max_bytes_sec": "5242880",
    "rbd_readahead_max_bytes": "524288",
    "rgw_sync_log_trim_max_buckets": "16",
    "rgw_user_max_buckets": "1000",
    
# 文件复制到CEPHFS文件存储中,通过ceph健康检查,就可以看到下面的PG同步的状态
dd if=/dev/zero of=abcdocker.img bs=1M count=2048    #DD一个2G的文件
# ceph osd重分布不会马上进行数据同步,而是大概有10分钟的等待时间。在异常时可以看到有多少个object受到影响,并不会马上同步
ceph -s
# 当PG数据同步完成后,ceph集群health状态就变更为OK,当ceph osd执行重分配时,会影响ceph集群正常写入的操作。所以当更新升级osd节点时建议一台一台进行更新,或者临时关闭rebalance
ceph -s
  1. 一般情况下,生产环境需要区分网络。防止扩容重分布时, 一个网络流量打满。导致业务卡顿。, 如果我们生产环境真的就一个网络,而且reblance确实已经影响业务了,我们可以把这个过程暂停掉。
  2. ceph osd 重分布以及写入数据是可以指定2块网卡,生产环境建议ceph配置双网段。cluster_network为osd数据扩容同步重分配网卡,public_network为ceph客户端连接的网络。设置双网段可以减少重分布造成的影响
  3. 如果我们已经在数据重分配了,已经影响到线上ceph正常读写了,可以通过下面的方式临时暂停rebalance
# 一般情况下,生产环境需要区分网络。防止扩容重分布时, 一个网络流量打满。导致业务卡顿。
cat /etc/ceph/ceph.conf 
public_network
cluster_network

# 临时暂停rebalance
ceph osd set norebalance
ceph osd set nobackfill

# 当我们设置了norebalance nobackfill ,ceph会将重分布给暂停掉。ceph业务就可以访问正常
ceph -s

# 解除rebalance命令如下
ceph osd unset nobackfill
ceph osd unset norebalance
ceph -s

1.5 OSD磁盘缩容

  1. 当某个时间段我们OSD服务器受到外部因素影响,硬盘更换,或者是节点DOWN机需要手动剔除OSD节点。
#  目前ceph osd状态
ceph osd tree
# 目前我们ceph节点一共有4台,其中ceph-01有2个osd节点。 假设我们ceph-03节点出现故障,软件或者硬件故障,需要将ceph-03从ceph集群中剔除
# ceph osd perf可以看到ceph中osd的延迟,如果生产中遇到哪块盘延迟较大,可以进行手动剔除
ceph osd perf
# 磁盘如果坏了会在dmesg中看到坏掉的信息
dmesg

# 停掉ceph-03的进程 模拟磁盘损坏 
systemctl stop ceph-osd@3
# 第一步: 执行osd out,可以将权重变小
ceph osd out osd.3
ID CLASS WEIGHT  TYPE NAME          STATUS REWEIGHT PRI-AFF
-1       0.03918 root default
-3       0.01959     host hadoop101
 0   hdd 0.00980         osd.0          up  1.00000 1.00000
 3   hdd 0.00980         osd.3        down        0 1.00000
-5       0.00980     host hadoop102
 1   hdd 0.00980         osd.1          up  1.00000 1.00000
-7       0.00980     host hadoop103
 2   hdd 0.00980         osd.2          up  1.00000 1.00000
# 可以看到数据重分布了 可以等他分布完成后 物理换盘
ceph -s 
  cluster:
    id:     82612119-5dbe-4d6b-b481-1ce8827b9ea1
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum hadoop101,hadoop102,hadoop103 (age 90m)
    mgr: hadoop102(active, since 92m), standbys: hadoop103, hadoop101
    mds: cephfs-abcdocker:1 {0=hadoop102=up:active} 2 up:standby
    osd: 4 osds: 3 up (since 4m), 3 in (since 42s)
    rgw: 1 daemon active (hadoop101)

  task status:

  data:
    pools:   9 pools, 384 pgs
    objects: 287 objects, 54 MiB
    usage:   3.2 GiB used, 27 GiB / 30 GiB avail
    pgs:     384 active+clean

  io:
    client:   31 KiB/s rd, 0 B/s wr, 31 op/s rd, 20 op/s wr
    recovery: 0 B/s, 0 objects/s
    
# 第二步: 删除CRUSHMAP信息,默认情况下ceph osd out不会删除crush中的信息
ceph osd crush dump | less
ceph osd crush rm osd.3
ceph osd crush dump | less

# 第三步: 删除这个节点
ceph osd rm osd.3
ceph osd tree

# 第四步: 删除auth中的osd key
# 此时我们通过ceph -s参数还可以看到有集群状态,是因为auth中osd的key没有删除
ceph -s|grep osd
# 通过下面的命令删除auth中的key
# 查看auth list
ceph auth list|grep osd
ceph auth rm osd.3
# 状态已恢复
ceph -s
  1. 故障发生后,如果一定时间后重新上线故障 OSD,那么 PG 会进行以下流程:
    • 故障OSD上线,通知Monitor并注册,该OSD在上线前会读取存在持久化的设备的PGLog
    • Monitor 得知该OSD的旧id,因此会继续使用以前的PG分配,之前该OSD下线造成的Degraded PG会被通知该OSD已经中心加入
    • 这时候分为两种情况,以下两种情况PG会标记自己为Peering状态并暂时停止处理请求
      • 第一种情况:故障OSD是拥有Primary PG,它作为这部分数据权责主题,需要发送查询PG元数据请求给所有属于该PG的Replicate角色节点。该PG的Replicate角色节点实际上在故障OSD下线时期成为了Primary角色并维护了权威的PGLog,该PG在得到OSD的Primary PG的查询请求后会发送回应。Primary PG通过对比Replicate PG发送的元数据和PG版本信息后发现处于落后状态,因此会合并到PGLog并建立权威PGLog,同时会建立missing列表来标记过时数据
      • 第二种情况:故障OSD是拥有Replicate PG,这时上线后故障OSD的Replicate PG会得到Primary PG的查询请求,发送自己这份过时的元数据和PGLog。Primary PG对比数据后发现该PG落后时,通过PGLog建立missing列表。
    • PG开始接受IO请求,但是PG所属的故障节点仍存在过时数据,故障节点的Primary PG会发起Pull请求从Replicate节点获得最新数据,Replicate PG会得到其它OSD节点的Primary PG的Push请求来恢复数据
    • 恢复完成后标记自己Clean
  2. 第三步是PG唯一不处理请求的阶段,它通常会在1s内完成来减少不可用时间。但是这里仍然有其他问题,比如恢复期间故障OSD会维护missing列表,如果IO正好是处于missing列表的数据,那么PG会进行恢复数据的插队操作,主动将该IO涉及的数据从Replicate PG拉过来,提前恢复该部分数据。这个情况延迟大概几十毫秒

1.6 一致性检查

  1. ceph有三个副本,那怎么保证他们之间的数据是一致的?ceph会定期做一定的检查,检查的方式有两种。
    • 轻量一致性检查(每天做): 元数据的内容。不一样的话会从主副本重新拉取一份。
    • 深度一致性检查(每周做):对比数据的内容。(非常耗费资源)
  2. 可以手动做检查
# 查看命令
ceph -h | grep scrub
pg deep-scrub <pgid>   # 深度的
pg scrub <pgid>   # 轻量的

# 测试一下
# 先随便拿出一个pgid
ceph pg dump
ceph pg scrub 1.2d # 对1.2d这pg scrub
ceph -s # 集群数据不多,命令执行太快基本上看不到

ceph pg deep-scrub 1.2d # 深度检查
ceph -s # 比较中的任务 取数据进行hash 比较耗费内存

for i in `ceph pg dump | grep "active+clean" | awk '{print $1}'`; do ceph pg deep-scrbu ${i}; done # 所有pg进行深度检查
ceph -s

第二节 Ceph集群运维

2.1 服务进程管理

  1. 第一种,一次性重启所有服务。如果我们机器上osd、mon、rgw等服务都安装在一个节点,可以通过下面的命令直接管理所有服务
# 将本节点所有的ceph相关的组件进行启动
systemctl start ceph.target   
# 这个命令适用于我们当前ceph节点有多个ceph组件
  1. 第二种,单个服务重启。上面我们说的是一下重启所有的服务,很多情况下我们只想重启osd或者mon,就可以通过下面的命令进行
systemctl restart ceph-osd.target
systemctl restart ceph-mon.target
systemctl restart ceph-mds.target
  1. 第三种,我们osd或者mon可能在一台服务器上有多个服务。如果我们使用systemctl restart ceph-osd.target重启osd,可能ceph这台服务器上多个osd都会被重启,可能我们只想重启其中一个节点的osd
# 查看那几个单个服务的节点重启
ls  /usr/lib/systemd/system/|grep ceph
# 重启osd前,查看osd对应的id
ceph osd tree
# 上面可以看到ceph节点有2个osd,我们如果想查看osd 3的状态,就可以通过下面的命令
systemctl restart ceph-osd@3

2.2 Ceph日志分析

  1. 在维护过程中,服务出现问题第一时间看服务状态以及对应服务的日志。
  2. ceph服务默认日志路径在/var/log/ceph
# 如果我们需要查看ceph-01节点的osd或者mon可以通过下面的命令查看
# ceph日志格式
ceph-(osd|client|mds|mgr|osd).(节点ip or 节点名称).log

tail  /var/log/ceph/ceph-mon.ceph-01.log
# 因为ceph-01上有2个osd节点,所以会有0和3,0和3代表osd 在集群中的id,通过ceph osd tree可以看到
tail  /var/log/ceph/ceph-osd.0.log   
tail  /var/log/ceph/ceph-osd.3.log

2.3 Ceph集群信息查看

2.3.1 集群健康状态查看

  1. 登陆ceph服务器的第一件事我们就是要查看一下ceph集群的状态,一般没事不登录服务器。登陆服务器肯定是ceph集群出现故障,或者ceph服务器进行告警
  2. 常用的ceph查看集群的状态有ceph -sceph status,实际上这两个命令结果是相同的
  3. 动态查看ceph的一个集群状态,可以通过ceph -w命令来看一下
# ceph查看集群的状态
ceph -s
ceph status
# 监控ceph的状态 如果集群是HEALTH_OK的状态,没有发生变化,那么ceph -w是不会在输出日志的。 只有节点异常后,ceph -w是可以继续输出状态
ceph -w

2.3.2 osd 资源查看

# osd 状态查看
ceph osd stat

# 需要看osd详细的状态可以通过ceph osd dump出来
# dump命令可以dump osd中很详细的信息
ceph osd dump

# 查看ceph osd中所有节点的状态
# 包括节点信息,osd ID以及osd的状态和权重等
ceph osd tree

# 除了在ceph -s中查看ceph集群磁盘的总使用率,还可以通过ceph df查看剩余空间以及每个pool的使用情况
# CKASS 硬盘类型ssd或hdd
# SIZE 集群管理的存储容量。
# AVAIL 集群中可用的可用空间量。
# USED 用户数据消耗的原始存储量(不包括BlueStore的数据库)
# RAW USED 用户数据、内部开销或保留容量消耗的原始存储量。
# %RAW USED 使用的原始存储的百分比。将此数字与 和 结合使用,以确保您没有达到集群的容量。

# 对于Pool的信息注释
# ID 池中节点的编号。
# STORED 用户/Ceph 存储在池中的实际数据量。这类似于早期版本的 Ceph 中的 USED 列,但计算(对于 BlueStore!)更精确(间隙得到适当处理)。
# (DATA) 用于 RBD(RADOS 块设备)、CephFS 文件数据和 RGW(RADOS 网关)对象数据。
# (OMAP)键值对。主要由 CephFS 和 RGW(RADOS 网关)用于元数据存储。
# OBJECTS每个池中存储的对象的名义数量。“名义”在上文“池”下的段落中定义。
# USED为所有 OSD 上的池分配的空间。这包括复制、分配粒度和纠删码开销。压缩节省和对象内容差距也被考虑在内。BlueStore 的数据库不包括在这个数量中。
# (DATA) RBD(RADOS 块设备)、CephFS 文件数据和 RGW(RADOS 网关)对象数据的对象使用情况。
# (OMAP) 对象键值对。主要由 CephFS 和 RGW(RADOS 网关)用于元数据存储。
# %USED 每个池使用的存储空间的名义百分比。
# MAX AVAIL估计可以写入此池的名义数据量。
# QUOTA OBJECTS 配额对象的数量。
# QUOTA BYTES 配额对象中的字节数。
# DIRTY 缓存池中已写入缓存池但尚未刷新到基本池的对象数。此字段仅在使用缓存分层时可用。
# USED COMPR 为压缩数据分配的空间量(即,这包括压缩数据加上所有分配、复制和纠删码开销)。
# UNDER COMPR 通过压缩传递的数据量(所有副本的总和)并且足以以压缩形式存储。
ceph df

# 要看osd所有节点的使用率可以使用osd df,包含使用率节点,更为详细的命令
ceph osd df

# ceph osd status也是可以看到集群空间使用率
ceph osd status

2.3.3 mon资源查看

# 通过mon stat 可以详细的查看集群mon的节点地址,以及对应的id
ceph mon stat
# 通过mon dump可以看到更详细的节点信息,包含节点添加时间等
ceph mon dump
# quorum_status可以看到集群节点选举情况,节点信息等
ceph  quorum_status

2.3.4 mds 资源查看

# 跟osd和mon相同,mds同样支持上述的几个命令
ceph mds stat

# ceph fs dump同样可以获取到mds内部状态
ceph fs dump

2.3.5 ADMIN SOCKET

  1. admin socket可以看到ceph节点中某个服务的守护进程配置信息, 这个非常有用
# 查看osd的配置文件
ceph daemon /var/run/ceph/ceph-osd.0.asok config show
# mon 配置文件
ceph daemon /var/run/ceph/ceph-mon.ceph-01.asok config show
# 通过下面的命令可以看到我们可以执行的命令
ceph daemon /var/run/ceph/ceph-osd.0.asok help
# 例如查看mon选举情况
ceph daemon /var/run/ceph/ceph-mon.ceph-01.asok help|grep status
ceph daemon /var/run/ceph/ceph-mon.ceph-01.asok quorum_status
  1. ceph集群的配置参数除了在/etc/ceph/ceph.conf中修改,还可以通过SOCKET直接设置
#例如修改时钟参数
ceph daemon /var/run/ceph/ceph-mon.ceph-01.asok help|grep config
#查看config可以直接的命令
    "config diff": "dump diff of current config and default config",
    "config diff get": "dump diff get <field>: dump diff of current and default config setting <field>",
    "config get": "config get <field>: get the config value",
    "config help": "get config setting schema and descriptions",
    "config set": "config set <field> <val> [<val> ...]: set a config variable",
    "config show": "dump current config settings",
    "config unset": "config unset <field>: unset a config variable",
# 通过config set替换对应的值
ceph daemon /var/run/ceph/ceph-mon.ceph-01.asok config set 变量名 值

2.4 Ceph Pool 资源池管理

  1. pool是我们的逻辑资源池
# 创建pool
# 格式如下
ceph osd pool create {pool-name} [{pg-num} [{pgp-num}]] [replicated] \
     [crush-rule-name] [expected-num-objects]
ceph osd pool create {pool-name} [{pg-num} [{pgp-num}]]   erasure \
     [erasure-code-profile] [crush-rule-name] [expected_num_objects] [--autoscale-mode=<on,off,warn>]
# 创建一个名称为test_i4t
# pg大小为16
# pgp大小为16
ceph osd pool create test_i4t 16 16
ceph osd lspools

# 查看副本数量
ceph osd pool get test_i4t size
# 将size改成pg_num和pgp_num可以看到ceph中pg和pgp的数量,我们创建的时候定义的
ceph osd pool get test_i4t pg_num
ceph osd pool get test_i4t pgp_num

# 刚刚我们获取到pool的一些参数变量,我们可以来进行修改这些
# 比如讲副本数由3个修改为5个
ceph osd pool set test_i4t size 5
ceph osd pool get test_i4t size

# 将Pool关联到Application上
# pool创建完成后,需要初始化。将相关的pool关联到application上。类似一个别名
# CephFS 使用应用程序名称cephfs,RBD 使用应用程序名称rbd,RGW 使用应用程序名称rgw。
ceph osd pool application get test_i4t
ceph osd pool application enable test_i4t rdb    #支持的类型为rdb、rgw、以及cephfs
ceph osd pool application get test_i4t

# 还可以给pool限制配额,指pool可以允许使用多少个ojbect或者是允许使用多少空间
ceph osd pool set-quota test_i4t max_objects 100
ceph osd pool get-quota test_i4t
quotas for pool 'test_i4t':
  max objects: 100 objects
  max bytes  : N/A
# 通过get-quota和set-quota变量来查看我们修改的变量
# pool存储空间占用率查看
# 除了使用ceph df查看,还可以使用rados df查看ceph pool空间使用率的情况
ceph df
rados df
# pool使用命令可以参考https://docs.ceph.com/en/latest/rados/operations/pools/
# 删除pool
ceph osd lspools
ceph osd pool rm test_i4t test_i4t
ceph osd pool rm test_i4t test_i4t  --yes-i-really-really-mean-it

# 如果无法删除pool可以设置一下 这三个节点参数都要调整一下 也是临时的调整
ceph daemon /var/run/ceph/ceph-mon.ceph-01.asok config show|grep mon_allow_pool_delete
ceph daemon /var/run/ceph/ceph-mon.ceph-01.asok config set mon_allow_pool_delete true
# 或者在ceph.conf中添加下面的配置
mon_allow_pool_delete = true
# Ceph PG数据调整
# 下面的命令可以动态调整pg和pgp的大小
ceph osd pool set {pool-name} pg_num {pg_num}
ceph osd pool set {pool-name} pgp_num {pgp_num}

# 同步配置文件 同步配置文件可以使用下面的命令
cd ceph-deploy
ceph-deploy  --overwrite-conf config push ceph-01 ceph-02 ceph-03

2.5 Ceph PG 数据分布

  1. 最后数据分布提供PG经过Crush Map的算法最终落在不同的OSD上的,所以pg的数量越多它会落在更多的osd上。
    • pg越多代表数据分散到osd上就越松散,相反pg越少就越集中丢数据的风险就低
    • pg越少,可以提高计算效率
  2. pg设置的计算方法,官网有公式和计算器。
    在这里插入图片描述

相关文章:

  • 帮助命令---学习Linux命令的第一步
  • C++ - 文件读写(fstream)
  • JavaScript:二维码生成与解析
  • SpringBoot 2 配置文件 2.4 多环境配置
  • JavaWeb编年史(远古时期)
  • 【Spring】面向切面编程详解(AOP)
  • 第四课 ceph基础学习-RGW高可用集群和集群测试
  • 幼儿园小程序实战开发教程
  • JavaScript基础总结---重点
  • HashMap和Hashtable(全网最详细)
  • 【趣学算法】Day1 算法简介+斐波那契数列
  • JDK 9-17 新特性介绍
  • 力扣 每日一题 902. 最大为 N 的数字组合【难度:困难,rating: 1989】(数学 / 数位dp)
  • 【微信小程序】电商移动前端API文档
  • 基于FPGA的远程升级系统概述
  • 0x05 Python数据分析,Anaconda八斩刀
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • github从入门到放弃(1)
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Js基础——数据类型之Null和Undefined
  • leetcode-27. Remove Element
  • QQ浏览器x5内核的兼容性问题
  • vue-router的history模式发布配置
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 浮动相关
  • 聊聊directory traversal attack
  • 如何用vue打造一个移动端音乐播放器
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • Semaphore
  • 阿里云服务器如何修改远程端口?
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • #### go map 底层结构 ####
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (补)B+树一些思想
  • (九十四)函数和二维数组
  • (十一)手动添加用户和文件的特殊权限
  • (新)网络工程师考点串讲与真题详解
  • (译) 函数式 JS #1:简介
  • (转)四层和七层负载均衡的区别
  • (转)原始图像数据和PDF中的图像数据
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .Net Core和.Net Standard直观理解
  • .net refrector
  • .net 设置默认首页
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .net和jar包windows服务部署
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .NET学习全景图
  • ?
  • @KafkaListener注解详解(一)| 常用参数详解