PowerEdge:在 RHEL 上使用基于 NVMe PCIe SSD 的 dm-cache 提高块设备性能
摘要: 设备映射器高速缓存 (dm-cache) 可将数据动态迁移到更快的设备,以此来提高块设备的性能。
说明
基于 NVMe 的 PCIe SSD 可以使用用户空间工具集逻辑卷管理器 (LVM) 工具充当 dm-cache 的缓存设备。
dm-cache 创建的虚拟高速缓存由三个物理设备组成。(请参阅图 1。)原始设备是速度较慢的目标存储设备 (HDD)。高速缓存设备用于存储用户数据,元数据高速缓存存储元数据,如块放置、脏标记和其他内部数据。
在本例中,我们为数据块和元数据使用相同的设备 [高速缓存设备]。
图 1:使用 LVM 工具设置和配置 dm-cache 的步骤。
硬件设置:
原始设备 [HDD]: /dev/sda1
高速缓存设备 [基于 NVMe 的 PCIe SSD](块/元数据): /dev/nvme0n1p1
软件设置:
操作系统:RHEL 7
工具:用于 dm-cache 配置的 LVM2 用户空间工具
配置步骤:
以下是使用 LVM 配置虚拟设备 dm-cache 的步骤。
每个步骤的输出对应于图 1 中编号的块。
- 在硬盘 [原始设备] 上创建 100 GB 分区
parted -a optimal /dev/sda mkpart primary 1 100G
提醒:这会创建 /dev/sda1 - 在 NVMe PCIe SSD 磁盘 [高速缓存设备] 上创建 10 GB 分区
parted -a optimal /dev/nvme0n1 mkpart primary 1 10G
- 使用原始设备和高速缓存设备创建卷组 (cache)
vgcreate cache /dev/sda1 /dev/nvme0n1p1
- 使用此命令检查“cache”卷组:
vgdisplay[root@localhost ~]# vgdisplay --- Volume group --- VG Name cache System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 103.36 GiB PE Size 4.00 MiB Total PE 26461 Alloc PE / Size 25399 / 99.21 GiB Free PE / Size 1062 / 4.15 GiB VG UUID Zd8dNe-6Kdt-7qgY-dmSN-8WHe-4wqQ-euM3Ql
- 使用此命令检查“cache”卷组:
- 创建原始设备逻辑卷 (
origin_device)lvcreate -l 90%FREE -n origin_device cache /dev/sda1
- 创建高速缓存元数据逻辑卷 (
cache_meta)lvcreate -l 5%FREE -n cache_meta cache /dev/nvme0n1p1
- 创建高速缓存块数据逻辑卷 (
cache_block)lvcreate -l 80%FREE -n cache_block cache /dev/nvme0n1p1
- 通过组合高速缓存块和高速缓存元数据逻辑卷(组合步骤 5 和步骤 6)来创建高速缓存池逻辑卷
lvconvert --type cache-pool --poolmetadata cache/cache_meta cache/cache_block
提醒:创建的高速缓存池与“cache_block”同名,即在步骤 6 中创建的高速缓存块数据逻辑卷的名称。-
这是工具的行为。使用此命令检查“cache”卷组:
lvdisplayroot@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/cache/cache_block LV Name cache_block VG Name cache LV UUID kWYQxP-Jdlr-JdxE-aleB-JJpj-3rmw-Q0cojx LV Write Access read/write LV Creation host, time localhost.localdomain, 2014-06-28 09:05:32 -0400 LV Status available # open 0 LV Size 5.07 GiB Current LE 1297 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2
-
-
通过连接高速缓存池(步骤 7)逻辑卷和
origin_device逻辑卷(步骤 4)来创建高速缓存逻辑卷lvconvert --type cache --cachepool cache/cache_block cache/origin_device
- 这将创建虚拟高速缓存设备 (dm-cache)
orign_device,即下面所示的dm4。[root@localhost ~]# ls -l /dev/cache/origin_device lrwxrwxrwx. 1 root root 7 Jun 28 09:13 /dev/cache/origin_device -> ../dm-4
- 这将创建虚拟高速缓存设备 (dm-cache)
-
使用文件系统格式化虚拟高速缓存设备并使用它。
mkfs.ext4 /dev/cache/origin_device
性能数据:
使用 FIO 工具完成的性能测试显示,读取操作、写入操作和读写混合操作的性能大大提高。
表 1 显示了 FIO 工具的输出,其中展示了配置 dmcache 与使用正常驱动器(旋转驱动器)相比较的性能差异和改善程度(百分比),图 2 显示了对应的柱状图。
测试采用 1M 的块大小,在原始硬盘 (sda) 和配置了 dmcache 的驱动器上进行随机读取、随机写入和随机读写混合 (50%) 操作。
| FIO at BS = 1M | IOPS | ||
|---|---|---|---|
| 设备 | 读取 | 写入 | 读写 |
驱动器配置了 dm-cache |
197 | 798 | 159 |
| sda [原始驱动器] | 124 | 118 | 58 |
| 提升百分比 | 58.87% | 576.20% | 174.13% |
表 1:性能提升,配置了 dm-cache
图 2:性能提升,配置了 dm-cache。