前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么要4k对齐

为什么要4k对齐

作者头像
sean.liu
发布2022-09-07 10:49:45
1.5K0
发布2022-09-07 10:49:45
举报

在发现存储实际性能和预期存在较大差距,特别是性能差距在2倍左右时,4K对齐就可能是罪魁祸首。现在SSD读写速度较快,所以通常都是在压力较大的时候出现异常。

原因

早期硬盘每个扇区以512字节为标准。新一代硬盘扇区容量为4096个字节,也就是所说的4k扇区。 硬盘标准更新,但操作系统一直使用的是512字节扇区的标准,所以硬盘厂商为了保证兼容性,把4k扇区模拟成512字节扇区。 通常文件系统的块(簇)是512字节的倍数,新的系统基本上都设成了4k的倍数。比如Linux的簇一般也是4k。 簇到扇区的映射关系变成了 簇(4k)->512B扇区->4k扇区,这就可能造成簇到扇区映射错位。

图中,黄色8个块对应现在的4k扇区,每块512B。对齐的时候,操作一个系统块,相应的会操作一个物理扇区。如果没有对齐,操作一个系统块时,就需要操作2个物理扇区。整体的IO吞吐自然就下降了。所以,我们需要对齐扇区,避免IO被放大。

如何查看系统是否4k对齐:

Windows下

开始-运行-“msinfo32”-进入系统信息 展开 组建-存储-磁盘,查看里面的分区起始偏移。 如果起始偏移正好是4k(4096字节)的倍数,说明4k对齐。

Linux下

使用fdisk -lu命令。命令中u是让分区表用扇区值。

代码语言:javascript
复制
> fdisk -lu
Disk /dev/xvda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007ce89
Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048    41943039    20970496   83  Linux

可以看到start的值,这显示的是对应扇区的起始位置。这里的扇区指的是512B大小的扇区。所以,如果起始扇区值是8的倍数,则说明磁盘4k对齐。

其它地方的4K对齐

上面说的都是本地系统的4k对齐,因为本地盘的物理sector肯定是从0开始,但还有一种情况。 随着云计算的发展,越来越多的业务放到云上,虚拟机,云盘,是最常用的两大件。云盘是一个分布式存储,虚拟成块设备挂到虚拟机。 如果,分布式存储本身并没有做好4K对齐,那块块设备外挂到虚拟机上后,最终的IO依然不会对齐,即使虚拟机上看一切正常。这种情况,就需要云服务商来处理了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020年1月8日00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原因
  • 如何查看系统是否4k对齐:
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档