1.3. Ceph OSD


当 Red Hat Ceph Storage 集群启动并运行时,您可以在运行时将 OSD 添加到存储集群中。

Ceph OSD 通常包含一个 ceph-osd 守护进程,用于一个存储驱动器及其在一个节点中的相关日志。如果节点有多个存储驱动器,则为每个驱动器映射一个 ceph-osd 守护进程。

红帽建议定期检查集群的容量,以查看它是否达到其存储容量的上限。当存储集群达到其 近 full 比率时,请添加一个或多个 OSD 来扩展存储集群的容量。

当您要减少 Red Hat Ceph Storage 集群或替换硬件的大小时,您也可以在运行时删除 OSD。如果节点有多个存储驱动器,您可能需要删除该驱动器的 ceph-osd 守护进程之一。通常,最好检查存储集群的容量,以确定您是否到达其容量的上端。确保在删除 OSD 时,存储集群不是其 接近的全满比率

重要

不要让存储集群在添加 OSD 前达到 比率。在存储集群达到 接近的全满比率 后发生的 OSD 失败可能会导致存储集群超过 比率。Ceph 会阻止写入访问权限来保护数据,直到解决存储容量问题。在不考虑首先对 比率的影响的情况下,不要移除 OSD。

1.3.1. Ceph OSD 节点配置

Ceph OSD 及其支持硬件应该类似于使用 OSD 的池的存储策略。Ceph 更倾向于在池间统一硬件,以实现一致的性能配置集。为获得最佳性能,请考虑采用相同类型或大小的驱动器的 CRUSH 层次结构。如需了解更多详细信息,请参阅 存储策略指南

如果添加了 dissimilar 大小驱动器,则需要相应地调整其权重。将 OSD 添加到 CRUSH map 时,请考虑新 OSD 的权重。硬盘容量大约增加 40%,因此较新的 OSD 节点可能比存储集群中的旧节点更大的硬盘驱动器,即它们可能具有更高的权重。

在进行新的安装前,请参阅《 红帽企业 Linux 或 Ubuntu 安装指南》中的安装 Red Hat Ceph Storage 的要求 章节。

1.3.2. 将容器 OSD ID 映射到驱动器

有时需要确定容器化的 OSD 正在使用哪个驱动器。例如,如果 OSD 出现问题,您可能需要了解它用来验证驱动器状态的驱动器。另外,对于非容器化 OSD,您引用 OSD ID 以启动和停止它,但要启动和停止容器化 OSD,您必须引用它所使用的驱动器。

先决条件

  • 在容器化环境中运行的红帽 Ceph 存储集群。
  • 具有对容器主机的 root 访问权限。

步骤

  1. 查找容器名称。例如,要识别与 osd.5 关联的驱动器,请在运行 osd.5 的容器节点上打开一个终端,然后运行 docker ps 来列出所有容器:

    示例

    [root@ceph3 ~]# docker ps
    CONTAINER ID        IMAGE                                                     COMMAND             CREATED             STATUS              PORTS               NAMES
    3a866f927b74        registry.access.redhat.com/rhceph/rhceph-3-rhel7:latest   "/entrypoint.sh"    About an hour ago   Up About an hour                        ceph-osd-ceph3-sdd
    91f3d4829079        registry.access.redhat.com/rhceph/rhceph-3-rhel7:latest   "/entrypoint.sh"    22 hours ago        Up 22 hours                             ceph-osd-ceph3-sdb
    73dfe4021a49        registry.access.redhat.com/rhceph/rhceph-3-rhel7:latest   "/entrypoint.sh"    7 days ago          Up 7 days                               ceph-osd-ceph3-sdf
    90f6d756af39        registry.access.redhat.com/rhceph/rhceph-3-rhel7:latest   "/entrypoint.sh"    7 days ago          Up 7 days                               ceph-osd-ceph3-sde
    e66d6e33b306        registry.access.redhat.com/rhceph/rhceph-3-rhel7:latest   "/entrypoint.sh"    7 days ago          Up 7 days                               ceph-mgr-ceph3
    733f37aafd23        registry.access.redhat.com/rhceph/rhceph-3-rhel7:latest   "/entrypoint.sh"    7 days ago          Up 7 days                               ceph-mon-ceph3

  2. 使用 docker exec 对来自上一输出中的任何 OSD 容器名称运行 ceph-volume lvm 列表

    示例

    [root@ceph3 ~]# docker exec ceph-osd-ceph3-sdb ceph-volume lvm list
    ====== osd.5 =======
    
      [journal]    /dev/journals/journal1
    
          journal uuid              C65n7d-B1gy-cqX3-vZKY-ZoE0-IEYM-HnIJzs
          osd id                    1
          cluster fsid              ce454d91-d748-4751-a318-ff7f7aa18ffd
          type                      journal
          osd fsid                  661b24f8-e062-482b-8110-826ffe7f13fa
          data uuid                 SlEgHe-jX1H-QBQk-Sce0-RUls-8KlY-g8HgcZ
          journal device            /dev/journals/journal1
          data device               /dev/test_group/data-lv2
          devices                   /dev/sda
    
      [data]    /dev/test_group/data-lv2
    
          journal uuid              C65n7d-B1gy-cqX3-vZKY-ZoE0-IEYM-HnIJzs
          osd id                    1
          cluster fsid              ce454d91-d748-4751-a318-ff7f7aa18ffd
          type                      data
          osd fsid                  661b24f8-e062-482b-8110-826ffe7f13fa
          data uuid                 SlEgHe-jX1H-QBQk-Sce0-RUls-8KlY-g8HgcZ
          journal device            /dev/journals/journal1
          data device               /dev/test_group/data-lv2
          devices                   /dev/sdb

    从这一输出中,您可以看到 osd.5/dev/sdb 关联。

1.3.3. 使用 Ansible 添加具有相同磁盘拓扑的 Ceph OSD

对于具有相同磁盘拓扑的 Ceph OSD,Ansible 将添加与使用 /usr/share/ceph-ansible/group_vars/osds 文件的 devices: 部分中指定的相同 OSD 节点相同的 OSD 数量。

注意

新的 Ceph OSD 节点与 OSD 的其余部分相同。

先决条件

步骤

  1. [osds] 部分的 /etc/ansible/hosts 文件中添加 Ceph OSD 节点:

    示例

    [osds]
    ...
    osd06
    $NEW_OSD_NODE_NAME

  2. 验证 Ansible 能否访问 Ceph 节点:

    [user@admin ~]$ ansible all -m ping
  3. 进入 Ansible 配置目录:

    [user@admin ~]$ cd /usr/share/ceph-ansible
  4. add-osd.yml 文件复制到 /usr/share/ceph-ansible/ 目录中:

    [user@admin ceph-ansible]$ sudo cp infrastructure-playbooks/add-osd.yml .
  5. 为 Ceph 的正常或容器化部署运行 Ansible playbook:

    [user@admin ceph-ansible]$ ansible-playbook add-osd.yml
    注意

    在添加 OSD 时,如果 playbook 与 PG 没有报告为 active+clean,请在 all.yml 文件中配置以下变量来调整重试和延迟:

    # OSD handler checks
    handler_health_osd_check_retries: 50
    handler_health_osd_check_delay: 30

1.3.4. 使用具有不同磁盘拓扑的 Ansible 添加 Ceph OSD

对于具有不同磁盘拓扑的 Ceph OSD,可以通过两种方法将新的 OSD 节点添加到现有的存储集群中。

先决条件

步骤

  1. 第一方法

    1. [osds] 部分下,将新的 Ceph OSD 节点添加到 /etc/ansible/hosts 文件中:

      示例

      [osds]
      ...
      osd06
      $NEW_OSD_NODE_NAME

    2. /etc/ansible/host_vars/ 目录下,为每个新 Ceph OSD 节点创建一个新文件:

      Syntax

      touch /etc/ansible/host_vars/$NEW_OSD_NODE_NAME

      示例

      [root@admin ~]# touch /etc/ansible/host_vars/osd07

    3. 编辑新文件,并将 devices:dedicated_devices: 部分添加到 文件中。在每个部分下,添加一个 -、空格,然后是此 OSD 节点的块设备名称的完整路径:

      示例

      devices:
        - /dev/sdc
        - /dev/sdd
        - /dev/sde
        - /dev/sdf
      
      dedicated_devices:
        - /dev/sda
        - /dev/sda
        - /dev/sdb
        - /dev/sdb

    4. 验证 Ansible 是否可以访问所有 Ceph 节点:

      [user@admin ~]$ ansible all -m ping
    5. 将目录改为 Ansible 配置目录:

      [user@admin ~]$ cd /usr/share/ceph-ansible
    6. add-osd.yml 文件复制到 /usr/share/ceph-ansible/ 目录中:

      [user@admin ceph-ansible]$ sudo cp infrastructure-playbooks/add-osd.yml .
    7. 运行 Ansible playbook:

      [user@admin ceph-ansible]$ ansible-playbook add-osd.yml
  2. 第二方法

    1. 将新 OSD 节点名称添加到 /etc/ansible/hosts 文件中,并使用 devicesdedicated_devices 选项,指定不同的磁盘拓扑:

      示例

      [osds]
      ...
      osd07 devices="['/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf']" dedicated_devices="['/dev/sda', '/dev/sda', '/dev/sdb', '/dev/sdb']"

    2. 验证 Ansible 是否可以访问所有 Ceph 节点:

      [user@admin ~]$ ansible all -m ping
    3. 将目录改为 Ansible 配置目录:

      [user@admin ~]$ cd /usr/share/ceph-ansible
    4. add-osd.yml 文件复制到 /usr/share/ceph-ansible/ 目录中:

      [user@admin ceph-ansible]$ sudo cp infrastructure-playbooks/add-osd.yml .
    5. 运行 Ansible playbook:

      [user@admin ceph-ansible]$ ansible-playbook add-osd.yml

1.3.5. 使用命令行界面添加 Ceph OSD

以下是手动添加 OSD 到 Red Hat Ceph Storage 的高级别工作流:

  1. 安装 ceph-osd 软件包并创建新的 OSD 实例
  2. 准备并挂载 OSD 数据和日志驱动器
  3. 将新 OSD 节点添加到 CRUSH map
  4. 更新所有者和组权限
  5. 启用并启动 ceph-osd 守护进程
重要

ceph-disk 命令已弃用。ceph-volume 命令现在是从命令行界面部署 OSD 的首选方法。目前,ceph-volume 命令只支持 lvm 插件。红帽将在本指南中将两个命令作为参考提供示例,以便存储管理员有时间将依赖 ceph-disk 的任何自定义脚本转换为 ceph-volume

有关使用 ceph-volume 命令的更多信息,请参见《红帽 Ceph 存储管理指南》

注意

对于自定义存储集群名称,在 cephceph-osd 命令中使用 --cluster $CLUSTER_NAME 选项。

先决条件

步骤

  1. 启用 Red Hat Ceph Storage 3 OSD 软件存储库。

    Red Hat Enterprise Linux

    [root@osd ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms

    Ubuntu

    [user@osd ~]$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list'
    [user@osd ~]$ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -'

  2. 创建 /etc/ceph/ 目录:

    # mkdir /etc/ceph
  3. 在新 OSD 节点上,从其中一个 Ceph Monitor 节点上复制 Ceph 管理密钥环和配置文件:

    Syntax

    scp $USER_NAME@$MONITOR_HOST_NAME:/etc/ceph/$CLUSTER_NAME.client.admin.keyring /etc/ceph
    scp $USER_NAME@$MONITOR_HOST_NAME:/etc/ceph/$CLUSTER_NAME.conf /etc/ceph

    示例

    [root@osd ~]# scp root@node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
    [root@osd ~]# scp root@node1:/etc/ceph/ceph.conf /etc/ceph/

  4. 在新的 Ceph OSD 节点上安装 ceph-osd 软件包:

    Red Hat Enterprise Linux

    [root@osd ~]# yum install ceph-osd

    Ubuntu

    [user@osd ~]$ sudo apt-get install ceph-osd

  5. 决定您要并置日志还是将专用日志用于新的 OSD。

    注意

    需要 --filestore 选项。

    1. 对于带有并置日志的 OSD:

      Syntax

      [root@osd ~]# ceph-disk --setuser ceph --setgroup ceph prepare  --filestore /dev/$DEVICE_NAME

      示例

      [root@osd ~]# ceph-disk --setuser ceph --setgroup ceph prepare  --filestore /dev/sda

    2. 对于带有专用日志的 OSD:

      Syntax

      [root@osd ~]# ceph-disk --setuser ceph --setgroup ceph prepare  --filestore /dev/$DEVICE_NAME /dev/$JOURNAL_DEVICE_NAME

      [root@osd ~]# ceph-volume lvm prepare  --filestore --data /dev/$DEVICE_NAME --journal /dev/$JOURNAL_DEVICE_NAME

      示例

      [root@osd ~]# ceph-disk --setuser ceph --setgroup ceph prepare  --filestore /dev/sda /dev/sdb

      [root@osd ~]# ceph-volume lvm prepare  --filestore --data /dev/vg00/lvol1 --journal /dev/sdb
  6. 设置 noup 选项:

    [root@osd ~]# ceph osd set noup
  7. 激活新的 OSD:

    Syntax

    [root@osd ~]# ceph-disk activate /dev/$DEVICE_NAME

    [root@osd ~]# ceph-volume lvm activate --filestore $OSD_ID $OSD_FSID

    示例

    [root@osd ~]# ceph-disk activate /dev/sda

    [root@osd ~]# ceph-volume lvm activate --filestore 0 6cc43680-4f6e-4feb-92ff-9c7ba204120e
  8. 将 OSD 添加到 CRUSH map:

    Syntax

    ceph osd crush add $OSD_ID $WEIGHT [$BUCKET_TYPE=$BUCKET_NAME ...]

    示例

    [root@osd ~]# ceph osd crush add 4 1 host=node4

    注意

    如果您指定多个存储桶,该命令将将 OSD 放置到最具体的存储桶中,它将 OSD 移到您指定的其它存储桶中。

    注意

    您还可以手动编辑 CRUSH map。请参阅 Red Hat Ceph Storage 3 的存储策略指南中的 编辑 CRUSH map 部分。

    重要

    如果仅指定 root bucket,则 OSD 将直接附加到 root,但 CRUSH 规则期望 OSD 在主机 bucket 内。

  9. 取消设置 noup 选项:

    [root@osd ~]# ceph osd unset noup
  10. 为新创建的目录更新所有者和组权限:

    Syntax

    chown -R $OWNER:$GROUP $PATH_TO_DIRECTORY

    示例

    [root@osd ~]# chown -R ceph:ceph /var/lib/ceph/osd
    [root@osd ~]# chown -R ceph:ceph /var/log/ceph
    [root@osd ~]# chown -R ceph:ceph /var/run/ceph
    [root@osd ~]# chown -R ceph:ceph /etc/ceph

  11. 如果您使用带有自定义名称的集群,请在适当的文件中添加以下行:

    Red Hat Enterprise Linux

    [root@osd ~]# echo "CLUSTER=$CLUSTER_NAME" >> /etc/sysconfig/ceph

    Ubuntu

    [user@osd ~]$ sudo echo "CLUSTER=$CLUSTER_NAME" >> /etc/default/ceph

    $CLUSTER_NAME 替换为自定义集群名称。

  12. 要确保新 OSD 已启动 并准备好接收数据,请启用并启动 OSD 服务:

    Syntax

    systemctl enable ceph-osd@$OSD_ID
    systemctl start ceph-osd@$OSD_ID

    示例

    [root@osd ~]# systemctl enable ceph-osd@4
    [root@osd ~]# systemctl start ceph-osd@4

1.3.6. 使用 Ansible 删除 Ceph OSD

有时,您可能需要缩减 Red Hat Ceph Storage 集群的容量。要使用 Ansible 从 Red Hat Ceph Storage 集群中删除 OSD,并根据使用了哪个 OSD 方案,运行 shrink-osd.ymlshrink-osd-ceph-disk.yml playbook。如果 osd_scenario 设置为 collocatednon-collocated,则使用 shrink-osd-ceph-disk.yml playbook。如果 osd_scenario 设置为 lvm,则使用 shrink-osd.yml playbook。

重要

从存储集群中移除 OSD 将销毁该 OSD 中包含的所有数据。

先决条件

  • 正在运行的红帽 Ceph 存储,由 Ansible 部署。
  • 正在运行的 Ansible 管理节点。
  • 对 Ansible 管理节点的根级别访问权限.

步骤

  1. 更改到 /usr/share/ceph-ansible/ 目录。

    [user@admin ~]$ cd /usr/share/ceph-ansible
  2. 将 Ceph 监控节点上的 /etc/ceph/ 中的 admin 密钥环复制到包含您要删除的 OSD 的节点。
  3. 将适当的 playbook 从 infrastructure-playbooks 目录复制到当前目录。

    [root@admin ceph-ansible]# cp infrastructure-playbooks/shrink-osd.yml .

    [root@admin ceph-ansible]# cp infrastructure-playbooks/shrink-osd-ceph-disk.yml .
  4. 对于 裸机或容器部署 请运行适当的 Ansible playbook:

    Syntax

    ansible-playbook shrink-osd.yml -e osd_to_kill=$ID -u $ANSIBLE_USER

    ansible-playbook shrink-osd-ceph-disk.yml -e osd_to_kill=$ID -u $ANSIBLE_USER

    替换:

    • 带有 OSD ID 的 $ID。要移除更多 OSD,请用逗号分隔 OSD ID。
    • $ANSIBLE_USER,名称为 Ansible 用户

    示例

    [user@admin ceph-ansible]$ ansible-playbook shrink-osd.yml -e osd_to_kill=1 -u user

    [user@admin ceph-ansible]$ ansible-playbook shrink-osd-ceph-disk.yml -e osd_to_kill=1 -u user
  5. 验证 OSD 是否已成功移除:

    [root@mon ~]# ceph osd tree

1.3.7. 使用命令行界面删除 Ceph OSD

从存储集群中移除 OSD 涉及更新 cluster map、移除其身份验证密钥、从 OSD map 中删除 OSD,并从 ceph.conf 文件中删除 OSD。如果节点有多个驱动器,您可能需要重复这个过程为每个驱动器删除 OSD。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 有足够的 OSD,以便存储集群没有处于 接近满 比率。
  • 具有对 OSD 节点的 root 访问权限。

步骤

  1. 禁用并停止 OSD 服务:

    Syntax

    systemctl disable ceph-osd@$OSD_ID
    systemctl stop ceph-osd@$OSD_ID

    示例

    [root@osd ~]# systemctl disable ceph-osd@4
    [root@osd ~]# systemctl stop ceph-osd@4

    OSD 停止后,它 将被关闭

  2. 从存储集群中移除 OSD:

    Syntax

    ceph osd out $OSD_ID

    示例

    [root@osd ~]# ceph osd out 4

    重要

    OSD 超时后,Ceph 将开始重新平衡数据并将其复制到存储集群中的其他 OSD 中。红帽建议在继续下一步前等待存储集群变为 active+clean。要观察数据迁移,请运行以下命令:

    [root@monitor ~]# ceph -w
  3. 从 CRUSH map 移除 OSD,使其不再接收数据。

    Syntax

    ceph osd crush remove $OSD_NAME

    示例

    [root@osd ~]# ceph osd crush remove osd.4

    注意

    您还可以解译 CRUSH map,从设备列表中删除 OSD,将设备作为主机存储桶中的项目删除,或者移除主机存储桶。如果它位于 CRUSH map 中,并且计划移除主机,然后重新编译 map 并设置它。详情请参阅 存储策略指南

  4. 删除 OSD 身份验证密钥:

    Syntax

    ceph auth del osd.$OSD_ID

    示例

    [root@osd ~]# ceph auth del osd.4

  5. 删除 OSD:

    Syntax

    ceph osd rm $OSD_ID

    示例

    [root@osd ~]# ceph osd rm 4

  6. 编辑存储集群的配置文件(默认为 /etc/ceph/ceph.conf ),并删除 OSD 条目(如果存在):

    示例

    [osd.4]
    host = $HOST_NAME

  7. 如果手动添加 OSD,则移除对 /etc/fstab 文件中的 OSD 的引用。
  8. 将更新后的配置文件复制到存储集群中所有其他节点的 /etc/ceph/ 目录中。

    Syntax

    scp /etc/ceph/$CLUSTER_NAME.conf $USER_NAME@$HOST_NAME:/etc/ceph/

    示例

    [root@osd ~]# scp /etc/ceph/ceph.conf root@node4:/etc/ceph/

1.3.8. 使用命令行界面替换日志

当日志和数据设备位于同一物理设备中时,替换日志的步骤(例如,使用 osd_scenario: 并置 )需要替换整个 OSD。但是,在日志位于数据设备的独立物理设备(例如,使用 osd_scenario: non-collocated )的 OSD 上,您可以替换日志设备。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 新分区或存储设备。

步骤

  1. 将集群设置为 noout 以防止回填:

    [root@osd1 ~]# ceph osd set noout
  2. 停止将更改日志的 OSD:

    [root@osd1 ~]# systemctl stop ceph-osd@$OSD_ID
  3. 清除 OSD 上的日志:

    [root@osd1 ~]# ceph-osd -i $OSD_ID --flush-journal
  4. 删除旧的日志分区以防止分区 UUID 与新分区冲突:

    sgdisk --delete=$OLD_PART_NUM -- $OLD_DEV_PATH
    替换
    • $OLD_PART_NUM,分区号为旧日志设备。
    • $OLD_DEV_PATH 带有到旧日志设备的路径。

    示例

    [root@osd1 ~]# sgdisk --delete=1 -- /dev/sda

  5. 在新设备上创建新日志分区。这个 sgdisk 命令会自动使用下一个可用的分区号:

    sgdisk --new=0:0:$JOURNAL_SIZE -- $NEW_DEV_PATH
    替换
    • $JOURNAL_SIZE 带有适合环境的日志大小,如 10240M
    • NEW_DEV_PATH,其路径指向用于新日志的设备的路径。
    注意

    日志的最小大小为 5 GB。通常不需要 10 GB 的值。如需更多详细信息,请联系红帽支持

    示例

    [root@osd1 ~]# sgdisk --new=0:0:10240M -- /dev/sda

  6. 在新分区中设置正确的参数:

    sgdisk --change-name=0:"ceph journal" --partition-guid=0:$OLD_PART_UUID --typecode=0:45b0969e-9b03-4f30-b4c6-b4b80ceff106 --mbrtogpt -- $NEW_DEV_PATH
    替换
    • $OLD_PART_UUID 带有相关 OSD 的 journal_uuid 文件中的 UUID。例如,对于 OSD 0, 使用 /var/lib/ceph/osd/ceph-0/journal_uuid 中的 UUID。
    • NEW_DEV_PATH,其路径指向用于新日志的设备的路径。

    示例

    [root@osd1 ~]# sgdisk --change-name=0:"ceph journal" --partition-guid=0:a1279726-a32d-4101-880d-e8573bb11c16 --typecode=0:097c058d-0758-4199-a787-ce9bacb13f48 --mbrtogpt -- /dev/sda

    运行上述 sgdisk 命令后,新日志分区已准备好用于 Ceph,并且可以在其上创建日志。

    重要

    由于 sgdisk 的限制导致无法正确创建分区,所以无法将此命令与分区创建结合使用。

  7. 创建新日志:

    [root@osd1 ~]# ceph-osd -i $OSD_ID --mkjournal
  8. 启动 OSD:

    [root@osd1 ~]# systemctl start ceph-osd@$OSD_ID
  1. 删除 OSD 上的 noout 标志:

    [root@osd1 ~]# ceph osd unset noout
  2. 确认日志与正确的设备关联:

    [root@osd1 ~]# ceph-disk list

1.3.9. 观察数据迁移

当您向 CRUSH map 添加或删除 OSD 时,Ceph 将放置组迁移到新的或现有 OSD 来重新平衡数据。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 最近添加或删除 OSD。

步骤

  1. 观察数据迁移:

    [root@monitor ~]# ceph -w
  2. 观察放置组状态从 active+clean 更改为 active,一些降级对象,最后在迁移完成时为 active+clean
  3. 要退出实用程序,请按 Ctrl + C
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.