https://zhidao.baidu.com/question/1303384252322682659.html
在Linux系统上的bai大型存储阵列上创建分区(译者注:实际上是对从阵列上划分给系统的LUN分区,系统将每个LUN识别为一个磁盘),会遇到两大常见问题。第一个问题很容易,使用fdisk命令得到的错误信息已经提示了解决问题的办法:
WARNING: The size of this disk is 8.0 TB (7970004230144 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID
partition table format (GPT).
译者注:磁盘大小是8TB。DOS分区表格式不能在超过2TB(512个字节的扇区)的卷上使用。请使用parted命令和GUID分区表格式(GPT)
答案是:使用parted命令。如果你的系统上没有parted,请安装它吧!
第二个问题是来自parted的警告:
(parted) mklabel gpt
(parted) mkpart primary 0 100%
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?
译者注:生成的分区没有正确地对齐以实现最佳性能。忽略/取消?
不论你使用怎样的数字组合,这条错误信息都不断地出现。你尝试选择了忽略,但错误根本没被忽略。
网上有一些讨论这个问题的帖子,惠普官方帮助论坛上的一个帖子真正戳中了问题的核心。(译者注:文中提到的惠普论坛帖子现已无法访问)
下面是正确对齐分区的快速分步指南。它是那个惠普帖子的提炼总结,希望大家能快速上手。这个方法对大多数阵列行之有效(实际上它适用于我所见过的所有阵列);在惠普的帖子中还提到了更多可行的配置选项,我在这里只列出最常用的配置。
1.获得你阵列的alignment参数(记得要将sdb替换为系统内核看到的设备名称)
# cat /sys/block/sdb/queue/optimal_io_size
1048576
# cat /sys/block/sdb/queue/minimum_io_size
262144
# cat /sys/block/sdb/alignment_offset
0
# cat /sys/block/sdb/queue/physical_block_size
512
2.把optimal_io_size的值与alignment_offset的值相加,之后除以physical_block_size的值。在我的例子中是:(1048576 + 0) / 512 = 2048。
3.这个数值是分区起始的扇区。新的parted命令应该写成类似下面这样
mkpart primary 2048s 100%
2048s中的字母s是很有意义的:它告诉parted,你的输入是2048扇区,而不是2048字节,也不是2048兆字节。
https://blog.csdn.net/weixin_40343504/article/details/83181501?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control
一、引语
有人说 SSD 买来一定要先对齐,不然平时用起来会很卡。究竟是真有这种说法还是人云亦云呢?
二、4K对齐是什么?
我们先来回顾一下机械硬盘的结构。
机械硬盘主要由盘片(platter)、磁头(head)和相应的控制电路等部分所组成。盘片表面镀有磁性物质,二进制位被存储在这些磁性材料上。硬盘工作时,盘片围绕着一根中心主轴(spindle)旋转,磁头在电路控制下移动到指定位置然后将数据存储或读取出来。盘片有两个面,都可以储存数据,因此每个磁盘片对应两个读写磁头。如果有N个盘片,就有2N个面,对应2N个磁头。以盘片中心为圆心,把盘片分成若干个同心圆,每一个划分圆的”线条”,就称为磁道(track)。所有盘面上半径相同的磁道构成了柱面(cylinder)。盘片中有多少个磁道,就有多少个柱面。
每个磁道又被等分为若干个弧段,这些弧段便是磁盘的扇区(sector)。扇区大小是固定的,两扇区之间以间隙(gap)来分割,间隙未被磁化。由于越接近磁盘圆心,磁道就越小,因此每个磁道的扇区数可能是不同的。在一些硬盘的参数列表上可以看到描述每个磁道的扇区数的参数,它通常用一个范围标识,例如373~746,这表示,最外圈的磁道有746个扇区,而最里面的磁道有373个扇区。早期的磁盘规范将扇区大小定义为512字节。然而随着硬盘容量的不断扩展,这一大小已不再能满足硬盘管理和性能提升的需要。为了提高容错能力和硬盘的使用及管理效率,IDEMA(International Disk Drive Equipment and Materials Association)将原来的每个扇区512字节改为每个扇区4096个字节,也就是现在常说的“4K扇区”。支持这一标准的硬盘称为高级格式化(Advanced Format)硬盘。
三、SSD为什么需要4K对齐?
固态硬盘SSD的核心是NAND Flash闪存芯片,其寿命主要有闪存芯片的擦除读写次数决定的,出厂之后,这个读写次数是一定的,那么我们要做的就是优化算法,尽量减少读写次数。4K对齐就是减少固态硬盘读写次数的有效方法。
4K对齐之后好处多多,原理比较复杂,打个比方:
SSD就好比一个大仓库,里面由很多小“房间”组成,每个房间的容量都是一样的(4KB的倍数)。每个房间放入货物(文件)的次数是有限制的(10万次)并且每个房间只能放一种货物。货物的放入和拿出是由管理员(操作系统)来协调解决的。但是无论货物有多大,管理员都会把这些货物分成好多块放入房间。每块的大小都是一样的(XP系统是0.5KB,win7可以自己定)没有对齐的仓库,最开始的一个房间被管理员占用了一点的,因此很多文件可能同时占用了两个房间。如果要把货物搬出去就相当于两个房间各使用了一次(寿命)。对齐过后的仓库,货物分成小块的大小和房间大小一样,放进去非常方便,效率大大提高,提高了房间的使用率。
四、如何实现4K对齐
1.查看系统中磁盘物理大小扇区和逻辑大小扇区
1.1linux系统
[root@demo ~]# cat /sys/block/vdg/queue/physical_block_size
512
[root@demo ~]# cat /sys/block/vdg/queue/logical_block_size
512
可以看到我的这块测试磁盘的物理扇区大小是512字节,逻辑扇区大小也是512字节,这样我们物理块到逻辑块的映射都是512字节的。
1.2windows系统
如下2.2
2.对齐分区
2.1 linux查看现有磁盘是否是4k对齐,可以用fdisk -l -u
2.2 windows可以用命令fsutil fsinfo ntfsinfo查看是否4k对齐
2.3 linux如何用fdisk 对齐分区
linux如何用parted进行4k对齐
windows如何进行4k对齐
PS:部分图片来源于网络,参考存储随笔博客