【Ceph】Ceph 分布式文件存储

关于存储


存储发展史

DAS:Direct Attached Storage,直连存储,磁盘阵列作为服务器存储的一部分,可扩展性有限、无法多主机实现共享;

NAS:Net Attached Storage,网络附加存储,通过网络映射存储目录到目标主机,通过IP协议实现互相访问,多台主机可以同时共享同一个存储,但是性能和可靠性一般;

SAN:Storage Area Net,存储区域网络,通过 TCP/IP 协议 和 FC 光纤协议 连接到存储服务器,性能非常好、可扩展性强,但是成本特别高;

Object Storage:对象存储,通过网络使用API访问一个无限扩展的分布式存储系统、兼容于S3风格、原生PUT/GET等协议类型,可以无限使用存储空间,通过PUT/GET无限上传和下载。可扩展性极强、使用简单,但是只使用于静态不可编辑文件,无法为服务器提供块级别存储;

存储的三种表现形式

块存储:磁盘阵列、硬盘,主要将裸磁盘空间映射给主机用,主机之间无法共享数据;

文件共享存储:FTP、NFS服务器,挂载存储到目录,造价低,可共享文件,读写、传输速度慢,稳定性一般;

对象存储:通过API向存储系统中上传PUT和下载GET文件,适合更新变动较少的数据(图片、视频)

Ceph


官方文档(有中文版本)

http://docs.ceph.org.cn/

简介

1、概念

Ceph是一个统一存储,能够将 三种存储需求统一汇总到一个存储系统中,并提供分布式、横向扩展,高度可靠性的存储系统;

2、发展

RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储,同时为Kubernets有状态化业务提供了存储机制的实现。

3、架构

Ceph分布式集群建立在RADOS算法之上;

两个重要组成:Ceph Monitors(监视器) 和 Ceph OSDs(守护进程);

Ceph Monitors 负责集群的协调于指挥工作,Ceph OSDs(Object Storage Daemon)负责数据存储;

4、集群状态

Monitor Maps:集群的节点状态

OSD Maps:集群的数据存储节点的状态

PGs Maps:OSD的分布式方式

Crush Maps:资源池pool在存储中的映射路径方式,即数据的分布方式

MDS Maps:CephFS依赖的MDS管理组件

5、ceph 的存储

(1)一个文件在存储前会被切割为多个 object,每个 object 会由 innode 和 object 编号 组成 oid(ino + ono);

(2)对 oid 进行 hash并取模后,获得 pgid;

hash(oid) & mask-> pgid
mask = PG总数m(m为2的整数幂)-1

(3)Ceph通过CRUSH算法,将pgid进行运算,找到当前集群最适合存储PG的OSD节点,如osd1和osd2(假设为2个副本),最终 PG 的数据写入 OSD 节点;

CRUSH(pgid)->(osd1,osd2,osd3) 

OSD 在扁平的命名空间内把所有数据存储为对象,对象包含一个标识符、二进制数据、和由名字/值对组成的元数据,

优点

1、高性能:CRUSH算法,均衡分布数据,并行度高;有副本机制,支持容灾;可扩展上千存储节点,达到TB到PB级;

2、高可用:副本数与故障域灵活、支持多种故障场景自动修复;

3、高扩展性:去中心化、扩展灵活;

4、特性丰富:

  • 支持三种存储接口:块存储、文件存储、对象存储;
  • 可自定义存储接口与多语言驱动;

核心组件

参考:https://www.cnblogs.com/freeweb/p/13542285.html

  • Ceph监视器(ceph-mon):monitor,维护集群状态的映射,包括监视器映射,管理器映射,OSD映射,MDS映射和CRUSH映射,这些映射是ceph守护程序相互协调所需的关键状态;客户端到ceph存储的身份验证;实现高可用需要3个或以上的ceph-mon服务。

  • Ceph管理器(ceph-mgr):manager,mgr 的守护进程负责跟踪运行时指标和ceph集群当前的状态,包括存储利用率,当前性能指标和系统负载等;mgr 还托管一些python模块,以实现基于web的ceph仪表盘和rest api,实现高可用至少需要2个ceph-mgr进程,通常ceph-mon和ceph-mgr个数相同,1个ceph-mon同节点会伴随1个ceph-mgr守护进程。

  • Ceph对象存储(ceph-osd): object storage device, OSD 是对象存储守护程序,是用来存储数据的核心组件,实现数据存储、数据复制和恢复、数据的重新平衡,并会检查其他 OSD 守护程序的心跳来向ceph-mon和ceph-mgr提供一些监控信息, 需要3个ceph-osd才能实现冗余和高可用性,部署时 ceph-osd 会和 ceph-mon 分开节点部署.。

  • Ceph元数据服务(ceph-mds):Metadata Server,Ceph MDS为ceph文件系统存储元数据,注意Ceph块设备和对象存储不用mds存储元数据,Ceph MDS允许POSIX文件系统用户执行基本命令,而不会将压力都集中到Ceph OSD集群上,通常mds可以选择部署至少2个节点,可以和其他组件一起也可以分开

Object:Ceph 最底层的存储单元,每个 Object 包含 元数据 和 原始数据;

PG(placement group):逻辑概念,一组对象的集合,类似数据库的索引,一个PG包含多个 OSD,PG 层为了更好的分配数据和定位数据;

RADOS:用户实现数据分配、Failover等集群操作;

Libradio:Rados 的使用库,RADOS 上层的 RBD、RGW和CephFS都通过librados访问,支持多种语言;

CRUSH:数据分布算法,类似一致性哈希;

RBD、RGW、CephFS:Ceph对外提供的 块服务、对象服务、文件系统服务;

存储步骤

1、client 创建cluster handler

2、 读取配置文件

3、连接monitor,获取集群map信息

4、client 读写 io 根据crushmap 算法请求对应的主osd数据节点

5、主osd数据节点同时写入另外两个副本节点数据

6、等待主节点以及另外两个副本节点写完数据状态

7、主节点及副本节点写入状态都成功后,返回给client,io写入完成

IO 算法

1、首先文件被切分为多个Objects并以oid标记;

2、引入PG逻辑概念(为了防止oid存储时混乱不好搜索),并用crush算法生成pgid,把oid均匀分布给OSD中存储

3、大致时利用求余数的概念,使得可以分配均匀

块存储、文件存储、对象存储

https://www.cnblogs.com/hukey/p/8323853.html

安装与部署


https://www.cnblogs.com/freeweb/p/13542285.html

参考 https://docs.ceph.com/en/latest/install/manual-deployment/

ceph-mon,ceph-mgr,ceph-mds都搭建在node1上,node2和node3上搭建ceph-ods,每个机器1个ods

所有节点都配置好主机名以及hosts

所有节点的防火墙都要开放必要端口或者禁用防火墙,保证端口可以访问到;尽量关闭selinux

保证所有节点的时间是同步的,可以使用ntp/chrony进行时间同步

需要安装python3

1、每个节点

yum install yum-plugin-priorities
cat /etc/yum/pluginconf.d/priorities.conf # 确定 enable 为 1



rpm --import 'https://download.ceph.com/keys/release.asc'
yum install epel-release
yum install snappy leveldb gdisk gperftools-libs

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

[ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.ustc.edu.cn/ceph/rpm-15.2.4/el7/$basearch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://mirrors.ustc.edu.cn/ceph/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.ustc.edu.cn/ceph/rpm-15.2.4/el7/noarch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://mirrors.ustc.edu.cn/ceph/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.ustc.edu.cn/ceph/rpm-15.2.4/el7/SRPMS
enabled=0
priority=2
gpgcheck=1
gpgkey=https://mirrors.ustc.edu.cn/ceph/keys/release.asc
# 保存 

yum install ceph
pip3 install pecan
pip3 install werkzeug

2、ceph-mon

# 生成 fsid
uuidgen 

vim /etc/ceph/ceph.conf

[global]
        fsid = bdd23a75-12fc-4f25-abf5-7a739fa4e2d1
        mon initial members = node1 # 监控的主机名列表,多个用逗号隔开
        mon host = 192.168.3.237:6789 # 监控的节点 ip:port ,多个用逗号隔开,port 默认 6789
        public network = 192.168.0.0/20 # 开放客户端访问的网络段
        auth cluster required = cephx
        auth service required = cephx
        auth client required = cephx
        osd journal size = 1024 
        osd pool default size = 2 # osd 会复制多少份
        osd pool default min size = 1
        osd pool default pg num = 333 # place group 数量,类似于块
        osd pool default pgp num = 333
        osd crush chooseleaf type = 1
        mon_allow_pool_delete = true
# 为集群创建1个密钥环,作为监视器密钥 注意其中的点.不要丢
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
# 生成管理员密钥环 创建admin用户 也是第一个客户端用户
ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
# 生成bootstrap密钥环和用户
ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
# 然后将刚才生成的密钥追加到ceph.mon.keyring
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
# 修改ceph.mon.keyring的权限为ceph ceph用户安装时已经自动创建
chown ceph:ceph /tmp/ceph.mon.keyring
monmaptool --create --add node1 192.168.3.237 --fsid bdd23a75-12fc-4f25-abf5-7a739fa4e2d1 /tmp/monmap
mkdir /var/lib/ceph/mon/ceph-node1
ceph-mon --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
chown -R ceph:ceph /var/lib/ceph/mon/ceph-node1/
# 服务名为:ceph-mon@主机名
systemctl start ceph-mon@node1
# 查看服务状态
systemctl status ceph-mon@node1

ceph -s
ceph mon enable-msgr2

3、ceph-mgr

# 创建mgr密钥目录, 命名为: 集群名-主机名
mkdir /var/lib/ceph/mgr/ceph-node1
# 创建mgr身份验证密钥 注意里面的mgr.node1,node1为主机名
ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-node1/keyring

ceph-mgr -i node1

4、ceph-OSD

scp /var/lib/ceph/bootstrap-osd/ceph.keyring node2:/var/lib/ceph/bootstrap-osd/
scp /var/lib/ceph/bootstrap-osd/ceph.keyring node3:/var/lib/ceph/bootstrap-osd/

# 第一种方法
ceph-volume lvm create --data /dev/sdb1

# 第二种方法
# 准备设备
ceph-volume lvm prepare --data /dev/sdb1
# 查看osd卷列表 注意这个只能查看当前机器本地的osd卷 会得到刚创建的osd id和osd fsid这两个参数,下面要用到
ceph-volume lvm list
# 激活设备  数字0为上面看到的的osd id,然后是osd fsid
ceph-volume lvm activate 0 d57f965e-5be2-4778-8bbf-f6fd74afe451

cat /var/lib/ceph/osd/ceph-{osd id}/fsid

5、ceph-mds

# 目录名同样是: 集群名-主机名
mkdir /var/lib/ceph/mds/ceph-node1
# 然后创建mds 密钥环到刚建的目录中, 注意mds.node1同样写主机名
ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-node1/keyring --gen-key -n mds.node1
# 最后导入密钥环  设置访问权限 同样注意主机名
ceph auth add mds.node1 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-node1/keyring

vim /etc/ceph/ceph.conf
[mds.node1]
    host = node1

# -i指定mds节点主机名, -m指定ceph-mon的主机名:端口
ceph-mds --cluster ceph -i node1 -m node1:6789

6、创建存储池以及ceph文件系统

# 创建名字为cephfs_data的数据池 pg大小为128
ceph osd pool create cephfs_data 128
# 创建名字为cephfs_metadata的存储池 pg大小为64
ceph osd pool create cephfs_metadata 64

# ceph fs new <fs名称> <元数据池> <数据池>
ceph fs new cephfs cephfs_metadata cephfs_data

ceph fs ls

7、

stat /sbin/mount.ceph

mkdir /mnt/mycephfs
mount -t ceph :/ /mnt/mycephfs/ -o name=admin
df -h

安装与部署(cephadm)

版本:pacific

1、配置 阿里云的 yum 源

yum repolist

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all
yum makecache
yum repolist

2、配置主机名和hosts解析

hostnamectl set-hostname k8s-91
hostnamectl set-hostname k8s-93
hostnamectl set-hostname k8s-94

cat >> /etc/hosts <<EOF
192.168.10.106 k8s-91
192.168.10.108 k8s-93
192.168.10.109 k8s-94
EOF

3、关闭防火墙和selinux

systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sestatus

4、同步时间

yum install -y chrony
systemctl enable --now chronyd

5、安装 python3

mkdir -p /usr/software
cd /usr/software
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.11-Linux-x86_64.sh


# bash命令执行安装脚本
bash Anaconda3-2020.11-Linux-x86_64.sh

echo 'export PATH="/root/anaconda3/bin:$PATH"' >> /etc/profile
source  /etc/profile

# pip 换国内源
mkdir  ~/.pip
vim  ~/.pip/pip.conf 

# 编辑
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
# 保存

6、安装docker

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y update
yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce docker-ce-cli containerd.io
docker version

mkdir -p /etc/docker
cd /etc/docker
vim daemon.json

{
    "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"],
	"insecure-registries": ["120.xxx.xx.189:5000"],
	"exec-opts": ["native.cgroupdriver=systemd"],
	"storage-driver": "overlay2",
    "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
	"log-driver": "json-file",
	"log-opts": {
		"max-size": "10m",
		"max-file": "1"
	}

}

# 保存

vim /lib/systemd/system/docker.service

# 第14行,修改
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit core=0:0

systemctl daemon-reload
systemctl restart docker
systemctl status docker
systemctl enable docker

docker info
systemctl status docker -l

# 如果启动失败
systemctl status docker.service
journalctl -xe

7、安装 cephadm

# k8s-91
mkdir /usr/local/cephadm_file
echo '199.232.68.133 raw.githubusercontent.com' >> /etc/hosts
# curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm  -o cephadm
wget https://raw.githubusercontent.com/ceph/ceph/octopus/src/cephadm/cephadm
chmod +x cephadm

ln -s $(which python) /usr/bin/python3
yum install -y epel-release
./cephadm add-repo --release octopus
./cephadm install

which cephadm

mkdir -p /etc/ceph
cephadm bootstrap --mon-ip 192.168.10.106

8、引导新的群集

cephadm bootstrap --mon-ip 192.168.10.106
Verifying podman|docker is present...
Verifying lvm2 is present...
Verifying time synchronization is in place...
Unit chronyd.service is enabled and running
Repeating the final host check...
podman|docker (/usr/bin/docker) is present
systemctl is present
lvcreate is present
Unit chronyd.service is enabled and running
Host looks OK
Cluster fsid: 2d8e356e-ae50-11eb-94b1-20040ff15cfc
Verifying IP 192.168.10.106 port 3300 ...
Verifying IP 192.168.10.106 port 6789 ...
Mon IP 192.168.10.106 is in CIDR network 192.168.10.0/24
Pulling container image docker.io/ceph/ceph:v15...
Extracting ceph user uid/gid from container image...
Creating initial keys...
Creating initial monmap...
Creating mon...
Waiting for mon to start...
Waiting for mon...
mon is available
Assimilating anything we can from ceph.conf...
Generating new minimal ceph.conf...
Restarting the monitor...
Setting mon public_network...
Creating mgr...
Verifying port 9283 ...
Wrote keyring to /etc/ceph/ceph.client.admin.keyring
Wrote config to /etc/ceph/ceph.conf
Waiting for mgr to start...
Waiting for mgr...
mgr not available, waiting (1/10)...
mgr not available, waiting (2/10)...
mgr not available, waiting (3/10)...
mgr not available, waiting (4/10)...
mgr not available, waiting (5/10)...
mgr not available, waiting (6/10)...
mgr is available
Enabling cephadm module...
Waiting for the mgr to restart...
Waiting for Mgr epoch 5...
Mgr epoch 5 is available
Setting orchestrator backend to cephadm...
Generating ssh key...
Wrote public SSH key to to /etc/ceph/ceph.pub
Adding key to root@localhost's authorized_keys...
Adding host k8s-91...
Deploying mon service with default placement...
Deploying mgr service with default placement...
Deploying crash service with default placement...
Enabling mgr prometheus module...
Deploying prometheus service with default placement...
Deploying grafana service with default placement...
Deploying node-exporter service with default placement...
Deploying alertmanager service with default placement...
Enabling the dashboard module...
Waiting for the mgr to restart...
Waiting for Mgr epoch 13...
Mgr epoch 13 is available
Generating a dashboard self-signed certificate...
Creating initial admin user...
Fetching dashboard port number...
Ceph Dashboard is now available at:

	     URL: https://k8s-91:8443/
	    User: admin
	Password: ht97230n5z

You can access the Ceph CLI with:

	sudo /usr/sbin/cephadm shell --fsid 2d8e356e-ae50-11eb-94b1-20040ff15cfc -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

Please consider enabling telemetry to help improve Ceph:

	ceph telemetry on

For more information see:

	https://docs.ceph.com/docs/master/mgr/telemetry/

Bootstrap complete.

1、在本地主机上为新集群创建monitor 和 manager daemon守护程序。

2、为Ceph集群生成一个新的SSH密钥,并将其添加到root用户的/root/.ssh/authorized_keys文件中。

3、将与新群集进行通信所需的最小配置文件保存到/etc/ceph/ceph.conf。

4、向/etc/ceph/ceph.client.admin.keyring写入client.admin管理(特权!)secret key的副本。

5、将public key的副本写入/etc/ceph/ceph.pub

9、查看日志 与 配置文件

cd /var/log/ceph/
tail -f cephadm.log

ll /etc/ceph/
cat /etc/ceph/ceph.conf 

10、访问 dashboard

# 访问 ceph dashboard
https://外网IP:8443

docker images
docker ps -a

11、通过 cephadm shell 使用 CEPH命令

由于 ceph 各个组件是通过容器的方式安装与部署,因此在宿主机器用 ceph 命令会提示命令不存在,只能通过 cephadm shell 命令,打开一个客户端(实际上是进入的 ceph 容器),在客户端中才能正常使用 ceph 命令 查看集群状态

# cephadm shell命令在安装了所有Ceph包的容器中启动bash shell
# 也就是进入 ceph 容器
cephadm shell
ceph -v
ceph -s

12、在宿主机使用 ceph 命令

安装 ceph-common 包 使本地主机支持ceph基本命令

cp /etc/yum.repos.d/ceph.repo{,.bak}

cat > ceph.repo << 'EOF'
[Ceph]
name=Ceph $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el7/$basearch
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc

[Ceph-noarch]
name=Ceph noarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el8/noarch
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc

[Ceph-source]
name=Ceph SRPMS
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el7/SRPMS
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
EOF


cephadm add-repo --release octopus
cephadm install ceph-common

13、增加节点

# master
ssh-copy-id -f -i /etc/ceph/ceph.pub root@k8s-93
ssh-copy-id -f -i /etc/ceph/ceph.pub root@k8s-94
# 执行后显示如下
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/etc/ceph/ceph.pub"
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'root@k8s-93'"
and check to make sure that only the key(s) you wanted were added.


ceph orch host add k8s-93
# Added host 'k8s-93'

ceph orch host add k8s-94
# Added host 'k8s-94'

ceph orch host ls
# HOST    ADDR    LABELS  STATUS  
# k8s-91  k8s-91                  
# k8s-93  k8s-93                  
# k8s-94  k8s-94

# 查看各个组件的运行状态
ceph orch ps 
# 查看某组件的运行状态
ceph orch ps --daemon-type mds 

# 查看ceph集群状态
ceph -s

#  cluster:
#    id:     2d8e356e-ae50-11eb-94b1-20040ff15cfc
#    health: HEALTH_WARN
#            mon k8s-94 is low on available space
#            OSD count 0 < osd_pool_default_size 3
 
#  services:
#    mon: 3 daemons, quorum k8s-91,k8s-94,k8s-93 (age 18m)
#    mgr: k8s-91.ezwurg(active, since 20h), standbys: k8s-93.ttugmc
#    osd: 0 osds: 0 up, 0 in
 
#  data:
#    pools:   0 pools, 0 pgs
#    objects: 0 objects, 0 B
#    usage:   0 B used, 0 B / 0 B avail
#    pgs:     
 


# 另外两个机器
docker ps

# master
ceph -s

cephadm 安装资料:https://www.bilibili.com/video/BV1Y64y1U7RS?from=search&seid=17011257242305015356

重要资料:https://blog.csdn.net/networken/article/details/106870859

部署OSD

1、查看所有群集主机上的存储设备清单

ceph orch device ls

可用的存储设备要求:

设备必须没有分区。
设备不得具有任何LVM状态。
不得安装设备。
该设备不得包含文件系统。
该设备不得包含Ceph BlueStore OSD。
设备必须大于5 GB。

2、多种部署 OSD 的方法

# 使用任何可用和未使用的存储设备
ceph orch apply osd --all-available-devices

# 从特定主机上的特定设备创建OSD
ceph orch daemon add osd node1:/dev/sdb

# 使用OSD服务规范基于设备的属性描述要使用的设备
ceph orch apply osd -i spec.yml

安装与部署(华为云 ansible)

https://support.huaweicloud.com/dpmg-kunpengsdss/kunpengcephansible_04_0001.html

Tips


SSD 相关

SSD 用于对象存储太昂贵了,但是把 OSD 的日志存到 SSD 、把对象数据存储到独立的硬盘可以明显提升性能。 osd journal 选项的默认值是 /var/lib/ceph/osd/ c l u s t e r − cluster- clusterid/journal ,你可以把它挂载到一个 SSD 或 SSD 分区,这样它就不再是和对象数据一样存储在同一个硬盘上的文件了。

从 CephFS 文件内容里分离出元数据。 Ceph 提供了默认的 metadata 存储池来存储 CephFS 元数据,所以你不需要给 CephFS 元数据创建存储池,但是可以给它创建一个仅指向某主机 SSD 的 CRUSH 运行图。

OS 相关

OSD 数量较多(如 20 个以上)的主机会派生出大量线程,尤其是在恢复和重均衡期间。很多 Linux 内核默认的最大线程数较小(如 32k 个),如果您遇到了这类问题,可以把 kernel.pid_max 值调高些。理论最大值是 4194303 。例如把下列这行加入 /etc/sysctl.conf 文件:

kernel.pid_max = 4194303

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值