Ceph集群存储案例

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[线程与网络] 网络编程与通信原理(四):深入理解传输层UDP与TCP协议

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

研发效能DevOps: Ubuntu 部署 JFrog 制品库

目录 一、实验 1.环境 2.Ubuntu 部署 JFrog 制品库 3.Ubuntu 部署 postgresql数据库 4.Ubuntu 部署 Xray 5. 使用JFrog 增删项目 二、问题 1.Ubuntu 如何通过apt方式部署 JFrog 制品库 2.Ubuntu 如何通过docker方式部署 JFrog 制品库 3.安装jdk报错 4.安装JFrog Ar…

用follow.it为您的网站添加邮箱订阅功能(附2024版教程)

多数情况下网站用户浏览一次就不会来了(即使用户已收藏您的网站),因为用户很可能已把您的网站忘了。那么怎么样才能抓住网站回头客,让用户再次回到您的网站呢?除了提供更优质的原创内容外,比较好的方法是给…

第十九讲:动态内存分配

第十九讲:动态内存分配 1.为什么要有动态内存分配2.malloc和free2.1malloc2.1.1函数原型2.1.2函数使用 2.2free2.2.1函数原型2.2.2函数使用2.2.3函数使用注意事项2.2.3.1注意点12.2.3.2注意点22.2.3.3注意点32.2.3.4注意点4 2.3malloc和free使用注意事项2.3.1内存覆…

zynq PS点灯

摸鱼碎碎念: 需要做ADC采集并在TFT屏幕实时显示波形(简易示波器) 发现只使用fpga实现比较困难 使用的是zynq,刚好来把arm部分也学到 参考视频 与 教材文档 01_Zynq SoC FPGA的诞生_哔哩哔哩_bilibili (这是俺点开AXI4接口协…

【小白专用24.5.30已验证】Composer安装php框架thinkPHP6的安装教程

一、框架介绍 1、框架简介和版本选择 Thinkphp是一种基于php的开源web应用程序开发框架ThinkPHP框架,是免费开源的、轻量级的、简单快速且敏捷的php框架。你可以免费使用TP框架,甚至可以将你的项目商用; ThinkPHP8.0 是目前框架正式版的最新版…

windows上CMake、Mingw和VSCode配置调试C/C++代码

大型项目里经常使用CMake,我在Windows平台上开发,使用的代码编辑器是VSCode,我使用的是mingw的编译器,以前使用的是一个脚本来进行编译: run.bat cmake -G "MinGW Makefiles" .. mingw32-makeVSCode可以方…

Linux实验报告(二)——Linux系统中的常用命令

目录 一、实验名称: 二、仪器、设备: 三、参考资料: 四、实验目的: 五、实验内容(步骤): 六、实验数据(程序)记录: ​编辑 ​编辑 七、实验结果分析…

蒙自源六一儿童节特别活动:美食盛宴,快乐无限

蒙自源始终坚持以用户为中心,致力于为消费者提供健康美味的米线。据悉,蒙自源的每家门店店长都会在每天早晨亲自熬制一锅鲜美的汤底,确保顾客能够享受到最新鲜、最美味的米线。为了庆祝六一,蒙自源特意为孩子们准备了一场别开生面…

云数融合与大数据技术在日常生活中的创新应用探索

前言 移动云模型服务产品在中国移动旗下主要包括云计算、大数据、人工智能等服务,它依托广泛的算力资源(4N31X)、丰富的网络接入资源和高品质云专网,实现算网端资源一站式开通,构建企业级一体化解决方案。 文章目录 前言云计算的日常应用智…

六一儿童节与AIGC:科技与童趣的奇妙融

随着人工智能生成内容(AIGC)技术的发展,越来越多的应用和网站专门为儿童提供学习、游戏和绘画方面的支持。这些平台不仅能够提高孩子们的学习兴趣,还能激发他们的创造力。在六一儿童节即将到来之际,让我们来介绍几款利…

力扣刷题--485. 最大连续 1 的个数【简单】

题目描述 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。 示例 1: 输入:nums [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3. 示例 2: 输入&…

颠覆传统:探索Web3对传统计算机模式的冲击

随着Web3技术的崛起,传统计算机模式正面临着前所未有的冲击与挑战。Web3作为下一代互联网的代表,以其去中心化、安全可信的特性,正在颠覆着传统计算机模式的种种假设和局限性。本文将深入探讨Web3对传统计算机模式的冲击,并探索其…

HTML+CSS+JS 熊猫登录表单

效果演示 实现了一个可爱的熊猫登录界面,页面背景使用了渐变色,熊猫的头部和身体使用了圆形和椭圆形的边框,使用了CSS的伪元素和阴影效果来实现熊猫的手和脚。登录框使用了flex布局,包括用户名和密码的输入框和登录按钮,使用了CSS的过渡效果和伪类来实现输入框的动态效果。…

北斗应急救援终端如何做好汛期重点行业安全防控?

【安全提示】 汛期各地高温多雨、极端天气增多 防汛和安全生产形势严峻复杂如何做好汛期重点行业企业安全生产风险防控? 顶坚北斗短报文终端V1单北斗定位终端 北斗应急救援终端在汛期重点行业安全防控中扮演着关键角色,其高可靠性、稳定性和丰富的功能扩…

IdentiFace——多模态人脸识别系统,可捕捉从情绪到性别的所有信息及其潜力

1. 概述 面部识别系统的开发极大地推动了计算机视觉领域的发展。如今,人们正在积极开发多模态系统,将多种生物识别特征高效、有效地结合起来。 本文介绍了一种名为 IdentiFace 的多模态人脸识别系统。该系统利用基于 VGG-16 架构的模型,将人…

国际荐酒师(香港)协会受邀出席广州意大利国庆晚宴

2024年5月30日,意大利驻广州总领事馆举办的2024年意大利国庆招待会及晚宴,庆祝意大利共和国成立。此次晚宴旨在促进中意两国之间的文化交流与合作。国际荐酒师(香港)协会受主办方邀请参与了这一重要活动。 国际荐酒师(…

阿里云语音合成TTS直播助手软件开发

阿里云的TTS比较便宜,效果比不了开源克隆的那种,比纯机器人效果好一点点 阿里云sambert https://help.aliyun.com/zh/dashscope/developer-reference/quick-start-13 Sambert系列模型 1万字1元 ,每主账号每模型每月3万字免费 创建API-KEY htt…

SpockMockStatic方法

SpockMockStatic方法 参考: https://blog.csdn.net/knighttools/article/details/44630975 ‍ static方法 import com.meituan.mafka.client.producer.IProducerProcessor; import com.meituan.mdp.langmodel.api.message.AssistantMessage; import com.sankuai.gaigc.arrang…

CentOs-7.5 root密码忘记了,如何重置密码?

VWmare软件版本:VMware Workstation 16 Pro Centos系统版本:CentOS-7.5-x86 64-Minimal-1804 文章目录 问题描述如何解决? 问题描述 长时间没有使用Linux系统,root用户密码忘记了,登陆不上系统,如下图所示…