我正在寻找一个分布式的、容错的网络存储系统,它在客户端上公开块设备(而不是文件系统)。
因此,理想情况下,该架构与 moosefs ( http://www.moosefs.org/ )非常相似,但不是公开使用熔断器客户端安装的真实文件系统,而是公开客户端上的块设备。
我知道 iscsi 和 drbd,但两者似乎都没有提供我正在寻找的东西。或者我错过了什么?
我正在寻找一种工具,它将扫描我的无 GUI 服务器并以某种丰富的视觉格式创建所有块设备及其关系(磁盘分区、mdadm 设备、LVM PV 和 LV 等)的易于消化的粗略概述( html、pdf、svg、png...)。
这是一个简单的示例可视化:
+--------+---------------------+ +-------------------+
| sda1 | | | sdc1 |
+--------+---------------------+ +-------------------+
+ + +
+--------+---------------------+ +-------------------+
| sdb1 | | | sdd1 |
+--------+---------------------+ +-------------------+
| | |
v v v
+---+---+ +---------+----------+ +--------+----------+
| md0 | | md1 | | md2 |
+-------+ +---------+----------+ +--------+----------+
| /boot | \ /
ext4 \ /
\ /
+
|
v
+------------------------------------------+
| vgmain |
+------+-----------------+-----------------+
|/root | /home | /var | …Run Code Online (Sandbox Code Playgroud) 我正在尝试按照建议为 mongo 256 或更少设置预读,我查看了文档 以获取任何指导,我发现了这一点:
确保存储数据库文件的块设备的预读设置适当。对于随机访问使用模式,设置较低的预读值。32 (16kb) 的预读通常效果很好。对于标准块设备,您可以运行
sudo blockdev --report以获取预读设置并sudo blockdev --setra <value> <device>更改预读设置。有关详细信息,请参阅您的特定操作系统手册。
当我做一个sudo blockdev --report我得到:
rw 8192 512 4096 0 32212254720 /dev/sda
rw 8192 512 4096 2048 31162630144 /dev/sda1
rw 8192 512 4096 60866560 1048576000 /dev/sda2
rw 8192 512 4096 0 75161927680 /dev/sdb
rw 8192 512 4096 2048 75159830528 /dev/sdb1
Run Code Online (Sandbox Code Playgroud)
我怎么知道哪个是与 mongo 相关的?
我有一个远程脚本,用于检查 lvm 卷中的某些参数。我需要知道的一件事是尺寸。我目前正在使用这个:
lvdisplay /dev/virtuals/volume_name -C -o lv_size
但是最后一个命令可能需要大约一秒钟才能在我的服务器上执行,而且我有多个要检查的卷。我也试过用usin lvs代替lvdisplay,但是速度没有太大的提升。
time lvs -o lv_size /dev/virtuals/volume_name -C -o lv_size
real 0m0.809s
time lvdisplay /dev/virtuals/volume_name
real 0m0.982s
Run Code Online (Sandbox Code Playgroud)
有人知道获取该信息的更快方法,只是卷大小,我对职业不感兴趣。
更新: 使用 blockdev 带来了巨大的改进。我真的建议使用它而不是 lvdisplay(只记得使用 getsize64)
时间块dev --getsize64 /dev/system/home
在 CentOS 6 中,有/etc/tune-profiles/my-server/ktune.sysconfig这样的文字(我指的是解释代码正在做什么的注释):
# This is the I/O scheduler ktune will use. This will *not* override anything
# explicitly set on the kernel command line, nor will it change the scheduler
# for any block device that is using a non-default scheduler when ktune starts.
# You should probably leave this on "deadline", but "as", "cfq", and "noop" are
# also legal values. Comment this out to prevent ktune from changing I/O
# scheduler settings.
ELEVATOR="deadline"
# …Run Code Online (Sandbox Code Playgroud) 我的任务是将 QEMU 图像存储在数据库中,并考虑开发自定义块设备。这是一个好主意吗?从哪里开始比较好?
我刚刚在机器(都是 Unix Tru64)之间交换了磁带驱动器。设备文件现在不起作用,我必须对它们做一些工作(会产生一个不同的问题)。我创建了一个目录来存储旧设备文件,但 cp 命令将它们视为设备文件,不会让我复制它们。
如何将设备文件以文本形式复制到另一个目录?