m.s*_*.sr 15 lvm ssd alignment
我想安装一个新的 SSD 并将整个设备用作 LVM 的 PV - 换句话说:我不打算在这个设备上放置一个分区。因此不需要在擦除块上对齐分区。
--dataalignment在pvcreateing时设置为擦除块大小和在ing时设置为擦除块大小--physicalextentsize的倍数是否足够vgcreate?
因此,假设我的 SSD 的擦除块大小为 1024k,是否可以
pvcreate --dataalignment 1024k /dev/ssdvgcreate --physicalextentsize $(( x * 1024 ))k ...还有什么需要考虑的吗?
假设我将 ext4 文件系统放在这个 VG 的 LV 上,将 ext4 扩展区与 LVM-PE 大小对齐是个好主意,对吗?那么 ext4-extents 的大小应该与 LVM-PE-size 相同还是倍数?
感谢您的澄清!
是的,我还检查了 MBR/PBR/GPT/MD/LVM 的所有磁盘布局,并得出了相同的结论。
对于您的情况(原始磁盘上的 LVM),如果 LVM-PE(物理范围)与 pvcreate 对齐 1MB,您可以确保所有进一步的数据分配都将对齐,只要您将分配大小保持为 (1MB * N) .
由于默认情况下“vgcreate -s”和“lvcreate -L”都将不带单位的大小作为 MB 值处理,因此在正确完成 pvcreate 后,您可能不需要太在意对齐。只要确保不要以 %/PEs(对于 lvcreate -l)和 B(字节)/S(512B - LVM 中的扇区始终为 512B)/K(KB)(对于 vgcreate -s 和 lvcreate -L)给出大小。
=== 为澄清添加 ===
作为后续,虽然SSD作为一个整体设备可能有1024KB的擦除块大小,但每个内部闪存芯片的擦除块大小/rw页面大小可能约为32KB-128KB/512B-8KB。
虽然这取决于每个 SSD 的控制器,但只要您保持写入对齐以擦除每个内部芯片的块大小,即上面的 32KB-128KB,由于额外的读取-修改-写入周期而导致的 I/O 损失可能不会发生例子。只是您希望单个写入请求足够大(= SSD 作为整体设备的擦除块大小),因此您可以通过有效驱动所有内部芯片/通道来获得更好的性能。
我的理解是1024KB对齐只是一种安全措施,因为控制器芯片功能因供应商而异,而闪存芯片的规格变化很快。在大包(在本例中为 1024KB)中完成操作系统级别的写入请求更为重要。
现在,话虽如此,在 1MB 对齐的 LVM 块上执行 mkfs(8) 几乎肯定会破坏文件系统级数据/元数据的 1MB 对齐。大多数文件系统只关心 4KB 对齐,所以它可能不适合 SSD(但是,IIRC,最近的 fs 像 btrfs 试图在分配内部连续块时保持 64KB+ 对齐)。但是许多 fs 确实具有捆绑写入的功能(例如:条带大小配置)以从 RAID 中获得性能,因此可用于向 SSD 发出接近最佳的写入请求。
我真的很想用实际数据来支持我的说法,但真的很难证明,因为今天的 SSD 控制器非常智能,一旦对齐大小和写入大小都“足够大”,就不会表现出太大的性能下降。只要确保它没有对齐(不惜一切代价避免 <4KB 对齐)并且不会太小(1024KB 足够大)。
此外,如果您真的关心 IO 惩罚,请通过禁用设备缓存和使用同步读写重写测试进行基准测试来仔细检查。
小智 6
据我了解,默认值已经足够好了。我认为您无需担心 --dataalignment 选项,因为 LVM 会自动尝试根据 sysfs 导出值对齐所有内容,请参阅 lvm.conf 中的“data_alignment_detection”选项:
# By default, the start of a PV's data area will be a multiple of
# the 'minimum_io_size' or 'optimal_io_size' exposed in sysfs.
# - minimum_io_size - the smallest request the device can perform
# w/o incurring a read-modify-write penalty (e.g. MD's chunk size)
# - optimal_io_size - the device's preferred unit of receiving I/O
# (e.g. MD's stripe width)
# minimum_io_size is used if optimal_io_size is undefined (0).
# If md_chunk_alignment is enabled, that detects the optimal_io_size.
# This setting takes precedence over md_chunk_alignment.
# 1 enables; 0 disables.
data_alignment_detection = 1
Run Code Online (Sandbox Code Playgroud)
此外,没有必要为 vgcreate 指定 physicalextentsize,因为默认值已经是 4MB。
| 归档时间: |
|
| 查看次数: |
18582 次 |
| 最近记录: |