Ceph能提供三大存储接口,即块存储、文件存储和对象存储。本篇博客主要介绍Ceph实现三种存储的步骤。

主机列表

外部ip 集群ip host 角色
172.16.200.101 10.16.200.101 ceph-mon1 mon、osd节点
172.16.200.102 10.16.200.102 ceph-mon2 mon、osd节点
172.16.200.103 10.16.200.103 ceph-mon3 mon、osd节点
172.16.200.104 10.16.200.104 ceph-osd4 osd节点

块存储

块存储可以为客户端提供基于块的持久化存储,通常是格式化成单独的磁盘使用。客户可以灵活的使用这个磁盘,就像新加的磁盘一样,直接作为裸设备使用或者格式化成文件系统挂载到特定的目录。

基本使用

1、创建存储池

$ ceph osd pool create mypool 128 128

2、创建RBD镜像,名称为myimage,大小为10G。feature为layering

$ rbd create myimage -s 10G --image-feature layering -p mypool
$ rbd ls -p mypool
myimage

3、查看myimage的详细信息

$ root ~ >>> rbd info myimage -p mypool
rbd image 'myimage':size 10 GiB in 2560 objectsorder 22 (4 MiB objects)id: 16966b8b4567block_name_prefix: rbd_data.16966b8b4567format: 2features: layeringop_features: flags: create_timestamp: Thu Dec 17 16:26:28 2020

4、将myimage映射为块设备

$ $  rbd map myimage -p mypool
/dev/rbd0

myimage映射为/dev/rbd0块设备

同时showmapped子命令可以查看所有已经映射的卷

$ $  rbd showmapped
id pool   image   snap device
0  mypool myimage -    /dev/rbd0

5、一旦RBD的image映射到了系统上,就应该在其上创建文件系统以使用这个设备

$ mkfs.xfs /dev/rbd0    #格式化为xfs格式
Discarding blocks...Done.
meta-data=/dev/rbd0              isize=512    agcount=16, agsize=163840 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25=                       sunit=1024   swidth=1024 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none
$ mkdir /ceph/rbd -p   #创建挂载点
$ mount /dev/rbd0 /ceph/rbd #挂载
$ df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G   74M  3.9G   2% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   44G   17G   28G  37% /
/dev/sda1               1014M  132M  883M  13% /boot
tmpfs                    799M     0  799M   0% /run/user/0
tmpfs                    3.9G   52K  3.9G   1% /var/lib/ceph/osd/ceph-0
tmpfs                    3.9G   52K  3.9G   1% /var/lib/ceph/osd/ceph-1
/dev/rbd0                 10G   33M   10G   1% /ceph/rbd

6、写入数据

$ dd if=/dev/zero of=/ceph/rbd/file count=100 bs=1M
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.135906 s, 772 MB/s
$ cd /ceph/rbd/
$  ls -lh
total 100M
-rw-r--r--. 1 root root 100M Dec 17 16:45 file

扩展RBD镜像

ceph块设备支持动态的增加或者减少RBD的大小,但需要底层的文件系统同时作出修改才能使容量生效。但是:一般不建议做缩盘操作,可能会造成数据丢失

1、扩展RBD镜像myimage至20G

$ rbd resize myimage -s 20G -p mypool
Resizing image: 100% complete...done.
$ rbd info myimage -p mypool
rbd image 'myimage':size 20 GiB in 5120 objectsorder 22 (4 MiB objects)id: 16966b8b4567block_name_prefix: rbd_data.16966b8b4567format: 2features: layeringop_features: flags: create_timestamp: Thu Dec 17 16:26:28 2020

扩展后size大小变成了20G

2、调整文件系统。虽然rbd image已经调整为20G,但是对于文件系统还是之前的10G,需手动扩展文件系统中的大小。由于之前格式为xfs文件系统,故这里使用xfs_growfs来调整。

$ xfs_growfs /ceph/rbd
meta-data=/dev/rbd0              isize=512    agcount=16, agsize=163840 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25=                       sunit=1024   swidth=1024 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2621440 to 5242880$ df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G   74M  3.9G   2% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   44G   17G   28G  37% /
/dev/sda1               1014M  132M  883M  13% /boot
tmpfs                    799M     0  799M   0% /run/user/0
tmpfs                    3.9G   52K  3.9G   1% /var/lib/ceph/osd/ceph-0
tmpfs                    3.9G   52K  3.9G   1% /var/lib/ceph/osd/ceph-1
/dev/rbd0                 20G  134M   20G   1% /ceph/rbd
RBD快照

ceph支持快照,它是一个基于时间点只读的RBD镜像副本。可以通过创建快照并恢复其原始数据,报错RBD镜像的状态。

1、创建测试文件

$ echo "This is a test file before snapshot" > ./snap-test.txt
$ cat snap-test.txt
This is a test file before snapshot
$ ls -ltrh
total 101M
-rw-r--r--. 1 root root 100M Dec 17 16:45 file
-rw-r--r--. 1 root root   36 Dec 17 17:14 snap-test.txt

2、创建快照:语法是rbd snap create [–pool ] [–image ] [–snap ]或者rbd /]@

$ rbd snap create mypool/myimage@snap01$ rbd snap ls myimage -p mypool
SNAPID NAME     SIZE TIMESTAMP                4 snap01 20 GiB Thu Dec 17 17:16:33 2020

3、为了测试快照的恢复的功能,从文件系统删除文件

$ rm -rf file snap-test.txt
$ ls
$

4、回滚快照实现文件的回滚

$ rbd snap rollback mypool/myimage@snap01
Rolling back to snapshot: 100% complete...done.
$ ls$ cd
$ umount /ceph/rbd
$ mount /dev/rbd0 /ceph/rbd/
$ cd /ceph/rbd/
$ ls
file  snap-test.txt
$ cat snap-test.txt
This is a test file before snapshot
$

回滚快照会导致当前版本及数据被覆盖。应该慎重的使用这个命令。

5、快照删除

当不在需要某个快照版本时可以手动将其删除,删除快照不会删除RBD镜像中的数据

$ rbd snap rm mypool/myimage@snap01
Removing snap: 100% complete...done.$ rbd snap purge mypool/myimage     #snap purge可以用于删除这个镜像的所有快照
$ rbd snap ls myimage -p mypool
$
快照分层
ceph分层特性允许在快照中创建写时副本(COW),这就是快照的分层特性。快照是只读的,但是COW副本是可写的。ceph的分层特性为云平台带来了巨大的便捷性。

1、创建rbd image快照

$ rbd snap create mypool/myimage@snap_for_clone
$ rbd snap ls mypool/myimage
SNAPID NAME             SIZE TIMESTAMP                6 snap_for_clone 20 GiB Fri Dec 18 10:45:38 2020

2、创建COW副本需要先将快照置于保护状态。如果快照被删除,所有连接到这个快照的COW副本都会被删除。处于protect状态的snap无法删除

$ rbd snap protect mypool/myimage@snap_for_clone
$ rbd snap rm mypool/myimage@snap_for_clone
Removing snap: 0% complete...failed.2020-12-18 16:19:52.377 7fc06bacc840 -1 librbd::Operations: snapshot is protected
rbd: snapshot 'snap_for_clone' is protected from removal.

3、复制快照需要父存储池、RBD镜像以及快照的名称:

$ rbd clone mypool/myimage@snap_for_clone mypool/myimage-cloned
$ rbd ls mypool
myimage
myimage-cloned

4、查看myimage-cloned的详细信息,会发现特殊的字段,这个字段指明了父镜像的池、镜像及快照信息

$ rbd info myimage-cloned -p mypool
rbd image 'myimage-cloned':size 20 GiB in 5120 objectsorder 22 (4 MiB objects)id: 17206b8b4567block_name_prefix: rbd_data.17206b8b4567format: 2features: layeringop_features: flags: create_timestamp: Fri Dec 18 16:22:52 2020parent: mypool/myimage@snap_for_cloneoverlap: 20 GiB

5、扁平化(可选)

要让复制出来的镜像不依赖于父镜像,需要进行扁平化。扁平化会从父镜像中复制数据到子镜像中,所需时间取决于镜像中的数据大小。

$ rbd flatten mypool/myimage-cloned
Image flatten: 100% complete...done.
$ rbd info mypool/myimage-cloned
rbd image 'myimage-cloned':size 20 GiB in 5120 objectsorder 22 (4 MiB objects)id: 17206b8b4567block_name_prefix: rbd_data.17206b8b4567format: 2features: layeringop_features: flags: create_timestamp: Fri Dec 18 16:22:52 2020
扁平化执行完成后将完全与父镜像脱离关系。
$ rbd map mypool/myimage-cloned
/dev/rbd1
$ mkdir /ceph/rbd-cloned
$ mount /dev/rbd1 /ceph/rbd-cloned
mount: wrong fs type, bad option, bad superblock on /dev/rbd1,missing codepage or helper program, or other errorIn some cases useful info is found in syslog - trydmesg | tail or so.
$ dmesg | tail
[441827.686175] IPVS: rr: UDP 10.233.0.3:53 - no destination available
[441828.183596] IPVS: rr: UDP 10.233.0.3:53 - no destination available
[441828.183870] IPVS: rr: UDP 10.233.0.3:53 - no destination available
[441828.186889] IPVS: rr: UDP 10.233.0.3:53 - no destination available
[442996.431560] libceph: osd3 172.16.200.102:6802 socket closed (con state OPEN)
[444104.690687] IPVS: Creating netns size=2200 id=135
[444118.448382] IPVS: Creating netns size=2200 id=136
[444796.411407] libceph: osd3 172.16.200.102:6802 socket closed (con state OPEN)
[447089.970167] rbd: rbd1: added with size 0x500000000
[447115.521387] XFS (rbd1): Filesystem has duplicate UUID cb2b61cf-decf-49c9-a302-a1710b0e2187 - can't mount
$ xfs_admin -U generate /dev/rbd1
Clearing log and setting UUID
writing all SBs
new UUID = 79b0e509-c596-4996-ba37-32b7b5f9dd75
$ mount /dev/rbd1 /ceph/rbd-cloned
$ ls /ceph/rbd-cloned
file  snap-test.txt

文件存储

Ceph的文件存储全称是CephFS,它是一个与POSIX兼容的分布式文件系统,底层使用Ceph rados存储数据。要能正常使用CephFS,集群中应至少包含一个元数据服务器MDS(MataData Server)。

创建MDS

创建MDS可以直接使用ceph-deploy中的mds create子命令进行创建

$ ceph-deploy mds create ceph-mon1 ceph-mon2 ceph-mon3

添加MDS节点

1、在需要作为新MDS的节点创建新的目录,${id}可以直接使用hostname

$ mkdir -pv /var/lib/ceph/mds/ceph-${id}

2、使用cephx生成秘钥

$ sudo ceph auth get-or-create mds.${id} mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > /var/lib/ceph/mds/ceph-${id}/keyring

3、在新的MDS节点启动MDS服务

$ sudo systemctl start ceph-mds@${id}

4、MDS集群的状态应当如下

$ ceph mds stat
cephfs-1/1/1 up  {0=ceph-mon1=up:active}, 1 up:standby

剔除MDS节点

1、停止对应节点的ceph-mds服务

$ sudo systemctl stop ceph-mds@${id}

2、删除创建的MDS文件夹

$ sudo rm -rf /var/lib/ceph/mds/ceph-${id}

创建存储池

一个ceph文件系统至少需要包含两个存储池,一个用来存储数据,另一个则是用来存储元数据。配置这些存储池时需考虑:

为元数据存储池设置较高的副本水平,因为此存储池丢失任何数据都会导致整个文件系统失效。
为元数据存储池分配低延时存储器(像 SSD ),因为它会直接影响到客户端的操作延时。
接下来创建两个存储池,一个叫cephfs_data,一个叫ceph_metadata:

$  ceph osd pool create cephfs_data 128
$  ceph osd pool create cephfs_metadata 128

创建文件系统

在MDS和存储池创建完成后就可以创建文件系统了。创建文件系统的子命令是fs new。ceph fs new <fs_name>

$ ceph fs new cephfs cephfs_metadata cephfs_data
$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

使用ceph fs status查看新建的文件系统的状态

root /etc/ceph >>> ceph fs status
cephfs - 0 clients
======
+------+--------+-----------+---------------+-------+-------+
| Rank | State  |    MDS    |    Activity   |  dns  |  inos |
+------+--------+-----------+---------------+-------+-------+
|  0   | active | ceph-mon1 | Reqs:    0 /s |   10  |   13  |
+------+--------+-----------+---------------+-------+-------+
+-----------------+----------+-------+-------+
|       Pool      |   type   |  used | avail |
+-----------------+----------+-------+-------+
| cephfs_metadata | metadata | 2635  | 34.1G |
|   cephfs_data   |   data   |    0  | 34.1G |
+-----------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
|  ceph-mon3  |
|  ceph-mon2  |
+-------------+
MDS version: ceph version 13.2.10 (564bdc4ae87418a232fc901524470e1a0f76d641) mimic (stable)
文件系统创建完成后,MDS服务器就能达到active的状态了
$ ceph mds stat
cephfs-1/1/1 up  {0=ceph-mon1=up:active}, 2 up:standby

挂载文件存储

要挂载 Ceph 文件系统,如果你知道mon节点ip地址可以用 mount 命令、或者用 mount.ceph 工具来自动解析监视器 IP 地址。由于mount命令与mount.ceph基本一致,所以仅介绍mount命令挂载。

1、创建挂载点

$ mkdir -p /ceph/cephfs/

2、挂载文件系统

默认情况下,ceph部署完成后会自动开启cephx认证,所以在挂载时需要指明用户名及秘钥。

$ cat ./ceph.client.admin.keyring
[client.admin]key = AQA7vdVfBt21JBAAOL2oY8iHCaqNc2Fctv588w==caps mds = "allow *"caps mgr = "allow *"caps mon = "allow *"caps osd = "allow *"
$ mount -t ceph 172.16.200.101:/ /ceph/cephfs/ -o name=admin,secret=AQA7vdVfBt21JBAAOL2oY8iHCaqNc2Fctv588w==
root /etc/ceph >>> df -h | grep cephfs
172.16.200.101:/         160G   37G  124G  23% /ceph/cephfs

ceph集群总共是160G

官方建议以更加安全的方式挂载cephFS,就需要把秘钥文件导出到一个文件中,挂载时指明文件名。这样就避免了secret残留在bash中。

$ echo "AQA7vdVfBt21JBAAOL2oY8iHCaqNc2Fctv588w==" > /etc/cepg/ceph-admin.secret
$ mount -t ceph 172.16.200.101:/ /ceph/cephfs/ -o name=admin,secretfile=/etc/ceph/ceph-admin.secret

3、写入/etc/fstab

为了保证服务器重启后挂载仍然有效,需要将挂载信息写入到/etc/fstab中。

$ echo "172.16.200.101:/  /ceph/cephfs/ ceph name=admin,secretfile=/etc/ceph/ceph-admin.secret,noatime 0 2" >>/etc/fstab

对象存储

Ceph 对象网关是一个构建在 librados 之上的对象存储接口,它为应用程序访问Ceph 存储集群提供了一个 RESTful 风格的网关 。同时支持Amazon S3风格及Openstack Swift风格的对象存储接口。从F版开始Ceph运行在Civetweb,不再需要Apache+FastCGI。造成的影响是Civetweb不支持HTTPS,想要以HTTPS的方式访问对象网关,需要在外层部署Nginx等反向代理软件。

开启对象存储
对象存储需要本地安装ceph-radosgw软件包,运行的方法也很简单,直接使用ceph-deploy rgw create ceph-mon1来开启对象网关服务。默认情况下,对象网关监听7480端口。未授权的情况下访问该端口会提示匿名用户。

$ curl http://127.0.0.1:7480/
<?xml version="1.0" encoding="UTF-8"?>
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets>
</ListAllMyBucketsResult>
修改默认端口
修改默认端口需要在ceph.conf中添加定义指明新的rados网关的端口。假设修改为8080,修改前确保没有其他程序占用8080端口$ cat << EOF >> /etc/ceph/ceph.conf
[client.rgw.ceph-mon1]
rgw_frontends = "civetweb port=8080"
EOF

#推送配置到其他节点

$ ceph-deploy --overwrite-conf config push ceph-mon2 ceph-mon3 ceph-osd4

#重启对象网关服务

$ systemctl restart ceph-radosgw@rgw.ceph-mon1.service
使用对象存储
S3风格
新建用户
在mon节点(这里是ceph-mon1节点)创建新用户ceph-rgw-testuser$ radosgw-admin user create --uid="ceph-rgw-testuser" --display-name="First RGW User"
{"user_id": "ceph-rgw-testuser","display_name": "First RGW User","email": "","suspended": 0,"max_buckets": 1000,"auid": 0,"subusers": [],"keys": [{"user": "ceph-rgw-testuser","access_key": "3TOIAIEP4JFT0SJKLWY0","secret_key": "7wZ3Kp2qAj03PAgB35JxdYMcanYJRe8XOLqMzTDZ"}],"swift_keys": [],"caps": [],"op_mask": "read, write, delete","default_placement": "","placement_tags": [],"bucket_quota": {"enabled": false,"check_on_raw": false,"max_size": -1,"max_size_kb": 0,"max_objects": -1},"user_quota": {"enabled": false,"check_on_raw": false,"max_size": -1,"max_size_kb": 0,"max_objects": -1},"temp_url_keys": [],"type": "rgw","mfa_ids": []
}
keys中的access_key及secret_key是客户端访问对象网关必不可少的,注意保存!

access_key或者secret_key中如果出现了,需要手动将其删除。防止部分客户端无法处理转义的值。

测试S3访问

1、安装python-boto包

$ yum install -y python-boto

2、创建测试文件

$ cat s3.py
#!/usr/bin/env python
import boto
import boto.s3.connectionaccess_key = '3TOIAIEP4JFT0SJKLWY0'
secret_key = '7wZ3Kp2qAj03PAgB35JxdYMcanYJRe8XOLqMzTDZ'
conn = boto.connect_s3(aws_access_key_id = access_key,aws_secret_access_key = secret_key,host = 'ceph-mon1', port = 8080,is_secure=False, calling_format = boto.s3.connection.OrdinaryCallingFormat(),)bucket = conn.create_bucket('ceph-s3-bucket')
for bucket in conn.get_all_buckets():print ("{name}".format(name = bucket.name))

3、运行测试文件

$ python s3.py
ceph-s3-bucket
swift风格
新建子用户
$ radosgw-admin subuser create --uid=ceph-rgw-testuser --subuser=ceph-rgw-testuser:swift --access=full
这里为了方便直接使用上面创建的用户ceph-rgw-testuser生成secret key
$ radosgw-admin key create --subuser=ceph-rgw-testuser:swift --key-type=swift --gen-secret
{"user_id": "ceph-rgw-testuser","display_name": "First RGW User","email": "","suspended": 0,"max_buckets": 1000,"auid": 0,"subusers": [{"id": "ceph-rgw-testuser:swift","permissions": "full-control"}],"keys": [{"user": "ceph-rgw-testuser","access_key": "3TOIAIEP4JFT0SJKLWY0","secret_key": "7wZ3Kp2qAj03PAgB35JxdYMcanYJRe8XOLqMzTDZ"}],"swift_keys": [{"user": "ceph-rgw-testuser:swift","secret_key": "ldUzAqsrzyGJohYNC57sB3oOmPqRtazniCnKCXPq"}],"caps": [],"op_mask": "read, write, delete","default_placement": "","placement_tags": [],"bucket_quota": {"enabled": false,"check_on_raw": false,"max_size": -1,"max_size_kb": 0,"max_objects": -1},"user_quota": {"enabled": false,"check_on_raw": false,"max_size": -1,"max_size_kb": 0,"max_objects": -1},"temp_url_keys": [],"type": "rgw","mfa_ids": []
}
swift_keys中的secret_key是客户端访问对象网关必不可少的,注意保存!

测试swift客户端访问
1、安装swift客户端

$ pip install --upgrade setuptools
$ pip install --upgrade python-swiftclient

2、测试访问,成功显示刚才s3客户端创建的bucket

$ swift -A http://172.16.200.101:8080/auth/1.0 -U ceph-rgw-testuser:swift -K 'ldUzAqsrzyGJohYNC57sB3oOmPqRtazniCnKCXPq' list
ceph-s3-bucket

Ceph存储基本使用相关推荐

  1. ceph存储原理_Ceph存储引擎BlueStore简析

    前文我们创建了一个单节点的Ceph集群,并且创建了2个基于BlueStore的OSD.同时,为了便于学习,这两个OSD分别基于不同的布局,也就是一个OSD是基于3中不同的存储介质(这里是模拟的,并非真 ...

  2. Kubernetes共享使用Ceph存储

    目录 简要概述 环境测试 结果验证 简要概述 Kubernetes pod 结合Ceph rbd块设备的使用,让Docker 数据存储在Ceph,重启Docker或k8s RC重新 调 度pod 不会 ...

  3. ProxmoxVE(V5.2) 之 使用外部ceph存储(luminous)

      上面左边是我的个人 微  信,如需进一步沟通,请加  微  信.  右边是我的公众号"Openstack私有云",如有兴趣,请关注. 继上篇博文<ProxmoxVE 之集 ...

  4. 自建Ceph存储与 AWS、阿里云、腾讯云的成本对比

    本文单从存储成本角度对比了自建Ceph存储和业界公有云存储的硬件成本,不包括IDC带宽成本. 统计Ceph集群的用到的主要设备为: OSD.MON.RGW服务器 .TOR交换机. 机架. 下表解释: ...

  5. Ceph 存储集群5-数据归置

    一.数据归置概览 Ceph 通过 RADOS 集群动态地存储.复制和重新均衡数据对象.很多不同用户因不同目的把对象存储在不同的存储池里,而它们都坐落于无数的 OSD 之上,所以 Ceph 的运营需要些 ...

  6. Ceph 存储集群2-配置:心跳选项、OSD选项、存储池、归置组和 CRUSH 选项

    一.心跳选项 完成基本配置后就可以部署.运行 Ceph 了.执行 ceph health 或 ceph -s 命令时,监视器会报告 Ceph 存储集群的当前状态.监视器通过让各 OSD 自己报告.并接 ...

  7. ceph存储 pg归置组处于stuck以及degraded状态解决方案

    https://blog.csdn.net/skdkjzz/article/details/42486793 由于对ceph的兴趣,我们经常自己搭建ceph集群,可能是单节点,也可能是多节点,但是经常 ...

  8. Ceph -存储部署 ;

    一 . Ceph存储系统概述 Ceph是呼声很高的开源分布式的SDS产品存储系统. 同时提供对象存储.块存储和文件系统存储 三种功能,满足不同应用需求. Ceph使用C++语言开发,遵循LGPL协议开 ...

  9. 通过Charmed Ceph 在 H3C UniServer R4950 G5 服务器上 部署独立的Ubuntu Ceph 存储集群

    摘要 本文档提供了一个独立Ceph集群的构架参考,部署及各种访问方法.本测试在4台H3C UniServer R4950 G5服务器上构建了一个独立的可扩展.可靠和容错的Ceph存储集群.可以同时对外 ...

  10. Kubernetes 集群基于 Rook 的 Ceph 存储之块设备、文件系统、对象存储

    文章目录 1.Rook & Ceph 介绍 2.环境.软件准备 3.Block 块存储 3.1.创建 CephBlockPool.StorageClass 3.2.验证并测试 4.File S ...

最新文章

  1. mysql主键约束和唯一性约束
  2. 使用Redisson优雅关闭订单
  3. html点击按钮删除session,Asp.net中安全退出时清空Session或Cookie的实例代码
  4. 中国第三代半导体行业应用动态与十四五发展格局展望报告2022版
  5. 信息学奥赛一本通(1201:菲波那契数列)
  6. android 内存检测开源库 翻译,开源 | 哈佛大学NLP组开源神经机器翻译工具包OpenNMT:已达到生产可用水平...
  7. Winform开发框架之终极应用 - 伍华聪 - 博客园
  8. linux logo程序设计,Android开机LOGO的修改
  9. Mysql语句字符串拼接
  10. PyTorch 激励函数
  11. openv Mat 之 forEach 操作
  12. 总体参数的假设检验 R
  13. TesterHome android app 编写历程(四)
  14. python财务预算分析_财码Python管理会计小实验—滚动预算vs定期预算
  15. 卟啉试剂cas40904-90-3/四-(2-吡啶基)卟啉/TPyP(2);氯乙酰基氧基(CLP1-5);锌卟啉-富勒烯配合物(p-OCH3)ZnP-C60]
  16. Linux中环境变量的设置——setenv/export
  17. WebGL简易教程——目录
  18. 三、全国计算机三级数据库考试——操作题(1—5套)
  19. NGINX-SESSION粘滞
  20. Python学习:安装pycharm教程(Python、pycharm安装包,永久免费使用)

热门文章

  1. android开发游记:meterial design 使用circularReveal仿哔哩哔哩(bilibili)搜索框动画
  2. 开启android设备的闪光灯作为手电筒
  3. 面向对象的基础-抽象
  4. python dataframe函数添加行名称_Python pandas.DataFrame.to_records函数方法的使用
  5. 你问西湖水用计算机弹,有一首歌女声唱的歌词是西湖水,谁的美
  6. 泰勒公式(狗3定理-张宇)【结合例题】
  7. Scrapy应对反爬虫策略
  8. Eclipse中使用真机进行USB调试android程序
  9. Hyper-V支持加密狗的方法
  10. Blossom算法,开花算法简单理解