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的读-改-写开销很大。


目录
打赏
0
0
0
1
5
分享
相关文章
云计算|OpenStack|社区版OpenStack(实务操作---cloud-init的使用)
云计算|OpenStack|社区版OpenStack(实务操作---cloud-init的使用)
737 0
技术项目经理TPM的日常任务:职责侧重与工作内容
技术项目经理是技术驱动型行业中的关键角色,是技术与管理的桥梁,负责识别和解决技术风险,提升团队技术能力,保证技术方案的稳定性和安全性。
296 2
技术项目经理TPM的日常任务:职责侧重与工作内容
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
探究亚马逊国际获得AMAZON商品详情 API 接口功能、作用与实际应用示例
亚马逊提供的Amazon Product Advertising API或Selling Partner API,使开发者能编程访问亚马逊商品数据,包括商品标题、描述、价格等。支持跨境电商和数据分析,提供商品搜索和详情获取等功能。示例代码展示了如何使用Python和boto3库获取特定商品信息。使用时需遵守亚马逊政策并注意可能产生的费用。
有哪些好用的待办事项提醒软件?主流7款大对比
随着生活和工作节奏的加快,待办事项提醒软件成为了我们的“救命神器”。本文评测了7款主流的待办事项软件:板栗看板、Todoist、Microsoft To Do、TickTick、Google Keep、Any.do 和滴答清单,从功能、适用场景和优缺点等方面进行对比,帮助你找到最适合自己的那一款。无论是团队协作、个人时间管理还是生活与工作的平衡,总有一款能满足你的需求。
2633 1
我对 SRE 的理解
产品/基础技术研发 和 SRE 这两类角色是相互协作、相互服务的关系,拥有共同的目标:满足业务需求,更好服务业务。
3618 52
我对 SRE 的理解
【MongoDB 专栏】MongoDB 的分布式事务解决方案
【5月更文挑战第11天】本文探讨了MongoDB的分布式事务处理,涉及两阶段提交(2PC)、TCC补偿事务、分布式锁和幂等处理。2PC通过协调者与参与者确保数据一致性,而TCC提供更高性能和容错性。分布式锁解决并发冲突,幂等处理保证事务正确性。根据业务需求选择合适方案,并关注性能、可靠性和容错。
587 2
【MongoDB 专栏】MongoDB 的分布式事务解决方案
阿里云DTS踩坑经验分享系列|全量迁移加速方法指南
阿里云数据传输服务DTS是一个便捷、高效的数据迁移和数据同步服务。一般而言,一个完整的DTS数据迁移任务主要包括预检查、结构迁移,全量迁移,增量迁移等阶段,其中全量迁移会将源数据库的存量数据全部迁移到目标数据库。面对各种各样的用户场景, 本文将重点介绍如何使用阿里云DTS实现全量数据迁移加速,以缩短迁移时间,确保数据迁移的效率和稳定性。
961 0
奇思妙想的SQL|兼顾性能的数据倾斜处理新姿势
本篇为系列第2篇,分享在支付宝支付数据链路改造升级过程中,针对数据倾斜的优化实践新方法,在解决数据倾斜问题的同时,还能兼顾更优的计算性能!
Flink CDC产品常见问题之用upsert的方式写入kafka失败如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等