使用 ONTAP NVMe/TCP 为 OpenNebula 配置 LVM Thin
使用 NVMe over TCP 协议,在 OpenNebula 主机之间配置 Logical Volume Manager (LVM) 数据存储,以实现 NetApp ONTAP 的共享存储。此配置通过现代 NVMe 协议,在标准以太网网络上提供高性能的块级存储访问。
初始虚拟化管理员任务
完成这些初始任务,让 OpenNebula 主机为 NVMe/TCP 连接做好准备,并为存储管理员收集必要的信息。
-
确认两个 Linux VLAN 接口可用。
-
在每台 OpenNebula 主机上,运行以下命令来收集主机启动器信息。
nvme show-hostnqn -
向存储管理员提供收集的主机 NQN 信息以及主机名,并请求所需大小的 NVMe 命名空间。
存储管理员任务
如果您是ONTAP新手,请使用系统管理器以获得更好的体验。
-
确保SVM可用且已启用NVMe协议。请参阅 "ONTAP 9 上的 NVMe 任务文档"。
-
创建 NVMe 命名空间。
-
创建子系统并分配给主机 NQN。为集群中的所有 OpenNebula 主机以及前端服务器创建一个子系统。前端服务器在子系统分配中是可选的,但对于图像数据存储是必需的。
-
请确保在安全选项卡中启用反勒索软件保护。
-
通知虚拟化管理员 NVMe 命名空间已创建。
最终虚拟化管理员任务
完成这些任务,以在 OpenNebula 中将 NVMe 命名空间配置为共享 LVM 数据存储。
-
导航到群集中每个 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 -
登录到 NVMe 子系统。
nvme connect-all -
若要在重新启动时保留 NVMe 命名空间,请启用 nvmf-autoconnect 服务。
systemctl enable nvmf-autoconnect -
检查并收集设备详细信息。
nvme list nvme netapp ontapdevices nvme list-subsys lsblk -N -
SSH 到其中一个 frontend 服务器并根据所需的 Datastore 类型创建配置文件。有关完整的属性列表,请参阅 "OpenNebula LVM 文档"。示例文件如下所示:
备份-
对于 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>"
-
对于 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" -
-
执行
onedatastore create <configuration file>。请注意创建后返回的数据存储 ID。onedatastore 创建 nvmetcp-system.conf ID: 109
-
使用
vgcreate <vg_name> <nvme_device>命令在 NVMe 命名空间上创建卷组。对于映像数据存储,卷组名称可以命名为任何所需的名称。对于系统数据存储,卷组名称必须为格式vg-one-<datastore id>。这是 OpenNebula 识别系统数据存储的正确卷组所必需的。如果要创建备份/文件/映像数据存储,请执行以下步骤。对于系统数据存储,请停止此处。 -
使用
lvcreate -l 100%FREE -n <logical volume name> <volume group name>命令创建逻辑卷精简池。对于系统数据存储区,OpenNebula 在需要时自动创建 LVM 精简池。 -
使用
mkfs.ext4 /dev/<volume group>/<logical volume>命令在逻辑卷上创建文件系统。系统数据存储不需要创建文件系统。 -
更新 /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> -
使用
mount -a或systemctl reload autofs命令挂载数据存储库。 -
使用 mount 命令验证数据存储库是否已装载,并使用 `onedatastore show <datastore_id>`命令验证数据存储库容量。
-
确保 oneadmin 用户和组拥有数据存储文件夹。使用 `chown -R oneadmin:oneadmin /var/lib/one/datastores/<datastore_id>`命令调整权限。