|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 SUSE® Storage 1.12 (Dev). |
快速入门指南》
SUSE Storage的 V2 数据引擎使用存储性能开发工具包 (SPDK) 提供增强的性能。此集成降低了 I/O 延迟,同时提高了 IOPS 和吞吐量,提供了一种高性能存储解决方案,能够处理各种工作负载。
V2 数据引擎目前是技术预览功能。其支持的功能记录在 这里。
本教程将指导您完成配置环境的过程,并创建使用 V2 数据引擎的 Longhorn 卷所对应的 Kubernetes 持久存储资源(持久卷(PVs)和持久卷声明(PVCs))。
先决条件
加载内核模块
在 Debian 和 Ubuntu 上,在加载所需的内核模块之前,请安装 Linux 内核额外模块:
apt install -y linux-modules-extra-`uname -r`
您可以使用 Longhorn CLI 配置 SPDK 所需的内核模块和大页。
您可以手动安装它们:
在每个 Longhorn 节点上加载内核模块:
modprobe vfio_pci
modprobe uio_pci_generic
modprobe nvme-tcp
或者,您可以通过在启动序列中配置自动模块加载来简化每次重启后手动加载内核模块 vfio_pci、uio_pci_generic 和 nvme-tcp 的过程。有关详细说明,请查阅您的操作系统提供的手册。
参考:
-
SUSE 或 openSUSE: 在启动时加载内核模块
-
Ubuntu: 配置在启动时加载内核模块
-
RHEL: 在系统启动时自动加载内核模块
启用大页
配置大页
SPDK 使用大页来增强性能并最小化内存开销。您必须在每个 Longhorn 节点上配置 2 MiB 大小的大页以启用大页的使用。具体来说,每个 Longhorn 节点必须有 1024 页(总计 2 GiB)的可用空间。
要分配大页,请在每个节点上运行以下命令。
echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
在 /sys/kernel/mm/hugepages 下进行的分配不是持久的,并在重启后重置。要使分配持久,请使用以下方法之一:
持久分配(推荐)
要永久预分配大页,请更新内核启动参数。
-
更新 GRUB 配置
编辑
/etc/default/grub并添加大页参数。此示例分配1024 × 2MiB 页(总计 2 GiB):GRUB_CMDLINE_LINUX="hugepagesz=2M hugepages=1024"如果节点已经有内核参数,请附加这些值,而不是覆盖它们。
-
应用 GRUB 配置
BIOS 系统:
sudo update-grubRHEL 或 SUSE(GRUB2):
sudo grub2-mkconfig -o /boot/grub2/grub.cfgUEFI 系统:
sudo grub2-mkconfig -o /boot/efi/EFI/<distro>/grub.cfg -
重启节点:
sudo reboot -
验证大页:
grep Huge /proc/meminfo预期输出:
HugePages_Total: 1024 Hugepagesize: 2048 kB
-
将大页作为 Kubernetes 资源进行验证:
kubectl describe node <node-name>在 Capacity 和 Allocatable 下预期:
hugepages-2Mi: 2Gi
检查环境
使用 Longhorn 命令行工具
longhornctl 工具是用于 Longhorn 操作的 CLI。有关更多信息,请参见 命令行工具 (longhornctl)。
要检查先决条件和配置,请下载该工具并运行 check 子命令:
# For AMD64 platform
curl -sSfL -o longhornctl https://github.com/longhorn/cli/releases/download/v1.12.0/longhornctl-linux-amd64
# For ARM platform
curl -sSfL -o longhornctl https://github.com/longhorn/cli/releases/download/v1.12.0/longhornctl-linux-arm64
chmod +x longhornctl
./longhornctl check preflight --enable-spdk
结果示例:
INFO[2024-01-10T00:00:01Z] Initializing preflight checker
INFO[2024-01-01T00:00:01Z] Cleaning up preflight checker
INFO[2024-01-01T00:00:01Z] Running preflight checker
INFO[2024-01-01T00:00:02Z] Retrieved preflight checker result:
worker1:
error:
- 'HugePages is insufficient. Required 2MiB HugePages: 1024 pages, Total 2MiB HugePages: 0 pages'
- 'Module nvme_tcp is not loaded: failed to execute: nsenter [--mount=/host/proc/204896/ns/mnt --net=/host/proc/204896/ns/net grep nvme_tcp /proc/modules], output , stderr : exit status 1'
- 'Module uio_pci_generic is not loaded: failed to execute: nsenter [--mount=/host/proc/204896/ns/mnt --net=/host/proc/204896/ns/net grep uio_pci_generic /proc/modules], output , stderr : exit status 1'
info:
- Service iscsid is running
- NFS4 is supported
- Package nfs-common is installed
- Package open-iscsi is installed
- CPU instruction set sse4_2 is supported
warn:
- multipathd.service is running. Please refer to https://longhorn.io/kb/troubleshooting-volume-with-multipath/ for more information.
使用 install 子命令在安装 Longhorn 之前安装和设置预检依赖项。
master:~# ./longhornctl install preflight --enable-spdk
INFO[2024-01-01T00:00:03Z] Initializing preflight installer
INFO[2024-01-01T00:00:03Z] Cleaning up preflight installer
INFO[2024-01-01T00:00:03Z] Running preflight installer
INFO[2024-01-01T00:00:03Z] Installing dependencies with package manager
INFO[2024-01-01T00:00:10Z] Installed dependencies with package manager
INFO[2024-01-01T00:00:10Z] Cleaning up preflight installer
INFO[2024-01-01T00:00:10Z] Completed preflight installer. Use 'longhornctl check preflight' to check the result.
|
某些不可变的 Linux 发行套件,例如 SUSE Linux Enterprise Micro (SLE Micro),要求您在运行 您的 Linux 发行套件的文档应概述此类要求。例如, SLE Micro 文档 解释了通过 |
安装和设置预检依赖项后,您可以再次运行 check 子命令以验证所有环境设置是否正确。
master:~# ./longhornctl check preflight --enable-spdk
INFO[2024-01-01T00:00:13Z] Initializing preflight checker
INFO[2024-01-01T00:00:13Z] Cleaning up preflight checker
INFO[2024-01-01T00:00:13Z] Running preflight checker
INFO[2024-01-01T00:00:16Z] Retrieved preflight checker result:
worker1:
info:
- Service iscsid is running
- NFS4 is supported
- Package nfs-common is installed
- Package open-iscsi is installed
- CPU instruction set sse4_2 is supported
- HugePages is enabled
- Module nvme_tcp is loaded
- Module uio_pci_generic is loaded
使用 Longhorn 命令行工具
确保一切都已正确配置和安装,
longhornctl --kubeconfig ~/.kube/config --image longhornio/longhorn-cli:v1.12.0 install preflight --enable-spdk
有关更多信息,请参阅 Longhorn 命令行工具。
安装
启用 V2 数据引擎
安装后,通过将 v2-data-engine 设置更改为 true 来启用 V2 数据引擎。接下来,实例管理器的 pod 将自动重启。
或者,您可以在 Settings > V2 Data Engine 中启用它。
CPU 和内存使用情况
当启用 V2 数据引擎时,每个 V2 数据引擎的实例管理器 pod 使用 1 个 CPU 核心。高 CPU 使用率是由 spdk_tgt 引起的,这是在每个实例管理器 pod 中运行的一个进程,处理输入/输出 (IO) 操作并需要密集轮询。spdk_tgt 消耗 100% 的专用 CPU 核心,以有效管理和处理 IO 请求,确保存储操作的最佳性能和响应能力。
NAME CPU(cores) MEMORY(bytes) csi-attacher-57c5fd5bdf-jsfs4 1m 7Mi csi-attacher-57c5fd5bdf-kb6dv 1m 9Mi csi-attacher-57c5fd5bdf-s7fb6 1m 7Mi csi-provisioner-7b95bf4b87-8xr6f 1m 11Mi csi-provisioner-7b95bf4b87-v4gwb 1m 9Mi csi-provisioner-7b95bf4b87-vnt58 1m 9Mi csi-resizer-6df9886858-6v2ds 1m 8Mi csi-resizer-6df9886858-b6mns 1m 9Mi csi-resizer-6df9886858-l4vmj 1m 8Mi csi-snapshotter-5d84585dd4-4dwkz 1m 7Mi csi-snapshotter-5d84585dd4-km8bc 1m 9Mi csi-snapshotter-5d84585dd4-kzh6w 1m 7Mi engine-image-ei-b907910b-79k2s 3m 19Mi instance-manager-214803c4f23376af5a75418299b12ad6 1015m 133Mi (for V2 Data Engine) instance-manager-4550bbc4938ff1266584f42943b511ad 4m 15Mi (for V1 Data Engine) longhorn-csi-plugin-nz94f 1m 26Mi longhorn-driver-deployer-556955d47f-h5672 1m 12Mi longhorn-manager-2n9hd 4m 42Mi longhorn-ui-58db78b68-bzzz8 0m 2Mi longhorn-ui-58db78b68-ffbxr 0m 2Mi
您可以通过运行命令 kubectl get node <node name> -o yaml 来观察每个节点上分配的大页的利用率。
# kubectl get node sles-pool1-07437316-4jw8f -o yaml
...
status:
...
allocatable:
cpu: "8"
ephemeral-storage: "203978054087"
hugepages-1Gi: "0"
hugepages-2Mi: 2Gi
memory: 31813168Ki
pods: "110"
capacity:
cpu: "8"
ephemeral-storage: 209681388Ki
hugepages-1Gi: "0"
hugepages-2Mi: 2Gi
memory: 32861744Ki
pods: "110"
...
在 Longhorn 节点中添加 block-type 磁盘
与为传统卷设计的 filesystem-type 磁盘不同,使用 V2 数据引擎的卷在 block-type 磁盘上是持久的。因此,有必要为 Longhorn 节点配备 block-type 磁盘。
准备磁盘
如果 Longhorn 节点上没有可用的额外磁盘,您可以创建循环块设备来测试该功能。为此,请在每个 Longhorn 节点上执行以下命令以创建一个 10 GiB 的块设备。
dd if=/dev/zero of=blockfile bs=1M count=10240 losetup -f blockfile
要在运行命令 losetup -f blockfile 时显示块设备的路径,请使用以下命令。
losetup -j blockfile
将磁盘添加到 node.longhorn.io
|
从版本 1.11.0 开始,SUSE Storage 防止添加包含现有文件系统或分区表的块磁盘,以避免意外数据丢失。在添加之前,请通过运行以下命令确保磁盘是干净的: wipefs -a /path/to/block/device 如果磁盘包含现有的文件系统或分区表,磁盘添加操作将失败。代码有注释。按回车键查看。 |
您可以通过导航到节点用户界面页面并将 Disk Type 指定为 Block 来添加磁盘。接下来,在 Path 字段中提供块设备的路径。
或者,编辑 node.longhorn.io 资源。
kubectl -n longhorn-system edit node.longhorn.io <NODE NAME>
将磁盘添加到 Spec.Disks
<DISK NAME>: allowScheduling: true evictionRequested: false path: /PATH/TO/BLOCK/DEVICE storageReserved: 0 tags: [] diskType: block
稍等片刻,您将看到磁盘在 Status.DiskStatus 中显示。