小编Sid*_*ado的帖子

MD Raid 1 读平衡算法

我通过google搜索过,但没有找到任何关于MD raid1的读平衡算法的信息。

几年前,我可能在某处读到它用来hashing the process id确定它使用哪个设备,但我不确定。

我在 raid1 之上安装了 KVM 虚拟化 + LVM,并且多次目睹从多个虚拟机读取数据到同一个磁盘,利用率达到 100%,而 raid1 中的另一个磁盘处于空闲状态。(通过 iostat -x)

编辑:问题还与虚拟机内的多个进程有关。即使在虚拟机内部也会发生读取平衡吗?

读数是否平衡?如果是的话通过什么算法?

我问的原因是因为我目前正在两种变体之间做出选择

  1. LUKS 位于单个 MD 设备之上
  2. MD 位于两台 LUKS 设备顶部

第二种变体使用更多的CPU,但这不是问题。

linux raid lvm raid-1 luks

5
推荐指数
1
解决办法
2512
查看次数

在 Docker 内对 Apache 使用 ksm_preload

我正在尝试在 Docker 内使用ksm_preload for Apache。问题是在 Docker 中运行时该库没有被映射。在外面它可以工作,我看到共享/易失性页面。我认为问题出在 apache 中的某个地方,因为在具有相同 LD_PRELOAD 参数的同一容器中运行的其他应用程序(如 apt)显示 KSM 中的活动。

运行 make install 后,我在 docker 容器内尝试了以下操作

LD_PRELOAD=/usr/local/share/ksm_preload/libksm_preload.so apache2ctl -k start -D FOREGROUND
Run Code Online (Sandbox Code Playgroud)

我还尝试设置/etc/apache2/envvars工作进程:

export LD_DEBUG=all
export LD_PRELOAD=/usr/local/share/ksm_preload/libksm_preload.so
Run Code Online (Sandbox Code Playgroud)

父进程获取映射的库,但子工作进程则不获取。

父进程的/proc/pid/map_files:

7f2e13aef000-7f2e13af1000 -> /usr/local/share/ksm_preload/libksm_preload.so
7f2e13af1000-7f2e13cf0000 -> /usr/local/share/ksm_preload/libksm_preload.so
7f2e13cf0000-7f2e13cf1000 -> /usr/local/share/ksm_preload/libksm_preload.so
Run Code Online (Sandbox Code Playgroud)

总是出现以下结果:

/sys/kernel/mm/ksm/pages_shared:0
/sys/kernel/mm/ksm/pages_sharing:0
/sys/kernel/mm/ksm/pages_to_scan:100
/sys/kernel/mm/ksm/pages_unshared:0
/sys/kernel/mm/ksm/pages_volatile:0
/sys/kernel/mm/ksm/run:1
Run Code Online (Sandbox Code Playgroud)

LD 调试输出相当长https://pastebin.com/KRvKHXxn

apache 有某种针对 LD_PRELOAD 的保护吗?

是否可能有另一个具有更高优先级的动态库覆盖符号?

也许相关:/sf/ask/936196831/ 尝试了解决方案UNSET_RTLD_DEEPBIND=1,没有变化

linux apache-http-server docker

5
推荐指数
0
解决办法
633
查看次数

标签 统计

linux ×2

apache-http-server ×1

docker ×1

luks ×1

lvm ×1

raid ×1

raid-1 ×1