ceph rbd resize之后文件系统的调节

# rbd create --size 10000 test
# rbd map test
# mkfs.ext4 -q /dev/rbd1
# mount /dev/rbd1 /mnt
# df -h /mnt
Filesystem      Size  Used Avail Use% Mounted on
/dev/rbd1       9.5G   22M  9.0G   1% /mnt
# blockdev --getsize64 /dev/rbd1
10485760000
# rbd resize --size 20000 test
Resizing image: 100% complete...done.
# blockdev --getsize64 /dev/rbd1
20971520000
# resize2fs /dev/rbd1
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/rbd1 is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/rbd1 is now 5120000 blocks long.
# df -h /mnt
Filesystem      Size  Used Avail Use% Mounted on
/dev/rbd1        20G   27M   19G   1% /mnt

xfs的 传送门

$ qemu-img info -f rbd "rbd:rbd/myrbd"
$ qemu-img resize -f rbd "rbd:rbd/myrbd" 600G
$ virsh domblklist myVM
$ virsh blockresize --domain myVM --path vdb --size 600G
$ rbd info rbd/myrb
$ xfs_growfs /mnt/rbd/myrbd

ceph健康状态监控

监控一个ceph集群
一旦你有一个集群,你可能回使用ceph工具去监控你的集群。监控一个集群涉及到检查osd状态,monitors状态,pg状态及mds状态

使用命令行
交互模式
在交互模式运行ceph工具,键入ceph不加参数

检查集群状态
启动集群后,你开始读写数据。首先检查集群状态。

检查集群状态,输入以下命令:

ceph status

ceph -s

怎样计算集群数据使用量
usage值反映了实际使用了的原始存储数量。xxx GB/ xxx GB 意思是集群总存储空间中的可用存储空间。这个数量概念反映了数据复制、克隆、快照前总的可用存储空间。因此,实际存储数据的数量,超过了能存储的数据量。因为ceph会创建备份,克隆和快照。

监视一个集群
除了每一个daemon的本地记录,ceph集群维护了一个集群日志,记录了整个系统的高级别时间。这记录在monitors的磁盘中(默认/var/log/ceph/ceph.log ),但也能购通过命令行监控。

使用下面的命令查看:

ceph -w

还可以用下面命令查看最近n行的集群日志:

ceph log last [n]

健康检查

ceph status

or

ceph health [detail]

检查集群使用状态

ceph df

检查osd状态

ceph osd stat

ceph osd dump

ceph osd tree

检查monitors状态

ceph mon stat

ceph mon dump

ceph quorum_status

Ceph Pool操作总结

Ceph Pool操作总结一个ceph集群可以有多个pool,每个pool是逻辑上的隔离单位,不同的pool可以有完全不一样的数据处理方式,比如Replica Size(副本数)、Placement Groups、CRUSH Rules、快照、所属者等。

Ceph Pool操作总结一个ceph集群可以有多个pool,每个pool是逻辑上的隔离单位,不同的pool可以有完全不一样的数据处理方式,比如Replica Size(副本数)、Placement Groups、CRUSH Rules、快照、所属者等。

打印pool列表

ceph osd lspools

创建pool

通常在创建pool之前,需要覆盖默认的pg_num,官方推荐:

若少于5个OSD, 设置pg_num为128。

5~10个OSD,设置pg_num为512。

10~50个OSD,设置pg_num为4096。

超过50个OSD,可以参考pgcalc计算。

本文的测试环境只有2个OSD,因此设置pg_num为128。

osd pool default pg num = 128

osd pool default pgp num = 128

创建pool语法:

ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] \

[crush-ruleset-name] [expected-num-objects]

ceph osd pool create {pool-name} {pg-num}  {pgp-num}  erasure \

[erasure-code-profile] [crush-ruleset-name] [expected_num_objects]

创建一个test-pool,pg_num为128:

    ceph osd pool create test-pool 128

设置pool配额

支持object个数配额以及容量大小配额。

设置允许最大object数量为100:

ceph osd pool set-quota test-pool max_objects 100

设置允许容量限制为10GB:

ceph osd pool set-quota test-pool max_bytes $((10 * 1024 * 1024 * 1024))

取消配额限制只需要把对应值设为0即可。

重命名pool

ceph osd poolrename test-pool test-pool-new

删除pool

删除一个pool会同时清空pool的所有数据,因此非常危险。(和rm -rf /类似)。因此删除pool时ceph要求必须输入两次pool名称,同时加上–yes-i-really-really-mean-it选项。

ceph osd pool delete test-pool test-pool --yes-i-really-really-mean-it

查看pool状态信息

rados df

创建快照

ceph支持对整个pool创建快照(和Openstack Cinder一致性组区别?),作用于这个pool的所有对象。但注意ceph有两种pool模式:

Pool Snapshot,我们即将使用的模式。创建一个新的pool时,默认也是这种模式。

Self Managed Snapsoht,用户管理的snapshot,这个用户指的是librbd,也就是说,如果在pool创建了rbd实例就自动转化为这种模式。

这两种模式是相互排斥,只能使用其中一个。因此,如果pool中曾经创建了rbd对象(即使当前删除了所有的image实例)就不能再对这个pool做快照了。反之,如果对一个pool做了快照,就不能创建rbd image了。

ceph osd pool mksnap test-pool test-pool-snapshot

删除快照

ceph osd pool rmsnap test-pool test-pool-snapshot

设置pool

通过以下语法设置pool的元数据:

ceph osd pool set {pool-name} {key} {value}

比如设置pool的冗余副本数量为3:

ceph osd pool set test-pool size 3

其他配置项参考文档。

通过get操作能够获取pool的配置值,比如获取当前pg_num:

ceph osd pool get test-pool pg_num

获取当前副本数:

ceph osd pool get test-pool size

rdb磁盘添加到kvm配置
官方文档 http://docs.ceph.org.cn/rbd/libvirt/

<disk type='network' device='disk'>
    <source protocol='rbd' name='libvirt-pool/pek100-62k8s03-disk02'>
                <host name='10.26.100.33' port='6789'/>
    </source>
    <auth username='libvirt'>
    <secret type='ceph' uuid='43f785b8-3085-4e4a-94e6-c14cf93169eb'/>
  </auth>
    <target dev='vdb' bus='virtio'/>
</disk>
文档更新时间: 2020-07-07 10:22   作者:月影鹏鹏