Ceph集群存储案例

news2024/12/27 13:32:11

Ceph是一种可靠的、可扩展的、统一的、分布式的存储系统。Ceph高度可靠、易于管理且免费。Ceph提供了非凡的可扩展性——数以千计的客户端访问PB到EB的数据。Ceph存储集群相互通信以动态复制和重新分配数据。目前众多云厂商都在使用Ceph,应用广泛。如:华为、阿里、腾讯等等。目前火热的云技术OpenStack、Kubernetes都支持后端整合Ceph,从而提高数据的可用性、扩展性、容错等能力。

本案例主要介绍使用3台云主机搭建Ceph分布式集群存储系统和使用Ceph分布式集群存储系统。

1. 规划节点

表1 规划节点

IP地址主机名节点
192.168.169.3ceph-node1Monitor/OSD
192.168.169.4ceph-node2OSD
192.168.169.5ceph-node3OSD

2. 基础准备

在OpenStack平台中,使用提供的CentOS7.9镜像创建3个云主机,flavor使用2vCPU/4G/40G硬盘+临时磁盘20G类型。创建完成后,修改三个节点的主机名为ceph-node1、ceph-node2和ceph-node3,命令如下:

[root@ceph-node1 ~]# hostnamectl set-hostname ceph-node1
[root@ceph-node1 ~]# hostnamectl 
 Static hostname: ceph-node1
         Icon name: computer-vm
           Chassis: vm
        Machine ID: cc2c86fe566741e6a2ff6d399c5d5daa
           Boot ID: 677af9a2cd3046b7958bbb268342ad69
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1160.el7.x86_64
      Architecture: x86-64

这3台虚拟机各需要有20 GB的空闲硬盘。可以使用lsblk命令进行验证。

[root@ceph-node1 ~]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  40G  0 disk 
└─vda1 253:1    0  40G  0 part /
vdb    253:16   0  20G  0 disk

修改3台虚拟机的/etc/hosts文件,修改主机名地址映射关系。

192.168.169.3  ceph-node1
192.168.169.4  ceph-node2
192.168.169.5  ceph-node3

在所有Ceph节点上修改Yum源,均使用本地源。(软件包使用提供的ceph-14.2.22.tar.gz)

三个节点下载ceph-14.2.22.tar.gz软件包至/root目录下,并解压缩到/opt目录下,命令如下:(三个节点都要执行)

[root@ceph-node1 ~]# curl -O http://mirrors.douxuedu.com/competition/ceph-14.2.22.tar.gz
[root@ceph-node1 ~]# tar -zxvf ceph-14.2.22.tar.gz -C /opt

解压完成,然后配置repo文件,首先将/etc/yum.repos.d下面的所有repo文件移走,并创建local.repo文件,命令如下:(三个节点都要执行)

[root@ceph-node1 ~]# mv /etc/yum.repos.d/* /media/ 
[root@ceph-node1 ~]# vi /etc/yum.repos.d/ceph.repo 
[ceph]
name=ceph
baseurl=file:///opt/ceph
gpgcheck=0
enabled=1
[centos]
name=centps
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas/iaas-repo
gpgcheck=0
enabled=1

要部署Ceph集群,需要使用ceph-deploy工具在3台虚拟机上安装和配置Ceph。ceph-deploy是Ceph软件定义存储系统的一部分,用来方便地配置和管理Ceph存储集群。

1. 创建Ceph集群

首先,在ceph-node1上安装Ceph,并配置它为Ceph monitor和OSD节点。

(1)在ceph-node1上安装ceph-deploy。

[root@ceph-node1 ~]# yum install ceph-deploy -y python-setuptools

(2)通过在cep-node1上执行以下命令,用ceph-deploy创建一个Ceph集群。

[root@ceph-node1 ~]# mkdir /etc/ceph
[root@ceph-node1 ~]# cd /etc/ceph
[root@ceph-node1 ceph]# ceph-deploy new ceph-node1

(3)ceph-deploy的new子命令能够部署一个默认名称为Ceph的新集群,并且它能生成集群配置文件和密钥文件。列出当前的工作目录,可以查看到ceph.conf和ceph.mon.keying文件。

[root@ceph-node1 ceph]# ll
total 12
-rw-r--r-- 1 root root  229 Sep 20 16:20 ceph.conf
-rw-r--r-- 1 root root 2960 Sep 20 16:20 ceph-deploy-ceph.log
-rw------- 1 root root   73 Sep 20 16:20 ceph.mon.keyring

(4)在ceph-node1上执行以下命令,使用ceph-deploy工具在所有节点上安装Ceph二进制软件包。命令如下:(注意需要加上–no-adjust-repos参数,不然系统会默认去安装epel-release源,此处全使用本地安装)

[root@ceph-node1 ceph]# ceph-deploy install ceph-node1 ceph-node2 ceph-node3 --no-adjust-repos
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
...
...
[ceph-node3][INFO  ] Running command: ceph --version
[ceph-node3][DEBUG ] ceph version 14.2.22 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)

(5)ceph-deploy工具包首先会安装Ceph组件所有的依赖包。命令成功完成后,检查所有节点上Ceph的版本信息。

[root@ceph-node1 ceph]# ceph -v
ceph version 14.2.22 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)
[root@ceph-node2 ~]# ceph -v
ceph version 14.2.22 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)
[root@ceph-node3 ~]# ceph -v
ceph version 14.2.22 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)

(6)在ceph-node1上创建第一个Ceph monitor。

ceph-deploy mon create-initial 命令用于在初始阶段创建 Ceph Monitor(监视器)节点。这个命令会在一个或多个指定的主机上创建并初始化 Ceph Monitor

[root@ceph-node1 ceph]# ceph-deploy mon create-initial
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
...
...
[ceph_deploy.gatherkeys][DEBUG ] Got ceph.bootstrap-rgw.keyring key from ceph-node1.

(7)Monitor创建成功后,检查集群的状态,这个时候Ceph集群并不处于健康状态。

[root@ceph-node1 ceph]# ceph -s
  cluster:
    id:     e901edda-49e8-4910-a5de-b860da4811c2
    health: HEALTH_WARN
            mon is allowing insecure global_id reclaim
 
  services:
    mon: 1 daemons, quorum ceph-node1 (age 47s)
    mgr: no daemons active
    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:     
复制密钥
[root@ceph-node1 ceph]# ceph-deploy admin ceph-node{1,2,3}
2. 创建OSD

(1)列出ceph-node1上所有的可用磁盘。

[root@ceph-node1 ceph]# ceph-deploy disk list ceph-node1
... ...
[ceph-node1][INFO  ] Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
[ceph-node1][INFO  ] Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors

(2) 创建共享磁盘,3个节点都要执行。对系统上的空闲硬盘进行分区操作。

先umount磁盘,在使用fdisk工具分区。

(3)分区完毕后,使用命令将这些分区添加至osd,命令如下:

  • ceph-node{1,2,3}都需要进行分区

ceph-node1节点:

OSD (Object Storage Daemon)对象存储

[root@ceph-node1 ceph]# ceph-deploy osd create --data /dev/vdb1 ceph-node1
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/bin/ceph-deploy osd create --data /dev/vdb1 ceph-node1
... ...
[ceph-node1][INFO  ] Running command: /bin/ceph --cluster=ceph osd stat --format=json
[ceph_deploy.osd][DEBUG ] Host ceph-node1 is now ready for osd use.

ceph-node2节点:

[root@ceph-node1 ceph]# ceph-deploy osd create --data /dev/vdb1 ceph-node2
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/bin/ceph-deploy osd create --data /dev/vdb1 ceph-node2
... ...
[ceph-node2][INFO  ] Running command: /bin/ceph --cluster=ceph osd stat --format=json
[ceph_deploy.osd][DEBUG ] Host ceph-node2 is now ready for osd use.

ceph-node3节点:

[root@ceph-node1 ceph]# ceph-deploy osd create --data /dev/vdb1 ceph-node3
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/bin/ceph-deploy osd create --data /dev/vdb1 ceph-node3
... ...
[ceph-node3][INFO  ] Running command: /bin/ceph --cluster=ceph osd stat --format=json
[ceph_deploy.osd][DEBUG ] Host ceph-node3 is now ready for osd use.

(4)添加完osd节点后,查看集群的状态,命令如下:

[root@ceph-node1 ceph]# ceph -s
  cluster:
    id:     09226a46-f96d-4bfa-b20b-9021898ddf53
    health: HEALTH_WARN
            no active mgr
 
  services:
    mon: 1 daemons, quorum ceph-node1
    mgr: no daemons active
    osd: 3 osds: 3 up, 3 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   0B used, 0B / 0B avail
    pgs:  

可以看到此时的状态为警告,因为还没有设置mgr节点,安装mgr,命令如下:

ceph-deploy 命令是用于部署和管理 Ceph 集群的工具。在您的命令中,您使用 ceph-deploy mgr create 命令来创建 Ceph 管理器(Manager)ceph-deploy 将在指定的主机上创建一个 Manager 节点,并将其添加到 Ceph 集群中。Manager 节点将负责集群管理任务,例如监控、维护和提供 RESTful API 服务

[root@ceph-node1 ceph]# ceph-deploy mgr create ceph-node1 ceph-node2 ceph-node3
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/bin/ceph-deploy mgr create ceph-node1 ceph-node2 ceph-node3
... ...
[ceph-node3][INFO  ] Running command: systemctl start ceph-mgr@ceph-node3
[ceph-node3][INFO  ] Running command: systemctl enable ceph.target

(5)检查Ceph集群的状态。此时仍然是warn的状态,需要禁用不安全模式命令如下:

[root@ceph-node1 ceph]# ceph -s
  cluster:
    id:     e901edda-49e8-4910-a5de-b860da4811c2
    health: HEALTH_WARN
            mon is allowing insecure global_id reclaim
 
  services:
    mon: 1 daemons, quorum ceph-node1 (age 6m)
    mgr: ceph-node1(active, since 27s), standbys: ceph-node2, ceph-node3
    osd: 3 osds: 3 up (since 47s), 3 in (since 47s)
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 57 GiB / 60 GiB avail
    pgs:     

使用如下命令禁用不安全模式:

[root@ceph-node1 ceph]# ceph config set mon auth_allow_insecure_global_id_reclaim false

再次查看集群状态,集群是HEALTH_OK状态。

[root@ceph-node1 ceph]# ceph -s
  cluster:
    id:     e901edda-49e8-4910-a5de-b860da4811c2
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum ceph-node1 (age 9m)
    mgr: ceph-node1(active, since 3m), standbys: ceph-node2, ceph-node3
    osd: 3 osds: 3 up (since 3m), 3 in (since 3m)
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 57 GiB / 60 GiB avail
    pgs:     

(6)开放权限给其他节点,进行灾备处理。

# ceph-deploy admin ceph-node{1,2,3}
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (1.5.31): /usr/bin/ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to ceph-node1
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to ceph-node2
[ceph-node2][DEBUG ] connected to host: ceph-node2 
[ceph-node2][DEBUG ] detect platform information from remote host
[ceph_deploy.admin][DEBUG ] Pushing admin keys and conf to ceph-node3
[ceph-node3][DEBUG ] connected to host: ceph-node3 
[ceph-node3][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
# chmod +r /etc/ceph/ceph.client.admin.keyring
[root@ceph-node1 ~]# ceph health
HEALTH_OK
3. Ceph集群运维命令

有了可运行的Ceph集群后,现在可以用一些简单的命令来体验Ceph。

(1)检查Ceph的安装状态。

# ceph status

(2)观察集群的健康状况。

# ceph w

(3)检查Ceph monitor仲裁状态。

# ceph quorum_status --format json-pretty

(4)导出Ceph monitor信息。

# ceph mon dump

(5) 检查集群使用状态。

# ceph df

(6) 检查Ceph Monitor、OSD和PG(配置组)状态。

# ceph mon stat
# ceph osd stat
# ceph pg stat

(7)列表PG。

# ceph pg dump

(8)列表Ceph存储池。

# ceph osd lspools

(9)检查OSD的CRUSH。

# ceph osd tree

ceph 删除osd

1、删除osd
查看osd

[root@ceph-node1 ceph]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME           STATUS REWEIGHT PRI-AFF
-1       0.01959 root default
-3       0.00980     host ceph-node1
 0   hdd 0.00490         osd.0           up  1.00000 1.00000
 1   hdd 0.00490         osd.1           up  1.00000 1.00000
-5       0.00490     host ceph-node2
 2   hdd 0.00490         osd.2           up  1.00000 1.00000
-7       0.00490     host ceph-node3
 3   hdd 0.00490         osd.3           up  1.00000 1.00000

2、停止此osd进程,执行,我的因为坏盘原因已经停止

[root@ceph-node1 ceph]# systemctl stop ceph-osd@1
[root@ceph-node1 ceph]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME           STATUS REWEIGHT PRI-AFF
-1       0.01959 root default
-3       0.00980     host ceph-node1
 0   hdd 0.00490         osd.0           up  1.00000 1.00000
 1   hdd 0.00490         osd.1         down  1.00000 1.00000
-5       0.00490     host ceph-node2
 2   hdd 0.00490         osd.2           up  1.00000 1.00000
-7       0.00490     host ceph-node3
 3   hdd 0.00490         osd.3           up  1.00000 1.00000

3、下线 osd 执行

[root@ceph-node1 ceph]# ceph osd out 1
marked out osd.1.
[root@ceph-node1 ceph]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME           STATUS REWEIGHT PRI-AFF
-1       0.01959 root default
-3       0.00980     host ceph-node1
 0   hdd 0.00490         osd.0           up  1.00000 1.00000
 1   hdd 0.00490         osd.1         down        0 1.00000
-5       0.00490     host ceph-node2
 2   hdd 0.00490         osd.2           up  1.00000 1.00000
-7       0.00490     host ceph-node3
 3   hdd 0.00490         osd.3           up  1.00000 1.00000

4、将osd.0踢出集群,执行:ceph osd crush remove osd.1 ,此时osd.1已经不再osd tree中了

格式化

[root@ceph-node1 ceph]# ceph osd crush remove osd.1
removed item id 1 name 'osd.1' from crush map
[root@ceph-node1 ceph]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME           STATUS REWEIGHT PRI-AFF
-1       0.01469 root default
-3       0.00490     host ceph-node1
 0   hdd 0.00490         osd.0           up  1.00000 1.00000
-5       0.00490     host ceph-node2
 2   hdd 0.00490         osd.2           up  1.00000 1.00000
-7       0.00490     host ceph-node3
 3   hdd 0.00490         osd.3           up  1.00000 1.00000
 1             0 osd.1                 down        0 1.00000

5、执行ceph auth del osd.0 和 ceph osd rm 0,此时删除成功但是原来的数据和日志目录还在,也就是数据还在

[root@ceph-node1 ceph]# ceph auth del osd.1
updated
[root@ceph-node1 ceph]# ceph osd rm 1
removed osd.1
[root@ceph-node1 ceph]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME           STATUS REWEIGHT PRI-AFF
-1       0.01469 root default
-3       0.00490     host ceph-node1
 0   hdd 0.00490         osd.0           up  1.00000 1.00000
-5       0.00490     host ceph-node2
 2   hdd 0.00490         osd.2           up  1.00000 1.00000
-7       0.00490     host ceph-node3
 3   hdd 0.00490         osd.3           up  1.00000 1.00000

6、此时我们将/dev/sdc磁盘umount,然后将磁盘进行擦除那么数据就会被完全删除了,然后执行

[root@ceph-node1 ceph]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 2.0G     0  2.0G   0% /dev
tmpfs                    2.0G     0  2.0G   0% /dev/shm
tmpfs                    2.0G   12M  2.0G   1% /run
tmpfs                    2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  2.3G   15G  14% /
/dev/sda1               1014M  138M  877M  14% /boot
tmpfs                    394M     0  394M   0% /run/user/0
tmpfs                    2.0G   52K  2.0G   1% /var/lib/ceph/osd/ceph-0
tmpfs                    2.0G   52K  2.0G   1% /var/lib/ceph/osd/ceph-1
[root@ceph-node1 ceph]# umount /var/lib/ceph/osd/ceph-1
[root@ceph-node1 ceph]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 2.0G     0  2.0G   0% /dev
tmpfs                    2.0G     0  2.0G   0% /dev/shm
tmpfs                    2.0G   12M  2.0G   1% /run
tmpfs                    2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  2.3G   15G  14% /
/dev/sda1               1014M  138M  877M  14% /boot
tmpfs                    394M     0  394M   0% /run/user/0
tmpfs                    2.0G   52K  2.0G   1% /var/lib/ceph/osd/ceph-0
[root@ceph-node1 ceph]# dmsetup remove_all
dmsetup remove_all:该命令用于移除所有的设备映射(Device Mapper mappings)。Device Mapper 是 Linux 内核中的一个子系统,用于进行逻辑卷管理和设备映射。执行 dmsetup remove_all 将移除所有当前活动的设备映射,包括与 Ceph 相关的映射。

7、格式化

[root@ceph-node1 ceph]# sudo mkfs -t ext4 /dev/sdb3

(10)列表集群的认证密钥。

# ceph auth list
ceph-dashboard界面安装:

三个节点都需要安装:

ceph-rpm-nautilus-el7-x86_64安装包下载_开源镜像站-阿里云 (aliyun.com)

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
[centos]
name=centos
baseurl=http://192.168.162.15/centos
gpgcheck=0
enabled=1
[iaas]
name=iaaas
baseurl=http://192.168.162.15/iaas/iaas-repo
gpgcheck=0
### 安装依赖Dashboard
[root@ceph-node1 ceph]# yum install -y ceph-mgr-dashboard

### 启动Dashboard --force 强制开启
[root@ceph-node1 ceph]# ceph mgr module enable dashboard --force

### 创建证书并安装自签名的证书	https
[root@ceph-node1 ceph]# ceph dashboard create-self-signed-cert
Self-signed certificate created

### 创建登录密码
[root@ceph-node1 ceph]# echo 'gxl@ceph' > cephadmin-password
[root@ceph-node1 ceph]# cat cephadmin-password
gxl@ceph

### 创建用户
[root@ceph-node1 ceph]# ceph dashboard ac-user-create cephadmin -i cephadmin-password administrator
{"username": "cephadmin", "lastUpdate": 1699617115, "name": null, "roles": ["administrator"], "password": "$2b$12$sRwYqfNmS.FQ0SvyN/J6FOZn5j6GBrq3BJR6a.zxm7nJP72KUjgI.", "email": null}

- cephadmin 					`用户`
- -i									`指定密码文件`
- cephadmin-password	`密码文件`
- administrator				`用户身份`

### 验证服务
[root@ceph-node1 ceph]# ceph mgr services
{
    "dashboard": "https://ceph-node1:8443/"
}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

报错解决
[root@ceph-node1 ceph]# ceph -s
  cluster:
    id:     3bc797b7-582f-48aa-8c9b-972cb4da1603
    health: HEALTH_WARN
            1 osds down
            1 host (1 osds) down

  services:
    mon: 1 daemons, quorum ceph-node1 (age 5m)
    mgr: ceph-node3(active, since 73s), standbys: ceph-node1, ceph-node2
    osd: 3 osds: 2 up (since 2m), 3 in (since 10m)

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:

[root@ceph-node1 ceph]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME           STATUS REWEIGHT PRI-AFF
-1       0.02939 root default
-3       0.00980     host ceph-node1
 0   hdd 0.00980         osd.0           up  1.00000 1.00000
-5       0.00980     host ceph-node2
 1   hdd 0.00980         osd.1           up  1.00000 1.00000
-7       0.00980     host ceph-node3
 2   hdd 0.00980         osd.2         down  1.00000 1.00000

[root@ceph-node1 ceph]# ceph osd out 2
marked out osd.2.

[root@ceph-node1 ceph]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME           STATUS REWEIGHT PRI-AFF
-1       0.02939 root default
-3       0.00980     host ceph-node1
 0   hdd 0.00980         osd.0           up  1.00000 1.00000
-5       0.00980     host ceph-node2
 1   hdd 0.00980         osd.1           up  1.00000 1.00000
-7       0.00980     host ceph-node3
 2   hdd 0.00980         osd.2         down        0 1.00000
[root@ceph-node1 ceph]# ceph osd in 2
marked in osd.2.

[root@ceph-node3 ~]# systemctl enable ceph-osd@2 --now
[root@ceph-node3 ~]# systemctl status ceph-osd@2
● ceph-osd@2.service - Ceph object storage daemon osd.2
   Loaded: loaded (/usr/lib/systemd/system/ceph-osd@.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2023-11-11 18:54:58 CST; 1s ago
  Process: 1983 ExecStartPre=/usr/lib/ceph/ceph-osd-prestart.sh --cluster ${CLUSTER} --id %i (code=exited, status=0/SUCCESS)
 Main PID: 1988 (ceph-osd)
   CGroup: /system.slice/system-ceph\x2dosd.slice/ceph-osd@2.service
           └─1988 /usr/bin/ceph-osd -f --cluster ceph --id 2 --setuser ceph --setgroup ceph

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1793532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SemanticKernel:添加插件

SemanticKernel介绍 Semantic Kernel是一个SDK,它将OpenAI、Azure OpenAI和Hugging Face等大型语言模型(LLMs)与C#、Python和Java等传统编程语言集成在一起。Semantic Kernel通过允许您定义插件来实现这一点,这些插件可以通过几行…

六、【源码】SQL执行器的定义和实现

源码地址:https://github.com/mybatis/mybatis-3/ 仓库地址:https://gitcode.net/qq_42665745/mybatis/-/tree/06-sql-executor SQL执行器的定义和实现 之前的Sql执行都是耦合在SqlSession里的,现在要对这部分进行解耦和重构,引…

CentOS 环境下 PostgreSQL 在线安装和源码安装详解

1、内容概述 昨天给大家简单的介绍了一下 PostgreSQL,并且在Windows系统上通过图形化界面的方式搭建好了环境,今天我们就来学习一下如何在Linux 系统上搭建 PostgreSQL环境,我会给大家介绍在线安装、离线源码安装以及Docker 安装三种方式。 2、在线安装…

Windows文件管理器导航窗口怎么删除第三方生成的无效导航【笔记】

Windows文件管理器导航窗口怎么删除第三方生成的无效导航【笔记】 导航窗口对应项目没有右击删除选项。 提示: 位置不可用 C:\Users\superman…不可用,如果该位置位于这台电脑上,请确保设备或驱动器连接,或者光盘已插入&#xf…

Elastic 8.14:用于简化分析的 Elasticsearch 查询语言 (ES|QL) 正式发布

作者:来自 Elastic Brian Bergholm 今天,我们很高兴地宣布 Elastic 8.14 正式发布。 什么是新的? 8.14 版本最重要的标题是 ES|QL 的正式发布(GA),它是从头开始设计和专门构建的,可大大简化数据调查。在新的查询引擎的…

基于SSM+Jsp的高校二手交易平台

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

css 理解了原理,绘制三角形就简单了

1.border-位置 注意:border-bottom/up/right/left 主要是以三角形的结构搭建而成,而border也是如此。而且从边框的外围开始计算像素尺寸。在理解了这一点之后,绘制三角形就简单多了。 1.transparent 注意:该属性主要是颜色透明…

LeetCode-2938. 区分黑球与白球【贪心 双指针 字符串】

LeetCode-2938. 区分黑球与白球【贪心 双指针 字符串】 题目描述:解题思路一:贪心解题思路二:一次遍历统计1的个数,找0后累加左边的1的个数解题思路三: 题目描述: 桌子上有 n 个球,每个球的颜色…

深圳比创达EMC|EMC电磁兼容性行业:技术前沿与市场挑战

在当今高度信息化的社会,电磁兼容性(EMC)技术已成为各行各业不可或缺的一部分。随着电子设备的日益增多和复杂化,电磁环境日益复杂,电磁兼容性行业面临着前所未有的挑战和机遇。 一、EMC电磁兼容性行业的技术基础 电…

0基础学习区块链技术——分叉

区块链是一种分布式存储技术。一谈到分布式服务,就会提及CAP原则。 CAP原则是以下三个单词的首字母: Consistency(一致性):系统在执行某项操作后,仍然处于一致的状态。在分布式系统中,更新操作…

10分钟就会用的3D编辑器,帮你轻松实现Web3D交互自由!

近两年,AIGC技术可谓是在各行各业大放异彩,从AI绘画到AI写作,如今AI建模技术也悄然而至,只要输入文本就能直接AI生成3D模型。 △例:当输入“一个坐在睡莲上的蓝色箭毒蛙”这样的提示词时,对应的3D模型就会生…

多客陪玩系统-开源陪玩系统平台源码-支持游戏线上陪玩家政线下预约等多场景应用支持H5+小程序+APP

多客陪玩系统-开源陪玩系统平台源码-支持游戏线上陪玩家政按摩线下预约等多场景应用支持H5小程序APP 软件架构 前端:Uniapp-vue2.0 后端:Thinkphp6 前后端分离 前端支持: H5小程序双端APP(安卓苹果) 安装教程 【商业…

线性模型-分类

一、线性判别分析LDA 线性判别分析是一种经典的线性学习方法,在二分类问题上最早是Fisher提出的,亦称为Fisher判别分析。 Fisher判别分析是一种用于降维和分类的统计方法,旨在找到可以最好区分不同类别的特征。它基于类内方差和类间方差的比…

OCP 安装 OceanBase集群(企业版3.2.4.1)

创建集群 登录OCP界面 1.点击左侧工具栏中的集群 2.进入集群页面后 点击 右上角的创建集群 集群设置 进入 创建集群 页面,进行 目标集群 配置 集群种类 根据 生产环境 选择 分布式 或者 单机集中式,第一次安装 集群类型 选择 主集群。 注意&#xf…

图片格式怎么转成pdf,简单的方法

在现代数字化时代,图片格式转换成PDF已经成为许多人的日常需求。无论是为了存档、分享还是打印,将图片转换为PDF都是一项非常实用的技能。本文将详细介绍如何将图片格式转换成PDF的方法。 用浏览器打开 "轻云处理pdf官网,上传图片。 图…

HarmonyOS(32) @Link标签使用指南

Link 前言Link简介State和Link的同步场景使用示例参考资料 前言 之前写过Link的使用,最新的API有点变化,在此做个记录。 Link简介 子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。。子组件变量发生变化,父组件也会随…

VMware Workstation虚拟机安装 CentOS 7.9 后ping ip地址出现错误:Network is unreachable

VMware Workstation虚拟机安装 CentOS 7.9 后ping ip地址出现错误:Network is unreachable 解决步骤: 进入目录 进入/etc/sysconfig/network-scripts/, cd /etc/sysconfig/network-scripts/修改文件 vi ifcfg-ens33变更项 ONBOOTyes保存…

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第7章——连续性

第2 部分:数学分析中的基本概念 (Concepts in Analysis) 7. 连续性(Continuity) 本章首先讨论连续性的直观概念,并介绍与早期数学中常见的函数不同的函数。解释了连续性的定义,并演示了如何使用它来证明函数在一点上连续,以及证…

ABB velset 指令

VelSet 10,100;! v1000 情况下速度位1000*20% 最大速度位100 速度位 100

Unity3D测量距离实现方法(一)

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、Unity距离测量1-1 制作预制体1-2 编写测量的脚本 👉二、鼠标点击模型进行测量👉二、字体面向摄像机的方法👉二、最短距离测量方法👉三、壁纸分享…