使用 mdadm 和 LVM 的 flashcache

使用 mdadm 和 LVM 的 flashcache

我在具有 LVM 和 mdadm 的系统上设置 flashcache 时遇到了麻烦,我怀疑我要么只是错过了一个明显的步骤,要么是某些映射错误,希望有人能给我指明正确的方向?

系统信息:

CentOS 6.4 64 位

mdadm 配置

md0 : active raid1 sdd3[2] sde3[3] sdf3[4] sdg3[5] sdh3[1] sda3[0]
      204736 blocks super 1.0 [6/6] [UUUUUU]


md2 : active raid6 sdd5[2] sde5[3] sdf5[4] sdg5[5] sdh5[1] sda5[0]
      3794905088 blocks super 1.1 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]


md3 : active raid0 sdc1[1] sdb1[0]
      250065920 blocks super 1.1 512k chunks


md1 : active raid10 sdh1[1] sda1[0] sdd1[2] sdf1[4] sdg1[5] sde1[3]
      76749312 blocks super 1.1 512K chunks 2 near-copies [6/6] [UUUUUU]

太平洋汽车网

PV /dev/mapper/ssdcache   VG Xenvol   lvm2 [3.53 TiB / 3.53 TiB free]
Total: 1 [3.53 TiB] / in use: 1 [3.53 TiB] / in no VG: 0 [0   ]

flashcache create命令使用:

flashcache_create -p back ssdcache /dev/md3 /dev/md2

光伏显示器

--- Physical volume ---
PV Name               /dev/mapper/ssdcache
VG Name               Xenvol
PV Size               3.53 TiB / not usable 106.00 MiB
Allocatable           yes
PE Size               128.00 MiB
Total PE              28952
Free PE               28912
Allocated PE          40
PV UUID               w0ENVR-EjvO-gAZ8-TQA1-5wYu-ISOk-pJv7LV

显示

--- Volume group ---
VG Name               Xenvol
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  2
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                1
Open LV               1
Max PV                0
Cur PV                1
Act PV                1
VG Size               3.53 TiB
PE Size               128.00 MiB
Total PE              28952
Alloc PE / Size       40 / 5.00 GiB
Free  PE / Size       28912 / 3.53 TiB
VG UUID               7vfKWh-ENPb-P8dV-jVlb-kP0o-1dDd-N8zzYj

这就是我现在的情况,我以为工作已经完成了,但是当创建一个名为 test 的逻辑卷并将其挂载到 /mnt/test 时,顺序写入速度很差,只有 60 MB/s

/dev/md3 在 Raid0 中有 2 个 SSD,单独执行的顺序写入速度约为 800 MB/s,而我正尝试缓存 /dev/md2,它是 raid6 中的 6 个 1TB 驱动器

我一天已经读了很多页,其中一些是在这里读的,从结果可以明显看出缓存不起作用,但我不确定原因。

我在 lvm.conf 中添加了过滤行

filter = [ "r|/dev/sdb|", "r|/dev/sdc|", "r|/dev/md3|" ]

这可能有点愚蠢,但缓存显然没有执行任何写入操作,所以我怀疑我没有映射它或没有正确安装缓存。

dmsetup 状态

ssdcache: 0 7589810176 flashcache stats:
    reads(142), writes(0)
    read hits(133), read hit percent(93)
    write hits(0) write hit percent(0)
    dirty write hits(0) dirty write hit percent(0)
    replacement(0), write replacement(0)
    write invalidates(0), read invalidates(0)
    pending enqueues(0), pending inval(0)
    metadata dirties(0), metadata cleans(0)
    metadata batch(0) metadata ssd writes(0)
    cleanings(0) fallow cleanings(0)
    no room(0) front merge(0) back merge(0)
    force_clean_block(0)
    disk reads(9), disk writes(0) ssd reads(133) ssd writes(9)
    uncached reads(0), uncached writes(0), uncached IO requeue(0)
    disk read errors(0), disk write errors(0) ssd read errors(0) ssd write errors(0)
    uncached sequential reads(0), uncached sequential writes(0)
    pid_adds(0), pid_dels(0), pid_drops(0) pid_expiry(0)
    lru hot blocks(31136000), lru warm blocks(31136000)
    lru promotions(0), lru demotions(0)
Xenvol-test: 0 10485760 linear

我已提供我能想到的尽可能多的信息,期待任何回复。

答案1

我可以看到 /dev/md2 没有被 lvm.conf 禁用,但是它应该被禁用。

我认为在如此复杂的设置中您最好明确添加 LVM 设备并禁用所有其他设备:

filter = [ "...", "a|/dev/md0|", "a|/dev/md1|", "a|/dev/mapper/ssdcache|", "r|.*|" ]

此外iostat还可用于监控实际设备活动。

附言:

我对于您的疯狂存储布局非常悲观,其中驱动器被分成许多分区,并参与如此多的不同 RAID。

系统 {RAID1 (/dev/ssd1p1+/dev/ssd2p1)}

数据 {RAID10 (6 whole drives) + flashcache on RAID1 (/dev/ssd1p2+/dev/ssd2p2)}

-- 更有吸引力 :)。

更新:
或者甚至更好:

整个 SSD 上的 RAID1:闪存缓存的系统和分区
以及
整个 HDD + 闪存缓存上的 RAID10/6

相关内容