Skip to main content
NetApp virtualization solutions
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

使用 ONTAP NVMe/TCP 为 OpenNebula 配置 LVM Thin

贡献者 sureshthoppay

使用 NVMe over TCP 协议,在 OpenNebula 主机之间配置 Logical Volume Manager (LVM) 数据存储,以实现 NetApp ONTAP 的共享存储。此配置通过现代 NVMe 协议,在标准以太网网络上提供高性能的块级存储访问。

初始虚拟化管理员任务

完成这些初始任务,让 OpenNebula 主机为 NVMe/TCP 连接做好准备,并为存储管理员收集必要的信息。

  1. 确认两个 Linux VLAN 接口可用。

  2. 在每台 OpenNebula 主机上,运行以下命令来收集主机启动器信息。

    nvme show-hostnqn
  3. 向存储管理员提供收集的主机 NQN 信息以及主机名,并请求所需大小的 NVMe 命名空间。

存储管理员任务

如果您是ONTAP新手,请使用系统管理器以获得更好的体验。

  1. 确保SVM可用且已启用NVMe协议。请参阅 "ONTAP 9 上的 NVMe 任务文档"

  2. 创建 NVMe 命名空间。

  3. 创建子系统并分配给主机 NQN。为集群中的所有 OpenNebula 主机以及前端服务器创建一个子系统。前端服务器在子系统分配中是可选的,但对于图像数据存储是必需的。

  4. 请确保在安全选项卡中启用反勒索软件保护。

  5. 通知虚拟化管理员 NVMe 命名空间已创建。

最终虚拟化管理员任务

完成这些任务,以在 OpenNebula 中将 NVMe 命名空间配置为共享 LVM 数据存储。

  1. 导航到群集中每个 OpenNebula 主机上的 shell 并创建 /etc/nvme/discovery.conf 文件。更新特定于您的环境的内容。

    root@onehost01:~# cat /etc/nvme/discovery.conf
    # Used for extracting default parameters for discovery
    #
    # Example:
    # --transport=<trtype> --traddr=<traddr> --trsvcid=<trsvcid> --host-traddr=<host-traddr> --host-iface=<host-iface>
    
    -t tcp -l 1800 -a 172.21.118.153
    -t tcp -l 1800 -a 172.21.118.154
    -t tcp -l 1800 -a 172.21.119.153
    -t tcp -l 1800 -a 172.21.119.154
  2. 登录到 NVMe 子系统。

    nvme connect-all
  3. 若要在重新启动时保留 NVMe 命名空间,请启用 nvmf-autoconnect 服务。

    systemctl enable nvmf-autoconnect
  4. 检查并收集设备详细信息。

    nvme list
    nvme netapp ontapdevices
    nvme list-subsys
    lsblk -N
  5. SSH 到其中一个 frontend 服务器并根据所需的 Datastore 类型创建配置文件。有关完整的属性列表,请参阅 "OpenNebula LVM 文档"。示例文件如下所示:

    备份
    1. 对于 Restic,

    $cat nvmetcp-restic.conf
    NAME = "Backup-Restic-NVMETCP"
    TYPE = "BACKUP_DS"
    
    DS_MAD = "restic"
    TM_MAD = "-"
    
    RESTIC_PASSWORD = "<restic_password>"
    RESTIC_SFTP_SERVER = "<backup server>"
    1. 对于 Rsync,

    $cat nvmetcp-rsync.conf
    NAME = "Backup-Rsync-NVMETCP"
    TYPE = "BACKUP_DS"
    
    DS_MAD = "rsync"
    TM_MAD = "-"
    
    RSYNC_USER = "<rsync_user>"
    RSYNC_HOST = "<backup server>"
    文件
    $cat nvmetcp-kernel.conf
    NAME = "File-Kernel-NVMETCP"
    TYPE = "FILE_DS"
    DS_MAD = "fs"
    TM_MAD = "local"
    SAFE_DIRS = "/var/tmp/files"
    映像
    $cat nvmetcp-image.conf
    NAME = "Image-NVMETCP01"
    TYPE = "IMAGE_DS"
    DS_MAD = "fs"
    TM_MAD = "fs_lvm_ssh"
    DISK_TYPE = "block"
    LVM_THIN_ENABLE = "yes"
    系统
    $cat nvmetcp-system.conf
    NAME = "System-NVMETCP02"
    TYPE = "SYSTEM_DS"
    TM_MAD = "fs_lvm_ssh"
    DISK_TYPE = "block"
    BRIDGE_LIST = "<space-separated list of OpenNebula hosts>" # If NVMe namespace not presented to frontend hosts
    LVM_THIN_ENABLE = "yes"
  6. 执行 onedatastore create <configuration file>。请注意创建后返回的数据存储 ID。

    onedatastore 创建 nvmetcp-system.conf ID: 109

  7. 使用 vgcreate <vg_name> <nvme_device> 命令在 NVMe 命名空间上创建卷组。对于映像数据存储,卷组名称可以命名为任何所需的名称。对于系统数据存储,卷组名称必须为格式 vg-one-<datastore id>。这是 OpenNebula 识别系统数据存储的正确卷组所必需的。如果要创建备份/文件/映像数据存储,请执行以下步骤。对于系统数据存储,请停止此处。

  8. 使用 lvcreate -l 100%FREE -n <logical volume name> <volume group name> 命令创建逻辑卷精简池。对于系统数据存储区,OpenNebula 在需要时自动创建 LVM 精简池。

  9. 使用 mkfs.ext4 /dev/<volume group>/<logical volume> 命令在逻辑卷上创建文件系统。系统数据存储不需要创建文件系统。

  10. 更新 /etc/fstab 或 automount 配置,以使用所需的挂载选项挂载数据存储库。假设默认数据存储库位置为 /var/lib/one/datastores。可通过 onedatastore show <datastore_id> 进行验证。如果没有,请检查 /etc/one/oned.conf 中的 DATASTORE_LOCATION 参数。确保 <datastore_id> 文件夹存在于数据存储库位置下。示例条目如下所示:

    使用 /etc/fstab
    /dev/<vg name>/<logical volume> /var/lib/one/datastores/<datastore_id> ext4 _netdev,noauto,x-systemd.automount,nofail 0 2
    使用 automount
    /var/lib/one/datastores/<datastore_id> -fstype=ext4,_netdev,noauto,x-systemd.automount,nofail,rw :/dev/<vg name>/<logical volume>
  11. 使用 mount -asystemctl reload autofs 命令挂载数据存储库。

  12. 使用 mount 命令验证数据存储库是否已装载,并使用 `onedatastore show <datastore_id>`命令验证数据存储库容量。

  13. 确保 oneadmin 用户和组拥有数据存储文件夹。使用 `chown -R oneadmin:oneadmin /var/lib/one/datastores/<datastore_id>`命令调整权限。