我正在做类似的事情,格式化文件系统需要很长时间,所以我猜我出了什么问题。
sda 正在旋转,而 sdb、sdc 和 sdd 是 SSD。
clearpart --drives=sda,sdb,sdc,sdd --initlabel
part swap --recommended --ondisk=sda
part / --size=4096 --grow --ondisk=sda
part pv.11 --size=100 --grow --ondisk=sdb
part pv.12 --size=100 --grow --ondisk=sdc
part pv.13 --size=100 --grow --ondisk=sdd
volgroup datavg --pesize=4096 pv.11 pv.12 pv.13
logvol /data --fstype=ext4 --name=datalv --vgname=datavg --size=100 --grow --percent=100 raid.11 raid.12 raid.13
问题:
- 我应该传递 ext4 选项吗?
- 我的4M条带正确吗?
- 我还应该调整 LVM 中的其他内容吗?
目标:
- 将三个 SSD 磁盘条带化在一起,以提高 Cassandra 负载下的性能。
- 支持TRIM
- 正确使用驱动器以延长使用寿命
谢谢!
艾伦
答案1
如果您所说的“条带”是指 PE 大小,那么我们在这里谈论的是两个不同的东西。物理范围只是您可以用来扩展逻辑卷的存储块的大小。条带是分布在多个存储设备上的存储块。物理范围没有这样的要求。
我认为会发生的情况是,您的 LV 跨越所有三个磁盘,但会首先填满磁盘 sdb,然后是 sdc,最后是 sdd。
我不确定 LVM 是否是最合理的方法。就我个人而言,我会选择使用 mdadm 的软件 RAID 集。这将创建一个实际的 RAID 集,而不是一个跨三个磁盘的 LV。
除此之外:如果没有更多信息,就无法判断 4MiB 的条带大小是否合适。条带的最佳大小由平均请求大小决定,平均请求大小是从磁盘组读取请求的平均大小。您需要做的是,在该机器上运行典型负载,并使用 SAR 或类似工具来测量您的平均请求大小。然后,重新安装机器(或仅重新格式化 RAID 集),并将该平均请求大小除以二 (!) 作为数据块的大小。第三个磁盘将保存您的奇偶校验块(假设您正在构建 RAID 5 集)。您的条带大小将为 (avg req size / 2) * 3,其中有 2 个数据块和一个奇偶校验块,所有大小均为 (avg req size / 2)。
我希望我说的对 :) 我累了。明天我会再看一遍,看看我说的有没有道理 :)
通常,平均请求大小以千字节而不是兆字节为单位,但如果不进行测量就无法了解您的具体情况。
话虽如此,我对使用 LVM 进行类似 RAID 的方案的经验很少。
答案2
我最终做了这样的事情:
# Partition clearing information
clearpart --drives=sda,sdb,sdc,sdd --initlabel
part swap --recommended --ondisk=sda
part / --size=4096 --grow --ondisk=sda
# create the ssd partitions
part pv.11 --size=100 --grow --ondisk=sdb
part pv.12 --size=100 --grow --ondisk=sdc
part pv.13 --size=100 --grow --ondisk=sdd
%post
vgcreate cassvg /dev/sdb1 /dev/sdc1 /dev/sdd1
lvcreate -l 100%FREE --stripes 3 --stripesize 4096 --name casslv cassvg
mkfs.ext4 -b 4096 -E stride=128,stripe-width=128 /dev/cassvg/casslv
mkdir -p /cache/cassandra/storage
echo "/dev/mapper/cassvg-casslv /cache/cassandra/storage ext4 discard, noatime,nodiratime 1 2" >> /etc/fstab
我将卷和逻辑创建移至 %post 部分,以避免 centos6.2 中较新的 initramfs kickstart 环境出现问题。在 %post 步骤中创建卷和逻辑会使用正确的主机名创建它们,以便它们在运行时正确挂载。
有一些复杂的方法可以解决 initramfs 问题,但当我只能将它们移动到此应用程序数据卷的 %post 时,它似乎是一个兔子洞。