出于某种原因,我的 VPS(运行 Debian 8)的第一个分区与扇区 63(而不是 2048)对齐
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 314572800s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 63s 79971569s 79971507s primary ext4 boot
2 79971570s 83875364s 3903795s primary linux-swap(v1)
83875365s 314572799s 230697435s Free Space
现在我想调整分区大小以分配可用空间,不幸fdisk
的是,第一个扇区从 2048 开始。但正如我在这里读到的,可以使用此命令强制fdisk
从 63 开始。
fdisk -c=dos -u=cylinders /dev/sda
这有多安全?此外,由于这种方法已被弃用,这是否会损害我的 VPS 的性能?
扩展大小时,由于它涉及删除分区,因此您必须以它开始的任何数字重新创建它。
否则充其量不会被识别,最坏的情况可能是数据损坏。
如果该 VPS 是创建其他 VM 的模板,我会不厌其烦地重新创建/移动开头 * 和 * 数据/扇区到扇区 2048。
因为它是一个虚拟机,如果你确实想移动分区,我不会完全移动它,我会在旁边创建一个分区,复制数据并使用复制分区启动。这就是使用虚拟机的美妙之处,您有更多的空间来测试事物。
PS。至于我个人的观点,性能上的小幅提升并不值得将其从 63 扇区移出。我会等待机器退役,它迟早会发生。
至于分区对齐:
您希望分区与 4096 字节边界对齐。这样一来,实际扇区肯定会与虚拟扇区保持一致,而 VMWare 将使您的管理程序/虚拟机从硬件中提取更好的性能。
要了解为什么未对齐的分区是一个性能问题,请参阅 purestorage.com 的这张图片:
查阅业内存储专家的白皮书,以更好地了解当前的最佳实践:
(例如“保留默认设置”)
但是,要继续回答原始问题,请访问一些链接的白皮书:
并且:
因此,请检查您关于在第 63 扇区创建分区的问题:
512 * 63 / 4096 = 7.875 => 错位
将来我可能会使用并保留默认值 2048。让我们检查一下:
512 * 2048 / 4096 = 156 => 对齐
参考:
常见问题解答:VMware vSphere、其他虚拟环境和 NetApp 存储系统的访客 VM 文件系统分区/磁盘对齐
如何在 VMware vSphere 5.x 环境中更正来宾 VM 数据分区对齐
如何在 VMWare ESX 中对齐块
以供参考:
那么,为什么这些是相关的呢?
您通常不从扇区 1 开始分区的原因有两个:
由于第 1 点和第 3 点,扇区 63 最终成为标准。但是,由于我将在下面概述的原因,它在很大程度上已不再使用。
好的,那么为什么它会增加到 1MB?
这个有点棘手。我还没有看到任何关于为什么选择 1MB 的实际明确的历史参考答案,甚至当这开始成为常态时也是如此。IT有一些优势:
好的,但是最初的问题呢?
鉴于上述情况,移动到 2048 作为基础实际上应该会稍微提高 VM 的性能。
它也应该是完全安全的,只需确保在移动后重新安装引导加载程序,因为它可能引用文件系统中的确切块位置而不是文件,移动后不会指向正确的位置。
fdisk
,则起始扇区将为 2048+。cfdisk
,这可能会在您稍后添加磁盘时发生,在初始安装后,起始扇区可以是 63。因此,如果您有一个起始扇区为 63 的磁盘并且您想要调整分区大小,那么只需使用
cfdisk
而不是fdisk
.我在 ProxMox 中添加和调整虚拟磁盘大小时遇到了这个问题。基本上,如果我必须更改一些
/dev/sda*
我会使用的东西fdisk
,如果我需要调整分区大小/dev/sdb|c|d
等,那么我会使用cfdisk
. 学到了很难的方式。