从零开始,一步一步搭建一个ceph集群。介绍并解释了搭建过程中的所有细节。
转载请注明出处:http://xiaqunfeng.cc/2017/07/17/ceph%E9%83%A8%E7%BD%B2%E5%AE%8C%E5%85%A8%E6%89%8B%E5%86%8C/
更多相关原创文章详见个人博客:夏天的风
这是以前的一个笔记,整理并分享出来,给有需要的人。
环境:
主机系统:ubuntu14.04
ceph版本:ceph jewel
硬件配置:5台云主机,4核4G内存,Ubuntu14系统,每台挂载1 块100G 的SSD 和3 块200G 的SATA 盘。
root@ceph0:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 436K 0 rom
vda 253:0 0 20G 0 disk
├─vda1 253:1 0 2M 0 part
├─vda2 253:2 0 476M 0 part /boot
└─vda3 253:3 0 19.5G 0 part /
vdb 253:16 0 100G 0 disk
vdc 253:32 0 200G 0 disk
vdd 253:48 0 200G 0 disk
vde 253:64 0 200G 0 disk
磁盘分区
ceph-mon可以和osd节点混布,但要物理隔离。单台机器可以由多个osd进程,每个osd的数据盘和journal盘分别处于独立分区,为了高性能,建议journal放在在ssd盘,分区大小10G即可(更精确的大小计算参见这里, 大致的计算原则是 磁盘的吞吐osd持久化间隔的两倍,默认的持久化间隔是5s,按照磁盘吞吐200M计算,2G空间就够了)。
以上述的推荐举个例子:
某机器上含有4T的sata盘/dev/sdb, /dev/sdc, /dev/sdc。ssd盘480G,/dev/sdd。使用lsscsi可以看到磁盘的类型(sata or ssd),fdisk -l可以查看磁盘容量。
# lsscsi
[0:0:0:0] disk SEAGATE ST300MM0006 0003 /dev/sda
[0:0:1:0] disk ATA ST4000NM0033-9ZM SN06 /dev/sdb
[0:0:2:0] disk ATA ST4000NM0033-9ZM SN06 /dev/sdc
[0:0:3:0] disk ATA ST4000NM0033-9ZM SN06 /dev/sdd
[0:0:4:0] disk ATA ST4000NM0033-9ZM SN06 /dev/sde
[0:0:5:0] disk ATA INTEL SSDSC2BB48 0150 /dev/sdf
[0:0:6:0] disk ATA TOSHIBA MG03ACA4 FL1A /dev/sdg
[0:0:7:0] disk ATA TOSHIBA MG03ACA4 FL1A /dev/sdh
[0:0:8:0] disk ATA TOSHIBA MG03ACA4 FL1A /dev/sdi
[0:0:9:0] disk ATA TOSHIBA MG03ACA4 FL1A /dev/sdj
[0:0:10:0] disk ATA TOSHIBA MG03ACA4 FL1A /dev/sdk
[0:0:11:0] disk ATA TOSHIBA MG03ACA4 FL1A /dev/sdl
[0:0:12:0] disk ATA INTEL SSDSC2BB48 0150 /dev/sdm
[0:0:13:0] enclosu PMCSIERA SXP 24Sx12G RevB -
可以使用parted工具进行分区。
parted -s /dev/sdb mklabel gpt #对/dev/sdb分区
parted /dev/sdb mkpart primary ext4 1 1000000 # 第一个分区占用1M到1000000M。
对于ssd盘,可以创建多个分区
parted -s /dev/sdd mklabel gpt #对/dev/sdb分区
parted /dev/sdb mkpart primary ext4 1 10000 # 第一个分区占用1M到10000M。
parted /dev/sdb mkpart primary ext4 10000 20000#
第二个分区占用10000M到20000M。
parted /dev/sdb mkpart primary ext4 20000 30000 #
第三个分区占用20000M到30000M,剩余的分区可以由你自由分配。
实际分区部署操作
分区的时候这里仅针对SSD分3个区,每个区给挂载在该主机上的3个SATA盘使用。
为ceph准备好磁盘分区,仅作分区,不需要挂载和建立文件系统,部署osd节点时,ceph自己会做这个工作。
将SSD分为3个主分区,SATA盘一个分区,独立挂载。
root@ceph0:~# parted -s /dev/vdb mklabel gpt
root@ceph0:~# parted /dev/vdb mkpart primary ext4 0 40G
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Cancel
#生成的分区没有正确地对齐以实现最佳性能。忽略/取消?
正确对齐分区的快速分步指南:
首先获得你阵列的alignment参数:
root@ceph0:~# cat /sys/block/vdb/queue/optimal_io_size
0
root@ceph0:~# cat /sys/block/vdb/queue/minimum_io_size
512
root@ceph0:~# cat /sys/block/vdb/alignment_offset
0
root@ceph0:~# cat /sys/block/vdb/queue/physical_block_size
512 其次,把optimal_io_size的值与alignment_offset的值相加,之后除以physical_block_size的值。在我的例子中是:(512 + 0) / 512 = 1。这个数值是分区起始的扇区。
最后,新的parted命令应该写成类似下面这样
mkpart primary 1s 100%
字母s是很有意义的:它告诉parted,你的输入是1个扇区,而不是1个字节,也不是1兆字节。
root@ceph0:~# parted /dev/vdb mkpart primary ext4 1 40G
Information: You may need to update /etc/fstab.
root@ceph0:~# parted /dev/vdb mkpart primary ext4 40G 70G
Information: You may need to update /etc/fstab.
root@ceph0:~# parted /dev/vdb mkpart primary ext4 70G 100G
Information: You may need to update /etc/fstab.
# 不需要update。parted命令是实时生效的,分区命令完成后已经将分区表数据写入了硬盘。
# /etc/fstab文件,是系统的自动挂载分区的配置。目的是让系统重启后,能够自动将某个分区挂载到指定挂载点,而不用再手动mount。
SATA盘需要一个主分区,200G大小,分区过程同上。
分区后的磁盘挂载树状结构图:
root@ceph0:~/my-cluster# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 436K 0 rom
vda 253:0 0 20G 0 disk
├─vda1 253:1 0 2M 0 part
├─vda2 253:2 0 476M 0 part /boot
└─vda3 253:3 0 19.5G 0 part /
vdb 253:16 0 100G 0 disk
├─vdb1 253:17 0 37.3G 0 part
├─vdb2 253:18 0 28G 0 part
└─vdb3 253:19 0 28G 0 part
vdc 253:32 0 200G 0 disk
└─vdc1 253:33 0 186.3G 0 part
vdd 253:48 0 200G 0 disk
└─vdd1 253:49 0 186.3G 0 part
vde 253:64 0 200G 0 disk
└─vde1 253:65 0 186.3G 0 part
对其他主机上挂载的SSD和SATA盘操作同上。
选定一个节点作为主控节点(这里选的ceph0主机),建立从主控节点到其他节点的免密登录。主控节点也可以安装ceph。
1 生成秘钥:ssh-keygen
root@ceph0:~# ssh-keygen
2 拷贝密钥:ssh-copy-id your_dst_node
输入密码即可,如果不知道密码,则把~/.ssh/id_rsa.pub加入到目标机器的~/.ssh/authorized_keys中亦可。
root@ceph0:~# ssh-copy-id [email protected]
然后就可以免密登录了,直接 ssh + IP 就可以了。
root@ceph0:~# ssh 172.20.0.197
对其他机台机器的操作同上。注意:也要对本机设置免密登录。
有了免密登录,可以批量的执行命令。
3 设置主控节点通过ssh访问其他节点
127.0.0.1 localhost ceph0
127.0.1.1 host-192-168-112-190.openstacklocal host-192-168-112-190
172.20.0.196 ceph0
172.20.0.197 ceph1
172.20.0.198 ceph2
172.20.0.199 ceph3
172.20.0.200 ceph4
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
~
~
"/etc/hosts" 14L, 340C
1 防火墙相关
Ceph Monitors 之间默认使用 6789 端口通信, OSD 之间默认用 6800:7300 这个范围内的端口通信。
sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
如果提示命令不存在,则可以批量安装
root@ceph0:~# sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
sudo: unable to resolve host ceph0
sudo: firewall-cmd: command not found
2 selinux相关
设置selinux,如果报命令不存在,可以忽略这一步。
root@ceph0:~# sudo setenforce 0
sudo: setenforce: command not found
如果命令存在,执行如下操作
sudo setenforce 0
如果希望永久生效,则修改 /etc/selinux/config
This file controls the state of SELinux on the system.
SELINUX= can take one of these three values:
enforcing - SELinux security policy is enforced.
permissive - SELinux prints warnings instead of enforcing.
disabled - No SELinux policy is loaded.
SELINUX=disabled
SELINUXTYPE= can take one of these two values:
targeted - Targeted processes are protected,
minimum - Modification of targeted policy. Only selected
processes are protected.
mls - Multi Level Security protection.
SELINUXTYPE=targeted
1、在各 Ceph 节点创建新用户
root@ceph0:~# sudo useradd -d /home/ceph -m ceph
sudo: unable to resolve host ceph0
第一条命令执行后的告警没关系,如果想消除,可以参考这里。示例:
vim /etc/hosts
#然后再localhost后面加上当前的主机名,这里是ceph0
127.0.0.1 localhost ceph0
2、确保各 Ceph 节点上新创建的用户都有 sudo 权限
root@ceph0:~# echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
ceph ALL = (root) NOPASSWD:ALL
root@ceph0:~# sudo chmod 0440 /etc/sudoers.d/ceph
主要是用于ceph-mon之间的时间同步。在所有 Ceph 节点上安装 NTP 服务(特别是 Ceph Monitor 节点),以免因时钟漂移导致故障。确保在各 Ceph 节点上启动了 NTP 服务,并且要使用同一个 NTP 服务器。
sudo apt-get install ntp
可以暂时不设置,一般公司的服务器会校准时间,如果需要的话,时间服务器网上百度一下,自行设置即可。
顺序执行以下命令:
注:建议这里的源直接写国内源
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
echo deb https://download.ceph.com/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
国内源
# wget -q -O- 'http://mirrors.163.com/ceph/keys/release.asc' > test.asc
# vim test.asc
# apt-key add test.asc
OK
# echo deb http://mirrors.163.com/ceph/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
deb https://mirrors.163.com/ceph/debian-jewel/ trusty main
实际执行情况:
root@ceph0:~# wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
apt-key add: command not found
很诡异,不知道为啥不行,换一种方法:
root@ceph0:~# wget -q -O- 'https://download.ceph.com/keys/release.asc' > test.asc
root@ceph0:~# apt-key add test.asc
OK
root@ceph0:~# echo deb https://download.ceph.com/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
deb https://download.ceph.com/debian-jewel/ trusty main
更新你的仓库,并安装 ceph-deploy:
sudo apt-get update && sudo apt-get install ceph-deploy
实际执行情况:
root@ceph0:~# sudo apt-get update && sudo apt-get install ceph-deploy
E: Type 'deb https://download.ceph.com/debian-jewel/ trusty' is not known on line 1 in source list /etc/apt/sources.list.d/ceph.list
E: The list of sources could not be read.
替换ceph国内源
root@ceph0:~# vi /etc/apt/sources.list.d/ceph.list
修改内容如下:
#deb http://download.ceph.com/debian-jewel/ trusty main
deb http://mirrors.163.com/ceph/debian-jewel trusty main
然后执行命令
sudo apt-get update && sudo apt-get install ceph-deploy
使用国内源加快安装速度
export CEPH_DEPLOY_REPO_URL=http://mirrors.163.com/ceph/debian-jewel
export CEPH_DEPLOY_GPG_URL=http://mirrors.163.com/ceph/keys/release.asc
mkdir my-cluster && cd my-cluster/
ceph-deploy new your-node-list
例如:ceph-deploy new ceph-0 ceph-1 ceph-2 [other node…]
此时会在my-cluster目录下生成几个文件,如ceph.conf;ceph.mon.keyring等
设置ceph.conf,增加一行public network = xxx.xxx.xxx.0/24
[取决于实际的网络]
实际配置操作
root@ceph0:~/my-cluster# ceph-deploy new ceph0 ceph1 ceph2
root@ceph0:~/my-cluster# ls
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring release.asc
看一下网络
root@ceph0:~/my-cluster# ifconfig
eth0 Link encap:Ethernet HWaddr fa:16:3e:89:b2:7f
inet addr:172.20.0.196 Bcast:172.20.255.255 Mask:255.255.0.0
我这里新增加的一行为:public network = xxx.xxx.xxx.0/16
root@ceph0:~/my-cluster# vim ceph.conf
[global]
fsid = 4d7e1b04-2a4c-45aa-b6fe-a98241db0c2f
mon_initial_members = ceph0, ceph1, ceph2
mon_host = 172.20.0.196,172.20.0.197,172.20.0.198
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public network = 172.20.0.0/16
ceph-deploy install ceph-0 ceph-2 ceph-2 [other node...]
root@ceph0:~/my-cluster# ceph-deploy install ceph0 ceph1 ceph2
……
……
[ceph2][INFO ] Running command: ceph --version
[ceph2][DEBUG ] ceph version 10.2.3 (ecc23778eb545d8dd55e2e4735b53cc93f92e65b)
# ceph0,ceph1,ceph2都出现上面这两行输出表示安装完成
ceph-deploy mon create-initial
然后运行 ceph -s可以看到当前集群的状态,3个mon,暂时没有osd,有个pool,pool的pg数目是64个。
root@ceph0:~/my-cluster# ceph -s
cluster 4d7e1b04-2a4c-45aa-b6fe-a98241db0c2f
health HEALTH_ERR
no osds
monmap e1: 3 mons at {ceph0=172.20.0.196:6789/0,ceph1=172.20.0.197:6789/0,ceph2=172.20.0.198:6789/0}
election epoch 4, quorum 0,1,2 ceph0,ceph1,ceph2
osdmap e1: 0 osds: 0 up, 0 in
flags sortbitwise
pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects
0 kB used, 0 kB / 0 kB avail
64 creating
ceph-deploy install --release {release-name} node-list
这里把之前装monitor前没装的主机装上,我这里还剩ceph3, ceph4没装,执行如下(其实命令里选择版本号这个可以去掉,因为默认的下载源已经指定了版本):
ceph-deploy install --release jewel ceph3 ceph4
ceph-deploy osd prepare ceph-4:/dev/vdb1:/dev/vde1 ceph-4:/dev/vdc1:/dev/vde2 ceph-4:/dev/vdd1:/dev/vde3 #磁盘准备
ssh ceph-4 'chown ceph:ceph /dev/vdb1 /dev/vdc1 /dev/vdd1 /dev/vde1 /dev/vde2 /dev/vde3' # 设置权限
ceph-deploy osd activate ceph-4:/dev/vdb1:/dev/vde1 ceph-4:/dev/vdc1:/dev/vde2 ceph-4:/dev/vdd1:/dev/vde3 #启动osd
上述代码会在ceph-4机器创建三个osd进程,磁盘组合/dev/vdb1:/dev/vde1的vdb1作为第一个osd的数据盘,vde1作为journal盘。然后运行ceph -s,可以看到osd节点已经加入。
具体执行如下:
1 磁盘准备
root@ceph0:~/my-cluster# ceph-deploy osd prepare ceph0:/dev/vdc1:/dev/vdb1 ceph0:/dev/vdd1:/dev/vdb2 ceph0:/dev/vde1:/dev/vdb3
……
……
[ceph0][INFO ] checking OSD status...
[ceph0][DEBUG ] find the location of an executable
[ceph0][INFO ] Running command: /usr/bin/ceph --cluster=ceph osd stat --format=json
[ceph_deploy.osd][DEBUG ] Host ceph0 is now ready for osd use.
2 设置权限
root@ceph0:~/my-cluster# ssh ceph0 'chown ceph:ceph /dev/vdb1 /dev/vdb2 /dev/vdb3 /dev/vdc1 /dev/vdd1 /dev/vde1'
3 启动OSD
root@ceph0:~/my-cluster# ceph-deploy osd activate ceph0:/dev/vdc1:/dev/vdb1 ceph0:/dev/vdd1:/dev/vdb2 ceph0:/dev/vde1:/dev/vdb3
……
……
[ceph0][INFO ] checking OSD status...
[ceph0][DEBUG ] find the location of an executable
[ceph0][INFO ] Running command: /usr/bin/ceph --cluster=ceph osd stat --format=json
其他四台主机上的OSD设置同上,注意SSD盘符和SATA盘符的不同。
所有五台机器设置完后,运行ceph -s,可以看到15个osd节点已经加入。
root@ceph0:~/my-cluster# ceph -s
cluster 4d7e1b04-2a4c-45aa-b6fe-a98241db0c2f
health HEALTH_WARN
too few PGs per OSD (12 < min 30)
monmap e1: 3 mons at {ceph0=172.20.0.196:6789/0,ceph1=172.20.0.197:6789/0,ceph2=172.20.0.198:6789/0}
election epoch 4, quorum 0,1,2 ceph0,ceph1,ceph2
osdmap e80: 15 osds: 15 up, 15 in
flags sortbitwise
pgmap v181: 64 pgs, 1 pools, 0 bytes data, 0 objects
525 MB used, 2792 GB / 2792 GB avail
64 active+clean
4 设置使集群处于健康状态
注意上面的ceph 处于 HEALTH_WARN 状态
查看副本数
root@ceph0:/etc/ceph# ceph osd dump | grep 'replicated size'
pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 1 flags hashpspool stripe_width 0
查看已经存在的pools
root@ceph0:/etc/ceph# ceph osd lspools
0 rbd,
查看rbd pool中的 pg_num 和 pgp_num 属性
root@ceph0:/etc/ceph# ceph osd pool get rbd pg_num
pg_num: 64
root@ceph0:/etc/ceph# ceph osd pool get rbd pgp_num
pgp_num: 64
健康的 pg_num 和 pgp_num 计算方法:
关于pgmap的数目,osd_num *100 / replica_num,向上取2的幂。比如15个osd,三备份,15 *100/3=500,得到pg_num = 512,线上重新设定这个数值时会引起数据迁移,请谨慎处理。
设置
root@ceph0:/etc/ceph# ceph osd pool set rbd pg_num 512
set pool 0 pg_num to 512
root@ceph0:/etc/ceph# ceph osd pool set rbd pgp_num 512
set pool 0 pgp_num to 512
root@ceph0:/etc/ceph#
再次查看 ceph 集群状态,HEALTH_OK
root@ceph0:/etc/ceph# ceph -s
cluster 4d7e1b04-2a4c-45aa-b6fe-a98241db0c2f
health HEALTH_OK
monmap e1: 3 mons at {ceph0=172.20.0.196:6789/0,ceph1=172.20.0.197:6789/0,ceph2=172.20.0.198:6789/0}
election epoch 4, quorum 0,1,2 ceph0,ceph1,ceph2
osdmap e84: 15 osds: 15 up, 15 in
flags sortbitwise
pgmap v226: 512 pgs, 1 pools, 0 bytes data, 0 objects
561 MB used, 2792 GB / 2792 GB avail
512 active+clean
root@ceph0:/etc/ceph#
确保ceph存储集群处于 active + clean 的状态,这样才能使用块设备。
参见上文:章节1.2。
假设rbd所在机器的hostname为 ceph-cli(这里新建一台主机,名为ceph-cli)。在主控节点上的 /etc/ceph 目录下执行操作。
1 在ceph0上使用ceph-deploy 工具ceph二进制程序安装到ceph-cli上面
注意:在 ceph-cli 主机上将ceph 源改为国内源。
cd /etc/ceph/ # 主控节点
ceph-deploy install ceph-cli
2 将ceph配置文件(ceph.conf)复制到ceph-cli
ceph-deploy config push ceph-cli
3 客户机需要ceph密钥去访问ceph集群。ceph创建了一个默认用户 client.admin,它有足够的权限去访问ceph集群。不建议把client.admin共享到所有其他客户端节点。更好的做法是用分开的密钥创建一个新的ceph用户去访问特定的存储池。
这里,创建了一个ceph用户 client.rbd,它拥有访问rbd存储池的权限
root@ceph0:/etc/ceph# ceph auth get-or-create client.rbd mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=rbd'
[client.rbd]
key = AQAmVzVYzXDjBhAAWlcdtEnQ6XBscmU58ZljAw==
4 为ceph-cli上的client.rbd用户添加密钥
root@ceph0:/etc/ceph# ceph auth get-or-create client.rbd | ssh ceph-cli 'sudo tee /etc/ceph/ceph.client.rbd.keyring'
sudo: unable to resolve host ceph-cli
[client.rbd]
key = AQAmVzVYzXDjBhAAWlcdtEnQ6XBscmU58ZljAw==
5 至此,ceph-cli 应该准备好充当ceph客户端了。通过提供用户名和密钥在 ceph-cli 上检查集群的状态
root@ceph0:/etc/ceph# ssh ceph-cli 'cat /etc/ceph/ceph.client.rbd.keyring >> /etc/ceph/keyring'
root@ceph0:/etc/ceph# ssh ceph-cli 'ceph -s --name client.rbd'
cluster 4d7e1b04-2a4c-45aa-b6fe-a98241db0c2f
health HEALTH_OK
monmap e1: 3 mons at {ceph0=172.20.0.196:6789/0,ceph1=172.20.0.197:6789/0,ceph2=172.20.0.198:6789/0}
election epoch 4, quorum 0,1,2 ceph0,ceph1,ceph2
osdmap e84: 15 osds: 15 up, 15 in
flags sortbitwise
pgmap v232: 512 pgs, 1 pools, 0 bytes data, 0 objects
547 MB used, 2792 GB / 2792 GB avail
512 active+clean
至此,ceph客户端已经配置完毕。接下来在客户端上创建块设备。
1 创建一个102400M 大小的RADOS 块设备,取名 rbd1
root@ceph-cli:~# rbd create rbd1 --size 102400 --name client.rbd --image-feature layering
# 14.04的内核只支持layering,增加不支持的特性会导致后续的map失败。
2 列出RBD 镜像
root@ceph-cli:~# rbd ls --name client.rbd
rbd1
3 检查rbd 镜像的细节
root@ceph-cli:~# rbd --image rbd1 info --name client.rbd
rbd image 'rbd1':
size 102400 MB in 25600 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10912ae8944a
format: 2
features: layering
flags:
1 映射块设备到 ceph-cli
root@ceph-cli:~# rbd map --image rbd1 --name client.rbd
/dev/rbd0
2 检查被映射的块设备
root@ceph-cli:~# rbd showmapped --name client.rbd
id pool image snap device
0 rbd rbd1 - /dev/rbd0
3 要使用这个块设备,我们需要创建并挂载一个文件系统
root@ceph-cli:~# fdisk -l /dev/rbd0
#创建文件系统
root@ceph-cli:~# mkfs.ext4 /dev/rbd0
#创建文件夹 ceph-disk1,并将块设备 rbd0 挂载在该目录下
root@ceph-cli:~# mkdir /mnt/ceph-disk1 && mount /dev/rbd0 /mnt/ceph-disk1
root@ceph-cli:~# df -h /mnt/ceph-disk1
Filesystem Size Used Avail Use% Mounted on
/dev/rbd0 99G 60M 94G 1% /mnt/ceph-disk1
接下来就可以开始对这个块存储进行任意读写了。可以使用dd或者fio进行性能测试,注意fio是破坏性测试,会毁坏数据甚至文件系统。不过破坏了也没关系,删除rbd设备后,重新添加rbd设备,格式化即可。
root@ceph-cli:~# dd if=/dev/zero of=/mnt/ceph-disk1/file1 count=100 bs=1M
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.12931 s, 811 MB/s