1. 前言
本文详细介绍如何在almalinux8.9上部署daos.2.0.0单机集群。系统环境如下:
daos: 2.0.0
linux os: almalinux 8.9
linux kernel: 4.18.0-513.5.1.el8_9.x86_64
之所以选择2.0.0版本,是因为daos从2.0.0开始是一个全新的架构设计,与1.x版本是不兼容的。其次为了方便研究daos源码,当然是版本越早,功能越少,代码逻辑更清晰。
2. 集群规划
daos_server 192.168.3.11
daos_agent 192.168.3.12
3. 系统设置
3.1. 防火墙设置
systemctl stop firewalld.service
systemctl disable firewalld.service
3.2. 开启IOMMU支持
为了让daos_server能够以非root用户运行在nvme设备上,硬件必须要支持虚拟化设备访问,也就是BIOS要开启(VT-d)功能,同时linux kernel必须要开启IOMMU支持。
3.2.1. 编辑grub配置文件
编辑/etc/default/grub
文件,修改GRUB_CMDLINE_LINUX
参数,添加intel_iommu=on
,重启生效。
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/almalinux-swap rd.lvm.lv=almalinux/root rd.lvm.lv=almalinux/swap rhgb quiet intel_iommu=on"
3.2.2. 重新生成grub.cfg文件:
grub2-mkconfig --output=/boot/grub2/grub.cfg
3.3. 配置daos yum源
在/etc/yum.repos.d/
目录下创建daos.repo
文件,并添加以下内容:
[daos-2.0.0]
name=DAOS v2.0.0 Packages Packages
baseurl=https://packages.daos.io/v2.0.0/CentOS8/packages/x86_64/
enabled=1
#gpgcheck=1
gpgcheck=0
protect=1
#gpgkey=https://packages.daos.io/RPM-GPG-KEY-2023
3.4. 重启机器
reboot
4. 集群部署
4.1. 服务端部署
4.1.1. 安装软件
dnf install daos-server
4.1.2. 配置server
name: daos_server
access_points: ['node0']
provider: ofi+tcp;ofi_rxm
control_log_mask: INFO
control_log_file: /var/log/daos/daos_server.log
transport_config:
allow_insecure: true
enable_vmd: false
engines:
-
targets: 1
first_core: 0
nr_xs_helpers: 0
fabric_iface: enp0s8
fabric_iface_port: 31416
log_mask: INFO
log_file: /var/log/daos/daos_engine.0.log
env_vars:
- FI_SOCKETS_MAX_CONN_RETRY=1
- FI_SOCKETS_CONN_TIMEOUT=2000
- DAOS_SCHED_UNIT_RUNTIME_MAX=0
# Storage definitions
scm_mount: /var/lib/daos/scm
scm_class: ram
scm_size: 4
bdev_class: file
bdev_size: 16
bdev_list: [/var/lib/daos/dev/daos-bdev]
以上配置效果为:启动一个server(node0),该server将启动一个engine,该engine将挂载1个scm和1个nvme。scm将占用4G的系统内存,nvme是本地的文件模拟出来的设备,大小为16G。
- provider:配置网卡,可以使用
daos_server network scan
命令查找。 - env_vars:配置DAOS系统环境变量,所有的环境变量可以在https://docs.daos.io/v2.0/admin/env_variables/中查找。
- scm:全名:storage-class memory,用来存元数据。
- scm_class:dcpm和ram。dcpm需要用Optane device,ram直接使用内存。
- bdev:用来存数据。
- bdev_class:file、nvme、kdev。file用来模拟nvme ssd,nvme直接使用nvme ssd,kdev使用kernel block device(/dev/sd*等)。
4.1.3. 启动服务
systemctl start daos_server.service
systemctl enable daos_server.service
测试发现,daos_server.service服务默认是使用daos_server运行,在虚拟机上部署的集群总是会启动失败,可能是因为虚拟机并不支持IOMMU。在这种情况下,可以修改/usr/lib/systemd/system/daos_server.service
,将用户改成root。
4.1.4. 存储格式化
dmg storage format
- dmg是daos-client的命令行工具,上述命令需要在客户端执行。上述命令执行后,daos server将会启动engine进程,并挂载scm。
- 启动engine可能会失败,大概率是内存不够daos分配,测试发现,对于1个engine和1个target的配置,至少需要9G内存。
4.2. 客户端部署
4.2.1. 安装软件
dnf install daos-client
4.2.2. 配置agent
name: daos_server
access_points: ['node0']
port: 10001
transport_config:
allow_insecure: true
runtime_dir: /var/run/daos_agent
log_file: /var/log/daos/daos_agent.log
- name:必须和server配置一致。
- access_points:必须和server配置一致。
4.2.3. 配置control
name: daos_server
port: 10001
hostlist: ['node0']
transport_config:
allow_insecure: true
- name:必须和server配置一致。
- hostlist:必须和server配置一致。
4.2.4. 启动服务
systemctl start daos_agent.service
systemctl enable daos_agent.service
5. 参考资料
- https://docs.daos.io/v2.0/admin/deployment/