手把手带你部署Ceph集群

2023-05-16

前言:

Ceph作为开源的分布式文件系统,可以轻松地将存储容量扩展到PB以上并拥有不错的性能。Ceph提供对象存储、块存储和文件系统三种存储方式,如果不想花时间安装ceph,可以通过ceph-docker来部署Ceph集群,使用容器部署Ceph集群的一大好处就是不用为升级而烦恼,本篇文章将手把手带你快速在单节点上部署Ceph集群。
本教程采用的Linux及相关软件版本如下:
CentOS Linux release 7.8.2003版本
Docker的版本是20.10.10
Ceph的版本是nautilus-latest 14.2.22

机器初始化

部署Ceph之前我们需要对自身机器的环境做初始化。主要涉及到防火墙,主机名等设置。

1. 关闭防火墙

systemctl stop firewalld  && systemctl disable firewalld

2.关闭selinux(linux的安全子系统)

sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
PS: 正式环境实际部署时,最好通过加入IP白名单的方式来操作,而不是直接关闭防火墙。

3. 设置主机名,把虚拟机的主机名设置成ceph

hostnamectl set-hostname ceph
在节点上执行下列命令配置host。
cat >> /etc/hosts <<EOF
192.168.129.16 ceph
EOF

4.设置时间同步

chronyd服务的作用是用于同步不同机器的时间。如果不打开时间同步服务,则有可能会出现 clock skew detected on mon问题。

timedatectl set-timezone Asia/Shanghai
date

yum -y install chrony
systemctl enable chronyd
systemctl start chronyd.service
sed -i -e '/^server/s/^/#/' -e '1a server ntp.aliyun.com iburst' /etc/chrony.conf
systemctl restart chronyd.service
sleep 10
timedatectl

5.其他配置 把容器内的 ceph 命令 alias 到本地,方便使用,其他 ceph 相关命令也可以参考添加:

echo 'alias ceph="docker exec mon ceph"' >> /etc/profile
source /etc/profile

6. 创建Ceph目录 在宿主机上创建Ceph目录与容器建立映射,便于直接操纵管理Ceph配置文件,以root身份在节点ceph上创建这四个文件夹,命令如下:

mkdir -p /usr/local/ceph/{admin,etc,lib,logs}

该命令会一次创建4个指定的目录,注意逗号分隔,不能有空格。其中:

  • admin文件夹下用于存储启动脚本。
  • etc文件夹下存放了ceph.conf等配置文件。
  • lib文件夹下存放了各组件的密钥文件。
  • logs文件夹下存放了ceph的日志文件。

7. 对文件夹进行docker内用户授权

chown -R 167:167 /usr/local/ceph/  #docker内用户id是167,这里进行授权
chmod 777 -R  /usr/local/ceph

上面的初始化做完之后,下面我们就开始具体的部署。

部署ceph集群

安装ceph集群的基础组件 mon,osd,mgr,rgw ,mds

1. 创建OSD磁盘

创建OSD磁盘 OSD服务是对象存储守护进程,负责把对象存储到本地文件系统,必须要有一块独立的磁盘作为存储。

lsblk
fdisk /dev/vdb 创建出三个分区。/dev/vdb1  /dev/vdb2  /dev/vdb3
操作方法可以参考:https://jingyan.baidu.com/article/cbf0e500a9731e2eab289371.html

格式化并挂在磁盘
mkfs.xfs -f /dev/vdb1;mkfs.xfs -f /dev/vdb2;mkfs.xfs -f /dev/vdb3

mkdir -p /dev/osd1 ;mount /dev/vdb1 /dev/osd1
mkdir -p /dev/osd2 ;mount /dev/vdb2 /dev/osd2
mkdir -p /dev/osd3 ;mount /dev/vdb3 /dev/osd3

创建后的效果
[root@ceph ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda             252:0    0   50G  0 disk
├─vda1          252:1    0    2M  0 part
├─vda2          252:2    0  256M  0 part /boot
└─vda3          252:3    0 49.8G  0 part
  └─centos-root 253:0    0 49.8G  0 lvm  /
vdb             252:16   0   300G  0 disk
├─vdb1          252:17   0   100G  0 part /dev/osd1
├─vdb2          252:18   0   100G  0 part /dev/osd2
└─vdb3          252:19   0   100G  0 part /dev/osd3

2. 安装docker并获取ceph镜像

安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

#添加docker软件包的yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

直接安装Docker CE最新版
yum install docker-ce -y
systemctl restart docker &&  systemctl enable docker

#配置docker 使用阿里云加速
mkdir -p /etc/docker/
touch /etc/docker/daemon.json
> /etc/docker/daemon.json
cat <<EOF >> /etc/docker/daemon.json
{
"registry-mirrors":["https://q2hy3fzi.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload && systemctl restart docker 

docker info 

拉取ceph镜像
这里用到了 dockerhub 上最流行的 ceph/daemon 镜像(这里需要拉取nautilus版本的ceph,latest-nautilus)
docker pull ceph/daemon:latest-nautilus

3. 编写启动脚本开始部署。(脚本都放在admin文件夹下)

(1) 创建并启动mon组件

vi /usr/local/ceph/admin/start_mon.sh
#!/bin/bash
docker run -d --net=host \
    --name=mon \
    -v /etc/localtime:/etc/localtime \
    -v /usr/local/ceph/etc:/etc/ceph \
    -v /usr/local/ceph/lib:/var/lib/ceph \
    -v /usr/local/ceph/logs:/var/log/ceph \
    -e MON_IP=192.168.129.16 \
    -e CEPH_PUBLIC_NETWORK=192.168.128.0/20 \
    ceph/daemon:latest-nautilus  mon

这个脚本是为了启动监视器,监视器的作用是维护整个Ceph集群的全局状态。一个集群至少要有一个监视器,最好要有奇数个监视器。方便当一个监视器挂了之后可以选举出其他可用的监视器。启动脚本说明:

  • name参数,指定节点名称,这里设为mon
  • -v xxx:xxx 是建立宿主机与容器的目录映射关系,包含 etc、lib、logs目录。
  • MON_IP是Docker运行的IP地址(通过ifconfig来查询,取eth0里的inet那个IP),这里我们有3台服务器,那么MAN_IP需要写上3个IP,如果IP是跨网段的CEPH_PUBLIC_NETWORK必须写上所有网段。
  • CEPH_PUBLIC_NETWORK配置了运行Docker主机所有网段 这里必须指定nautilus版本,不然会默认操作最新版本ceph,mon必须与前面定义的name保持一致。

启动MON 在节点ceph上执行

bash /usr/local/ceph/admin/start_mon.sh

启动后通过docker ps -a|grep mon查看启动结果,启动成功之后生成配置数据,在ceph主配置文件中,追加如下内容:

cat >>/usr/local/ceph/etc/ceph.conf <<EOF
# 容忍更多的时钟误差
mon clock drift allowed = 2
mon clock drift warn backoff = 30
# 允许删除pool
mon_allow_pool_delete = true
mon_warn_on_pool_no_redundancy = false

osd_pool_default_size = 1
osd_pool_default_min_size = 1
osd crush chooseleaf type = 0

[mgr]
# 开启WEB仪表盘
mgr modules = dashboard
[client.rgw.ceph1]
# 设置rgw网关的web访问端口
rgw_frontends = "civetweb port=20003"
EOF

启动后通过 ceph -s查看集群状态,此时的状态应该是HEALTH_OK状态。

若遇到health: HEALTH_WARN mon is allowing insecure global_id reclaim

可以如下命令执行:

ceph config set mon auth_allow_insecure_global_id_reclaim false

(2) 创建并启动osd组件

vi /usr/local/ceph/admin/start_osd.sh
#!/bin/bash
docker run -d \
    --name=osd1 \
    --net=host \
    --restart=always \
    --privileged=true \
    --pid=host \
    -v /etc/localtime:/etc/localtime \
    -v /usr/local/ceph/etc:/etc/ceph \
    -v /usr/local/ceph/lib:/var/lib/ceph \
    -v /usr/local/ceph/logs:/var/log/ceph \
    -v /dev/osd1:/var/lib/ceph/osd \
    ceph/daemon:latest-nautilus  osd_directory

docker run -d \
    --name=osd2 \
    --net=host \
    --restart=always \
    --privileged=true \
    --pid=host \
    -v /etc/localtime:/etc/localtime \
    -v /usr/local/ceph/etc:/etc/ceph \
    -v /usr/local/ceph/lib:/var/lib/ceph \
    -v /usr/local/ceph/logs:/var/log/ceph \
    -v /dev/osd2:/var/lib/ceph/osd \
    ceph/daemon:latest-nautilus  osd_directory

docker run -d \
    --name=osd3 \
    --net=host \
    --restart=always \
    --privileged=true \
    --pid=host \
    -v /etc/localtime:/etc/localtime \
    -v /usr/local/ceph/etc:/etc/ceph \
    -v /usr/local/ceph/lib:/var/lib/ceph \
    -v /usr/local/ceph/logs:/var/log/ceph \
    -v /dev/osd3:/var/lib/ceph/osd \
    ceph/daemon:latest-nautilus  osd_directory

这个脚本是用于启动OSD组件的,OSD(Object Storage Device)是RADOS组件,其作用是用于存储资源。脚本说明:

  • name 是用于指定OSD容器的名称
  • net 是用于指定host,就是前面我们配置host
  • restart指定为always,使osd组件可以在down时重启。
  • privileged是用于指定该osd是专用的。这里我们采用的是osd_directory 镜像模式

PS: osd的个数最好维持在奇数个.

启动OSD 在节点ceph上执行 在执行start_osd.sh脚本之前,首先需要在mon节点生成osd的密钥信息,不然直接启动会报错。命令如下:

docker exec -it mon ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring

接着在节点上执行如下命令:

bash /usr/local/ceph/admin/start_osd.sh

全部osd都启动之后,稍等片刻后,执行ceph -s查看状态,应该可以看到多了3个osd

(3) 创建并启动mgr组件

vi /usr/local/ceph/admin/start_mgr.sh

#!/bin/bash
docker run -d --net=host  \
  --name=mgr \
  -v /etc/localtime:/etc/localtime \
  -v /usr/local/ceph/etc:/etc/ceph \
  -v /usr/local/ceph/lib:/var/lib/ceph \
  -v /usr/local/ceph/logs:/var/log/ceph \
  ceph/daemon:latest-nautilus mgr

这个脚本是用于启动mgr组件,它的主要作用是分担和扩展monitor的部分功能,提供图形化的管理界面以便我们更好的管理ceph存储系统。其启动脚本比较简单,在此不再赘述。

启动MGR 直接在节点ceph上执行如下命令:

bash /usr/local/ceph/admin/start_mgr.sh

mgr启动之后,稍等片刻后,执行ceph -s查看状态,应该可以看到多了1个mgr

(4) 创建并启动rgw组件

vi /usr/local/ceph/admin/start_rgw.sh

#!/bin/bash
docker run \
    -d --net=host \
    --name=rgw \
    -v /etc/localtime:/etc/localtime \
    -v /usr/local/ceph/etc:/etc/ceph \
    -v /usr/local/ceph/lib:/var/lib/ceph \
    -v /usr/local/ceph/logs:/var/log/ceph \
    ceph/daemon:latest-nautilus rgw

该脚本主要是用于启动rgw组件,rgw(Rados GateWay)作为对象存储网关系统,一方面扮演RADOS集群客户端角色,为对象存储应用提供数据存储,另一方面扮演HTTP服务端角色,接受并解析互联网传送的数据。

启动RGW 同样的我们首先还是需要先在mon节点生成rgw的密钥信息,命令如下:

docker exec mon ceph auth get client.bootstrap-rgw -o /var/lib/ceph/bootstrap-rgw/ceph.keyring

接着在节点ceph上执行如下命令:

bash /usr/local/ceph/admin/start_rgw.sh
rgw启动之后,ceph -s 查看可能会出现Degraded降级的情况,我们需要手动设置rgw pool的size 和 min_size为最小1

ceph osd pool set .rgw.root min_size 1
ceph osd pool set .rgw.root size 1

ceph osd pool set default.rgw.control  min_size 1
ceph osd pool set default.rgw.control  size 1

ceph osd pool set default.rgw.meta  min_size 1
ceph osd pool set default.rgw.meta  size 1

ceph osd pool set default.rgw.log  min_size 1
ceph osd pool set default.rgw.log  size 1

若ceph -s 报错提示pools have not replicas configured 可以暂时忽略 因为在该版本中pool size 设置为1的时候便会触发告警。

Pool size needs to be greater than 1 otherwise HEALTH_WARN is reported. Ceph will issue a health warning if a RADOS pool’s size is set to 1 or if the pool is configured with no redundancy. Ceph will stop issuing the warning if the pool size is set to the minimum recommended value:
可参考:https://documentation.suse.com/ses/6/html/ses-all/bk02apa.html

可使用如下命令禁止发送告警:(若还存在先暂时忽略)
ceph config set global mon_warn_on_pool_no_redundancy false

(5) 创建并启动mds组件

vi /usr/local/ceph/admin/start_mds.sh

#!/bin/bash
docker run -d --net=host \
    --name=mds \
    --privileged=true \
    -v /etc/localtime:/etc/localtime \
    -v /usr/local/ceph/etc:/etc/ceph \
    -v /usr/local/ceph/lib:/var/lib/ceph \
    -v /usr/local/ceph/logs:/var/log/ceph \
    -e CEPHFS_CREATE=O \
    -e CEPHFS_METADATA_POOL_PG=64 \
    -e CEPHFS_DATA_POOL_PG=64 \
    ceph/daemon:latest-nautilus mds

启动MDS

bash /usr/local/ceph/admin/start_mds.sh

至此所有组件启动完成。

4.创建FS文件系统

在ceph节点执行即可。

创建Data Pool和创建Metadata Pool:

ceph osd pool create cephfs_data 64 64
ceph osd pool create cephfs_metadata 64 64

注意:如果受mon_max_pg_per_osd限制, 不能设为128,可以调小点, 改为64。

创建CephFS:

ceph fs new cephfs cephfs_metadata cephfs_data

将上面的数据池与元数据池关联, 创建cephfs的文件系统并查看FS信息:

ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]	
或者
ceph fs status cephfs


ceph osd pool set cephfs_data min_size 1
ceph osd pool set cephfs_data size 1
ceph osd pool set cephfs_metadata min_size 1
ceph osd pool set cephfs_metadata size 1

启动完成之后再通过ceph-s查看集群的状态

[root@ceph ~]# ceph -s
  cluster:
    id:     7a3e7b33-2b71-45ee-bb62-3320fb0e9d51
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum ceph (age 21m)
    mgr: ceph(active, since 20m)
    mds: cephfs:1 {0=ceph=up:active}
    osd: 3 osds: 3 up (since 56m), 3 in (since 56m)
    rgw: 1 daemon active (ceph)

  task status:

  data:
    pools:   6 pools, 256 pgs
    objects: 209 objects, 3.4 KiB
    usage:   3.0 GiB used, 297 GiB / 300 GiB avail
    pgs:     256 active+clean

[root@ceph ~]#

5.验证cephfs可用性

在另外一台节点上安装ceph-fuse:

yum -y install epel-release
rpm -Uhv http://download.ceph.com/rpm-jewel/el7/noarch/ceph-release-1-1.el7.noarch.rpm
yum install -y ceph-fuse

mkdir /etc/ceph

在ceph集群里获取admin.key
ceph auth get-key client.admin

配置admin.key
vi /etc/ceph/ceph.client.admin.keyring
[client.admin]
    key = xxxxxxxxxxxxxxx

安装成功后使用如下命令进行挂载:

ceph-fuse -m 192.168.129.16:6789 -r / /mnt/ -o nonempty

df -h 查看挂载情况
ceph-fuse                         300G  3.1G  297G   2% /mnt

挂载成功。

6.安装ceph的Dashboard管理后台

在ceph节点执行即可。

开启dashboard功能

docker exec mgr ceph mgr module enable dashboard

创建证书

docker exec mgr ceph dashboard create-self-signed-cert

创建登陆用户与密码:

docker exec mgr ceph dashboard set-login-credentials admin admin

设置用户名为admin, 密码为admin。
注意我使用这条命令的时候报错了dashboard set-login-credentials <username> :  Set the login credentials. Password read from -i <file>

我手动在mgr容器中创建了/tmp/ceph-password.txt 在里面写入了密码admin
然后执行如下命令就成功了:
docker exec -it mgr bash 

vi /tmp/ceph-password.txt
admin

exit
docker exec mgr ceph dashboard ac-user-create  admin -i /tmp/ceph-password.txt  administrator

配置外部访问端口

docker exec mgr ceph config set mgr mgr/dashboard/server_port 18080

配置外部访问IP

docker exec mgr ceph config set mgr mgr/dashboard/server_addr 192.168.129.16

关闭https(如果没有证书或内网访问, 可以关闭)

docker exec mgr ceph config set mgr mgr/dashboard/ssl false

重启Mgr DashBoard服务

docker restart mgr

查看Mgr DashBoard服务信息

[root@ceph admin]# docker exec mgr ceph mgr services
{
   "dashboard": "http://ceph:18080/"
}

7.访问管理控制台界面:

浏览器中访问:

http://192.168.129.16:18080/#/dashboard

用户名和密码:admin/admin

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手带你部署Ceph集群 的相关文章

  • 应用ceph文件系统存储(ceph-13.2.10)

    记录 xff1a 333 场景 xff1a 在CentOS 7 9操作系统上 xff0c 部署ceph 13 2 10集群 应用ceph文件系统 ceph file system xff1b 主要是创建ceph文件系统 客户端挂载ceph文
  • ubuntu 22.04部署quincy版ceph

    ceph集群安装配置有多种方式 xff0c 下方cephadm方式是借助容器部署 cephadm从ceph的octopus版本开始支持 安装需要主机配置安装了容器和python 3 配置安排 xff1a ceph版本 xff1a quinc
  • ceph (cephadm)集群部署

    ceph 集群部署 cephadm 方法1 xff1a ansible ceph ansible使用Ansible部署和管理Ceph集群 xff08 1 xff09 ceph ansible被广泛部署 xff08 2 xff09 ceph
  • 【测试】 FIO:ceph/磁盘IO测试工具 fio(iodepth深度)

    目录 随看随用 NAS文件系统测试 块系统测试 FIO用法 FIO介绍 FIO 工具常用参数 xff1a FIO结果说明 I O 的重放 xff08 39 录 39 下实际工况的IO xff0c 用fio 39 重放 39 xff09 fi
  • ceph delete pool

    参考 xff1a Pools Ceph Documentation 前言 xff1a 网上的写的乱七八糟不是你抄我就是我抄你 写的完全瞎扯 简直看不下去 官网截图 xff1a 准备 1 查看pool名称 ceph osd lspools 创
  • s3操作ceph 创建bucket 报错 命名 错误 botocore.exceptions.ClientError: An error occurred (InvalidBucketName)

    报错信息 Traceback span class token punctuation span most recent call last span class token punctuation span s3 create bucke
  • 【Ceph】1 pools have many more objects per pg than average

    公司 Ceph 集群从 v12 升级到 v14 后 今天某个 CephFS 的集群收到一个 HEALTH WARN 的告警 具体的 Warning 的信息为 1 pools have many more objects per pg tha
  • Ceph:ceph修复osd为down的情况

    ceph修复osd为down的情况 今天巡检发现ceph集群有一个osds Down了 通过dashboard 查看 ceph修复osd为down的情况 点击查看详情 可以看到是哪个节点Osds Down 了 通过命令查看Osds状态 查看
  • PG概述及OSD对PG状态的影响

    前言 随着分布式存储的广泛应用 目前对PG的关注越来越多 本文基于ONStor分布式存储系统简要介绍一下PG的状态变化 重点说明OSD对PG状态的影响 一 Ceph分布式存储概述 Ceph是一个统一的分布式存储系统 设计初衷是提供较好的性能
  • Ceph论文译文--Ceph:一个可扩展,高性能分布式文件系统

    译者注 本文是出于作者对于ceph的兴趣 在开源中国上关注ceph翻译 没有看到ceph论文的相关翻译 索性在阅读过程中把它翻译了出来 花费了几个周末时间 翻译过程中收获颇多 现把译文分享出来 如对您有益则倍感荣幸 肯定有很多不足之处 如有
  • Ceph运维存储 命令管理操作

    分布式存储运维操作 集群服务管理常用命令 统一节点上的ceph conf文件 将admin节点上修改的ceph conf 推送给所有其他节点 overwrite conf强制覆盖 ceph deploy overwrite conf con
  • ceph-cursh规则实战及PGS unknown 问题处理

    问题描述 root ceph mon01 ceph s cluster id 92d4f66b 94a6 4c40 8941 734f3c44eb4f health HEALTH ERR 1 filesystem is offline 1
  • 学一点Ceph知识:初识Ceph

    Ceph是什么 Ceph是一个开源的分布式存储系统 可大规模扩展 高性能 无单点故障 在普通的服务器上可以支持到PB级容量 商用机器上支持的容量可以达到EB级别 Ceph的竞争力 市面上提供云存储的分布式系统如阿里云的OSS 底层存储框架为
  • 基于dmclock分布式限流策略

    结合Cepb自身的特点 较为合理的做法是将QoS机制直接嵌入每个OSD中来实现 dmclock基本原理 mclock算法 mClock基本原理主要包含以下两个方面 1 为客户端设置一套QoS模板 并在每个1 0请求中携带该QoS模板 2 服
  • ceph安装部署

    Ceph 简介 存储基础 单机存储设备 单机存储的问题 分布式存储的类型 分布式存储 软件定义的存储 SDS Ceph 架构 Ceph 核心组件 编辑 Pool中数据保存方式支持两种类型 OSD 存储后端 Ceph 数据的存储过程 Ceph
  • BlueStore 架构及原理分析

    BlueStore 架构及原理分析 Ceph 底层存储引擎经过了数次变迁 目前最常用的是 BlueStore 在 Jewel 版本中引入 用来取代 FileStore 与 FileStore 相比 Bluesore 越过本地文件系统 直接操
  • Loongnix单机部署Ceph(LoongArch架构、Ceph N版、手动部署MON、OSD、MGR、Dashboard服务)

    基础环境信息 CPU 龙芯3C5000L 2 内存 128G 硬盘 系统盘 一块512G的NVME的SSD 数据盘 三块16T的HDD 操作系统版本 Loongnix 8 4 Ceph版本 Ceph 14 2 21 Nautilus Cep
  • ceph分布式存储集群部署及应用

    分布式文件系统 Distributed File System 分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上 而是通过计算机网络与节点相连 分布式文件系统的设计基于C S模式 常用分布式文件系统 Lustre Ha
  • Ceph入门到精通-smartctl 查看硬盘参数

    smartctl 参数含义 Model Family Toshiba s Enterprise Capacity HDD Device Model TOSHIBA MG08ACss Serial Number sssssss LU WWN
  • Flink 使用 Ceph 作为持久存储

    Flink 文档建议 Ceph 可以用作状态的持久存储 https ci apache org projects flink flink docs release 1 3 dev stream checkpointing html http

随机推荐

  • 关于DSO直接法与IMU预积分联合VIO/SLAM一些思路

    本文不适合初学者 xff1b 干货多没写具体方法 xff0c 目前还在数论分解和思考中 xff0c 估计得2个月后完成 必要性 xff1a 1 常规VIO系统如VINS MONO建立的地图质量太差 xff0c 稀疏且不便认知 2 假设并入D
  • 主流VIO/VSLAM系统改造与工程化落地

    今天主要写针对主流VIO和VSLAM如VINS MONO和DSO的工程改造思路 肯定是有相当价值的 xff0c 总体写得比较简单 xff0c 需要具备软件 硬件 算法等各方面综合能力才能掌握主要路径 xff0c 具体实现方面以后由其他同事来
  • VIO与全局快门及轮速计的一些应用小技巧

    封面就用一个可爱的小车车 之前各种针对VIO xff0c VSLAM和VINS的工程注意事项都讲过了 今天的内容主要是针对VSLAM xff0c VIO的实用性 比如Td xff0c 同步对时 xff0c 内参 xff0c 外参这一串 最近
  • 关于机器人状态估计(12)-VIO/VSLAM的稀疏与稠密

    VIO三相性与世界观室内ALL IN ONE 首先以此链接先对近期工作的视频做个正经的引流 xff0c 完成得这么好的效果 xff0c 仅仅是因为知乎限流1分钟以内的视频 xff0c 导致整个浏览量不到300 xff0c 让人非常不爽 这套
  • 关于机器人状态估计(13)-线性代数有多重要?18.06总结

    太久没更新主要是在忙开发和测试 xff0c 这几个月被很多同学提问 xff0c 同时接触了一些实习生 普遍发现动手能力不错 xff0c 数学基础却差异很大 从我身边电子 xff0c CV或者SLAM做得比较杰出的朋友来看 xff0c 大家普
  • postman的安装与使用

    目录 第一部分 xff1a 基础篇postman1 安装postman进入postman官网 如果是mac系统可以直接点击mac app安装 第二部分 xff1a 进阶篇1 使用自带的脚本对接口进行测试 第一部分 xff1a 基础篇 pos
  • DMA案例 外设到内存搬运

    DMA案例 外设到内存搬运 需求 使用DMA的方式将串口接收缓存寄存器的值搬运到内存中 xff0c 同时闪烁LED1 CubeMX配置 串口配置 DMA配置 串口中断配置 用到的库函数 HAL UART ENABLE span class
  • 用rs_lidar雷达跑lio_sam

    1 准备工作 imu绑定串口有线连接雷达并能用rviz显示雷达点云用两个imu标定包标定imu在完成第二步必要的工作后 xff0c 配置LIO SAM config 下的params yaml参数 xff0c 更改之前建议备份在旁边复制粘贴
  • ubuntu18.04安装ros及解决rosdep update失败问题

    1 安装ros 转自 https blog csdn net qq 44830040 article details 106049992 ops request misc 61 257B 2522request 255Fid 2522 25
  • 球机是枪机和云台机的结合体

    1 枪机是监控类CCD摄像机中一种 枪机外观长方体 xff0c 前面是C CS镜头接口 xff0c 枪机不包含镜头 所谓的枪机主要从外型 镜头安装接口上区分 2 监控类摄像机主要有 xff1a 枪机 小半球 大半球 一体机 球机几个类别 枪
  • ROS学习笔记-1

    一 ROS简介 ROS全称Robot Operating System 机器人操作系统 ROS是适用于机器人的开源元操作系统 ROS集成了大量的工具 xff0c 库 xff0c 协议 xff0c 提供类似OS所提供的功能 xff0c 简化对
  • C语言指针详解(1)

    指针详解 之前我说过一篇关于指针在C语言中的基本使用 xff0c 这次我再来细讲一下指针的其他内容 目录 一 指针详解 1 指针定义 2 指针类型 3 野指针 4 如何规避野指针 xff1f 1 指针定义 指针理解的2个要点 xff1a 1
  • C语言结构体详解 (2) 结构体内存对齐,默认对齐数

    前言 上次 xff0c 我讲到了关于结构体的基本使用 xff0c 大家若感兴趣的话看一看我之前写的一篇结构体博客 xff0c 里面记载了我对于结构体的创建 初始化 嵌套结构体 结构体的访问访问方式和结构体传参方式等知识的见解 xff0c C
  • C语言——十进制转换十六进制

    请编写程序 xff0c 输入十进制数 xff0c 输出对应的十六进制数 输入格式 十进制非负整数 输出格式 对应的十六进制非负整数 要求 xff1a 十六进制数中的字母均为大写形式 输入样哩 5050 输出样例 13BA 代码输入 xff1
  • 如何编写头文件及使用Makefile

    头文件中应该写什么 xff1a 头文件可能会被任意源文件包含 xff0c 意味着头文件中的内容可能会在多个目标文件中存在 xff0c 要保证合并时不要冲突 重点 xff1a 头文件只编写声明语句 xff0c 不能有定义语句 全局变量声明 函
  • 剖析Linux内存中的/proc/meminfo参数

    PROC MEMINFO之谜 proc meminfo是了解Linux系统内存使用状况的主要接口 xff0c 我们最常用的 free vmstat 等命令就是通过它获取数据的 xff0c proc meminfo所包含的信息比 free 等
  • 看完秒懂:Linux DMA mapping机制分析

    说明 xff1a Kernel版本 xff1a 4 14ARM64处理器 xff0c Contex A53 xff0c 双核使用工具 xff1a Source Insight 3 5 xff0c Visio 1 概述 DMA xff08 D
  • linux网络编程-多进程实现TCP并发服务器

    服务端流程步骤 socket函数创建监听套接字lfd bind函数将监听套接字绑定ip和端口 listen函数设置服务器为被动监听状态 xff0c 同时创建一条未完成连接队列 xff08 没走完tcp三次握手流程的连接 xff09 xff0
  • Linux内核中断下半部工作队列(work queue)

    工作队列work queue 工作队列 xff08 work queue xff09 是中断下半部的一种实现机制 xff0c 主要用于耗时任务处理 xff0c 由内核线程代表进程执行 工作队列运行于进程上下文 xff0c 因此允许阻塞 运行
  • 手把手带你部署Ceph集群

    前言 xff1a Ceph作为开源的分布式文件系统 xff0c 可以轻松地将存储容量扩展到PB以上并拥有不错的性能 Ceph提供对象存储 块存储和文件系统三种存储方式 xff0c 如果不想花时间安装ceph xff0c 可以通过ceph d