Ceph运维操作

2023-05-16

1. 操控集群

1.1 UPSTART

Ubuntu系统下,基于ceph-deploy部署集群后,可以用这种方法来操控集群。

列出节点上所有Ceph进程:

start ceph-all

启动节点上特定类型的Ceph进程:

sudo start ceph-osd id={id}
sudo start ceph-mon id={hostname}
sudo start ceph-mds id={hostname}

停止特定类型的Ceph进程的某个实例:

1.2 SYSVINIT 

在 CentOS 、 Redhat 、 Fedora 和 SLES 发行版上可以通过传统的 sysvinit 运行 Ceph , Debian/Ubuntu 的较老的版本也可以用此方法。

命令格式:

2. 监控集群 

2.1 检查集群状态

执行 ceph status或则 ceph **-**s可以查看集群的状态:

  1. active+clean:说明集群健康运行

  2. undersized+degraded:如果有OSD节点宕机,可能进入此状态。降级后还是可以正常读写数据

  3. undersized+degraded+peered:如果超过min size要求的OSD宕机,则不可读写,显示为此状态。min size默认2,副本份数默认3。执行下面的命令可以修改min size:

    2.2 检查存储用量 
    

    执行命令 ceph df可以查看集群的数据用量及其在存储池内的分布情况:

    2.3 检查MON状态 
    
    2.4 检查MDS状态 
    
    2.5 检查OSD状态 
    

    通过PG这个中间层,Ceph确保了数据不会被绑死在某个特定的OSD。要追踪错误根源,你需要检查归置组、以及底层的OSD。

    执行下面的命令,获取最简短的OSD状态:

    osd.0 up   out weight 0 up_from 70 up_thru 172 down_at 65 last_clean_interval [51,60) 10.5.39.13:6800/48 10.5.39.13:6801/48 10.5.39.13:6802/48 10.5.39.13:6803/48 exists,up 354a6547-3437-46d6-a928-f5633eb7f059
    osd.1 up   in  weight 1 up_from 74 up_thru 327 down_at 63 last_clean_interval [55,60) 10.5.39.42:6800/48 10.5.39.42:6801/48 10.5.39.42:6802/48 10.5.39.42:6803/48 exists,up 0fb4bb77-7c84-45ac-919a-2cc350fc62b9
    

    执行 ceph osd tree可以在OSD树中打印各OSD的位置、状态、权重。如果OSD的in数量大于up数量,可以通过此命令快速定位:

    2.6 检查PG状态 
    

    执行命令 ceph pg stat可以查看全局性的PG统计信息。

    可以获取PG列表:

    # PG ID 格式为 存储池号.归置组ID,归置组ID为一个十六进制数字
    ceph pg map 1.13d
    # 输出
    osdmap e790 pg 1.13d (1.13d) -> up [4,6,5] acting [4,6,5]
    

    执行 ceph status也可以看到PG的统计性信息。

    执行 ceph pg 1.13d query可以查看某个PG的非常细节的信息。

    3. 操控MON

    3.1 增加

    3.2 删除 
    
    3.3 monmap 
    

    导出monmap:

    monmaptool --print monmap
    

    从monmap中删除一个MON:

    monmaptool  monmap --add Xenon 10.0.5.1:6789
    

    导入monmap到MON节点:

    4. 操控OSD 
    

    4.1 增加

    4.2 查询 
    
    4.3 启动 
    

    一旦启动了 OSD ,其状态就变成了 up+in ,此时可以通过ceph -w来观察数据迁移。归置组状态会变为active, some degraded objects,最终变回active+clean

    4.4 删除 
    

    删除OSD之前,应该评估集群容量,保证操作之后,集群不会到达 near full 比率

    4.5 标记为宕机 
    
    4.6 标记为踢出 
    

    踢出OSD后,Ceph会进行数据迁移,达到再平衡。归置组状态会变为active, some degraded objects,最终变回active+clean。

    # 把被踢出的集群重新加进来
    ceph osd in {osd-num}
    # 将其权重标记为0,而非踢出
    ceph osd crush reweight osd.{osd-num} 0 
    

    等待数据迁移完毕后,再将OSD踢出。

    4.7 标记为进入

    你可能需要更新CRUSH map才能让新进入的OSD接受数据:

    4.8 标记为丢失 
    

    标记OSD为lost,可能导致数据丢失,谨慎:

    4.9 设置权重 
    
    4.10 清理OSD 
    
    4.11 深度清理OSD 
    
    4.12 修复OSD 
    
    4.13 测试OSD性能 
    
    4.14 空间不足处理 
    

    Ceph不允许向满的 OSD 写入数据,以免丢失数据。在运营着的集群中,你应该能收到集群空间将满的警告。mon osd full ratio 默认为 0.95 ,也就是说达到 95% 时它将阻止客户端写入数据; mon osd backfillfull ratio 默认为 0.90 ,也就是说达到容量的 90% 时它会阻塞,防止回填启动; OSD 将满比率默认为 0.85 ,也就是说达到容量的 85% 时它会产生健康警告。

    使用下面的命令临时修改设置,否则你可能没有机会清理不需要的RBD以腾出空间:

    5. 操控MDS 
    

    5.1 增加

    首先,在/var/lib/ceph/mds/mds.N创建一个数据挂载点。N是MDS的ID,通常就是主机名。

    然后,修改Ceph配置,添加一个mds段。修改完毕后进行配置分发:

    sudo ceph auth get-or-create mds.N mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > \
        /var/lib/ceph/mds/ceph-N/keyring
    

    5.2 移除

    执行下面的命令将目标mds标记为宕机:

    systemctl stop ceph-mds@Neon.service
    systemctl disable ceph-mds@Neon.service
    rm -rf /var/lib/ceph/mds/ceph-Neon 
    

    如果服务是通过/etc/init.d/ceph加载的,则:

    5.3 状态 
    

    查看守护进程的简短状态:

    5.4 启动 
    
    5.5 引用守护进程 
    

    你可以使用多种方式来引用一个MDS守护进程:

    5.6 管理故障转移 
    

    和MDS进程的Standby行为相关的配置项包括:

    # a、b两个MDS互备,负责Rank 0
    [mds.a]
    mds standby replay = true
    mds standby for rank = 0
     
    [mds.b]
    mds standby replay = true
    mds standby for rank = 0
    

    5.7 修改配置

    5.8 启用诊断信息 
    
    5.9 手工故障转移 
    

    标记当前活动MDS为失败,触发故障转移:

    6. 操控CephFS 
    

    6.1 创建

    要创建一个文件系统,你至少需要两个存储池,一个存放数据,另外一个存放元数据。注意:

    1. 元数据池的副本份数要设置的高,因为任何元数据的丢失都会导致整个文件系统不可用
    2. 元数据池应该使用高速存储,例如SSD,因为这对客户端操作的延迟有直接影响

    示例:

    mds: cephfs-1/1/1 up  {0=Carbon=up:active}
    

    6.2 列出

    6.3 状态 
    

    查看CephFS的详细状态,包括MDS列表、Rank列表等:

    6.4 删除 
    
    6.5 关闭 
    
    6.6 查看选项 
    

    要获取某个文件系统的信息,可以:

    6.7 设置选项 
    
    6.8 增减数据池 
    
    6.9 设为默认 
    

    如果集群中有多个文件系统,而客户端在挂载时没有明确指定使用哪个,则使用默认文件系统:

    6.10 使用EC池 
    

    EC池可以作为Ceph的数据池,但是需要启用overwirte:

    6.11 配额 
    

    CephFS支持对任何一个子目录进行配额。但是,需要注意以下限制:

    1. 需要客户端协作,因此被篡改过的客户端可以突破配额
    2. 配额不是非常精确的
    3. 内核客户端,仅仅在4.17+才支持配额。用户空间客户端fuse、libcephfs都支持配额

    设置配额(设置为0则移除配额):

    getfattr -n ceph.quota.max_bytes /some/dir
    getfattr -n ceph.quota.max_files /some/dir 
    

    7. 挂载CephFS

    7.1 内核驱动

    你可以直接使用Linux内核提供的驱动来挂载CephFS:

    mount -t ceph 10.0.1.1:6789:/ /mnt/cephfs -o name=admin,secret=AQDRNBZbCp3WMBAAynSCCFPtILwHeI3RLDADKA==
    # 或者指定包含密钥的文件
    mount -t ceph 10.0.1.1:6789:/ /mnt/cephfs -o name=admin,secretfile=/etc/ceph/admin.secret
    

    如果报can’t read superblock,说明客户端内核不支持。

    要实现自动挂载,你需要修改fstab:

    7.2 FUSE 
    

    要在用户空间挂载CephFS,你需要:

    1. 将Ceph配置文件拷贝到客户端,命名为/etc/ceph/ceph.conf

    2. 将Keyring拷贝到客户端,命名为/etc/ceph/ceph.keyring:

      sudo ceph-fuse -m 10.0.1.1:6789 /mnt/cephfs
      # ceph-fuse[847]: starting ceph client                                                                                                                                             
      # 2018-06-07 19:18:25.503086 7fa5c44e1000 -1 init, newargv = 0x7fa5cd643b40 newargc=9                                                                                              
      # ceph-fuse[847]: starting fuse  
      

    如果有多个CephFS,你可以为ceph-fuse指定命令行选项–client_mds_namespace,或者在客户端的ceph.conf中添加client_mds_namespace配置。

    要实现自动挂载,你需要修改fstab:

    8. 操控存储池 
    

    8.1 设置默认参数

    8.2 运行时修改参数 
    
    8.3 创建存储池 
    
    8.4 初始化存储池 
    

    创建存储池之后,在管理节点上,使用rbd工具来初始化池:

    8.5 读写存储池配置 
    
    8.6 列出存储池 
    
    8.7 列出存储池中的对象 
    
    8.8 存储池用量 
    
    8.9 存储池配额 
    
    8.10 存储池快照 
    
    8.11 删除存储池 
    
    8.12 清空缓存池 
    
    9. 操控镜像 
    

    镜像就是块设备,所谓块是一系列连续的字节序列(例如512KB)。基于块的存储接口,是磁盘、CD、软盘、甚至磁带都使用的,是存储对象最广泛使用的方式。

    Ceph的块设备具有以下特点:thin-provisioned(精简配备)、可改变大小、跨越多OSD存储。

    9.1 列出镜像

    rbd trash ls {poolname} 
    

    9.2 查看镜像磁盘占用

    rbd diff k8s/kubernetes-dynamic-pvc | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }' 
    

    9.3 查看镜像信息

    9.4 查看镜像状态 
    

    可以看到什么客户端在使用(watch)镜像:

    9.5 创建镜像 
    
    9.6 修改镜像大小 
    
    9.7 映射为块设备 
    
    9.8 删除镜像 
    
    9.9 延迟删除 
    
    9.10 快照管理 
    
    9.11 镜像克隆 
    
    10. 镜像镜像 
    

    从Jewel开始,RBD镜像可以异步的跨越两个集群进行镜像(Mirroring)。通过配置,你可以镜像池中的所有、或者一部分镜像。

    10.1 启用镜像复制

    10.2 禁用镜像复制 
    
    11. 操控对象 
    

    11.1 创建对象

    11.2 查看对象 
    
    12. 操控CRUSH 
    
    13. 操控PG 
    

    13.1 镜像和PG对应关系

    13.2 Dump出PG统计信息 
    

    Dump出所有PG:

    # threshold默认30秒
    ceph pg dump_stuck inactive|unclean|stale|undersized|degraded [--format {format}] [-t|--threshold {seconds}]
    

    13.3 修复PG

    13.4 优先回填或修复 
    
    14. 调整PG数量 
    

    14.1 计算PG合理值

    参考官网的算法进行计算。

    14.2 确保集群健康

    执行调整之前,必须保证集群处于健康状态。

    14.3 调整数据同步参数

    为避免调整PG数量导致业务性能受到严重影响,应该调整一些参数:

     osd_backfill_scan_min = 4 
    osd_backfill_scan_max = 32 
    osd recovery threads = 1 
    osd recovery op priority = 1 
    

    14.4 调整PG数量

    14.5 调整PGP数量 
    
    15. 操控RGW 
    

    15.1 手工安装

    15.2 修改端口 
    
    systemctl restart ceph-radosgw.service
    

    15.3 启用ssl

    15.4 配置桶分片 
    

    RGW在index_pool池中存放桶(Bucket)索引数据,此池默认名为.rgw.buckets.index。

    从0.94版本开始,支持对桶索引进行分片,避免单个桶中对象数量过多时出现性能瓶颈:

    15.5 启用用户 
    

    要使用RGW的RESTful接口,你需要:

    1. 创建初始的S3接口的用户
    2. 创建Swift接口的子用户
    3. 验证用户可以访问网关

    要创建S3接口用户,需要在网关机上执行:

    {
        "user_id": "rgw",
        "display_name": "rgw",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "auid": 0,
        "subusers": [],
        "keys": [
            {
                "user": "rgw",
                "access_key": "IN01UCU1M1996LK6OM88",
                "secret_key": "AuuAbroSUlWLykbQHCbFLVO6RU2ozUEjIFkYeoqc"
            }
        ],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "rgw"
    }
    

    要创建Swift子用户,需要在网关机上执行:

    radosgw-admin key create --subuser=alex:swift --key-type=swift --gen-secret
    

    现在,你可以用自己熟悉的语言的S3、Swift客户端来验证用户是否可用。

    15.6 操控桶

    # 添加配置
    #                                               access_key           secret_key
    mc config host add rgw https://rgw.gmem.cc:7480 IN01UCU1M1996LK6OM88 AuuAbroSUlWLykbQHCbFLVO6RU2ozUEjIFkYeoqc
     
    # 创建桶
    mc mb rgw/test
    

    现在通过Rgw命令行可以看到这个桶:

    16. 管理身份验证 
    

    Ceph默认开启了cephx协议,加密认证需要消耗少量的资源。

    启用cephx后,Cephe会自动在包括/etc/ceph/ceph.$name.keyring在内的位置寻找钥匙串,你可以指定keyring选项来修改默认路径,但是不推荐

    16.1 手工启用

    在禁用了cephx的集群上,启用它的步骤为:

    1. 创建 client.admin 密钥:
      ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
      
    2. 将上述钥匙串复制到所有mon的mon data目录,例如:
      ceph auth get-or-create osd.{$id} mon 'allow rwx' osd 'allow *' -o /var/lib/ceph/osd/ceph-{$id}/keyring
      
    3. 为每个 MDS 生成密钥:
      auth cluster required = cephx
      auth service required = cephx
      auth client required = cephx
      
    4. 启动或重启Ceph集群:
      16.2 禁用认证 
      

      修改配置文件global段:

      16.3 身份验证命令 
      
      17. 管理CRUSH map 
      

      17.1 手工管理

      任何时后你都可以Dump、反编译、修改、编译、注入CURSH map。如果要完全基于手工方式管理,不使用自动生成的CRUSH map,可以设置:

      17.2 查看Dump 
      

      执行命令 ceph osd crush dump,可以将整个CRUSH导出为可读形式:

      17.3 编辑Dump 
      

      执行下面的命令,导出当前Map:

      crushtool -d curshmap -o curshmap.src
      

      源文件内容示例:

      sed -i 's/straw2/straw/g' curshmap.src
      

      修改源文件完毕后,执行下面的命令编译:

       ceph osd setcrushmap -i curshmap
      # 会输出修订版号 
      

      17.4 修改设备类型

      默认情况下,Ceph自动根据硬件类型,设置OSD的设备类型为hdd, ssd或nvme。你可以手工进行设置:

      17.5 查看规则 
      

      列出集群中的CRUSH rule:

      ceph osd crush rule dump
      

      17.6 删除规则

      17.7 创建规则 
      

      创建一个规则,仅仅使用指定类型的设备:

      17.8 应用规则 
      

      为存储池指定所使用的规则:

      17.9 编辑规则 
      

      CRUSH rule的语法如下:

      rule ssd-primary-affinity {
          ruleset 0
          type replicated
          min_size 2
          max_size 3
          # 选择名为SSD的桶
          step take ssd
          # 在上述桶中的host类型的子树中选择叶子节点,存储1个副本(第一个)
          step chooseleaf firstn 1 type host
          # 执行
          step emit
          # 选择名为HDD的桶
          step take hdd
          # 在上述桶中的host类型的子树中选择叶子节点,存储N-1个副本(所有其它副本)
          step chooseleaf firstn -1 type host
          step emit
      }
      

      示例二,在第一个机架上存储两个副本,第二个机架上存储一个副本:

      17.10 增加OSD 
      

      如果要添加OSD到CRUSH map中,执行:

      17.11 调整OSD权重 
      
      17.12 移除OSD 
      
      17.13 增加Bucket 
      
      17.14 移动Bucket 
      
      17.15 移除Bucket 
      
      17.16 调整Tunable 
      
      17.17 避免作为主OSD 
      
      17.18 分配Pool到特定OSD 
      

      使用CRUSH rule,可以限定某个Pool仅仅使用一部分OSD:

      18. 修改日志尺寸 
      

      前提条件:

      1. 集群处于OK状态
      2. 所有PG处于active+clean状态

      步骤,针对每个需要改变尺寸的OSD,一个个的处理:

      1. 修改Cephe配置,设置 osd_journal_size = NEWSIZE

      2. 禁止数据迁移(防止OSD进入out状态): ceph osd set noout

      3. 停止目标OSD实例

      4. 刷出缓存: ceph-osd **-**i OSDID **–flush-**journal

      5. 删除日志:

        # Helm安装的情况下,需要在OSD容器中执行
        ceph --admin-daemon /var/run/ceph/ceph-osd.OSDID.asok config get osd_journal_size
        
      6. 确保集群处于OK状态,所有PG处于active+clean状态

        
        19. 性能测试 
        

        19.1 rbd bench

        20. 运行时修改参数 
        

        要动态、临时(重启后消失)的修改组件的参数,可以使用tell命令。

        20.1 控制恢复进程

        21. 管理Watcher 
        

        21.1 加入黑名单

        可以将RBD上的Watcher加入黑名单,这样可以解除RBD的Watcher,再其它机器上挂载RBD:

        21.2 显示黑名单 
        
        21.3 移除黑名单 
        
        21.4 清空黑名单 
        
        22. RADOS管理 
        

        22.1 管理池

        22.2 管理快照 
        
        22.3 读写对象 
        
        22.4 读写对象属性 
        
        22.5 列出不一致PG 
        
        22.6 列出不一致对象 
        
        22.7 列出不一致快照 
        
        23. 配置仪表盘 
        

        23.1 启用仪表盘

        23.2 SSL支持配置 
        
        23.3 设置用户 
        
        23.4 管理RGW 
        
        
                          									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系: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文
  • Ceph集群更改IP地址

    由于一些原因 xff0c 有时需要将Ceph集群的IP地址进行更改 xff0c 以下为更改Ceph集群IP地址的步骤 xff1a 1 更改各机器IP地址 2 更改每台机器 etc hosts文件中的ip地址 3 更改ceph conf文件中
  • ceph (cephadm)集群部署

    ceph 集群部署 cephadm 方法1 xff1a ansible ceph ansible使用Ansible部署和管理Ceph集群 xff08 1 xff09 ceph ansible被广泛部署 xff08 2 xff09 ceph
  • Ceph部署

    1 简介 Ceph是一个高性能 可扩容的分布式存储系统 xff0c 它提供三大功能 xff1a 对象存储 xff1a 提供RESTful接口 xff0c 也提供多种编程语言绑定 兼容S3 Swift块存储 xff1a 由RBD提供 xff0
  • k8s的ceph

    ceph安装 地址 xff1a https rook io docs rook v1 8 quickstart html 特性丰富 1 xff0c 支持三种存储接口 xff1a 块存储 文件存储 对象存储 2 xff0c 支持自定义接口 x
  • ceph学习(3)——rbd-mirror双机热备

    一 概述 本文主要关注于rbd mirror的使用以及使用过程中的遇到的问题 二 环境准备 ceph版本 14 2 16 服务器 3台centos7服务器 ceph1 ceph2 ceph3 硬盘 每台服务器1块10GB以上硬盘做osd 分
  • 分布式存储Ceph中的逻辑结构Pool和PG

    Ceph中的逻辑对象有Object Pool PG 本文简单介绍相关的概念以及之间的关系 PG状态变化过程等 1 Ceph集群中的逻辑结构 1 1 Object Object是Ceph的最小存储单元 大小可以自己定义通常为2M或4M 每个O
  • Ubuntu22.04搭建ceph 集群

    Ceph是一个开源的 提供软件定义的 统一的分布式存储系统 设计初衷是提供较好的性能 可靠性和可扩展性 open source distributed reliable scalable unified 统一的 意味着一套存储系统同时提供块
  • Ceph入门到精通-ceph对于长文件名如何处理

    RADOS object with short name 上一篇博文 我们将介绍了对象相关的数据结构ghobject t 以及对象在底层文件系统存储的文件名 以及如何从文件名对应到 ghobject t对象 映射关系如下图所示 这里面有一个
  • Ceph性能优化总结(v0.94)

    如需转载请标明作者 原文地址 http xiaoquqi github io blog 2015 06 28 ceph performance optimization summary 最近一直在忙着搞Ceph存储的优化和测试 看了各种资料
  • 学一点Ceph知识:初识Ceph

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

    一 ceph特点高性能 1 摒弃了传统的集中式存储元数据寻址的方案 采用CRUSH算法 数据分布均衡 并行度高 2 考虑了容灾域的隔离 能够实现各类负载的副本放置规则 例如跨机房 机架 感知等 3 能够支持上千个存储节点的规模 支持TB到P
  • Ceph集群中指定OSD 创建 pool

    导读 如何利用crush来对不同数据指定不同设备的osd存储 这边我是用虚拟机演示 所以都是hdd 这边假设osd0 2 4为ssd设备 osd 1 3 5为sata设备 背景 在我们的ceph集群中 可能不只有sata盘或者ssd盘 有些
  • 删除 Ceph 集群里的某个节点的全部OSD (2 of 3)

    前言 如果你的ceph集群的数据只存在在该节点的所有OSD上 删除该节点的OSD会导致数据丢失 如果集群配置了冗余replication或者EC 需要做pg 修复 出于数据安全考虑 请一定 一定 一定 备份好你要删除的OSD上的数据 这里一
  • CEPH PG incomplete状态修复

    某运营商的Kubernetes项目物理机停机维护 重启后Kubernetes部分pod无法挂载PVC 请求超时 该Kubernetes集群的后端存储使用ceph rbd块存储 检查ceph集群状态异常 root ceph node01 ce
  • s3cmd put 时提示 ERROR: S3 error: 403 (QuotaExceeded)

    配置里的rgw配额是10000000写满 s3cmd put 时提示 ERROR S3 error 403 QuotaExceeded rgw bucket default quota max objects 值为 1 查看配额信息 rad
  • rdb map出錯rbd sysfs write failed

    創建了一個rbd鏡像 rbd create size 4096 docker test 然後 在Ceph client端將該rbd鏡像映射為本地設備時出錯 rbd map docker test name client admin rbd
  • Ceph入门到精通-Macvlan网络模式

    Docker中的Macvlan网络模式提供了一种将容器直接连接到宿主机网络的方式 使得容器可以拥有自己的MAC地址和与宿主机网络的直接连接 以下是使用Macvlan网络模式的一般步骤 创建Macvlan网络 docker network c
  • 单节点集群(minikube)上的 rook ceph 中的 1 pg 规模过小运行状况警告

    我正在将 rook ceph 部署到 minikube 集群中 一切似乎都正常 我向虚拟机添加了 3 个未格式化的磁盘并已连接 我遇到的问题是 当我运行 ceph status 时 我收到一条健康温暖消息 告诉我 1 pg 尺寸不足 我到底
  • Ceph:每个 OSD PG 太多

    我使用推荐值配置了 Ceph 使用文档中的公式 我有 3 个 OSD 我的配置 我已将其放在监视器节点和所有 3 个 OSD 上 包括以下内容 osd pool default size 2 osd pool default min siz

随机推荐

  • 命令行版 Centos 7 虚拟机安装 xfce4 桌面 + x11vnc + novnc

    命令行版 Centos 7 虚拟机安装 xfce4 桌面 43 x11vnc 43 novnc 安装命令行版 Centos 7 虚拟机xfce4 桌面环境安装 x server安装 启动 xfce4 x11vncnovnc 安装命令行版 C
  • docker Centos 7 安装 xfce4 桌面 + x11vnc + novnc

    docker Centos 7 安装 xfce4 桌面 43 x11vnc 43 novnc 启动容器环境变量xfce4 桌面安装 启动 Xvfb安装 启动 xfce4 桌面 x11vnc安装 x11vnc启动 x11vnc novnc 上
  • docker kali 安装 xfce4 桌面 + tigervnc + novnc

    docker kali 安装 xfce4 桌面 43 tigervnc 43 novnc 启动容器环境变量准备工作安装xfce4 桌面tigervnc安装 tigervnc启动 tigervnc novncxfce4 启动弹窗如何关闭 xf
  • MySQL 普通查询、流式查询、游标查询以及使用 mybatis 如何实现

    MySQL 普通查询 流式查询 游标查询以及使用 mybatis 如何实现 MySQL 普通查询 流式查询 游标查询以及使用 mybatis 如何实现普通查询流式查询游标查询mybatis 如何实现参考 MySQL 普通查询 流式查询 游标
  • Thread.stop() 与 ThreadDeath 的理解、注意点以及误区

    MySQL 普通查询 流式查询 游标查询以及使用 mybatis 如何实现 Thread stop 的缺陷顶级的异常处理器不会打印关于 96 ThreadDeath 96 的信息ThreadDeath 只是一个通知 xff0c 捕获 Thr
  • spring 远程连接 rabbitMQ 报错

    1 springboot配置文件 application peroproperties spring rabbitmq username 61 guest spring rabbitmq password 61 guest spring r
  • Linux驱动开发:uboot启动流程详解

    前言 xff1a uboot 作为Linux驱动开发的 三巨头 之一 xff0c 绝对是一座绕不开的大山 当然 xff0c 即使不去细致了解uboot启动流程 依旧不影响开发者对uboot的简单移植 但秉持着知其然知其所以然 的学习态度 x
  • 基于C++实现HTTP的封装

    因为在项目中有和java后台对接的http接口 xff0c 所以在此学习和总结了一下 xff0c c 43 43 如何实现Http协议的post get put等请求方式 xff0c 通过搜集一些资料发现 xff0c 有现成的封装库可以实现
  • Python隐形水印invisible-watermark教程

    隐形水印 xff0c 顾名思义 xff0c 在图片上打上肉眼不可见的水印 xff0c 但是通过特定的解码方式可以查看水印标识 invisible watermark xff0c 一个Python库 xff0c 实现对图片加上隐形水印 xff
  • 【学习笔记】JavaScript 寻找字串的方法:includes/indexOf/search/match

    在处理数据时 xff0c 查找字符串是一种常见的操作 xff0c JavaScript 提供不同的方法来搜索字符串 其中 xff0c 最常用的方法包括 xff1a search indexOf includes 和 match xff0c
  • SLAM学习笔记——从零搭建完整的gazebo多机仿真SLAM(一)

    文章目录 引言第一部分 搭建gazebo仿真环境使用gazebo的building editor搭建地图使用launch文件加载world文件 第二部分 放入你的机器人第三部分 启动SLAM第四部分 使用键盘控制构建地图并保存键盘控制机器人
  • Ubuntu apt-get 国内镜像源替换(新手必看,超详细!各种镜像源网站都有)

    点击名称即可进入对应网站 阿里云镜像开源镜像站 xff08 已经更换地址 xff09 阿里云镜像开源社区镜像站 xff08 新地址 xff09 网易开源镜像站 清华大学开源镜像站 中科大开源镜像站 1 首先进入开源镜像站获取相应连接 这里以
  • 各种通信协议整理

    一个做嵌入式的工程师 xff0c 无论是做硬件还是软件 xff0c 每天都在接触一些通信相关的名词 xff0c 若不认真整理这些概念 xff0c 就很可能会混淆或忘记具体的含义与区别 xff0c 因为最近正好在做项目用到了SPI协议传输数据
  • client-go开发示例

    1 查看 node列表 2 查看pod列表 3 service列表 4 获取sa列表 5 查看deploy列表 6 查看pv列表 7 查看PVC列表 8 查看ns列表 9 查看ingress列表 10 查看Secret列表 11 创建sec
  • Ceph部署

    1 简介 Ceph是一个高性能 可扩容的分布式存储系统 xff0c 它提供三大功能 xff1a 对象存储 xff1a 提供RESTful接口 xff0c 也提供多种编程语言绑定 兼容S3 Swift块存储 xff1a 由RBD提供 xff0
  • API 优先级和公平性(APF)

    1 概述 目前apiserver默认的限流方式太过简单 目前k8s缺少客户端业务请求隔离 xff0c 一个错误的客户端发送大量请求可能造成其他客户端请求异常 xff0c 也不支持突发流量 2 开启APF APF测试 开启APF xff0c
  • 十大经典排序算法总结(C语言版本)

    前言 xff1a 排序算法 是最经典的算法知识 xff0c 也是每个合格程序员应该需要掌握的知识点 考虑到排序算法通常代码简短 xff0c 逻辑思维强和应用范围广等特性 xff0c 排序算法题目便成为了面试中的常客 在面试中最常考的是快速排
  • Unicode、UTF-8、UTF-16 终于懂了

    计算机起源于美国 xff0c 上个世纪 xff0c 他们对英语字符与二进制位之间的关系做了统一规定 xff0c 并制定了一套字符编码规则 xff0c 这套编码规则被称为ASCII编码 ASCII 编码一共定义了128个字符的编码规则 xff
  • Prometheus 的优雅关闭

    1 方法1 xff1a 用 pgrep f prometheus 找到运行的 Prometheus 进程号 使用 kill TERM 1234 来关闭 2 方法2 需要通过 web enable lifecycle 参数开启 lifecyc
  • Ceph运维操作

    1 操控集群 1 1 UPSTART Ubuntu系统下 xff0c 基于ceph deploy部署集群后 xff0c 可以用这种方法来操控集群 列出节点上所有Ceph进程 xff1a start ceph all 启动节点上特定类型的Ce
Powered by Hwhale