Linux - 将分区从磁盘后部移到前部以提高性能

Linux - 将分区从磁盘后部移到前部以提高性能

硬盘在盘片开头具有更快的性能(见区域位记录)。

根据回答对于“多个交换文件的用途是什么?”,您应该将交换分区放在驱动器的开始处附近。

我喜欢让多个交换分区占据每个磁盘的开头(以利用区域位记录)。

  1. 如何将交换从驱动器末尾移动到开头?
  2. 在 Linux 安装过程中,如何指定交换分区在磁盘上的位置?分区列出的顺序是否与它们在磁盘上的物理位置一致?

资源:

答案1

硬盘在盘片起始处具有更快的性能。

并不真地。

第一步是找出驱动器的哪个部分最接近中心。通常索引较低的位最接近中心,但情况并非总是如此*。为此,有 zcav(1),它是邦尼++

# zcav -b 200:10  /dev/mapper/try-root > root.log
awk 'NF==3 { printf "% 6.1f % 7.1f % 4.1f\n", $1, $2, $3 } 
     NF!=3 { print }' root.log
#block offset (GiB), MiB/s, time
   0.0    50.2  4.0
   0.2   175.3  1.1
   0.4   178.1  1.1
   0.6   182.6  1.1
   0.8   174.4  1.1
   1.0    57.9  3.5
   1.2   177.3  1.1
   1.4   106.0  1.9
   1.6    78.2  2.6
   1.8   183.5  1.1
# Read 2000 megs in 18 seconds, 107 megabytes per second.

这衡量了吞吐量。广阔驱动器的一部分(假想环的周长最大)。不幸的是,最长(最外层)磁道的高吞吐量与最内层磁道的低访问时间并不一致。我相信这是你声称的依据(没错,但不准确)。

如果您测量常规块设备,则 MB/s 值会随着 GB 值的增加而上升或下降。当传输速率增加时,这意味着位数从最内层轨道开始。

并回答您的问题;

  1. 删除当前交换分区。
  2. 在最适合您需求的逻辑块偏移范围内创建一个新分区。
    如果该区域已被占用,请将有价值的数据移至另一台设备并回收交换分区的空间。

  1. 通过在特定范围的千兆字节上创建分区。例如 1-10 与 990-1000。
  2. 如果数据被映射出 -> 入,则 GB 1-10 将位于驱动器的最外层。相反,
    映射的驱动器进 -> 出最内层磁道上会有 GB 1-10。
    但是,一些分区工具(例如磁盘管理)允许用户指定新分区是否应位于可用空间的开头或结尾。开始可能最靠近驱动器的中心或边缘,具体取决于数据的内部映射方式。
  3. 分区号和该分区相对于磁盘边缘的物理位置之间没有内在联系。

* 这与维基百科相矛盾。我还没有看到驱动器从最外层轨道开始映射数据。除非您可以在驱动器的规格表或手册中找到此信息,否则请在驱动器上运行 zcav 实用程序。

答案2

对于1.,您可以在 LiveCD 上使用 GParted,它是一个可以帮助移动分区的图形工具。

但是,我不推荐这样做,尤其是如果它会弄乱磁盘的开头。虽然调整分区大小以在末尾获得一些空间是相当安全的,但每次我尝试移动分区的开头时,都会失败,我丢失了分区。分区的第一个扇区是一个非常敏感的区域。

在执行此操作之前,您应该考虑是否真的需要它。您的系统是否使用了大量交换空间,以至于这种优化会产生实际影响?

关于2.,在任何发行版的安装过程中,都应该有一个步骤提示您输入安装介质。应该有一个“高级”选项卡或类似的东西,允许您指定所需的分区和挂载点。

如果你的情况是这样的:

/dev/sda1 : root
/dev/sda2 : swap
/dev/sda3 : home

如果你想切换root和的位置swap,我建议重新安装系统并同时定义一个新的分区(如果可能的话)(因为你可以home在过程中保持你的不变)。这比移动你的root分区危险性要小得多。

答案3

GParted 是你的好朋友,正如其他人在这个问题的其他答案中提到的那样。
不要忘记先备份你的系统。一个小小的错误就可能让你的系统崩溃。

确保在磁盘开头留出很小的空间(至少 4 MB)。GParted 可能会将大小四舍五入到磁盘支持的最近边界。这是意料之中的。
这可以防止引导加载程序出现潜在问题,因为引导加载程序不喜欢在引导扇区之后立即启动分区。(另请参阅 Levans 回答中的第 1 点。)

不过,您不会从中获得任何明显的好处……
重新组织交换空间最多能提高 10% 到 15% 的性能,而且只是针对实际的交换活动。
由于交换比实际 RAM 慢得多(通常慢 50 到 100 倍),交换速度的微小改进只是对整体方案的轻微影响。

只有在您的系统需要比系统安装的 RAM 多 10 倍(或更多)的 RAM 时,这种做法才可能有点好处。因此,它会疯狂地不断交换。
如果您有这样的系统,那么您做错了……无论多少性能调整都无法弥补实际 RAM 的不足。任何好处充其量也只是微不足道的。

在这种情况下,安装更多 RAM 会更加高效,而且麻烦更少。

答案4

gparted绝对是你的朋友。我建议使用系统救援光盘启动。无需重新安装(但需要备份!)。

要移动交换分区,您需要从 CD(或 USB 记忆棒)启动、加载gparted,然后按顺序执行以下操作:

  1. 删除交换分区
  2. 将其他分区移至驱动器末尾,在开头腾出空间
  3. 创建新的交换分区

然后挂载根分区,编辑/etc/fstab并注释掉交换分区。现在可以安全地从新移动的分区重新启动了。

重新启动后,执行mkswap -f /dev/sda1(或任何你的交换设备的名称,仔细检查)。然后您可以编辑/etc/fstab并更正交换条目。再重新启动一次即可正常运行。

我以前从未听说过区域位记录,但我本能地怀疑您是否能从中获得任何可衡量的益处。

相关内容