Ceph运维存储 命令管理操作

2023-11-01

分布式存储运维操作

集群服务管理常用命令

统一节点上的ceph.conf文件

- 将admin节点上修改的ceph.conf,推送给所有其他节点(--overwrite-conf强制覆盖)
ceph-deploy --overwrite-conf config push mon01 mon02 mon03 osd01 osd02 osd03

ceph集群服务管理

注意 : 下述操作均需要在具体运行服务的那个节点上运行,而不是admin节点!!!

  • 在生产环境中,我们需要重启服务尽量会使用方式二进行重启。方式一重启所有的服务可能会导致所有Ceph服务卡死的现象。
方式一:在各具体节点执行命令,重启节点上的所有ceph守护进程
systemctl restart ceph.target

方式二:在各具体节点执行下行命令,按类型重启相应的守护进程
1. 重启mgr守护进程
systemctl restart ceph-mgr.target

2. 重启msd守护进程
systemctl restart ceph-mds.target

3. 重启rgw守护进程
systemctl restart ceph-radosgw.target

4. 重启mon守护进程
systemctl restart ceph-mon.target

5. 重启osd守护进程(只能在osd节点的服务器上进行重启,切换到osd01,osd02,osd03服务器上进行重启)
systemctl restart ceph-osd@0
systemctl restart ceph-osd@1
systemctl restart ceph-osd@2
...

6. 重启所有的osd daemon
systemctl restart ceph-osd.target

服务平滑重启

  • 有时候需要更改服务的配置,但是不想重启服务,或者是临时修改,此时我们就可以通过admin sockets直接与守护进程交互。
- 在管理节点运行
tell子命令
ceph tell mon.mon01 injectargs --mon_allow_pool_delete=true
# # 将mon类型mon01节点的mon_allow_pool_delete选项改成True
ceph tell mon.* injectargs --mon_allow_pool_delete=true
# 将mon类型所有节点(*代表所有节点)的mon_allow_pool_delete选项改成True
mon_allow_pool_delete此选项的值默认为false,表示不允许删除pool,只有此选项打开后方可删除,记得改回去!!

- 需要在守护进程所在的主机上执行
daemon子命令
ssh root@mon01
ceph daemon mon.mon01 config set mon_allow_pool_delete false 
# 将mon类型mon0节点的mon_allow_pool_delete选项改成false

- 需要在守护进程所在的主机上执行
socket文件
ssh root@mon01
1. 查看帮助
ceph --admin-daemon /var/run/ceph/ceph-mds.mon01.asok help

2. 查看配置项
ceph --admin-daemon /var/run/ceph/ceph-mds.mon01.asok config get mon_allow_pool_delete

3. 设置
ceph --admin-daemon /var/run/ceph/ceph-mds.mon01.asok config set mon_allow_pool_delete false

4. monitor集群有超过半数的mon节点挂掉之后(paxos算法规定的),此时通过网络访问的所有操作都会被阻塞,但是montior本地的socket还是可以通信的。
ssh root@mon03
ceph --admin-daemon /var/run/ceph/ceph-mon.mon03.asok quorum_status
# 查看ceph集群的状态(详细版本)

维护集群常用命令

ceph集群健康状态

1. 查看集群健康状态
ceph -s
ceph status
ceph health
ceph health detail

2. 实时观察集群健康状态
ceph -w

3. 检查ceph集群的使用情况
ceph df
GLOBAL段
	SIZE:集群的总容量
	AVAIL:集群的空间空间总量      
	RAW USED:已用存储空间总量     
	%RAW USED:已用存储空间比率
	
POOLS段
	NAME:存储池名字                   
	ID:存储池唯一标识符     
	USED:大概数据量,单位为B、KB、MB或GB        
	%USED:各个存储池的大概使用率     
	MAX AVAIL:各个存储池的最大利用率    
	OBJECTS:各存储池内的大概对象数 

mds相关

1. 查看mds状态
ceph mds stat
ceph mds dump

- 需要在守护进程所在的主机上执行
2. 删除mds节点
ssh root@mon01 systemctl stop ceph-mds.target
ceph mds rm 0			 
# 重启mds后,则恢复正常

3. 关闭mds集群
ceph mds cluster_down

4. 开启mds集群
ceph mds cluster_up

5. 设置cephfs文件系统存储方式单个文件的尺寸
ceph mds set max_file_size 1024000000000

6. 清除mds文件系统(了解即可)
6.1 强制mds状态为featrue
ceph mds fail 0

6.2 删除msd文件系统
ceph fs rm cephfs --yes-i-really-mean-it

6.3 删除数据池
ceph osd pool delete cephfs_data cephfs_data --yes-i-really-really-mean-it

6.4 删除元数据池
ceph osd pool delete cephfs_metadata cephfs_metadata --yes-i-really-really mean-it 

6.5 然后再删除mds,key,残留文件等

6.6 删除mds文件系统
ceph mds rm 0

mon相关

1. 查看mon状态
ceph mon stat

2. 查看mon映射信息
ceph mon dump

3. 检查Ceph monitor选举状态
ceph quorum_status --format json-pretty

4. 查看mon信息包括ip地址
获得一个正在运行的mon map,并保存在1.txt文件中
ceph mon getmap -o 1.txt
monmaptool --print 1.txt

auth(权限)相关

认证与授权

  • Ceph使用cephx协议对客户端进行身份验证,集群中每一个Monitor节点都可以对客户端进行身份验证,所以不存在单点故障。cephx仅用于Ceph集群中的个组件,而不能用于Ceph组件。它并不解决数据传输加密问题,但也可以提高访问控制安全相问题。

认证授权流程如下

  1. 客户端向Monitor请求创建用户
  2. Monitor返回用户共享密钥给客户端,并将此用户信息共享给MDS和OSD
  3. 客户端使用此共享密钥向Monitor进行认证
  4. Monitor返回一个session key给客户端,并且session key与对应客户端密钥进行加密。此session key过一段时间后就会失效,需要重新请求
  5. 客户端对此session key进行解密,如果密钥不匹配无法解密,这时候认证失败
  6. 如果认证成功,客户段向服务器申请访问的令牌
  7. 服务端返回令牌给客户端
  8. 这时候客户端就可以拿着令牌访问到MDS和OSD,并进行数据的交互。因为MDS和Monitor之间有共享此用户的信息,所以当客户端拿到令牌后就可以直接访问

相关概念

  1. 用户 : Ceph支持多种类型的用户,个人与某应用都属于client类型。还有mds、osd、mgr一些专用类型。
  2. 用户标识 : 用户标识由"TYPE.ID"组成,通常ID也代表用户名,如client.admin、osd.1等。
  3. 使能caps : 用户所拥有的权限,不同的对象所能使用的权限也不一样。

命令

1. 查看ceph集群中的认证用户及相关的key
ceph auth ls	# 标准写法:ceph auth list

2. 查看admin用户的详细信息
ceph auth get client.admin

3. 只查看admin用户的key信息
ceph auth print-key client.admin

4. 创建用户
ceph auth add client.test mon "allow r" osd "allow rw" 
# 用户标识为client.test,指定改用户对mon有r权限,对osd有rw权限,osd没有指定存储池,所以对所有的存储池都有rw权限。
# 在创建用户的时候还会自动创建用户的密钥。

5. 修改用户权限
ceph auth caps client.test mon "allow r" osd "allow rw pool=kvm"

6. 删除用户,用户名为client.test(注意,不要删除ceph集群默认创建的用户)
ceph auth del client.test

7. 密钥环文件
keyring文件是一个包含密码,key,证书等内容的一个集合。一个keyring文件可以包含多个用户的信息,也就是可以将多个用户信息存储到一个keyring文件。
keyring自动加载顺序
当访问cephalexin集群时候默认会从以下四个地方加载keyring文件
7.1 /etc/ceph/cluster-name.user-name.keyring:通过这种类型的文件来保存单个用户信息,文件名格式固定:集群名.用户标识.keyring。如ceph.client.admin.keyring。
这个代表ceph这个集群,这里的ceph是集群名,而client.admin为admin用户的标识。
7.2 /etc/ceph/cluster.keyring:通用来保护多个用户keyring信息
7.3 /etc/ceph/keyring:也用来保存多个用户的kerying信息
7.4 /etc/ceph/keyring.bin:二进制的keyring文件,也用来保存多个用户的kerying信息

8. 创建一个名为client.admin的用户,设置好用户对mds、osd、mon的权限,然后把密钥导出到文件中
ceph auth get-or-create client.admin mds 'allow *' osd 'allow *' mon 'allow *' > /etc/ceph/ceph.client.admin.keyring1
或者
ceph auth get-or-create client.admin mds 'allow *' osd 'allow *' mon 'allow *' -o /etc/ceph/ceph.client.admin.keyring1

9. 创建一个名为osd.0的用户,设置好用户对mds、osd、mon的权限,然后把密钥导出到文件中
ceph auth get-or-create osd.0 mon 'allow profile osd' osd 'allow *' -o /var/lib/ceph/osd/ceph-0/keyring

10. 创建一个名为mds.nc3的用户,设置好用户对mds、osd、mon的权限,然后把密钥导出到文件中
ceph auth get-or-create mds.nc3 mon 'allow rwx' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mds/ceph-cs1/keyring

osd相关

1. 查看osd状态
ceph osd stat

2. 查看osd树
ceph osd tree  
ceph osd ls-tree rack0 		#查看osd tree中的rack0下的osd daemon编号

3. 查看osd映射信息
ceph osd dump

4. 查看数据延迟
ceph osd perf

5. 查看CRUSH map
ceph osd crush dump

6. 查看与设置最大osd daemon的个数
# 查看当前osd damoen的个数
ceph osd getmaxosd

# 设置最大的osd daemon的个数(当扩大osd daemon的时候必须扩大这个值)
ceph osd setmaxosd 2048

7. 设置osd权重
ceph osd reweight 3 0.5 		# 将osd.3的权重改为0.5 
	
8. 暂停osd(暂停后整个ceph集群不再接收数据;暂停osd,可以防止数据迁移)
ceph osd pause 			# 暂停的是所有的osd,维护集群的时候可以使用

9. 再次开启osd(开启后再次接收数据)
ceph osd unpause		

10.设置标志flags,不允许关闭osd、解决网络不稳定,osd状态不断切换的问题(设置标志,可以防止数据迁移) 
ceph osd set nodown

11.取消设置标志 
ceph osd unset nodow

pool相关

1. 创建pool池
语法:ceph osd pool create <pool name> <pg num> <pgp num> [type]
# pool name:存储池名称,必须唯一
# pg num:存储池中的pg数量
# pgp num:用于规制的pg数量,默认与pg数量相等
# type:指定存储池的类型,有relicated和erasure,默认replicated。

- 创建一个副本池
ceph osd pool create nana_test 32 32

2. 修改存储池的pg数
ceph osd pool set nana_test pg_num 60 
ceph osd pool set nana_test pgp_num 60 
# 注意:pgp是为了管理placement(安置)而存在的专门的pg。
# pg_num的数量必须和pgp_num保持一致,这样集群才能正常rebalancing(再平衡)

3. 查看存储池
ceph osd lspools
ceph osd pool ls
ceph osd pool ls detail
ceph osd pool stats

4. 重命名
ceph osd pool rename nana_test dada_test
# 将pool池的名字nana_test改成dada_test

5. 在集群中删除一个pool,注意删除pool后,pool映射的image会直接被删除,生产环境操作要谨慎,存储池的名字需要重复两次。
ceph tell mon.* injectargs --mon_allow_pool_delete=true				需要先修改参数
ceph osd pool delete tom_test tom_test --yes-i-really-really-mean-it
#  删除完成后最好把--mon_allow_pool_delete改成false,降低误删的风险

6. 为一个ceph pool设置配额、达到配额前集群会告警,达到上限后无法再写入数据。
当我们有很多存储池的时候,有些作为公共存储池,这时候就有必要为这些存储池做一些配额。
限制可以存放的文件数,或者空间大小,以免无限的增大影响到整个集群的正常运行。
6.1	查看pool配额的设置
ceph osd pool get-quota test_pool

6.2 对对象个数进行配额
ceph osd pool get-quota test_pool max_objects 500

6.3 对磁盘大小进行配额
ceph osd pool get-quota test_pool max_bytes 500

7. 配置参数
7.1 查看pool池的配置参数
ceph osd pool get test_pool size
# 查看test_pool池的副本数
# 如果不跟参数名称,会输出所有参数,但是会有个报错

7.2 修改pool的最大副本数和最小副本数
ceph osd pool set test_pool min_size 1
ceph osd pool set test_pool size 2
常用的可用配置参数有:
size:存储池中的对象副本数
min_size:提供服务所需要的最小副本数,如果定义size为3,min_size也为3,坏掉一个OSD,如果pool池中有副本在此块OSD上面,那么此pool池将不提供服务,如果min_size定义为2,那么还可以提供服务,如果提供为1,标识只要有一块副本都提供服务。
pg_num:定义PG的数量
pgp_num:定义归置时使用的PG的数量
crush_ruleset:设置crush算法规则
nodelete:控制是否可删除,默认可以
nopgchange:控制是否可以更改存储池的pg num和pgp num
nosizechange:控制是否可以更改存储池的大小
noscrub和nodeep-scrub:控制是否整理或深层整理存储时,可临时解决高I/O问题
scrub_min_interval:集群负载较低时整理存储池的最小时间间隔
scrub_max_interval:整理存储池的最大时间间隔

8. 快照
创建存储池快照需要大量的存储空间,取决于存储池的大小。创建快照,以下两条命令都可以。
8.1 创建快照
方式一:
ceph osd pool mksnap test_pool test_back_pool
# created pool test_pool snap test_back_pool
方式二:
rados -p test_pool01 mksnap test01_back_pool
# created pool test_pool01 snap test01_back_pool

8.2 列出快照
rados -p test_pool lssnap
# 1	test_back_pool	2021.05.23 15:05:29
# 1 snaps

8.3 回滚至存储池快照
格式 : rados -p <pool name> rollback <obj-name> <snap name>			只能恢复某一个对象,不能让整个pool池恢复
rados -p test_pool rollback a.txt test_back_pool
注意:pool池的快照,相对来说是由局限性的,没有办法直接恢复快照里面的全部object对象文件。
如果pool池整体恢复,会导致整个ceph集群数据混乱,ceph集群的数据是分布式存放的。

8.4 删除存储池快照
方式一:
ceph osd ool rmsnap test_pool test_back_pool
# removed pool test_pool snap test_back_pool
方式二:
rados -p test_pool01 rmsnap test01_back_pool
# removed pool test_pool01 snap test01_back_pool

9. 压缩
如果使用bulestore存储引擎,默认提供数据压缩,以节约磁盘空间。
ceph osd pool set test_pool compression_algorithm snappy			# snappy 压缩默认使用的算法
# set pool 7 compression_algorithm to snappy

pg相关

1. 查看pg组映射信息
方式一:
ceph pg dump  
方式二:
ceph pg ls

2. 查看pg信息的脚本,第一个行为pool池的id号
ceph pg dump | awk '
BEGIN { IGNORECASE = 1 }
  /^PG_STAT/ { col=1; while($col!="UP") {col++}; col++ }
  /^[0-9a-f]+\.[0-9a-f]+/ { match($0,/^[0-9a-f]+/); pool=substr($0, RSTART,
 RLENGTH); poollist[pool]=0;
  up=$col; i=0; RSTART=0; RLENGTH=0; delete osds; while(match(up,/[0-9]+/)>0) {
 osds[++i]=substr(up,RSTART,RLENGTH); up = substr(up, RSTART+RLENGTH) }
  for(i in osds) {array[osds[i],pool]++; osdlist[osds[i]];}
 }
 END {
  printf("\n");
  printf("pool :\t"); for (i in poollist) printf("%s\t",i); printf("| SUM \n");
  for (i in poollist) printf("--------"); printf("----------------\n");
  for (i in osdlist) { printf("osd.%i\t", i); sum=0;
  for (j in poollist) { printf("%i\t", array[i,j]); sum+=array[i,j];
 sumpool[j]+=array[i,j] }; printf("| %i\n",sum) }
  for (i in poollist) printf("--------"); printf("----------------\n");
  printf("SUM :\t"); for (i in poollist) printf("%s\t",sumpool[i]);
 printf("|\n");
 }'

3. 查看pg状态
ceph pg stat

4. 查看一个pg的map
ceph pg map 8.2a				# 8.2a是pg的id

5. 查询一个pg的详细信息
ceph pg 8.2a query				# 8.2a是pg的id					

6. 清理一个pg组
ceph pg scrub 8.2a				# 8.2a是pg的id

7. 查看pg中stuck(卡住)的状态
ceph pg dump_stuck unclean
ceph pg dump_stuck inactive
ceph pg dump_stuck stale
unclean:归置组含有复制数未达到期望数量的对象,他们应该在恢复中
inactive:归置组不能处理读写,因为它们在等待一个有最新数据的osd复活且进入集群
stale:归置组处于未知状态,即存储它们的osd有段时间没向monitor监控节点报告了。

8. 显示一个集群中所有的pg统计
ceph pg dump --format plain		# 格式有plain(默认)和jason

9. 查看某个pg内分布的数据状态,具体状态可以使用选项过滤输出
ceph pg ls 1 clean			# 1为pg的编号

10. 查询osd包含pg的信息,过滤输出pg的状态信息
ceph pg ls-by-osd osd.5

11. 查看pool池包含pg的信息,过滤输出pg的状态信息
ceph pg ls-by-pool test_pool

12. 查询某个osd状态为primary pg,可以根据需要过滤状态
ceph pg ls-by-primary osd.3 clean

13. 恢复一个丢失的pg
如果集群丢了一个或多个对象,而且必须放弃搜索这些数据,你就要把未找到的对象标记未丢失(lost)。
如果所有可能的位置都查询过了,而仍找不到这些对象,你也许放弃它们了。这可能是罕见的失败组合导致的,
集群在写入完成前,未能得知写入是否已经执行。
当前只支持revert选项,它使得回滚到对象的前一个版本(如果它是新对象)或完全忽略它。要把unfound对象标记为lost,执行命令:
ceph pg {pg-id} mark_unfound_lost revert|delete

rados命令相关

1. 使用rados进行性能测试
rados bench 600 write rand -t 100 -b 4K -p test_pool
选项解释:
测试时间:600
支持测试类型:write/read,加rand就是随机,不加就是顺序
并发数(-t 选项):100
pool的名字是:test_pool

osd中disk盘损坏与恢复

模拟disk数据盘坏掉

如果ceph集群有上千个osd daemon,每天坏2-3块盘太正常了,我们可以模拟down掉一个osd daemon数据盘。

# 如果osd dameon正常运行,down的osd很快会自行恢复正常,所以需要先关闭是守护进程
1. 关闭守护进程
ssh root@osd01 systemctl stop ceph-osd@0 		

2. down掉osd
ceph osd down 0

3. 查看osd集群中osd.0的状态
ceph osd tree			                    
#   0   hdd 1.00000                     osd.0    down  1.00000 1.00000 

将坏掉的disk数据盘踢出集群

集群中坏掉一块盘后,我们需要将其踢出集群,让集群恢复到active+clean状态

1. 将osd.0移出集群,集群会自动同步数据
ceph osd out osd.0

2. 将osd.0移除crushmap
ceph osd crush remove osd.0

3. 删除守护进程对应的账户信息
ceph auth rm osd.0

4. 删除osd.0
ceph osd rm osd.0

5. 查看osd集群中osd.0的状态
ceph osd tree			
# 此时osd.0是被移除的状态,我们是看不到osd.0的状态信息的

把原来坏掉的osd daemon修复后重新加入集群

1. 远程连接到osd01节点
ssh root@osd01

2. 切换到工作目录下
cd /etc/ceph

3. 创建osd,无需指定名称,默认会按序号自动生成
ceph osd create

4. 创建账户,切记账号与文件夹对应!!!
ceph-authtool --create-keyring /etc/ceph/ceph.osd.0.keyring --gen-key -n osd.0 --cap mon 'allow profile osd' --cap mgr 'allow profile osd' --cap osd 'allow *'

5. 导入新的账户密钥,切记账户与文件夹对应
ceph auth import -i /etc/ceph/ceph.osd.0.keyring 
ceph auth get-or-create osd.0 -o /var/lib/ceph/osd/ceph-0/keyring

6. 加入集群
ceph osd crush add osd.0 1.00000 host=osd01
# crush tree中加入osd.0 权重设置为1.000 主机为osd01
ceph osd in osd.0
# osd.0添加到ceph集群中

7. 重启osd守护进程
systemctl restart ceph-osd@0


- 如果重启失败,出现报错的情况
Job for ceph-osd@3.service failed because start of the service was attempted
too often. See "systemctl status ceph-osd@3.service" and "journalctl -xe" for
details.
To force a start use "systemctl reset-failed ceph-osd@3.service" followed by
"systemctl start ceph-osd@3.service" again.

- 先运行
systemctl reset-failed ceph-osd@3.service systemctl start ceph-osd@3.service

- 然后再重新开启
systemctl start ceph-osd@3

osd中硬盘的损坏与恢复

模拟ceph集群中硬盘的损坏

模拟osd01主机中,机械硬盘/dev/sdb硬盘损坏

1. 远程连接到osd01节点
ssh root@osd01

2. 关闭守护进程
systemctl stop ceph-osd@0

3. 查看当前挂载使用的osd节点
df -h
# tmpfs                    739M   28K  739M   1% /var/lib/ceph/osd/ceph-0

3. 卸载osd.0节点
umount /var/lib/ceph/osd/ceph-0

4. 查看ceph集群卷组的信息
vgs
#  ceph-1b334040-f508-4887-9f11-c7b0ad4f1025   1   1   0 wz--n- <20.00g    0 

5. 查看ceph集群中正在使用的物理卷
 pvs
#  /dev/sdb   ceph-33594263-78cd-41e4-b844-9b33eeb03876 lvm2 a--  <20.00g    0 

6. 删除osd.0节点卷组
vgremove ceph-33594263-78cd-41e4-b844-9b33eeb03876

7. 删除osd.0节点的pv
pvremove /dev/sdb

8. 清空硬盘中的原数据
dd if=/dev/zero of=/dev/sdb bs=4M count=1

9. 查看osd.0的健康状态
ceph osd tree
#   0   hdd 1.00000                     osd.0    down        0 1.00000 

将坏掉的硬盘踢出集群

集群中坏掉一块盘后,我们需要将其踢出集群,让集群恢复到active+clean状态

- 在osd01服务器上运行
1. down掉osd
ceph osd down 0

2. 将osd.0移出集群,集群会自动同步数据
ceph osd out osd.0

3. 删除守护进程对应的账户信息
ceph auth rm osd.0

4. 将osd.0移除crushmap
ceph osd crush remove osd.0

5. 删除osd.0
ceph osd rm osd.0

插入新的硬盘,重新启动osd

- 在管理主机admin节点执行
1. 清理已经损坏的硬盘/dev/sdb中已经损坏的数据
cd /etc/ceph
ceph-deploy disk zap osd01 /dev/sdb

2. 清理osd0节点,/dev/sdb对应的固态盘分区中的数据
ceph-deploy disk zap osd01 /dev/sde
注:清理完数据之后当前状态为初始化状态,  我们需要重新进行磁盘分区。

3. 对固态盘/dev/sde重新进行分区
parted -s /dev/sde mklabel gpt
parted -s /dev/sde mkpart primary 0% 50%
parted -s /dev/sde mkpart primary 51% 100%

4. 在管理节点重新创建osd01主机的osd0节点
ceph-deploy --overwrite-conf osd create osd01 --data /dev/sdb --block-db /dev/sde1 --block-wal /dev/sde2
# 如果有报错信息:[ceph_deploy][ERROR ] RuntimeError: bootstrap-osd keyring not found; run 'gatherkeys'
#  先执行 : ceph-deploy mon create-initial ; 再执行第5步操作

5. 查看osd.0的健康状态
ceph osd tree
# 0   hdd 0.01949         osd.0      up  1.00000 1.00000 

在物理节点上新增osd daemon

扩容的方式分两种

方式一:

  • 如果我们服务器上还有硬盘插槽,并且我们当初使用的是lvm(逻辑卷)这样的形式创建的数据盘(disk)。
  • 我们可以直接可以在服务器上添加硬盘,制作成pv,再将pv划分给vg,再从vg中增加lvm的空间。
  • 增加好lvm的硬盘空间后,我们只需要调整crushmap中osd节点的权重就可以了。

方式二:

  • 我们直接在物理节点上新增osd daemon,这种方式会产生数据迁移。

在物理节点上新增osd daemon

实验环境:

  1. 我们将osd003节点关机,添加2块硬盘(模拟在本机添加硬盘)
  2. 我们将mon03节点关机,添加一块新的网卡,修改网络配置,连接到cluster网络;添加2块硬盘(模拟添加新的服务器)
- 切换至mon03节点
lsblk
# sdb               8:16   0   20G  0 disk 
# sdc               8:32   0   20G  0 disk 

1. 创建新的磁盘分区
parted -s /dev/sdc mklabel gpt
parted -s /dev/sdc mkpart primary 0% 50%
parted -s /dev/sdc mkpart primary 51% 100%

2 切换至管理节点admin节点
cd /etc/ceph/
ceph-deploy --overwrite-conf osd create mon03 --data /dev/sdb --block-db /dev/sdc1 --block-wal /dev/sdc2

将mon03服务器移动端rack2机架上
ceph osd crush move mon03 rack=rack2


- osd03节点
lsblk
# sdh                                                                             8:112  0   20G  0 disk 
# sdi                                                                             8:128  0   20G  0 disk 

1. 创建新的磁盘分区
parted -s /dev/sdi mklabel gpt
parted -s /dev/sdi mkpart primary 0% 50%
parted -s /dev/sdi mkpart primary 51% 100%

2. 切换至管理节点admin节点
cd /etc/ceph/
ceph-deploy --overwrite-conf osd create osd03 --data /dev/sdh --block-db /dev/sdi1 --block-wal /dev/sdi2

默认将新创建的osd.10节点添加到osd03节点上,osd03节点在rack3机架上

osd节点关机维护

1. 关闭数据自动平衡
ceph osd set noout

2. 关闭节点上的osd进程
ceph osd down ceph-osd@0				# 分别把该节点的osd设置为down状态
systemctl stop ceph-osd.target			# stop该节点上所有的osd进程

3. 关闭节点
stutdown -h now

4. 开始维护
当你对失败域中OSD维护时,其中的PG将会变为degraded状态。

5. 维护完成启动守护进程
systemctl start ceph-osd.target

6. 最后务必记得取消noout
ceph osd unset noout
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ceph运维存储 命令管理操作 的相关文章

  • 常用正则表达式

    正则表达式用于字符串处理 表单验证等场合 实用高效 现将一些常用的表达式收集于此 以备不时之需 匹配中文字符的正则表达式 u4e00 u9fa5 评注 匹配中文还真是个头疼的事 有了这个表达式就好办了 匹配双字节字符 包括汉字在内 x00

随机推荐

  • Python移动和嵌入式视觉应用卷积神经网络模型压缩策略

    概述 模型压缩是在计算资源有限且能耗紧张的移动设备上 有效部署神经网络模型的关键技术 传统的模型压缩技术依赖于手工制作的启发式和基于规则的策略 这需要领域专家探索在模型大小 速度和准确性之间进行权衡的大型设计空间 这通常是次优且耗时的 在本
  • dos 添加防火墙入站规则

    dos 添加防火墙入站规则 使用DOS命令如何操作Windows防火墙 命令介绍及应用举例 一 命令格式 netsh firewall 参数 命令功能 显示命令列表 add 添加防火墙配置 delete 删除防火墙配置 dump 显示一个配
  • NoClassDefFoundError之BeanCreationException异常

    前言 根据部门技术要求 同时提高系统的稳定性和易维护性 需要对现有系统进行技术升级改造 在技术改造的过程中难免会遇到一些问题 令我印象比较深刻的就是文章标题所说的BeanCreationException异常 这个看似比较常见的异常出现的原
  • function/bind的救赎(上)

    本文转自孟岩的博客 http blog csdn net myan article details 5928531 这是那篇C 0X的正文 太长 先写上半部分发了 Function bind可以是一个很简单的话题 因为它其实不过就是一个泛型
  • linux查看进程 显示,Linux如何查看和控制进程

    Linux如何查看和控制进程 前言 程序是保存在外部存储介质 如硬盘 中的可执行机器代码和数据的静态集合 而进程是在CPU及内存中处于动态执行状态的计算机程序 在Linux系统中 每个程序启动后可以创建一个或多个进程 例如 提供Web服务的
  • 等高线种类及特点

    地形图上的等高城分为首曲线 计曲线 间曲线和助曲线四种 见下图 首曲线 又叫基本等高线 是按规定的等高距 由平均海水面起算而测绘的细实线 线粗0 1毫米 用以显示地貌的基本形态 计曲线 又叫加粗等高线 规定从高程起算面 平均海水面 起算的首
  • 一个月,英语能提高多少?附资料分享

    学习语言是一个漫长的过程 但对于我这样一个英语小白 利用业余时间 一个月的学习 还是能看到不少的进步 除了听 说 读 写等能力方面有提升之外 最大的收获就是培养了英语学习和运用的兴趣 这样的结果对我来说 还是很满意的 自然也多了继续探索英语
  • STM32CubeMX代码生成和点亮LED

    所需工具STM32CubeMX和Keil5 1 先打开STM32CubeMX软件 点击New Project新建工程 2 在搜索框中搜索你的项目芯片 3 搜索出来有两个不同封装的芯片 写程序没区别 但是这个软件可以生成IO说明文档 可能会导
  • 【恒指早盘分析】10.8恒指今日复盘及后市思路

    10月8日消息 美股周一震荡收跌 市场正关注国际贸易局势的进展 美联储官员讲话以及经济数据 今日开盘 港股恒指高开0 11 随后一度涨逾1 重返26000点 截至午间收盘 恒生指数踏浪点神 1376338 669 73 46 0 28 涨0
  • justify-content、align-content、align-items、align-self的区别

    提示 CSS flex direction属性指定了内部元素是如何在 flex 容器中布局的 定义了主轴的方向 正方向或反方向 默认主轴为正方向 侧轴 与主轴垂直的轴叫侧轴 justify 使齐行 align 排列 使成一条直线 wrap
  • VBJSON报错:缺少:语句结束

    项目中使用JSON库VBJSON时报错 编译错误 缺少 语句结束 cJSONScript和cStringBuilder报相同的错误 都在第一行 VERSION 1 0 CLASS 研究了半天没啥结果 之前使用这个库的时候没有什么问题 所以判
  • Spring boot踩坑日记——ERROR c.n.d.s.t.d.RedirectingEurekaHttpClient - Request execution error

    eureka启动报错 2018 12 21 17 20 16 480 main ERROR c n d s t d RedirectingEurekaHttpClient Request execution error com sun je
  • https://github.com/qiangqiang666/demo

  • Apache Log4j2远程代码执行漏洞复现(CVE-2021-44228)-----记第一次反弹shell

    目录 靶场搭建 漏洞测试 漏洞利用 总结 靶场搭建 因为没有服务器所以只能在本地搭建 在虚拟机上拉取文件 git clone https github com vulhub vulhub git Vulhub Docker Compose
  • MariaDB安装教程

    注 从MariaDB 10 4 3开始 不再提供预构建的数据目录 并且用户需要运行mysql install db exe来创建数据目录 1 解压到自定义路径 E MariaDB mariadb 10 5 4 winx64 2 将其中的bi
  • java 类之间相互引用实例探索

    本文记录一下自己对类之间相互引用的探索 如有错误 希望不吝赐教 问题一 类之间相互引用依赖会不会引用死循环 不会 例如 A类中声明一个B类的引用 B类中也声明一个A类的引用 因为类之间的引用相当于指针 声明的时候不会分配对象 即使你在A构造
  • Windows下使用Redis(一)安装使用

    一 Redis 是什么 Redis 是一款依据BSD开源协议发行的高性能Key Value存储系统 cache and store 它通常被称为数据结构服务器 因为值 value 可以是 字符串 String 哈希 Map 列表 list
  • Error creating bean with name 'sessionFactory' defined in class path resource [...]

    已解决 spring hibernate 报错原因 applicationContext xml中没有引入实体映射文件 实体映射文件
  • 文盘 Rust -- tonic-Rust grpc 初体验

    gRPC 是开发中常用的开源高性能远程过程调用 RPC 框架 tonic 是基于 HTTP 2 的 gRPC 实现 专注于高性能 互操作性和灵活性 该库的创建是为了对 async await 提供一流的支持 并充当用 Rust 编写的生产系
  • Ceph运维存储 命令管理操作

    分布式存储运维操作 集群服务管理常用命令 统一节点上的ceph conf文件 将admin节点上修改的ceph conf 推送给所有其他节点 overwrite conf强制覆盖 ceph deploy overwrite conf con