![使用 mdadm 和 LVM 的 flashcache](https://linux22.com/image/805220/%E4%BD%BF%E7%94%A8%20mdadm%20%E5%92%8C%20LVM%20%E7%9A%84%20flashcache.png)
我在具有 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