매일 운영 및 유지 보수 관리 및 문제 해결을 Ceph - <7>

Ceph 매일 운영 및 유지 보수 관리

클러스터 모니터링 및 관리

전체적인 동작의 클러스터

[root@cephnode01 ~]# ceph -s 
cluster:
    id:     8230a918-a0de-4784-9ab8-cd2a2b8671d0
    health: HEALTH_WARN
            application not enabled on 1 pool(s)
 
  services:
    mon: 3 daemons, quorum cephnode01,cephnode02,cephnode03 (age 27h)
    mgr: cephnode01(active, since 53m), standbys: cephnode03, cephnode02
    osd: 4 osds: 4 up (since 27h), 4 in (since 19h)
    rgw: 1 daemon active (cephnode01)
 
  data:
    pools:   6 pools, 96 pgs
    objects: 235 objects, 3.6 KiB
    usage:   4.0 GiB used, 56 GiB / 60 GiB avail
    pgs:     96 active+clean
id:集群ID
health:集群运行状态,这里有一个警告,说明是有问题,意思是pg数大于pgp数,通常此数值相等。
mon:Monitors运行状态。
osd:OSDs运行状态。
mgr:Managers运行状态。
mds:Metadatas运行状态。
pools:存储池与PGs的数量。
objects:存储对象的数量。
usage:存储的理论用量。
pgs:PGs的运行状态
~]$ ceph -w
~]$ ceph health detail

일반적인 쿼리 상태 명령

집 군 모양态: HEALTH_OK, HEALTH_WARN, HEALTH_ERR

[root@ceph2 ~]#    ceph health detail
HEALTH_OK
[root@ceph2 ~]# ceph -s
cluster:
id: 35a91e48-8244-4e96-a7ee-980ab989d20d
health: HEALTH_OK

services:
mon: 3 daemons, quorum ceph2,ceph3,ceph4
mgr: ceph4(active), standbys: ceph2, ceph3
mds: cephfs-1/1/1 up {0=ceph2=up:active}, 1 up:standby
osd: 9 osds: 9 up, 9 in; 32 remapped pgs
rbd-mirror: 1 daemon active

data:
pools: 14 pools, 536 pgs
objects: 220 objects, 240 MB
usage: 1764 MB used, 133 GB / 134 GB avail
pgs: 508 active+clean
28 active+clean+remapped

ceph -w는 동일하지만, 대화 상태를 들어, 갱신을 시도 할 수 있습니다

클러스터 로고

noup:OSD启动时,会将自己在MON上标识为UP状态,设置该标志位,则OSD不会被自动标识为up状态

​nodown:OSD停止时,MON会将OSD标识为down状态,设置该标志位,则MON不会将停止的OSD标识为down状态,设置noup和nodown可以防止网络抖动

​noout:设置该标志位,则mon不会从crush映射中删除任何OSD。对OSD作维护时,可设置该标志位,以防止CRUSH在OSD停止时自动重平衡数据。OSD重新启动时,需要清除该flag

​noin:设置该标志位,可以防止数据被自动分配到OSD上

​norecover:设置该flag,禁止任何集群恢复操作。在执行维护和停机时,可设置该flag

​nobackfill:禁止数据回填

​noscrub:禁止清理操作。清理PG会在短期内影响OSD的操作。在低带宽集群中,清理期间如果OSD的速度过慢,则会被标记为down。可以该标记来防止这种情况发生

​nodeep-scrub:禁止深度清理

​norebalance:禁止重平衡数据。在执行集群维护或者停机时,可以使用该flag

​pause:设置该标志位,则集群停止读写,但不影响osd自检

​full:标记集群已满,将拒绝任何数据写入,但可读

클러스터 플래그 상태 작동

우리는 단지 하나의 OSD 아니, 전체 클러스터에서 작동 할 수 있습니다

설정 noout 상태 :

[root@ceph2 ~]# ceph osd set noout
noout is set
[root@ceph2 ~]# ceph -s
cluster:
id: 35a91e48-8244-4e96-a7ee-980ab989d20d
health: HEALTH_WARN
noout flag(s) set

services:
mon: 3 daemons, quorum ceph2,ceph3,ceph4
mgr: ceph4(active), standbys: ceph2, ceph3
mds: cephfs-1/1/1 up {0=ceph2=up:active}, 1 up:standby
osd: 9 osds: 9 up, 9 in; 32 remapped pgs
flags noout
rbd-mirror: 1 daemon active

data:
pools: 14 pools, 536 pgs
objects: 220 objects, 240 MB
usage: 1764 MB used, 133 GB / 134 GB avail
pgs: 508 active+clean
28 active+clean+remapped

io:
client: 409 B/s rd, 0 op/s rd, 0 op/s wr

noout 상태 취소

[root@ceph2 ~]# ceph osd unset noout
noout is unset
[root@ceph2 ~]# ceph -s
cluster:
id: 35a91e48-8244-4e96-a7ee-980ab989d20d
health: HEALTH_OK

services:
mon: 3 daemons, quorum ceph2,ceph3,ceph4
mgr: ceph4(active), standbys: ceph2, ceph3
mds: cephfs-1/1/1 up {0=ceph2=up:active}, 1 up:standby
osd: 9 osds: 9 up, 9 in; 32 remapped pgs
rbd-mirror: 1 daemon active

data:
pools: 14 pools, 536 pgs
objects: 220 objects, 240 MB
usage: 1764 MB used, 133 GB / 134 GB avail
pgs: 508 active+clean
28 active+clean+remapped

io:
client: 2558 B/s rd, 0 B/s wr, 2 op/s rd, 0 op/s wr

전체 상태로 설정합니다 :

[root@ceph2 ~]# ceph osd set full
full is set
[root@ceph2 ~]# ceph -s
cluster:
id: 35a91e48-8244-4e96-a7ee-980ab989d20d
health: HEALTH_WARN
full flag(s) set

services:
mon: 3 daemons, quorum ceph2,ceph3,ceph4
mgr: ceph4(active), standbys: ceph2, ceph3
mds: cephfs-1/1/1 up {0=ceph2=up:active}, 1 up:standby
osd: 9 osds: 9 up, 9 in; 32 remapped pgs
flags full
rbd-mirror: 1 daemon active

data:
pools: 14 pools, 536 pgs
objects: 220 objects, 240 MB
usage: 1768 MB used, 133 GB / 134 GB avail
pgs: 508 active+clean
28 active+clean+remapped

io:
client: 2558 B/s rd, 0 B/s wr, 2 op/s rd, 0 op/s wr

지정된 파일은 리소스 풀을 대상으로 작성된 것입니다 put:

[root@ceph2 ~]# rados -p ssdpool put testfull /etc/ceph/ceph.conf
2019-03-27 21:59:14.250208 7f6500913e40 0 client.65175.objecter FULL, paused modify 0x55d690a412b0 tid 0

전체 상태 취소

[root@ceph2 ~]# ceph osd unset full
full is unset
[root@ceph2 ~]# ceph -s
cluster:
id: 35a91e48-8244-4e96-a7ee-980ab989d20d
health: HEALTH_OK

services:
mon: 3 daemons, quorum ceph2,ceph3,ceph4
mgr: ceph4(active), standbys: ceph2, ceph3
mds: cephfs-1/1/1 up {0=ceph2=up:active}, 1 up:standby
osd: 9 osds: 9 up, 9 in; 32 remapped pgs
rbd-mirror: 1 daemon active

data:
pools: 14 pools, 536 pgs
objects: 220 objects, 240 MB
usage: 1765 MB used, 133 GB / 134 GB avail
pgs: 508 active+clean
28 active+clean+remapped

io:
client: 409 B/s rd, 0 op/s rd, 0 op/s wr
[root@ceph2 ~]# rados -p ssdpool put testfull /etc/ceph/ceph.conf
[root@ceph2 ~]# rados -p ssdpool ls
testfull
test

PG 상태

일반적으로 다음과 같은 두 가지 명령을 사용할 수 있습니다 페이지 상태보기를 참조하십시오, 덤프는 다음과 같은 세부 정보를 볼 수 있습니다.

~]$ ceph pg dump
~]$ ceph pg stat

PG 상태

Creating:PG正在被创建。通常当存储池被创建或者PG的数目被修改时,会出现这种状态

Active:PG处于活跃状态。可被正常读写

Clean:PG中的所有对象都被复制了规定的副本数

Down:PG离线

Replay:当某个OSD异常后,PG正在等待客户端重新发起操作

Splitting:PG正在初分割,通常在一个存储池的PG数增加后出现,现有的PG会被分割,部分对象被移动到新的PG

Scrubbing:PG正在做不一致校验

Degraded:PG中部分对象的副本数未达到规定数目

Inconsistent:PG的副本出现了不一致。如果出现副本不一致,可使用ceph pg repair来修复不一致情况

Peering:Perring是由主OSD发起的使用存放PG副本的所有OSD就PG的所有对象和元数据的状态达成一致的过程。Peering完成后,主OSD才会接受客户端写请求

Repair:PG正在被检查,并尝试修改被发现的不一致情况

Recovering:PG正在迁移或同步对象及副本。通常是一个OSD down掉之后的重平衡过程

Backfill:一个新OSD加入集群后,CRUSH会把集群现有的一部分PG分配给它,被称之为数据回填

Backfill-wait:PG正在等待开始数据回填操作

Incomplete:PG日志中缺失了一关键时间段的数据。当包含PG所需信息的某OSD不可用时,会出现这种情况

Stale:PG处理未知状态。monitors在PG map改变后还没收到过PG的更新。集群刚启动时,在Peering结束前会出现该状态

Remapped:当PG的acting set变化后,数据将会从旧acting set迁移到新acting set。新主OSD需要一段时间后才能提供服务。因此这会让老的OSD继续提供服务,直到PG迁移完成。在这段时间,PG状态就会出现Remapped

국가 관리는 PG에서 (붙어) 붙어

如果PG长时间(mon_pg_stuck_threshold,默认为300s)出现如下状态时,MON会将该PG标记为stuck:

inactive:pg有peering问题

unclean:pg在故障恢复时遇到问题

stale:pg没有任何OSD报告,可能其所有的OSD都是down和out

undersized:pg没有充足的osd来存储它应具有的副本数

默认情况下,Ceph会自动执行恢复,但如果未成自动恢复,则集群状态会一直处于HEALTH_WARN或者HEALTH_ERR

如果特定PG的所有osd都是down和out状态,则PG会被标记为stale。要解决这一情况,其中一个OSD必须要重生,且具有可用的PG副本,否则PG不可用

Ceph可以声明osd或PG已丢失,这也就意味着数据丢失。

需要说明的是,osd的运行离不开journal,如果journal丢失,则osd停止

작업의 대학원 붙어 상태

페이지에 갇혀 상태를 확인합니다 :

[root@ceph2 ceph]# ceph pg  dump_stuck
ok
PG_STAT STATE         UP    UP_PRIMARY ACTING ACTING_PRIMARY 
17.5    stale+peering [0,2]          0  [0,2]              0 
17.4    stale+peering [2,0]          2  [2,0]              2 
17.3    stale+peering [2,0]          2  [2,0]              2 
17.2    stale+peering [2,0]          2  [2,0]              2 
17.1    stale+peering [0,2]          0  [0,2]              0 
17.0    stale+peering [2,0]          2  [2,0]              2 
17.1f   stale+peering [2,0]          2  [2,0]              2 
17.1e   stale+peering [0,2]          0  [0,2]              0 
17.1d   stale+peering [2,0]          2  [2,0]              2 
17.1c   stale+peering [0,2]          0  [0,2]              0 
[root@ceph2 ceph]# ceph osd blocked-by
osd num_blocked 
  0          19 
  2          13 

페이지 일관성있는 상태 OSD를 들여다 차단에 리드를 확인합니다 :

ceph osd blocked-by

페이지의 상태를 확인합니다 :

ceph pg dump |grep pgid

대학원 손실 문 :

ceph pg pgid mark_unfound_lost revert|delete

OSD 손실 문 (필수 OSD는 아래로 밖으로) :

ceph osd lost osdid --yes-i-really-mean-it

상태

~]$ ceph osd pool stats
~]$ ceph osd lspools 

풀 구성 변경 제한

주 코스

금지 수영장이 삭제됩니다

osd_pool_default_flag_nodelete

풀 pg_num 및 pgp_num 수정할 금지

osd_pool_default_flag_nopgchange

풀 크기와 MIN_SIZE을 수정하지 마십시오

osd_pool_default_flag_nosizechang
실험 조작
[root@ceph2 ~]# ceph daemon osd.0  config show|grep osd_pool_default_flag
  "osd_pool_default_flag_hashpspool": "true",
  "osd_pool_default_flag_nodelete": "false",
  "osd_pool_default_flag_nopgchange": "false",
  "osd_pool_default_flag_nosizechange": "false",
  "osd_pool_default_flags": "0",
[root@ceph2 ~]# ceph tell osd.* injectargs --osd_pool_default_flag_nodelete true
[root@ceph2 ~]# ceph daemon osd.0 config show|grep osd_pool_default_flag
  "osd_pool_default_flag_hashpspool": "true",
  "osd_pool_default_flag_nodelete": "true",
  "osd_pool_default_flag_nopgchange": "false",
  "osd_pool_default_flag_nosizechange": "false",
  "osd_pool_default_flags": "0",
[root@ceph2 ~]# ceph osd pool delete ssdpool  ssdpool yes-i-really-really-mean-it
Error EPERM: WARNING: this will *PERMANENTLY DESTROY* all data stored in pool ssdpool.  If you are *ABSOLUTELY CERTAIN* that is what you want, pass the pool name *twice*, followed by --yes-i-really-really-mean-it.   #不能删除

FALSE로

[root@ceph2 ~]# ceph tell osd.* injectargs --osd_pool_default_flag_nodelete false
[root@ceph2 ~]# ceph daemon osd.0 config show|grep osd_pool_default_flag
"osd_pool_default_flag_hashpspool": "true",
"osd_pool_default_flag_nodelete": "true",                   #依然显示为ture
"osd_pool_default_flag_nopgchange": "false",
"osd_pool_default_flag_nosizechange": "false",
"osd_pool_default_flags": "0"
구성 파일을 사용하여 수정

ceph1에 수정

osd_pool_default_flag_nodelete false
[root@ceph1 ~]# ansible all -m copy -a 'src=/etc/ceph/ceph.conf dest=/etc/ceph/ceph.conf owner=ceph group=ceph mode=0644'
[root@ceph1 ~]# ansible mons -m shell -a ' systemctl restart ceph-mon.target'
[root@ceph1 ~]# ansible mons -m shell -a ' systemctl restart ceph-osd.target'
[root@ceph2 ~]# ceph daemon osd.0 config show|grep osd_pool_default_flag
"osd_pool_default_flag_hashpspool": "true",
"osd_pool_default_flag_nodelete": "false",
"osd_pool_default_flag_nopgchange": "false",
"osd_pool_default_flag_nosizechange": "false",
 "osd_pool_default_flags": "0",

삭제 ssdpool

[root@ceph2 ~]# ceph osd pool delete ssdpool ssdpool --yes-i-really-really-mean-it

성공적으로 삭제! ! !

OSD 상태

~]$ ceph osd stat
~]$ ceph osd status
~]$ ceph osd dump
~]$ ceph osd tree
~]$ ceph osd df

상태를 모니터링하고 중재의 상태를 확인

~]$ ceph mon stat
~]$ ceph mon dump
~]$ ceph quorum_status

클러스터 공간 사용

~]$ ceph df
~]$ ceph df detail

클러스터 구성 관리 (일시 및 글로벌 서비스 GR)

때로는 필요가 서비스의 구성을 변경할 수 있지만, 서비스 또는 임시 수정을 다시 시작하고 싶지 않아요. 이 시간은 당신이 사용하고 이러한 요구 사항을 완료하기 위해 하위 명령을 데몬 알 수 있습니다.

실행중인 구성보기

命令格式:
# ceph daemon {daemon-type}.{id} config show 

命令举例:
# ceph daemon osd.0 config show 

2, 하위 명령 형식을 알

사용이 일치하는 별표 (*)를 사용하여 전체 클러스터의 설정에 적합하도록 말해, 당신은 역할을 전체 클러스터를 설정할 수 있습니다. 오류가 명령 줄 중없는 매우 쉽게 찾을 수있을 것입니다 때 비정상적인 노드의 출현은 설정할 수 없습니다.

命令格式:
# ceph tell {daemon-type}.{daemon id or *} injectargs --{name}={value} [--{name}={value}]
命令举例:
# ceph tell osd.0 injectargs --debug-osd 20 --debug-ms 1
  • 데몬 형 : 객체의 유형은 OSD, 월, 같은 MDS를 운영한다.
  • 데몬 ID : * 수단이 모든 입력 곳 객체의 이름과 같은 일반적으로 0,1 OSD는 월 ceph -s 이름이 표시됩니다.
  • injectargs : 매개 변수 주입을 나타냅니다, 당신은 지금 더 또한, 매개 변수에 의해 수 따라야합니다

3, 데몬 하위 명령

당신이 위치한 구성하려면 호스트 역할을 설정할 수,이 방법이 필요 피드백을 더 나은 수 있도록 사용 데몬 방법은 세트 하나 하나를 설정하는 것입니다.

命令格式:
# ceph daemon {daemon-type}.{id} config set {name}={value}
命令举例:
# ceph daemon mon.ceph-monitor-1 config set mon_allow_pool_delete false

클러스터 작업

명령 시작, 재시작, 상태를 포함

1、启动所有守护进程
# systemctl start ceph.target
2、按类型启动守护进程
# systemctl start ceph-mgr.target
# systemctl start ceph-osd@id
# systemctl start ceph-mon.target
# systemctl start ceph-mds.target
# systemctl start ceph-radosgw.target

추가 및 OSD 삭제

OSD를 추가

1、格式化磁盘
ceph-volume lvm zap /dev/sd<id>
2、进入到ceph-deploy执行目录/my-cluster,添加OSD
ceph-deploy osd create --data /dev/sd<id> $hostname

삭제 OSD

1、调整osd的crush weight为 0
ceph osd crush reweight osd.<ID> 0.0
2、将osd进程stop
systemctl stop ceph-osd@<ID>
3、将osd设置out
ceph osd out <ID>
4、立即执行删除OSD中数据
ceph osd purge osd.<ID> --yes-i-really-mean-it
5、卸载磁盘
umount /var/lib/ceph/osd/ceph-?

PG 확장

ceph osd pool set {pool-name} pg_num 128
ceph osd pool set {pool-name} pgp_num 128 

참고 :

(2)의 N 승에 근접하여 확장의 크기를 가지고 1

2 동시에 PGP의 수를 변경하는 PG 풀의 수를 변경하는 경우. PGP는 PG의 배치가 존재하는 관리 할 수 ​​있도록 설계되었습니다, 그리고 PG의 수와 일치해야합니다. 당신이 pg_num 풀을 증가시킬 경우에, 우리는 함수에 클러스터가 제대로 재조정 있도록 크기와 일치 pgp_num을 증가해야합니다.

풀 운영

목록 스토리지 풀

ceph osd lspools

스토리지 풀을 생성

命令格式:
# ceph osd pool create {pool-name} {pg-num} [{pgp-num}]
命令举例:
# ceph osd pool create rbd  32 32

설정 할당량 스토리지 풀

命令格式:
# ceph osd pool set-quota {pool-name} [max_objects {obj-count}] [max_bytes {bytes}]
命令举例:
# ceph osd pool set-quota rbd max_objects 10000

스토리지 풀을 삭제

ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]

이름 바꾸기 스토리지 풀

ceph osd pool rename {current-pool-name} {new-pool-name}

보기 스토리지 풀 통계

rados df

스냅 샷 저장 영역 풀은해야 할 일

ceph osd pool mksnap {pool-name} {snap-name}

스냅 샷 스토리지 풀을 삭제하려면

ceph osd pool rmsnap {pool-name} {snap-name}

저장 영역 풀 ​​옵션 값을 구하기

ceph osd pool get {pool-name} {key}

스토리지 풀 옵션 값 조정

ceph osd pool set {pool-name} {key} {value}
size:设置存储池中的对象副本数,详情参见设置对象副本数。仅适用于副本存储池。
min_size:设置 I/O 需要的最小副本数,详情参见设置对象副本数。仅适用于副本存储池。
pg_num:计算数据分布时的有效 PG 数。只能大于当前 PG 数。
pgp_num:计算数据分布时使用的有效 PGP 数量。小于等于存储池的 PG 数。
hashpspool:给指定存储池设置/取消 HASHPSPOOL 标志。
target_max_bytes:达到 max_bytes 阀值时会触发 Ceph 冲洗或驱逐对象。
target_max_objects:达到 max_objects 阀值时会触发 Ceph 冲洗或驱逐对象。
scrub_min_interval:在负载低时,洗刷存储池的最小间隔秒数。如果是 0 ,就按照配置文件里的 osd_scrub_min_interval 。
scrub_max_interval:不管集群负载如何,都要洗刷存储池的最大间隔秒数。如果是 0 ,就按照配置文件里的 osd_scrub_max_interval 。
deep_scrub_interval:“深度”洗刷存储池的间隔秒数。如果是 0 ,就按照配置文件里的 osd_deep_scrub_interval 。

사본의 개체 수를 가져옵니다

ceph osd dump | grep 'replicated size'

사용자 관리

데이터의 형태는 각 Ceph 스토리지 풀에 저장된 오브젝트. Ceph 사용자는 읽기 및 쓰기 데이터를 할 수 있도록 스토리지 풀에 액세스 할 수 있어야합니다. 또한, Ceph 사용자는 Ceph의 명령을 사용할 수 있도록 관리자 권한이 있어야합니다.

보기 사용자 정보

查看所有用户信息
# ceph auth list
获取所有用户的key与权限相关信息
# ceph auth get client.admin
如果只需要某个用户的key信息,可以使用pring-key子命令
# ceph auth print-key client.admin 

사용자 추가

# ceph auth add client.john mon 'allow r' osd 'allow rw pool=liverpool'
# ceph auth get-or-create client.paul mon 'allow r' osd 'allow rw pool=liverpool'
# ceph auth get-or-create client.george mon 'allow r' osd 'allow rw pool=liverpool' -o george.keyring
# ceph auth get-or-create-key client.ringo mon 'allow r' osd 'allow rw pool=liverpool' -o ringo.key

수정 사용자 권한

# ceph auth caps client.john mon 'allow r' osd 'allow rw pool=liverpool'
# ceph auth caps client.paul mon 'allow rw' osd 'allow rwx pool=liverpool'
# ceph auth caps client.brian-manager mon 'allow *' osd 'allow *'
# ceph auth caps client.ringo mon ' ' osd ' '

사용자 삭제

# ceph auth del {TYPE}.{ID}
其中, {TYPE} 是 client,osd,mon 或 mds 的其中一种。{ID} 是用户的名字或守护进程的 ID 。

추가 모니터를 삭제

클러스터는 단 하나의 모니터가 적어도 3 개의 생산 환경 구축을 추천 할 수 있습니다. 클러스터 맵의 다양한 공통의 이해의 변형뿐만 아니라 다른 중요한 정보를 사용하여 Ceph Paxos 알고리즘입니다. 모니터의 홀수를 배포하는 것이 좋습니다 (하지만 필수는 아닙니다). 대부분 몬 Ceph 요구 및 3과 같은 단일 월, 2, 2, 3, 2, 4와 같이 동작 중에 서로 통신 할 수있다. 때 초기 배포, 우리는 세 가지 모니터의 배치를 권장합니다. 당신이 추적을 늘리려면, 2 번 추가 할 수 있습니다.

모니터 추가

# ceph-deploy mon create $hostname
注意:执行ceph-deploy之前要进入之前安装时候配置的目录。/my-cluster

삭제 모니터

# ceph-deploy mon destroy $hostname
注意: 确保你删除某个 Mon 后,其余 Mon 仍能达成一致。如果不可能,删除它之前可能需要先增加一个。

Ceph 문제 해결

nearfull OSD (들) 또는 수영장을 (들) nearfull

이 때, 메모리 OSD의 설명 섹션이 임계 값을 초과, 월 모니터는 OSD ceph 공간 사용을 클러스터. 당신이 WARN 제거하려는 경우,이 두 개의 매개 변수가 임계 값을 개선하기 위해 수정하지만, 연습을 통해 문제를 해결할 수 없습니다 찾을 수 있습니다, 원인은 OSD의 관측 데이터의 분포를 분석 할 수 있습니다.

임계 값 프로파일 설정

  "mon_osd_full_ratio": "0.95",
  "mon_osd_nearfull_ratio": "0.85"

자동 처리

ceph osd reweight-by-utilization
ceph osd reweight-by-pg 105 cephfs_data(pool_name)

수동 처리 :

ceph osd reweight osd.2 0.8

글로벌 거래

ceph mgr module ls
ceph mgr module enable balancer
ceph balancer on
ceph balancer mode crush-compat
ceph config-key set "mgr/balancer/max_misplaced": "0.01"

PG 오류 상태

PG 상태를 설명한
다음 상태에있을 수 수명주기의 서로 다른 시간에 PG를 :

생성 (생성)
이 풀을 만들 때, 당신은 PG의 수를 지정해야합니다,이 시간에 PG의 상태는 Ceph는 PG를 만드는 의미 만드는 것입니다.

(상호) 피어링
피어링 메인 OSD 기능 PG 및 복사가 위치한간에 상호 연결을 구축하는 것, 그리고 차종 개체와 OSD 이들 PG 간의 메타 데이터에 동의한다.

(액티브) 활성
주 내의 데이터가 손상 왔으며, Ceph 일 피어링 완료되었음을 상태 수단에 PG 및 PG의 복사본을 저장.

청소 (깔끔한)
PG 깨끗한 상태로, 다음 OSD하고 해당 주 OSD 네트워크가 성공하고, PG를 벗어나지 않는 한 복사 할 때. Ceph는 복사 작업 만든 매수의 규정에 따라 PG 객체를 의미했다.

저하 (열화)에
부수 PG 소정 개수에 도달하지 않은, PG는 예를 들어, 저하 된 상태에있을 것이다 :

객체의 전체 복사본의 복사본을 생성하고 정보의 완료 이전에 발행 될 때까지 주 OSD는 OSD의 사본을 작성하기위한 주요 OSD 클라이언트 오브젝트를 작성하는 과정은, 개체의 복사본이 담당하고, OSD는 PG의 상태는 메인 OSD 될 것입니다 그것은 성능이 저하 된 상태에 있었다. 또는 모든 성능 저하로 표시되어있는 PG OSD에있을 것입니다, 상태가 OSD 아래로되었다입니다.
Ceph는 PG 내에서 하나 이상의 개체를 찾을 수없는 이유로 PG는 성능이 저하 된 상태로 표시됩니다합니다. 이 시점에서 클라이언트가 읽고 개체를 찾을 수 없습니다 쓰기 만, 여전히 PG 내에있는 다른 개체에 액세스 할 수 없습니다.

(복구) 복구
OSD를 PG PG 내에서 어떤 이유에 대한 OSD 아래로, 그리고 객체가 해당 사본 뒤쳐 것이다 때. OSD가 다시 업 후 OSD의 내용이 현재 상태로 업데이트해야합니다, 회복 PG 상태 중입니다.

백필 (백필)
클러스터에 추가 된 새로운 OSD가, PG의 CRUSH 기존 클러스터의 내부가 할당됩니다. 이것들은 OSD의 PG의 채움에있을 것입니다 새로운 상태에 재 할당된다.

다시 매핑은 (매핑)
대리 설정 변경을 유지하기위한 책임 PG는 PG 필요가 새로운 행동 세트 원래 연기 세트에서 마이그레이션 할 때. 이 과정은 그래서 그 동안, 국가가 관련 PG가 매핑으로 표시됩니다, 시간이 좀 걸릴 것입니다.

(구) 부실
연기가 PG 설정 메인 OSD는 모니터에 보고서를 보내도록 실패 할 경우 기본적으로는, OSD 데몬, 모든 반은 PG 모니터에 두 번째 및 기타 관련 상태를보고, 또는 다른 모니터는보고있다 OSD를이 PG는 부실로 표시됩니다, 아래입니다.

OSD 상태

OSD는 두 개의 단일 상태 우려 세트, OSD 클러스터 내에있는 / 아웃 마커를 사용하여 한 그룹이 다른 그룹은 OSD 조건을 실행에 마크 아래 위로 / 사용이 있습니다. 두 그룹 사이에 OSD가에있을 때, 즉, 상호 배타적이지 상태 "에서"여전히 위 또는 아래의 상태에있을 수 있습니다.

OSD 상태에 있으며까지
이 OSD가 클러스터 내에 있음을 나타내는 제대로 작동, OSD의 정상 상태입니다.

에서 아래로 OSD 상태
OSD의이 시간은 클러스터에 여전히 있지만 상태 300 초 클러스터에서 쫓겨됩니다 후 기본적으로없는 정상 데몬을 가지고, 다음 꺼지고 상태 아래, 다음 OSD의 의지에 PG에서 다른 OSD로 마이그레이션 할 수 있습니다.

OSD 상태는 밖으로 위로
새로운 OSD 수단이 정상으로 OSD 데몬이 있지만, 아직 클러스터에 추가 한 경우이 상태는 일반적으로 발생합니다.

OSD 상태는 밖으로 아래로
OSD에이 상태가 아닌 클러스터, 그리고 데몬이 제대로, CRUSH의 PG는 OSD에 재분배되지 않는 실행되고 있지 않습니다.

Ceph에 대한 몇 가지 기준입니다

참고 1 : https://my.oschina.net/diluga/blog/1501203#h4_6 (유지 보수에 대한주의 사항과 지침을 설명 Ceph 라인을 기록하고, 어떤 명령이없는, 궁극적으로 건축 개념이다)

참고 2 : http://www.zphj1987.com/tag/server/ (Ceph 엔지니어 블로그)

参考3 : https://www.cnblogs.com/hukey/p/11899710.html

추천

출처www.cnblogs.com/passzhang/p/12191332.html