手把手带你部署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集群 的相关文章

  • Windows虚拟机通过libvirt使用CEPH RBD

    kvm虚拟机通过 libvirt 挂在 ceph rbd作为数据盘 一 首先确定我们的ceph环境是HEALTH OK span class token punctuation span root 64 cephmon ceph span
  • ceph集群维护常用操作

    文章目录 通过套接字进行单机管理集群启停移除节点ceph配置文件存储池分类副本池IO纠删码池IO PG与PGPPG数量计算PG常见状态存储池管理创建存储池查看存储池删除存储池存储池配额 存储池可用参数存储池快照 通过套接字进行单机管理 可以
  • Failed to start Ceph object storage daemon osd.14

    问题 xff1a ceph集群osd变为down的状态 xff0c 并且重启osd也一直失败 分析 xff1a root 64 shnode183 systemctl status ceph osd 64 14 ceph osd 64 14
  • ceph delete pool

    参考 xff1a Pools Ceph Documentation 前言 xff1a 网上的写的乱七八糟不是你抄我就是我抄你 写的完全瞎扯 简直看不下去 官网截图 xff1a 准备 1 查看pool名称 ceph osd lspools 创
  • k8s部署Ceph

    1 Helm部署 1 1 简介 为了将Ceph部署到K8S集群中 xff0c 可以利用ceph helm项目 目前此项目存在一些限制 xff1a public和cluster网络必须一样如果Storage的用户不是admin xff0c 你
  • CentOS8联网部署Ceph-Quincy集群

    文章目录 1 环境准备1 1 关闭selinux1 2 关闭防火墙1 3 配置免密1 4 设置yum源1 5 安装依赖1 6 设置时间同步1 7 安装docker 2 安装Ceph2 1 安装cephadm2 2 部署ceph集群2 3 集
  • 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集群

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

    一 概述 随着OpenStack日渐成为开源云计算的标准软件栈 Ceph也已经成为OpenStack的首选后端存储 Ceph是一种为优秀的性能 可靠性和可扩展性而设计的统一的 分布式文件系统 ceph官方文档 http docs ceph
  • 分布式存储Ceph中的逻辑结构Pool和PG

    Ceph中的逻辑对象有Object Pool PG 本文简单介绍相关的概念以及之间的关系 PG状态变化过程等 1 Ceph集群中的逻辑结构 1 1 Object Object是Ceph的最小存储单元 大小可以自己定义通常为2M或4M 每个O
  • 【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
  • PG概述及OSD对PG状态的影响

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

    目录 1 整体架构介绍 1 1 总体介绍 1 2 整体架构 2 集群管理 2 1 Monitor 2 2 心跳管理 3 数据读写 3 1 OSD 3 2 读写流程 3 3 POOL和PG 3 4 CRUSH算法 3 4 1 Straw算法
  • Learning Ceph

    Author 海峰 http weibo com 344736086 参考章宇兄的开源项目学习ABC的方法来对ceph进行简单的学习与分析 下面是分析过程中画的图片
  • ceph-pg状态详解

    Creating 含义 PG正在创建 引起原因 创建pool的时候 根据指定的pg数量进行创建pg时出现的状态 正常状态 后果 无 解决方案 无需解决 正常状态之一Peering 含义 PG之间进行互联 就其中的对象和元数据状态达成一致 引
  • Ceph 集群在线迁移方案

    一 环境准备 1 1 场景介绍 最近收到一个需求 客户希望将运行了多年的ceph集群服务器全部更换掉 因为这些老服务器性能和容量都已经无法满足当前业务的需求 并希望在迁移到新服务器的过程中 业务不中断 在参考一些网上的方案后 选择了一个方案
  • Ceph 存储集群 - 搭建存储集群

    一 准备机器 本文描述如何在 CentOS 7 下搭建 Ceph 存储集群 STORAGE CLUSTER 一共4台机器 其中1个是管理节点 其他3个是ceph节点 hostname ip role 描述 admin node 192 16
  • CEPH PG incomplete状态修复

    某运营商的Kubernetes项目物理机停机维护 重启后Kubernetes部分pod无法挂载PVC 请求超时 该Kubernetes集群的后端存储使用ceph rbd块存储 检查ceph集群状态异常 root ceph node01 ce
  • ceph集群换盘

    一引言 某地项目运行两年后磁盘批量报错 利用smartctl检测发现出现大量扇区错误 但并未达到彻底无法读写程度 统计下来发现数量接近40块 考虑批次换盘 坏盘期间为了保证不影响业务 需拟定一个较好的方案 二 方案 在查阅一堆资料后 发现无
  • Ceph bluestore中的缓存管理

    从15年3月接触Ceph分布式存储系统 至今已经5年了 因为工作的需要 对Ceph的主要模块进行了较深入的学习 也在Ceph代码层面做了些许改进 以满足业务需要 我们主要使用M版本 最近得闲 将过往的一些学习心得 改进以及优化思路记录下了

随机推荐

  • 关于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