ceph orch

# enable the module
ceph mgr module enable cephadm

# configure hosts to be user within ceph orch
ceph cephadm generate-key
ceph cephadm get-pub-key > ceph.pub
ssh-copy-id -f -i ceph.pub root@daisy
ceph orch host add daisy
ceph orch host add eric
ceph orch host add frank
ceph orch ps

# upgrade
ceph orch upgrade start --image quay.io/ceph/ceph:v15
# redeploy metadata servers
ceph orch apply mds cephfs --placement=3
# redeploy radosgw servers
ceph orch apply rgw default default --placement=3 --port=7480

# list daemons
ceph orch ps
# list daemons by type
ceph orch ps --daemon-type mds

# start an upgrade
ceph orch upgrade start --ceph-version 16.2.10 --image quay.io/ceph/ceph:v16.2.10
# get update status 
ceph orch upgrade status

rados

# list pools
rados lspools
#list object in a pool
rados --pool vms  ls
# create an object
rados -p test put testobj - <<< 'hello world'
# fetch an object
rados -p test get testobj -

rados block device (rbd)

# create an image
rbd create --image-feature layering --size 1024 test/myvol

# list images 
rbd list --pool test
# show info about an image
rbd info test/myvol
# map an image to a block device
rbd map test/myvol
# show mapped images
rbd showmapped
# create a snapshot
rbd snap create test/myvol@snap1
# protect a snaptshot
rbd snap protect test/myvol@snap1
# unprotect
rbd snap unprotect test/myvol@snap1
# list snapshots of an image
rbd snap list --image test/myvol
rbd snap ls           test/myvol
# Delete/Purge all unprotected snapshots.
rbd snap purge test/myvol
# Delete an image/volume
rbd rm test/myvol
# map a snapshot to a block device
rbd map test/myvol@snap1
# Rollback the image to it's snapshot
rbd snap rollback test/myvol@snap1

# resize an image
rbd resize --size 2G test/mycirros

osdmaptool

# fetch osdmap for testobj
osdmaptool --test-map-object testobj --pool 1 /tmp/osdmap

cephx

# List all keyrings
ceph auth ls

ceph auth get-or-create client.testuser \
  mon 'allow r' \
  osd 'allow rw pool=test'

# print key of an entity
ceph auth get-key client.testuser

# remove an entity
ceph auth rm client.testuser

MDS

# show statistics
ceph mds stat

# create an entity to use within mds
ceph auth get-or-create client.cephfs \
  mds 'allow' mon 'allow r' osd 'allow rw pool=cephfs_data' \
  > /etc/ceph/ceph.client.cephfs.keyring
ceph auth get-key client.cephfs > /etc/ceph/cephfs.secret

# mount CephFS as a Kernel Filesystem
mount -t ceph 10.40.20.224:6789:/ /mnt/mycephfs/ -o   name=cephfs,secretfile=/etc/ceph/cephfs.secret

# mount as fuse
ceph-fuse --name client.cephfs /mnt/cephfuse

radosgw

# list users
radosgw-admin metadata list user

# create user
radosgw-admin user create --uid=JaneWhirlpool \
  --display-name="Jane Whirlpool"

# modify user
radosgw-admin user modify --uid=JaneWhirlpool \
    --display-name="Jane E. Whirlpool" --email=jane.whirlpool@example.com

# show user's info / access_key & secret_key
radosgw-admin user info --uid=JaneWhirlpool

# suspend a user
radosgw-admin user suspend --uid=JaneWhirlpool
# enable a user
radosgw-admin user enable --uid=JaneWhirlpool

ceph-objectstore-tool

# examining contents of a BlueStore OSD
systemctl stop ceph-osd@0
ceph-objectstore-tool --op fuse --data-path /var/lib/ceph/osd/ceph-0 --mountpoint /mnt &
ls /mnt
systemctl start ceph-osd@0

Benchmarking

# benchmark specific osd
ceph tell osd.2 bench
ceph --format plain tell osd.0 bench
# benchmark all osds
ceph tell osd.* bench
ceph --format plain tell osd.* bench

# benchmark on newly created pool + cleanup
ceph osd pool create benchmark 64
rados bench -p benchmark 30 write
rados -p benchmark bench -b 4096 30 write # object size 4096
# read benchmartk
rados -p benchmark bench 30 write --no-cleanup
rados -p benchmark bench 30 rand
ceph tell mon.\* injectargs '--mon-allow-pool-delete=true'
ceph osd pool delete benchmark benchmark --yes-i-really-really-mean-it

# bechmark on a newly created volume + cleanup
rbd create  --size 1024 test/benchmark
rbd bench-write test/benchmark --io-size 1048576  --io-threads 16 --io-pattern rand
rbd rm  test/benchmark

# bechmark on a newly created volume + cleanup
rbd create  --size 1024 test/benchmark
fio --size=100M --ioengine=rbd --invalidate=0 --direct=1 --numjobs=10 --rw=write --name=fiojob --blocksize_range=4K-512k --iodepth=1 --pool=test --rbdname=benchmark
rbd rm  test/benchmark

qemu

# install qemu
yum install -y qemu-kvm qemu-img
# convert an image
qemu-img convert -p -f qcow2 -O raw   cirros.img   rbd:test/cirros
# get image info
qemu-img info                                      rbd:test/cirros
#  start a vm within an image
/usr/libexec/qemu-kvm -m 128 \
  -drive format=raw,file=rbd:test/mycirros,if=virtio,cache=writeback \
  -serial stdio -nographic -monitor none