本文并非关于Ceph的系统介绍,没有对Ceph原理等知识的介绍,基本都是操作命令。内容参考自Ceph官方文档,以及《Ceph Cookbook》。

本文内容在CentOS7上进行过几次成功的部署,没坑,所部署的Ceph版本为nautilus,部署工具为ceph-deploy

0 准备工作

0.1 安装ceph-deploy

以下方法二选一。

0.1.1 直接安装ceph-deploy

可以到国内的源中查找rpm包直接安装,比如阿里云:

rpm -Uvh https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/ceph-deploy-2.0.1-0.noarch.rpm
yum install -y epel-release python-setuptools

0.1.2 基于repo来安装

# 命令来自官方文档
sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*

创建一个软件库配置文件。

sudo vim /etc/yum.repos.d/ceph.repo

内容如下:

[ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

ceph-deploy是在noarch下的,所以先添加这个即可。然后就可以安装ceph-deploy了。

sudo yum install ceph-deploy python-setuptools

0.2 Ceph节点配置

0.2.1 安装chrony

sudo yum install -y chronymv /etc/chrony.conf /etc/chrony.conf.bakcat > /etc/chrony.conf <<EOF
server ntp.aliyun.com iburst
stratumweight 0
driftfile /var/lib/chrony/drift
rtcsync
makestep 10 3
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
keyfile /etc/chrony.keys
commandkey 1
generatecommandkey
logchange 0.5
logdir /var/log/chrony
EOFsystemctl enable chronyd
systemctl restart chronyd

0.2.2 创建Ceph用户(可选)

在各 Ceph 节点创建新用户。

ssh user@ceph-server
sudo useradd -d /home/{username} -m {username}
sudo passwd {username}

确保各 Ceph 节点上新创建的用户都有 sudo 权限。

echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{username}
sudo chmod 0440 /etc/sudoers.d/{username}

0.2.3 SSH配置

安装SSH服务器:

sudo yum install openssh-server

配置ceph-deploy到ceph各节点的SSH免密登录:

# 生成密钥对
ssh-kengen# 配置免密登录
ssh-copy-id {username}@node1
ssh-copy-id {username}@node2
ssh-copy-id {username}@node3

如果使用非root用户进行部署,那么推荐修改~/.ssh/config文件,

Host node1Hostname node1User {username}
Host node2Hostname node2User {username}
Host node3Hostname node3User {username}

0.2.4 开放端口

MON默认使用33006789端口,OSD默认使用6800-7300端口,RGW使用7480端口。

sudo firewall-cmd --zone=public --add-port=3300/tcp --permanent
sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
sudo firewall-cmd --zone=public --add-port=7480/tcp --permanent
sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent

0.2.5 关闭SELINUX

sudo setenforce 0

要使 SELinux 配置永久生效(如果它的确是问题根源),需修改其配置文件/etc/selinux/config

1 部署Ceph存储集群

先在管理节点上创建一个目录(非root用户可以选择其他目录),用于保存 ceph-deploy 生成的配置文件和密钥对。

mkdir /etc/ceph
cd /etc/ceph

ceph-deploy 会把有些文件输出到当前目录,最好在此目录下执行 ceph-deploy 。

1.0 重新部署

# 卸载Ceph
ceph-deploy purge {ceph-node} [{ceph-node}]
cd
# 清掉数据
ceph-deploy purgedata {ceph-node} [{ceph-node}]
# 删除key
ceph-deploy forgetkeys
# 删除所有ceph-deploy产生的文件
rm ceph.*# 在有OSD的节点删除ceph创建的LVM
lvremove -f $(lvdisplay | grep "/dev/ceph" | awk '{print $3}')
vgremove -f $(vgscan | grep ceph | awk '{print $4}' | tr -d \")

1.1 创建集群

1.1.1 初始化一个集群

在管理节点上,进入刚创建的放置配置文件的目录,用 ceph-deploy 执行如下步骤。

ceph-deploy new {initial-monitor-node(s)}
# 例如(多个节点用空格隔开):
# ceph-deploy new node1

在当前目录下用 lscat 检查 ceph-deploy 的输出,应该有一个 Ceph 配置文件、一个 monitor 密钥环和一个日志文件。

1.1.2 网络配置

如果有多个网卡,需要在[global]中设置public network

public network = {ip-address}/{prefix}
cluster network = {ip-address}/{prefix}
# 例如
# public network = 10.1.2.0/24
# cluster network = 10.2.2.0/24

1.1.3 安装Ceph包:

# 使用阿里云的源
export CEPH_DEPLOY_REPO_URL=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7
export CEPH_DEPLOY_GPG_URL=https://mirrors.aliyun.com/ceph/keys/release.asc
# 安装
ceph-deploy install {ceph-node} [{ceph-node} ...]
# 例如:
# ceph-deploy install admin-node node1 node2 node3

ceph-deploy 将在各节点安装 Ceph 。

1.1.4 部署初始MON节点

配置初始 monitor(s)、并收集所有密钥:

ceph-deploy mon create-initial

完成上述操作后,当前目录里应该会出现这些密钥环:

ceph.client.admin.keyring
ceph.bootstrap-mgr.keyring
ceph.bootstrap-osd.keyring
ceph.bootstrap-mds.keyring
ceph.bootstrap-rgw.keyring

1.1.5 复制配置文件到其他节点

复制配置文件(ceph.conf)和admin的key(ceph.client.admin.keyring)到其他节点,这样在相应的节点上就可以无需指定MON地址和keyring来执行ceph命令了。

ceph-deploy admin {ceph-node(s)}
# 例如
# ceph-deploy admin node1 node2 node3

1.1.6 部署一个manager daemon

luminous+的版本需执行:

ceph-deploy mgr create node1

1.1.7 添加OSD

添加前确保要使用的磁盘设备上没有重要数据,并且没有LVM虚拟卷和卷组。

ceph-deploy osd create --data {data-disk}
# 例如
# ceph-deploy osd create --data /dev/sdb node1

nautilus版本默认使用bluestore,早期版本一般使用filestore。

两种不同的文件系统在使用SSD做journal的时候是不同的方式,具体可以参考:如何ssd作为ceph-osd的日志盘使用。

1.1.8 查看健康状况

ceph -s
ceph -w # 可以持续查看健康变化情况

1.2 扩展集群

1.2.1 添加MON节点

一个集群中至少要有一个MON节点和一个MGR节点。

多个MON节点基于Paxos投票机制工作,因此最好有2N+1个MON节点,以避免单点故障。

ceph-deploy mon add {ceph-node}
# 例如:
# ceph-deploy mon add node2

1.2.2 添加MGR节点

多个Manager节点以active/standby方式工作,若主节点宕机,备节点会接管。

ceph-deploy mgr create node2 node3

如果要添加控制面板功能:

# 安装 ceph-mgr-dashboard。注意,每个mgr节点都需要安装
yum install ceph-mgr-dashboard -y
# 启用 dashboard
ceph mgr module enable dashboard
# 创建自签名证书
ceph dashboard create-self-signed-cert
# 创建用户
ceph dashboard ac-user-create <user> <password> administrator
# 防火墙开放8443端口
firewall-cmd --zone=public --add-port=8443/tcp --permanent
firewall-cmd --reload

如果一段时间后发现dashboard无法访问,这样处理(暂时还没找到更好办法)是有效果的:

ceph mgr module disable dashboard
ceph config-key del mgr/dashboard/$name/server_addr
ceph config-key del mgr/dashboard/$name/server_port
ceph config-key del mgr/dashboard/server_addr
ceph config-key del mgr/dashboard/server_port
ceph mgr module enable dashboard
systemctl restart ceph-mgr.target

1.2.3 添加RGW节点

Ceph对象存储网关的使用需要RGW节点。

ceph-deploy rgw create {gateway-node}

默认情况下,RGW监听7480端口,其他端口可以这样配置:

[client]
rgw frontends = civetweb port=80

1.3 存储/读取对象数据

要在Ceph存储集群中存储对象数据,需要:

  1. 设置对象名称
  2. 指定一个pool
ceph osd map {poolname} {object-name}

Ceph客户端会取得最新的集群map,并用CRUSH算法计算出如何将对象映射到placement group,然后计算出该placement group在哪个OSD上。

一些命令示例

# 创建一个对象(文件)
echo {Test-data} > /tmp/testfile.txt# 创建存储池
ceph osd pool create mypool 512# 存储文件
# rados put {object-name} {file-path} --pool={pool-name}
rados put testfile /tmp/testfile.txt --pool=mypool# 查看对象文件
rados -p mytest ls# 下载对象文件
# rados get {object-name} {file-path} --pool={pool-name}
rados get testfile /tmp/testfile1.txt --pool=mypool# 查看对象文件位置
# ceph osd map {pool-name} {object-name}
ceph osd map mypool testfile# 删除对象
rados rm testfile --pool=mypool# 删除存储池
ceph osd pool rm mypool

2 块设备服务

2.1 基本操作

0.创建块设备存储池

# 在admin节点,使用`ceph`命令来创建一个pool(`rbd`)
ceph osd pool create rbd 512
# 在admin节点,使用`rbd`命令来初始化pool
rbd pool init rbd

具体pg_num应该如何确定,可以参考这个计算网站。

1.在ceph-client节点上,创建一个块设备镜像。

# rbd create foo --size 4096 --image-feature layering [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] [-p {pool-name}]
rbd create rbd1 --size 4096 --image-feature layering -m 192.168.1.102 -k /etc/ceph/ceph.client.admin.keyring -p rbd

2.在ceph-client节点上,映射到一个块设备。

# sudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] [-p {pool-name}]
rbd map rbd0 --name client.admin -m 192.168.1.102 -k /etc/ceph/ceph.client.admin.keyring -p rbd

如果上一条命令报如下错误:

modinfo: ERROR: Module rbd not found.
modprobe: FATAL: Module rbd not found.
rbd: failed to load rbd kernel module (1)

则需升级kernel。

3.在块设备上创建文件系统。

# sudo mkfs.ext4 -m0 /dev/rbd/{pool-name}/foo
sudo mkfs.ext4 -m0 /dev/rbd/rbd/rbd0(/dev/rbd0)

4.挂载文件系统。

sudo mkdir /mnt/ceph-block-device
sudo mount /dev/rbd0 /mnt/ceph-block-device
cd /mnt/ceph-block-device

2.2 rbd命令

2.2.1 创建块设备

# 创建块设备(单位MB)
rbd create rbd0 --size 10240 --name client.rbd# 查看块设备
rbd ls --name client.rbd
rbd ls -p rbd --name client.rbd
rbd info --image rbd/rbd0

2.2.2 映射块设备

# 默认存储池是rbd,否则需要指定 -p {pool_name}
rbd map --image rbd/rbd0 --name client.rbd
rbd showmapped --name client.rbd# 挂载到文件系统
mkfs.xfs /dev/rbd0
mkdir /mnt/rbd0
mount /dev/rbd0 /mnt/rbd0# 取消映射
umount /mnt/rbd0
rbd unmap --image rbd/rbd0

挂载需要内核支持,如果在mount的时候提示没有rbd模块(具体啥错误不记得了),可以执行
modprobe rbd,然后,lsmod | grep rbd看看是否已经有该模块了。
如果依然没有,可能需要升级内核:yum update kernel(这篇文章发出来的时候,CentOS7最新的内核已经有rbd模块了)。

2.2.3 调整RBD大小

# 调整大小
rbd resize --image rbd/rbd0 --size 20480 --name client.rbd
xfs_growfs /dev/rbd0

2.2.4 快照

rbd snap create rbd/rbd0@snapshot1 --name client.rbd
# rollback时需要先unmap RBD
rbd snap rollback rbd/rbd0@snapshot1 --name client.rbd
rbd snap ls rbd/rbd0 --name client.rbd
rbd snap rm rbd/rbd0@snapshot1 --name client.rbd
# 删除所有快照
rbd snap purge rbd/rbd0 --name client.rbd

2.2.5 克隆

# 创建一个快照用于克隆
rbd snap create rbd/rbd1@snapshot_for_cloning
# 克隆前需要先保护起来,以防被删除
rbd snap protect rbd/rbd1@snapshot_for_cloning
# 克隆
rbd clone rbd/rbd1@snapshot_for_cloning rbd/rbd1_clone
# 查看信息,发现其parent属性指向快照
rbd info rbd1_clone
# 可以将父镜像合并到克隆的镜像,这样克隆的镜像就独立了
rbd flatten rbd/rbd1_clone
# 查看信息,发现parent属性清空
rbd info rbd1_clone
# 这时可以取消保护了
rbd snap unprotect rbd/rbd1@snapshot_for_cloning
# 删除快照
rbd snap rm rbd/rbd1@snapshot_for_cloning

3 CephFS文件系统

3.1 前提

配置CephFS前,需要先配置好存储集群,并且处于active + clean状态。

3.2 部署METADATA服务

在部署节点执行如下命令:

ceph-deploy mds create {ceph-node}

3.3 创建一个文件系统

ceph osd pool create cephfs_data 32
ceph osd pool create cephfs_meta 32
# ceph fs new <CephFS名称> <元数据存储池> <文件数据存储池>
ceph fs new mycephfs cephfs_meta cephfs_data

建议:存储池可以命名为..,这样上边的pool可以命名为cephfs.mycehfs.data和cephfs.mycehfs.meta。

以上两个存储池分别用来保存文件的实际数据和元数据,可以放在不同的存储介质上的,比如元数据存储池可以放在SSD上,相关操作可以参考同一个ceph集群分别创建ssd和hdd池。

3.4 挂载文件系统

3.4.1 使用内核驱动

挂载命令如下:

sudo mount -t ceph :{path-to-mounted} {mount-point} -o name={user-name}
sudo mount -t ceph :/ /mnt/mycephfs -o name=admin   # usable version

完整的命令:sudo mount -t ceph {ip-address-of-MON}:{port-number-of-MON}:{path-to-be-mounted} -o name={user-name},secret={secret-key} {mount-point}

{path-to-be-mounted}是CephFS内的路径,{mount-point}是客户端要挂载的路径,{user-name}是具备挂载CephFS权限的CephX用户。

3.4.2 使用FUSE

使用FUSE(Filesystem in User Space)来挂载CephFS:

sudo ceph-fuse /mnt/mycephfs

如果要指定挂载目录可以使用-r

sudo ceph-fuse -r {path-to-be-mounted} /mnt/mycephfs

4 对象存储

4.1 安装Ceph对象网关程序

ceph-deploy install --rgw <client-node> [<client-node> ...]

4.2 创建Ceph对象存储实例

ceph-deploy rgw create <client-node>

4.3 配置Ceph对象存储实例

1.配置端口号

[client.rgw.client-node]
rgw_frontends = "civetweb port=80"

2.重启服务

sudo systemctl restart ceph-radosgw.service

3.开放端口

sudo firewall-cmd --list-all
sudo firewall-cmd --zone=public --add-port 80/tcp --permanent
sudo firewall-cmd --reload

4.查看API

curl http://<client-node>:80

API响应如下:

<?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>

5 用户与权限

5.1 配置客户端与用户

1.在ceph-deploy执行节点执行如下命令:

ceph-deploy install client-node

2.将配置文件复制到client-node节点:

ceph-deploy config push client-node

3.一般不建议直接把client.admin复制到客户端节点,可以创建用户:

# 创建用户client.admin
ceph auth get-or-create client.rbd mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool =rbd'

4.将密钥添加到client-node节点:

ceph auth get-or-create client.rbd | ssh root@client-node tee /etc/ceph/ceph.client.rbd.keyring

5.使用密钥的时候需要指定用户名

ceph -s --name client.rbd

6 Ceph与OpenStack的集成

6.1 将OpenStack配置为Ceph客户端

1.首先配置ceph-deploy节点到OpenStack节点(os-node)的SSH免密登录。

2.在os-node上安装Ceph。

ceph-deploy install os-node

3.将ceph配置文件ceph.conf推送到os-node节点。

ceph-deploy config push os-node

4.创建Ceph存储池。

ceph osd pool create images 128
ceph osd pool create volumes 128
ceph osd pool create vms 128

5.为cinderglance创建新用户。

ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'
ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'

6.为os-node添加keyring。

ceph auth get-or-create client.glance | ssh os-node tee /etc/ceph/ceph.client.glance.keyring
ssh os-node chown glance:glance ceph.client.glance.keyring
ceph auth get-or-create client.cinder | ssh os-node tee /etc/ceph/ceph.client.cinder.keyring
ssh os-node chown cinder:cinder ceph.client.cinder.keyring

7.当从cinder挂载或卸载设备时,libvirt进程需要有访问Ceph集群的权限。

# 在ceph节点创建一个临时的密钥副本,并传至OpenStack节点
ceph auth get-key client.cinder | ssh os-node tee /etc/ceph/temp.client.cinder.key
# 在OpenStack节点创建密钥
# ① 先生成uuid
uuidgen
# ② 用输出的uuid编写密钥文件
cat > secret.xml <<EOF
<secret ephemeral='no' private='no'><uuid>{刚刚生成的uuid}</uuid><usage type='ceph'><name>client.cinder secret</name></usage>
</secret>
EOF
# ③ 定义密钥文件
virsh secret-define --file secret.xml
# ④ 设置好密钥值
virsh secret-set-value --secret {刚刚生成的uuid} --base64 $(cat temp.client.cinder.key)
virsh secret-list

6.2 配置Ceph为Glance后端存储

在OpenStack节点,编辑/etc/glance/glance-api.conf

default_store=rbd
show_image_direct_url=True
...
[glance_store]
stores=rbd
rbd_store_ceph_conf=/etc/ceph/ceph.conf
rbd_store_user=glance
rbd_store_pool=images
rbd_store_chunk_size=8

重新启动glance-api服务。

systemctl restart openstack-glance-api

测试一下:

glance image-list
# 下载cirros镜像,并上传至glance
glance image-create --name cirros_0.5 --is-public=true --disk-format=qcow2 --container-format=bare < cirros-0.5.1-x86_64-disk.imgglance image-list
# 在ceph中验证
rados -p images ls --name client.glance --keyring /etc/ceph/ceph.client.glance.keyring | grep -i id

6.3 配置Ceph为Cinder后端存储

配置/etc/cinder/cincer.conf文件。其他包括:

glance_api_version=2
rbd_pool=volumes
rbd_user=cinder
rbd_ceph_conf=/etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot=false
rbd_secret_uuid=1f4e1d20-3c7f-4809-a2dd-dd88efa36c03
rbd_max_clone_depth=5
rbd_store_chunk_size=4
rados_connect_timeout=-1
volume_driver=cinder.volume.drivers.rbd.RBDDriver

重新启动Cinder服务:

systemctl restart openstack-cinder-volume

然后测试一下配置是否生效:

cinder list
# 创建一个卷
cinder create --display-name ceph-volume01 --display-description "Cinder volume on CEPH storage" 2
# 查看cinder和rados
cinder list
rados -p volumes --name client.cinder --keyring ceph-client.cinder.keyring ls | grep -i id

6.4 挂载Ceph RBD到Nova上

编辑/etc/nova/nova.conf,找到nova.virt.libvirt.volume部分,添加以下代码行:

rbd_user=cinder
rbd_secret_uuid={secret uuid}

重新启动nova-compute:

systemctl restart openstack-nova-compute

测试一下效果:

nova list
cinder list
# 将以上两个命令查到的虚拟机id和卷id用于以下命令:
cinder volume-attach {vm-id} {volume-id}
# 查看挂载效果
cinder list

6.5 Nova基于Ceph RBD启动实例

编辑/etc/nova/nova.conf文件,在[libvirt]部分编辑如下参数:

inject_partition=-2
images_type=rbd
images_rbd_pool=vms
images_rbd_ceph_conf=/etc/ceph/ceph.conf
rbd_user=cinder
rbd_secret_uuid=da6d95af-f8ba-4beb-8d65-60a916160f88

重启nova-compute服务:

systemctl restart openstack-nova-compute

测试一下效果:

# 将QCOW格式的镜像转换为RAW格式
qemu-img convert -f qcow2 -O raw cirros-0.5.1-x86_64-disk.img cirros-0.5.1-x86_64-disk.raw
# 用RAW镜像创建Glance镜像
glance image-create --name cirros_raw_image --is-public=true --disk-format=raw --container-format=bare < cirros-0.5.1-x86_64-disk.raw
# 创建一个可引导的卷来测试从Ceph卷启动虚拟机
cinder create --image-id 8d1623ab-c3e1-4c30-a4b0-d6ca7fae9bbb --display-name cirros-ceph-boot-volume 1
# 列出Cinder卷,看是不是bootable的
cinder list
# 基于可引导的卷创建虚拟机实例
nova boot --flavor 1 --block_device_mapping vda=6525f635-85ed-4754-877a-8b556c86334c::0 --image 8d1623ab-c3e1-4c30-a4b0-d6ca7fae9bbb vm2_on_ceph
# 检查实例状态
nova list

Ceph部署、基本使用和与OpenStack的集成相关推荐

  1. Ceph部署(二)RGW搭建

    背景 Ceph RGW简介 Ceph RGW基于librados,是为应用提供RESTful类型的对象存储接口.RGW提供两种类型的接口: 1) S3:兼容Amazon S3RESTful API: ...

  2. Tungsten Fabric SDN — 与 OpenStack 的集成部署

    目录 文章目录 目录 部署架构 资源配置 软件版本 Tungsten Fabric 与 OpenStack 的集成部署 Action1. 基础环境设置 Action2. 安装软件依赖 Action3. ...

  3. 飞康FreeStor推出OpenStack Cinder集成解决方案

    10月27日至30日, OpenStack Summit在日本东京盛大召开,大会云集了来自世界各地的OpenStac云软件的开发者.使用者以及管理者.在软件定义存储解决方案领域有15年创新经验的美国飞 ...

  4. Openstack Neutron 集成 SDN控制器

    Neutron 集成SDN控制器   一.Neutron的组成元素 Neutron-server可以理解为一个专门用来接收Neutron REST API调用的服务器,然后负责将不同的REST API ...

  5. Tungsten Fabric SDN — 与 OpenStack 的集成架构

    目录 文章目录 目录 Tungsten Fabric 与 OpenStack 的集成架构 OpenStack Instance 的实例化流程 Tungsten Fabric 与 OpenStack 的 ...

  6. ceph 部署单机集群

    文章目录 ceph-deploy部署集群 ceph-deploy 部署单机 ceph-deploy 创建osd ceph osd创建资源池 ceph创建rbd块设备 ceph创建fs文件系统 本文档主 ...

  7. CEPH概述及实验(CEPH部署及群集搭建+节点扩容+数据恢复)

    前言:CEPH是一个开源的项目,它是软件定义的.同一的存储解决方案.CEPH是一个可大规模扩展.高性能并且无单点故障的分布式存储系统.从一开始它就运行在通用的商用的硬件上,具有高度的可伸缩性,容量可扩 ...

  8. Ceph部署(一)集群搭建

    背景 Ceph简介 Ceph是一个分布式存储,可以提供对象存储.块存储和文件存储,其中对象存储和块存储可以很好地和各大云平台集成.一个Ceph集群中有Monitor节点.MDS节点(可选,用于文件存储 ...

  9. ceph 部署mds文件系统

    部署mds文件系统 一.服务端操作 1.1 在管理节点执行下述命令 1.2 启用ceph文件系统 1.3 创建用户 二.客户端操作 2.1 客戶端需要有配置文件 2.2 客户端需要安装ceph软件包 ...

最新文章

  1. 2014年国内最热门的.NET开源平台
  2. 分享30个激励的非营利网站设计精美案例
  3. 【深度学习】训练集、验证集、测试集
  4. 定价相关的主要用户出口
  5. 线程安全面试题 java_Java面试题-线程安全
  6. 2018年第九届蓝桥杯 - 国赛 - C/C++大学B组 - B. 激光样式
  7. 关于IE6下CSS选择器失效的问题
  8. oracle em 删除 重建,Oracle 11g 重建EM需要删除的对象
  9. String.IsNullOrEmpty()方法以及C#中的示例
  10. 汇编指令中英文释义 ASCII码字符表
  11. 微软AI实力秀:调侃Google吹牛;免费AI课程上线
  12. android源码查找测试demo
  13. CSA发布云控制矩阵3.0版
  14. Android 引入recycleview依赖报错INFO: Configuration ‘compile‘ is obsolete and has been replaced with ‘imple
  15. 素质的冰山模型,成就动机 笔记
  16. html如何设置超大字符集,[转载]【教程】CJk超大字符集使用方法
  17. ASCII码一览表,ASCII码对照表
  18. mame4android汉化,MAME4droid
  19. dns被劫持怎么办,什么是dns劫持,有什么方法处理?
  20. 如何使用文件保险箱加密 Mac 上的启动磁盘?

热门文章

  1. “特斯拉杀手们”真正的敌人来了
  2. 基于SpringBoot大学生心理健康咨询管理系统的分析与设计
  3. 小程序引入阿里icon
  4. wordpress字体样式——css炫酷的字体样式实现
  5. 《大数据之路:阿里巴巴大数据实践》总述-读书笔记
  6. Delphi中设置定时器
  7. PHP代码的执行的过程
  8. 佛山2000坐标-国家2000坐标双向重投影工具
  9. 萤石摄像头android开发,Android 伤敌一千自损八百之萤石摄像头集成(三)
  10. GWAS丨GEMMA软件下载和安装