【问题标题】:Installing ceph using kolla-ansible for all-in-one setup使用 kolla-ansible 安装 ceph 进行多合一设置
【发布时间】:2020-05-14 11:01:43
【问题描述】:

我正在尝试使用启用 ceph 的 kolla-ansible 部署一体化配置

enable_ceph: "yes"
#enable_ceph_mds: "no"
enable_ceph_rgw: "yes"
#enable_ceph_nfs: "no"
enable_ceph_dashboard: "{{ enable_ceph | bool }}"
#enable_chrony: "yes"
enable_cinder: "yes"
enable_cinder_backup: "yes"
glance_backend_ceph: "yes"
gnocchi_backend_storage: "{{ 'ceph' if enable_ceph|bool else 'file' }}"
cinder_backend_ceph: "{{ enable_ceph }}"
cinder_backup_driver: "ceph"
nova_backend_ceph: "{{ enable_ceph }}"

而且,我的设置包括一个带有 Ubuntu 18.04.4 桌面版本的 Virtual Box VM,具有 2 个 CPU 内核、30 GB 磁盘(单磁盘)、2GB RAM,分区类型为 msdos。

ansible 版本==2.9.7

kolla-ansible 版本==9.1.0

为了使用 kolla-ansible 安装 ceph OSD,我读到一个分区的名称应该是 KOLLA_CEPH_OSD_BOOTSTRAP_BS。

因此,我创建了 20 GB 的根分区,即 /dev/sda1,然后为其余 20 GB 创建了扩展分区 /dev/sda2,然后是两个逻辑分区(/dev/sda5 和 /dev/sda6),每个 10 GB用于 OSD。但是在 msdos 类型的分区中,没有为分区分配名称的功能。

所以我的问题是:

  1. 如果是 msdos 类型的分区,我该如何标记分区,以便 kolla-ansible 识别 /dev/sda5 和 /dev/sda6 是为 Ceph-OSD 指定的?
  2. 是否必须有一个单独的存储驱动器而不是包含 Ceph OSD 操作系统的存储驱动器(我知道不建议将所有驱动器都放在一个磁盘中)?
  3. 如何配置我的单驱动器 HD 空间才能使用 kolla-ansible 安装 Ceph-OSD?

P.S:我还尝试使用 kolla-ansible 使用 OpenStack VM(4 个 CPU 内核,80GB 磁盘空间 - 单个驱动器,因为我没有在我的 OpenStack 基础设施中安装 Cinder)和 Ubuntu 18.04.4 Cloud 安装 ceph镜像,具有GPT分区类型,支持命名分区。分区如下:

/dev/vda1 用于根分区

/dev/vda2 用于 ceph OSD

/dev/vda3 用于 ceph OSD

但缺点是,kolla-ansible 清空了整个磁盘,导致安装失败。

非常感谢任何帮助。提前非常感谢。

【问题讨论】:

    标签: ansible openstack ceph disk-partitioning cephfs


    【解决方案1】:

    我还安装了一个以 Ceph 作为存储后端的 Kolla-Ansible 单节点一体机,所以我遇到了同样的问题。

    是的,ceph 的 bluestore 安装不适用于单个分区。我也尝试过不同的标记方式,但对我来说,它只适用于整个磁盘,而不是分区。因此,为您的虚拟设置创建一个全新的磁盘,例如 /dev/vdb

    对于标签,我使用以下作为 bash 脚本:

    #!/bin/bash
    DEV="/dev/vdb"
    (
    echo g # create GPT partition table
    echo n # new partiton
    echo   # partition number (automatic)
    echo   # start sector (automatic)
    echo +10G # end sector (use 10G size)
    echo w # write changes
    ) | fdisk $DEV
    parted $DEV -- name 1 KOLLA_CEPH_OSD_BOOTSTRAP_BS
    

    请注意,开头的DEV 已根据您的设置正确设置。这将在新磁盘上创建一个新的分区表和一个 10GB 大小的分区。 kolla-ansible deploy-run 注册标签并擦除整个磁盘,所以size-value没什么好说的,只针对磁盘上的临时分区。

    对于 kolla-ansible 中的 Ceph-OSD,一张光盘就足够了。您不需要第二个 OSD。为此,当您使用默认的 kolla 安装路径时,在您的 kolla-ansible 设置中添加以下配置文件:/etc/kolla/config/ceph.conf,其内容为:

    [global]
    osd pool default size = 1
    osd pool default min size = 1
    

    这是为了确保 kolla-ansible 只请求一个 OSD。如果您的带有globals.yml 的kolla 目录不在/etc/kolla/ 下,您还必须更改配置文件的路径。

    使用具有多个分区的单个磁盘进行设置的解决方案是将 kolla-ansible 设置中的 ceph-storage 的存储类型从 bluestore 切换为较旧的文件存储 OSD 类型。这也需要不同的分区标签,比如这里写的:https://docs.openstack.org/kolla-ansible/rocky/reference/ceph-guide.html#using-an-external-journal-drive。 对于文件存储,您需要一个带有标签KOLLA_CEPH_OSD_BOOTSTRAP_FOO 的分区和一个带有标签KOLLA_CEPH_OSD_BOOTSTRAP_FOO_J 的小日志分区(名称中的FOO 确实是必需的......)。为了能够将您的 kolla 安装切换到文件存储 OSD 类型,编辑一体机文件的 [storage] 部分,如下所示在主机旁边添加 ceph_osd_store_type=filestore,以覆盖默认的 bluestore。

    [storage]
    localhost       ansible_connection=local ceph_osd_store_type=filestore
    

    上述方法已在ansible==2.9.7kolla-ansible==9.1.0OpenStack Train release 及之前的版本中进行了测试。

    【讨论】:

    • 如果我有一个备用存储磁盘用作 OSD,您的回答会很好,但是您是否尝试过使用单个存储磁盘?有什么想法吗?
    • 是的,我也尝试过使用具有多个分区的单个磁盘,但这不适用于 kolla-ansible 中 ceph 中的 bluestore-storage。我为您提供的唯一解决方案,如果您真的只想拥有一张具有多个分区的磁盘,则将 kolla-ansible 设置中的 ceph-storage 的存储类型从 bluestore 切换到较旧的 filestore OSD类型。这也需要不同的分区标签,比如这里写的:docs.openstack.org/kolla-ansible/rocky/reference/…
    • 对于filestore,您需要一个带有标签KOLLA_CEPH_OSD_BOOTSTRAP_FOO 的分区和一个带有标签KOLLA_CEPH_OSD_BOOTSTRAP_FOO_J 的小日志分区(名称中的FOO 确实是必需的......)。我不完全确定,但是当您将 ceph_osd_store_type: "filestore" 添加到 globals.yml 的 ceph 部分时,您应该能够将您的 kolla 安装切换到文件存储,以覆盖默认的 bluestore。
    • 将我最后的 cmets 的内容添加到我上面的答案文本中
    • @Skyprenet 希望你看过我的 cmets,希望他们解决了你的问题。
    猜你喜欢
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多