ceph運維常用指令


一、集群

1、啟動一個ceph 進程

啟動mon進程

service ceph start  mon.node1

啟動msd進程

service ceph start mds.node1

啟動osd進程

 service ceph start osd.0

2、查看機器的監控狀態

[root@client ~]# ceph health

HEALTH_OK

3、查看ceph的實時運行狀態

[root@client ~]# ceph -w

4、檢查信息狀態信息

[root@client ~]# ceph -s

5、查看ceph存儲空間

[root@client ~]# ceph df    

6、刪除一個節點的所有的ceph數據包

[root@node1 ~]# ceph-deploy purge node1

[root@node1 ~]# ceph-deploy purgedata node1

7、為ceph創建一個admin用戶並為admin用戶創建一個密鑰,把密鑰保存到/etc/ceph目錄下:

ceph auth get-or-create client.admin mds 'allow' osd 'allow *' mon 'allow *' > /etc/ceph/ceph.client.admin.keyring

ceph auth get-or-create client.admin mds 'allow' osd 'allow *' mon 'allow *' -o /etc/ceph/ceph.client.admin.keyring

8、為osd.0創建一個用戶並創建一個key

ceph auth get-or-create osd.0 mon 'allow rwx' osd 'allow *' -o /var/lib/ceph/osd/ceph-0/keyring

9、為mds.node1創建一個用戶並創建一個key

ceph auth get-or-create mds.node1 mon 'allow rwx' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mds/ceph-node1/keyring

10、查看ceph集群中的認證用戶及相關的key

ceph auth list

11、刪除集群中的一個認證用戶

ceph auth del osd.0

12、查看集群的詳細配置

[root@node1 ~]# ceph daemon mon.node1 config show | less

13、查看集群健康狀態細節

[root@admin ~]# ceph health detail

14、查看ceph log日志所在的目錄

[root@node1 ~]# ceph-conf --name mon.node1 --show-config-value log_file 

 

二、mon

1、查看mon的狀態信息

[root@client ~]# ceph mon stat

2、查看mon的選舉狀態

[root@client ~]# ceph quorum_status

3、查看mon的映射信息

[root@client ~]# ceph mon dump

4、刪除一個mon節點

[root@node1 ~]# ceph mon remove node1

5、獲得一個正在運行的mon map,為二進制mon.bin

[root@node3 ~]# ceph mon getmap -o mon.bin

6、查看上面獲得的map

[root@node3 ~]#  monmaptool --print mon.bin 

[root@node3 ~]#

7、把上面的mon map注入新加入的節點

ceph-mon -i node4 --inject-monmap mon.bin

8、查看mon的amin socket

root@node1 ~]# ceph-conf --name mon.node1 --show-config-value admin_socket

9、查看mon的詳細狀態

[root@node1 ~]# ceph daemon mon.node1  mon_status 

10、刪除一個mon節點

[root@os-node1 ~]# ceph mon remove os-node1

 

三、msd

1、查看msd狀態

[root@client ~]# ceph mds stat

2、查看msd的映射信息

[root@client ~]# ceph mds dump

3、刪除一個mds節點

[root@node1 ~]# ceph  mds rm 0 mds.node1

 

四、osd

1、查看ceph osd運行狀態

[root@client ~]# ceph osd stat

2、查看osd映射信息

[root@client ~]# ceph osd dump

3、查看osd的目錄樹

[root@client ~]# ceph osd tree

4、down掉一個osd硬盤

[root@node1 ~]# ceph osd down 0   #down掉osd.0節點

5、在集群中刪除一個osd硬盤

[root@node4 ~]# ceph osd rm 0

removed osd.0

6、在集群中刪除一個osd 硬盤 crush map

[root@node1 ~]# ceph osd crush rm osd.0

7、在集群中刪除一個osd的host節點

[root@node1 ~]# ceph osd crush rm node1

removed item id -2 name 'node1' from crush map

 

查看最大osd的個數 

[root@node1 ~]# ceph osd getmaxosd

max_osd = 4 in epoch 514           #默認最大是4個osd節點

8、設置最大的osd的個數(當擴大osd節點的時候必須擴大這個值)

[root@node1 ~]# ceph osd setmaxosd 10

9、設置osd crush的權重為1.0

ceph osd crush set {id} {weight} [{loc1} [{loc2} ...]]

例如:

[root@admin ~]# ceph osd crush set 3 3.0 host=node4

set item id 3 name 'osd.3' weight 3 at location {host=node4} to crush map

[root@admin ~]# ceph osd tree

 

或者用下面的方式

[root@admin ~]# ceph osd crush reweight osd.3 1.0

reweighted item id 3 name 'osd.3' to 1 in crush map

[root@admin ~]# ceph osd tree

 

10、設置osd的權重

[root@admin ~]# ceph osd reweight 3 0.5

 

11、把一個osd節點逐出集群

[root@admin ~]# ceph osd out osd.3

12、把逐出的osd加入集群

[root@admin ~]# ceph osd in osd.3

13、暫停osd (暫停后整個集群不再接收數據)

[root@admin ~]# ceph osd pause

set pauserd,pausewr      

14、再次開啟osd (開啟后再次接收數據) 

[root@admin ~]# ceph osd unpause

unset pauserd,pausewr

 

15、查看一個集群osd.2參數的配置

ceph --admin-daemon /var/run/ceph/ceph-osd.2.asok config show | less

 

16、如果osd壞了,進程還在的話

ceph tell osd.1740 bench         #往osd.1740寫數據,進程就會kill 自己了

 17、調整osd的恢復優先級

ceph daemon /var/run/ceph/ceph-osd.$id.asok config set osd_max_backfills  10

  

五、PG組

1、1、查看pg組的映射信息

[root@client ~]# ceph pg dump

dumped all in format plain

version 1164

stamp 2014-06-30 00:48:29.754714

last_osdmap_epoch 88

last_pg_scan 73

full_ratio 0.95

nearfull_ratio 0.85

pg_stat objects mip     degr    unf     bytes   log     disklog state   state_stamp     v       reported       up      up_primary      acting  acting_primary  last_scrub      scrub_stamp     last_deep_scrudeep_scrub_stamp

0.3f    39      0       0       0       163577856       128     128     active+clean    2014-06-30 00:30:59.193479     52'128  88:242  [0,2]   0       [0,2]   0       44'25   2014-06-29 22:25:25.282347    0'0      2014-06-26 19:52:08.521434

 

下面部分省略

 

2、查看一個PG的map

[root@client ~]# ceph pg map 0.3f

osdmap e88 pg 0.3f (0.3f) -> up [0,2] acting [0,2]   #其中的[0,2]代表存儲在osd.0、osd.2節點,osd.0代表主副本的存儲位置

3、查看PG狀態

[root@client ~]# ceph pg stat

v1164: 448 pgs: 448 active+clean; 10003 MB data, 23617 MB used, 37792 MB / 61410 MB avail

4、查詢一個pg的詳細信息

[root@client ~]# ceph pg  0.26 query

5、查看pg中stuck的狀態

[root@client ~]# ceph pg dump_stuck unclean

ok

[root@client ~]# ceph pg dump_stuck inactive

ok

[root@client ~]# ceph pg dump_stuck stale

ok

6、顯示一個集群中的所有的pg統計

ceph pg dump --format plain

7、恢復一個丟失的pg

ceph pg {pg-id} mark_unfound_lost revert

8、顯示非正常狀態的pg

ceph pg dump_stuck inactive|unclean|stale

六、pool

1、查看ceph集群中的pool數量

[root@admin ~]# ceph osd lspools

0 data,1 metadata,2 rbd,

2、在ceph集群中創建一個pool

ceph osd pool create jiayuan 100            #這里的100指的是PG組

3、為一個ceph pool配置配額

ceph osd pool set-quota data max_objects 10000

4、在集群中刪除一個pool

ceph osd pool delete testpool testpool  --yes-i-really-really-mean-it  #集群名字需要重復兩次

5、顯示集群中pool的詳細信息

[root@admin ~]# rados df

[root@admin ~]# 

6、給一個pool創建一個快照

[root@admin ~]# ceph osd pool mksnap data   date-snap 

created pool data snap date-snap

7、刪除pool的快照

[root@admin ~]# ceph osd pool rmsnap data data-snap

removed pool data snap date-snap

8、查看data池的pg數量

[root@admin ~]# ceph osd pool get data pg_num

pg_num: 64

9、設置data池的最大存儲空間為100T(默認是1T)

[root@admin ~]# ceph osd pool set data target_max_bytes 100000000000000

set pool 0 target_max_bytes to 100000000000000

10、設置data池的副本數是3

[root@admin ~]# ceph osd pool set data size 3

set pool 0 size to 3

11、設置data池能接受寫操作的最小副本為2

[root@admin ~]# ceph osd pool set data min_size 2

set pool 0 min_size to 2

12、查看集群中所有pool的副本尺寸

[root@admin mycephfs]# ceph osd dump | grep 'replicated size'

pool 2 'rbd' replicated size 2 min_size 1 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 1 owner 0 flags hashpspool stripe_width 0

13、設置一個pool的pg數量

[root@admin ~]# ceph osd pool set data pg_num 100

set pool 0 pg_num to 100

14、設置一個pool的pgp數量

[root@admin ~]# ceph osd pool set data pgp_num 100

set pool 0 pgp_num to 100

 

七、rados和rbd指令

1、rados命令使用方法

(1)、查看ceph集群中有多少個pool (只是查看pool)

[root@node-44 ~]# rados lspools

 

(2)、查看ceph集群中有多少個pool,並且每個pool容量及利用情況

[root@node-44 ~]# rados df 

(3)、創建一個pool

[root@node-44 ~]#rados mkpool test

(4)、查看ceph pool中的ceph object (這里的object是以塊形式存儲的)

[root@node-44 ~]# rados ls -p volumes | less

rbd_data.348f21ba7021.0000000000000866

rbd_data.32562ae8944a.0000000000000c79

 

(5)、創建一個對象object 

[root@admin-node ~]# rados create test-object -p test

[root@admin-node ~]# rados -p test ls

test-object

(6)、刪除一個對象

[root@admin-node ~]# rados rm test-object-1 -p test

2、rbd命令的用法 

 

(1)、查看ceph中一個pool里的所有鏡像

 

[root@node-44 ~]# rbd ls volumes

(2)、查看ceph pool中一個鏡像的信息

[root@node-44 ~]# rbd info -p images --image test

(3)、在test池中創建一個命名為test2的10000M的鏡像

[root@node-44 ~]# rbd create -p test --size 10000 test2

(4)、刪除一個鏡像

[root@node-44 ~]# rbd rm  -p test  test2

(5)、調整一個鏡像的尺寸

[root@node-44 ~]# rbd resize -p test --size 20000 test3

Resizing image: 100% complete...done.

(6)、給一個鏡像創建一個快照

[root@node-44 ~]# rbd  snap create  test/test3@snap1  #池/鏡像@快照

[root@node-44 ~]# rbd   snap ls  -p test test3

[root@node-44 ~]# 

[root@node-44 ~]# rbd info test/test3@snap1

(7)、查看一個鏡像文件的快照

[root@os-node101 ~]# rbd snap ls  -p volumes test

 

(8)、刪除一個鏡像文件的一個快照快照

                                 快照所在的池/        快照所在的鏡像文件           @ 快照

[root@os-node101 ~]# rbd snap rm volumes/test3@snap1

2014-08-18 19:23:42.099301 7fd0245ef760 -1 librbd: removing snapshot from header failed: (16) Device or resource busy

上面不能刪除顯示的報錯信息是此快照備寫保護了,下面命令是刪除寫保護后再進行刪除。

[root@os-node101 ~]# rbd snap unprotect volumes/test3@snap1

[root@os-node101 ~]# rbd snap rm  volumes/test3@snap1

(9)刪除一個鏡像文件的所有快照

[root@os-node101 ~]# rbd snap purge  -p volumes test3

Removing all snapshots: 100% complete...done.

 

(10)、把ceph pool中的一個鏡像導出

導出鏡像

[root@node-44 ~]# rbd export -p images --image test

2014-05-24 17:16:15.197695 7ffb47a9a700  0 -- :/1020493 >> 10.49.101.9:6789/0 pipe(0x1368400 sd=3 :0 s=1 pgs=0 cs=0 l=1 c=0x1368660).fault

Exporting image: 100% complete...done.

 

導出雲硬盤

[root@node-44 ~]# rbd export -p volumes --image volume-470fee37-b950-4eef-a595-d7def334a5d6 /var/lib/glance/ceph-pool/volumes/test-10.40.212.24

2014-05-24 17:28:18.940402 7f14ad39f700  0 -- :/1032237 >> 10.49.101.9:6789/0 pipe(0x260a400 sd=3 :0 s=1 pgs=0 cs=0 l=1 c=0x260a660).fault

Exporting image: 100% complete...done.

 

(11)、把一個鏡像導入ceph中 (但是直接導入是不能用的,因為沒有經過openstack,openstack是看不到的)

[root@node-44 ~]# rbd import /root/aaa.img -p images --image 74cb427c-cee9-47d0-b467-af217a67e60a  

Importing image: 100% complete...done.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM