-
Notifications
You must be signed in to change notification settings - Fork 33
Ghi chép về CEPH
Đặng Xuân Cảnh edited this page Nov 10, 2018
·
26 revisions
- Install Ceph trên Client
ceph-deploy install {client}
- Khởi tạo cụm
ceph-deploy mon create-initial
- Copy key admin và config
ceph-deploy --overwrite-conf admin {host}
- Tạo mới OSD
# Zapdisk
ceph-deploy disk zap {host} /dev/{disk}
# Create OSD (BlueStore)
ceph-deploy osd create --data /dev/{disk} {host}
- Tạo mới Node Mon
ceph-deploy new {host}
- Xóa Node Mon
# Remove trong config và restart service mon
- Tạo mới Node MGR
- Xóa node MGR
- Push config mới qua các node client
```sh
ceph-deploy --overwrite-conf config push {host}
- Tạo mới node RGW
ceph-deploy rgw create {host}
- Push key qua client
- Mon
systemctl restart ceph-mon@$(hostname)
- OSD
systemctl restart ceph-osd@{osd-id}
- MDS
systemctl restart ceph-mds@$(hostname)
- RGW
systemctl status ceph-radosgw@rgw.$(hostname).service
- MGR
systemctl restart ceph-mgr@$(hostname)
- Hiển thị trạng thái cụm Ceph
ceph health
- Hiển thị chi tiết trạng thái Warning, Error
ceph health detail
- Hiển thị chi tiết trạng thái cụm Ceph
ceph -s
- Hiển thị trạng thái cụm Ceph theo giờ gian thực
ceph -w
- Kiểm tra trạng thái sử dụng disk của mỗi pool
ceph df
- Kiểm tra trạng thái sử dụng disk của mỗi pool theo Object
rados df
- Kiểm tra thông tin các module của MGR
ceph mgr dump
- Enable các module MGR (zabbix, dashboard,...)
mgr module enable {module}
- Hiển thị trạng thái các OSD trong cụm
ceph osd stat
- Hiển thị Crushmap OSD
ceph osd tree
ceph osd crush tree
ceph osd crush tree --show-shadow
- Kiểm tra chi tiết location của 1 OSD
ceph osd find {osd-id}
- Kiểm tra chi tiết metadata của 1 OSD
ceph osd metadata {osd-id}
- Benchmark osd
ceph tell osd.{osd-id} bench
- Hiển thị trạng thái sử dụng của các OSD
ceph osd df
ceph osd df tree
- Hiển thị latency Aplly, Commit data trên các OSD
ceph osd perf
- Xóa 1 osd ra khỏi cụm Ceph (Thực hiện trên host của OSD đó)
i={osd-id}
ceph osd out osd.$i
ceph osd down osd.$i
systemctl stop ceph-osd@$i
ceph osd crush rm osd.$i
ceph osd rm osd.$i
ceph auth del osd.$i
- Create 1 pool
ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] \
[crush-ruleset-name] [expected-num-objects]
- Set Application cho pool
osd pool application enable {pool-name} {application}
- Hiển thị toàn bộ tham số của các pool
ceph osd pool ls detail
- Hiện thị tham số của 1 pool
ceph osd pool get {pool-name} all
- Điều chỉnh lại giá trị của pool
ceph osd pool set {pool-name} {key} {value}
- Xóa pool
ceph osd pool delete {pool-name} {pool-name} --yes-i-really-really-mean-it
- Hiển thị toàn bộ các key authen của cụm Ceph
ceph auth list
- Create hoặc get key
ceph auth get-or-create {key-name} mon {permission} osd {permission} mds {permission} > {key-name}.keyring
- Cập nhật permission key đã có
ceph auth caps {key-name} mon {permission} osd {permission} mds {permission}
- Xóa key
ceph auth delete {key-name}
- Hiển thị các images trong pool
rbd ls {pool-name}
- Create 1 images
rbd create {pool-name}/{images} --size {size}
- Hiển thị chi tiết images
rbd info {pool-name}/{images}
- Hiển thị dung lượng thực tế của images
rbd diff {pool-name}/{images} | awk '{SUM += $2} END {print SUM/1024/1024 " MB"}'
- Hiển thị images đang được mapped (Trên Client)
rbd showmapped
- Xóa images
rbd rm {pool-name}/{images}
- Create snapshot
rbd snap create {pool-name}/{images}@{snap-name}
- Protect bản snapshot
rbd snap protect {pool-name}/{images}@{snap-name}
- Kiểm tra tất cả các bản snapshot của 1 volume
rbs snap ls {pool-name}/{images}
- Roolback snapshot
rbd snap rollback {pool-name}/{images}@{snap-name}
- Clone snapshot thành 1 images mới
rbd clone {pool-name}/{images}@{snap-name} {pool-name}/{child-images}
- Kiểm tra các images được clone từ snapshot
rbd children {pool-name}/{images}@{snap-name}
- Unprotect bản snapshot
rbd snap unprotect {pool-name}/{images}@{snap-name}
- Xóa 1 bản snapshot
rbd snap rm {pool-name}/{images}@{snap-name}
- Xóa toàn bộ snapshot của 1 volume
rbd snap purge {pool-name}/{images}
- Show toàn bộ pool name
rados lspools
- Show toàn bộ Object trên cụm
rados -p {pool-name} ls
- Upload Object lên cụm Ceph
rados -p {pool-name} put {object-file}
- Download Object từ cụm Ceph
rados -p {pool-name} get {object-file}
- Xóa 1 Object cụm Ceph
rados -p {pool-name} rm {object-file}
- Kiểm tra các client kết nối đến Object
rados -p {pool-name} listwatchers {object-file}
- Benchmark Object bằng rados bench
rados -p {pool-name} listwatchers {object-file}
- Create pool cho cephfs
osd pool create <poolname> <int[0-]> {<int[0-]>} {replicated|erasure} {<erasure_code_profile>} {<rule>} create pool
{<int>}
ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 128
- Khởi tạo cephfs
ceph fs new cephfs cephfs_metadata cephfs_data
- Kiểm tra các cephfs trên cụm
ceph fs ls
ceph mds stat
- Enable nhiều cephfs trên cụm
ceph fs flag set enable_multiple true --yes-i-really-mean-it
- Dump toàn bộ thông tin PG trên cụm
ceph pg dump [--format <format>]
- Dump thông tin cụ thể của PG_stuck
ceph pg dump_stuck inactive|unclean|state|undersized|degraded
- Query thông tin của 1 PG
ceph pg {pg-id} query
- List các pg missing
ceph pg {pg-id} list-missing
ceph pg scrub {pg-id} ceph deep-scrub {pg-id}
- Chủ động khôi phục pg gặp sự cố
ceph pg repair {pg-id}
- Show toàn bộ config của Ceph
ceph-conf --show-config
for i in $(rbd ls {pool-name});
do
echo {pool-name}/$i
Size: $(rbd diff {pool-name}/$i | awk '{SUM += $2} END {print SUM/1024/1024 " MB"}');
done
Các thao tác với crushmap file
- Get Crushmap
ceph osd getcrushmap -o crushmap
- Decompile crushmap file
crushtool -d crushmap -o crushmap.decom
- Sau khi chỉnh sửa crushmap tiến hành Compile lại
crushtool -c crushmap.decom -o crushmap.new
- Test apply crushmap mới cho cụm
crushtool --test -i crushmap.new --show-choose-tries --rule 2 --num-rep=2
- Apply crushmap cho cụm
ceph osd setcrushmap -i crushmap.new
Các thao tác với Crushmap trên câu lệnh
- Set lại class của 1 OSD
# Remove class cũ
ceph osd crush rm-device-class osd.{osd-id}
# Add lại class mới cho osd
ceph osd crush set-device-class ssd osd.{osd-id}
- List danh sách class của osd
ceph osd crush class ls
- List danh sách osd theo class
ceph osd crush class ls-osd {class}
- Kiểm tra rules hiện có của cụm
ceph osd crush rule ls
- Kiểm tra chi tiết của 1 rule
ceph osd crush rule dump
- Create rule mới
ceph osd crush rule create-replicated <rule-name> <root> <failure-domain> <class>
- Create rule cho ensure code
ceph osd erasure-code-profile set {profileEC} k=4 m=2 crush-device-class=ssd crush-failure-domain=host
- Create ecpool
ceph osd pool create {ecpool-name} {pg_size} {pgp_size} erasure {profileEC}
- Set ecpool cho phép lưu trữ RBD
ceph osd pool set {ecpool-name} allow_ec_overwrites true
ceph osd pool application enable {ecpool-name} rbd
- Create images
rbd create {ecpool-name}/{images} --size {size}
- Tùy chỉnh cụ thể osd trên Crushmap
ceph osd crush set osd.0 1.0 root=default datacenter=dc1 room=room1 row=foo rack=bar host=foo-bar-1
VD trên set osd.0 có weight =1 và nằm dưới root/dc1/roomm1/foo/bar/foor-bar-1
- Xóa 1 bucket
ceph osd crush rm {bucket-name}
# Add host node4
ceph osd crush add-bucket node4 host
# Move node4 to root default
ceph osd crush move node4 root=default
# Add disktype node4hdd, node4ssd
ceph osd crush add-bucket node4hdd disktype
ceph osd crush add-bucket node4ssd disktype
# Move disktype node4hdd, node4ssd to host node4
ceph osd crush move node4ssd host=node4
ceph osd crush move node4hdd host=node4
# Add osd to disktype
ceph osd crush set osd.11 0.00999 disktype=node4ssd
ceph osd crush set osd.12 0.00999 disktype=node4hdd
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");
}'
Map rbd như 1 Block Device
# Trên client cài đặt cephclient
yum install ceph-common -y
# Download ceph.conf và key về /etc/ceph/
scp root@cephnode:/etc/ceph/ceph.conf /etc/ceph/
scp root@cephnode:/etc/ceph/{key-name}.keyring /etc/ceph/
# Add config vào rbdmap
echo "{pool-name}/{images} id=admin,keyring=/etc/ceph/ceph.client.admin.keyring" >> /etc/ceph/rbdmap
# Kiểm tra
sudo modprobe rbd
rbd feature disable {pool-name}/{images} exclusive-lock object-map fast-diff deep-flatten
systemctl start rbdmap && systemctl enable rbdmap
Map cephfs như 1 NFS folder
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret
sudo mkdir /home/usernname/cephfs
sudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs
# Cấu hình trên fstab
10.10.10.10:6789:/ /mnt/ceph ceph name=admin,secretfile=/etc/ceph/secret.key,noatime,_netdev 0 2
[global]
# Debug config
debug lockdep = 0/0
debug context = 0/0
debug crush = 0/0
debug mds = 0/0
debug mds balancer = 0/0
debug mds locker = 0/0
debug mds log = 0/0
debug mds log expire = 0/0
debug mds migrator = 0/0
debug buffer = 0/0
debug timer = 0/0
debug filer = 0/0
debug objecter = 0/0
debug rados = 0/0
debug rbd = 0/0
debug journaler = 0/0
debug objectcacher = 0/0
debug client = 0/0
debug osd = 0/0
debug optracker = 0/0
debug objclass = 0/0
debug filestore = 0/0
debug journal = 0/0
debug ms = 0/0
debug mon = 0/0
debug monc = 0/0
debug paxos = 0/0
debug tp = 0/0
debug auth = 0/0
debug finisher = 0/0
debug heartbeatmap = 0/0
debug perfcounter = 0/0
debug rgw = 0/0
debug hadoop = 0/0
debug asok = 0/0
debug throttle = 0/0
rbd default format = 2
fsid = 7d3f2102-face-4012-a616-372615f2f54f
mon_initial_members = ceph1
mon host = 10.10.10.33
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size = 2
osd pool default min size = 1
osd crush chooseleaf type = 0
public network = 10.10.10.0/24
cluster network = 10.10.14.0/24
bluestore block db size = 5737418240
bluestore block wal size = 2737418240
osd objectstore = bluestore
mon_allow_pool_delete = false
rbd_cache = false
osd pool default pg num = 128
osd pool default pgp num = 128
[mon.ceph1]
host = ceph1
mon addr = 10.10.10.33
[osd]
osd crush update on start = false
bluestore = true