BeeGFS分区对齐指南

简介: https://doc.beegfs.io/latest/advanced_topics/partition_alignment.html#partitionalignmentguide

最近在理解分区对齐,看了些文档,觉得beegfs的官方文档写的步骤最简单易操作,很适合去辅助理解,所以这里翻译了一下官方文档

最简单的方法

存储设备上创建文件系统,而没有任何分区。要做到这一点,你只需使用没有任何分区号的mkfs,例如,对于XFS

mkfs.xfs /dev/sdb

因此,你会很容易地避免由分区表带来的错位。然而,即使在这种情况下,你仍然应该看看本页底部的 "创建RAID优化的文件系统 "部分。

分区排列 - 例子

默认情况下,Linux对设备上的第一个主分区使用512字节对齐(更具体地说:63*512字节)。这对单个磁盘来说是很好的,至少是传统的磁盘,它使用512字节的块。对于RAID阵列或SSD,你要设置一个不同的对齐方式,以避免读-改-写操作的开销,并启用内部XFS或ext4 RAID优化。注意,如果你在RAID上使用其他软件层,如LVM,这些也会引入另一个偏移,因此需要考虑到正确的对齐方式。

在我们的例子中,我们在一个600GB的卷上使用。- 11个磁盘的阵列 - 在RAID-6模式下 - 条带大小为64KB - 作为设备/dev/sdc

通过RAID-6,我们实际上有9个磁盘用于用户数据,所以我们要对准9*64KB。(对于SSD,你可能想对准擦除块的大小,通常是512KB或其倍数。)

分区对准 - 检查当前

注意:下面的例子是基于fdisk的。并非所有版本的fdisk都与GPT分区表兼容。对于GPT分区,你可以用parted或gdisk代替。

如果你已经在你的硬盘上创建了一个分区,你可以用下面的命令检查它的排列。

$ fdisk -lu /dev/sdc
Disk /dev/sdc: 599.9 GB, 599999905792 bytes
255 heads, 63 sectors/track, 72945 cylinders, total 1171874816 sectors
Units = sectors of 1 * 512 = 512 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1              63  1171861424   585930681   83  Linux

正如你在上面看到的,分区的起始位置目前在63*512字节的位置,这对我们的用例是不合适的。

分区对齐 - 创建对齐的

注意 下面的例子是基于fdisk的,它与GPT分区表不兼容。要创建对齐的 GPT 分区,请使用 parted,例如。

$ parted /dev/sdc mklabel gpt
$ parted --align=opt /dev/sdc unit KiB mkpart pri $((9*64)) 100%

如果你的设备上已经有一个分区,请确保先删除它。

$ fdisk /dev/sdc
Command (m for help): d
Selected partition 1
Command (m for help): w
The partition table has been altered!

如上所述,我们要对齐到9*64KB。我们将使用fdisk的参数"-H 8 -S 16 "来手动指定磁头和扇区的(逻辑)数量。这些参数允许我们创建一个对齐到64KB或64KB的任何倍数的分区。我们的设置是基于64KB的圆柱体,我们希望我们的分区在第一个条纹集(9个圆柱体)之后就开始,所以我们将第一个圆柱体设置为10。

$ fdisk -H 8 -S 16 /dev/sdc
The number of cylinders for this disk is set to 9155272.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-9155272, default 1): 10
Last cylinder or +size or +sizeM or +sizeK (10-9155272, default 9155272):
Using default value 9155272
Command (m for help): w
The partition table has been altered!

如果你想验证新的对齐方式。

$ fdisk -l /dev/sdc
Disk /dev/sdc: 599.9 GB, 599999905792 bytes
8 heads, 16 sectors/track, 9155272 cylinders
Units = cylinders of 128 * 512 = 65536 bytes
Device       Boot   Start         End      Blocks   Id  Type
/dev/sdc1              10     9155272   585936832   83  Linux

我们可以看到,该分区从第10扇区开始,扇区的大小为64KB。现在,是时候在新的分区上创建一个文件系统了。

创建RAID优化的文件系统

XFS和ext4允许你指定RAID设置。这使得文件系统能够为RAID调整优化其读写访问,例如,通过将数据作为完整的条带集提交以获得最大的吞吐量。这些设置可以在文件系统创建时进行,或者在XFS的情况下,也可以在安装时进行。

注意,这些RAID优化可以显著提高性能,但前提是你的分区是正确对齐的,或者你通过在一个没有分区的设备上创建XFS来避免不对齐。

要为9个磁盘(其中数字9不包括RAID-5或RAID-6奇偶校验磁盘的数量)和64KB的块大小创建一个新的XFS文件系统,使用。

$ mkfs.xfs -d su=64k,sw=9 -l version=2,su=64k /dev/sdc

注意:如果你的数据存储在一个RAID-5或RAID-6卷上,你可能要考虑把文件系统日志放在一个单独的RAID-1卷上,因为RAID-5和RAID-6的读-改-写开销很大。


目录
相关文章
|
2月前
单元格内容的对齐方式
单元格内容的对齐方式
31 1
|
3月前
段落标记<p>的对齐属性
【8月更文挑战第30天】段落标记<p>的对齐属性
34 0
|
5月前
|
前端开发 UED
深入理解CSS中的文本对齐方式:水平对齐与垂直对齐
深入理解CSS中的文本对齐方式:水平对齐与垂直对齐
113 5
|
4月前
|
消息中间件 缓存 监控
为什么我的topic总共有15个分区,但是每单个服务里面看都只有11个分区
为什么我的topic总共有15个分区,但是每单个服务里面看都只有11个分区
26 0
|
固态存储
未对齐(alignment)造成SSD 写放大一例
背景 SSD的存储组织,决定了它在写入操作时,是以固定的单元进行写入的,所以在使用SSD时,务必要进行对齐操作。 不对齐的后果很严重,不仅仅使得性能下降,还会带来写放大。 来看一张图,例如实线分开的是SSD的写入单元,如果建立分区,或者LVM时,没有进行对齐,那么一个IO操作就可能跨S
4104 0
|
关系型数据库 PostgreSQL
PostgreSQL tuple alignment padding (行,字段对齐) - 对齐规则,以及如何选择字段顺序
标签 PostgreSQL , 对齐 , 变长 , 行 , tuple , row , alignment , padding 背景 PostgreSQL tuple内部有ALIGN机制,因此字段顺序选择实际上也是有讲究的,选择不好,可能因为ALIGN导致占用空间放大。
1050 0
ReSharper2017.3的列对齐、排版格式、列对齐错误的修复
ReSharper代码排版格式 列对齐 本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chinar ...
1429 0