4.5. D3N 数据缓存
datacenter-Data-Delivery Network (D3N)使用高速存储(如 NVMe
)在访问端缓存数据集。这种缓存允许大型数据作业使用边缘每个 Rados 网关节点上可用的计算和快速存储资源。Rados 网关充当后端对象存储(OSD)的缓存服务器,将数据存储在本地以供重复使用。
每次重启 Rados 网关时,会清除缓存目录的内容。
4.5.1. 添加 D3N 缓存目录
要在 RGW 上启用 D3N 缓存,您需要在 podman unit.run
中包含 D3N 缓存目录。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装了 Ceph 对象网关.
- 管理节点的根级别访问权限。
- 每个 RGW 节点中有一个快速 NVMe 驱动器,用作本地缓存存储。
流程
为 NVMe 驱动器创建挂载点。
语法
mkfs.ext4 nvme-drive-path
示例
[ceph: root@host01 /]# mkfs.ext4 /dev/nvme0n1 mount /dev/nvme0n1 /mnt/nvme0n1/
创建缓存目录路径。
语法
mkdir <nvme-mount-path>/cache-directory-name
示例
[ceph: root@host01 /]# mkdir /mnt/nvme0n1/rgw_datacache
向
nvme-mount-path
和rgw_d3n_l1_datacache_persistent_path
提供 +rwx 权限。语法
chmod a+rwx nvme-mount-path ; chmod a+rwx rgw_d3n_l1_datacache_persistent_path
示例
[ceph: root@host01 /]# chmod a+rwx /mnt/nvme0n1 ; chmod a+rwx /mnt/nvme0n1/rgw_datacache/
使用
extra_container_args
创建/修改 RGW 规范文件,将rgw_d3n_l1_datacache_persistent_path
添加到podman unit.run
中。语法
"extra_container_args: "-v" "rgw_d3n_l1_datacache_persistent_path:rgw_d3n_l1_datacache_persistent_path" "
示例
[ceph: root@host01 /]# cat rgw-spec.yml service_type: rgw service_id: rgw.test placement: hosts: host1 host2 extra_container_args: "-v" "/mnt/nvme0n1/rgw_datacache/:/mnt/nvme0n1/rgw_datacache/"
注意如果单个主机上有多个 RGW 实例,则必须为每个实例创建一个单独的
rgw_d3n_l1_datacache_persistent_path
,并在extra_container_args
中添加每个路径。示例 :
对于每个主机中的两个 RGW 实例,在
rgw_d3n_l1_datacache_persistent_path
下创建两个单独的 cache-directory :/mnt/nvme0n1/rgw_datacache/rgw1
和/mnt/nvme0n1/rgw_datacache/rgw2
rgw 规范文件中的 "extra_container_args" 示例:
"extra_container_args: "-v" "/mnt/nvme0n1/rgw_datacache/rgw1/:/mnt/nvme0n1/rgw_datacache/rgw1/" "-v" "/mnt/nvme0n1/rgw_datacache/rgw2/:/mnt/nvme0n1/rgw_datacache/rgw2/" "
rgw-spec.yml 示例:
[ceph: root@host01 /]# cat rgw-spec.yml service_type: rgw service_id: rgw.test placement: hosts: host1 host2 count_per_host: 2 extra_container_args: "-v" "/mnt/nvme0n1/rgw_datacache/rgw1/:/mnt/nvme0n1/rgw_datacache/rgw1/" "-v" "/mnt/nvme0n1/rgw_datacache/rgw2/:/mnt/nvme0n1/rgw_datacache/rgw2/"
重新部署 RGW 服务:
示例
[ceph: root@host01 /]# ceph orch apply -i rgw-spec.yml
4.5.2. 在 rados 网关上配置 D3N
您可以在现有 RGW 上配置 D3N 数据缓存,以提高 Red Hat Ceph Storage 集群中运行的 big-data 作业性能。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装了 Ceph 对象网关.
- 管理节点的根级别访问权限。
- 一个快速的 NVMe 作为缓存存储。
添加所需的 D3N 相关配置
要在现有 RGW 上启用 D3N,需要为每个 Rados 网关客户端设置以下配置:
语法
# ceph config set <client.rgw> <CONF-OPTION> <VALUE>
-
rgw_d3n_l1_local_datacache_enabled=true
rgw_d3n_l1_datacache_persistent_path= 路径到缓存目录
示例
rgw_d3n_l1_datacache_persistent_path=/mnt/nvme/rgw_datacache/
rgw_d3n_l1_datacache_size=max_size_of_cache_in_bytes
示例
rgw_d3n_l1_datacache_size=10737418240
示例流程
创建 test 对象:
注意测试对象需要大于 4 MB 才能缓存。
示例
[ceph: root@host01 /]# fallocate -l 1G ./1G.dat [ceph: root@host01 /]# s3cmd mb s3://bkt [ceph: root@host01 /]# s3cmd put ./1G.dat s3://bkt
执行对象的
GET
:示例
[ceph: root@host01 /]# s3cmd get s3://bkt/1G.dat /dev/shm/1G_get.dat download: 's3://bkt/1G.dat' -> './1G_get.dat' [1 of 1] 1073741824 of 1073741824 100% in 13s 73.94 MB/s done
验证缓存创建。将创建缓存,其名称由配置的
rgw_d3n_l1_datacache_persistent_path
中的对象key-name
组成。示例
[ceph: root@host01 /]# ls -lh /mnt/nvme/rgw_datacache rw-rr. 1 ceph ceph 1.0M Jun 2 06:18 cc7f967c-0021-43b2-9fdf-23858e868663.615391.1_shadow.ZCiCtMWeu_19wb100JIEZ-o4tv2IyA_1
为对象创建缓存后,该对象的下一个
GET
操作将从缓存访问,从而加快访问速度。示例
[ceph: root@host01 /]# s3cmd get s3://bkt/1G.dat /dev/shm/1G_get.dat download: 's3://bkt/1G.dat' -> './1G_get.dat' [1 of 1] 1073741824 of 1073741824 100% in 6s 155.07 MB/s done
在上例中,为了演示缓存加速,我们正写入 RAM 驱动器(
/dev/shm
)。
其它资源
- 有关使用高可用性的更多详细信息,请参阅 Red Hat Ceph Storage 故障排除指南中的 Ceph 子系统默认日志记录级别值 部分。
- 有关使用高可用性的更多详细信息,请参阅 Red Hat Ceph Storage 故障排除指南中的 了解 Ceph 日志 部分。