![比较相同磁盘上的 2 个分区](https://linux22.com/image/74579/%E6%AF%94%E8%BE%83%E7%9B%B8%E5%90%8C%E7%A3%81%E7%9B%98%E4%B8%8A%E7%9A%84%202%20%E4%B8%AA%E5%88%86%E5%8C%BA.png)
我有 2 个物理上相同的磁盘。每个有 1 个分区:
| Disk | FS | Size | Comment |
|----------+------+----------+----------------------------------|
| /dev/sdb | NTFS | 468.8 GB | Partition created long |
| | | | ago with Partition magic, Win XP |
|----------+------+----------+----------------------------------|
| /dev/sdc | ext4 | 458.5 GB | Partition created last |
| | | | week with Linux fdisk v. 2.21.2 |
|----------+------+----------+----------------------------------|
以下是每个文件的 fdisk 信息:
深圳发展银行
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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: 0x3765c6b7
Device Boot Start End Blocks Id System
/dev/sdb1 * 63 976768064 488384001 7 HPFS/NTFS/exFAT
SDDC
Disk /dev/sdc: 500.1 GB, 500107862016 bytes
81 heads, 63 sectors/track, 191411 cylinders, total 976773168 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: 0xe84f8200
Device Boot Start End Blocks Id System
/dev/sdc1 2048 976773167 488385560 83 Linux
尽管它们相同,但 fdisk 提供了不同的信息:
| Disk | heads | cylinders |
|------+-------+-----------|
| sdb | 255 | 60801 |
| sdc | 63 | 191411 |
问题
- 为什么会存在这种差异呢?
为什么 sdb1 以块 #68064 结尾,而 sdc 以 #73167 结尾?
末尾空间:976773167 - 976768064 = 5103 块
开头空间:63 - 2048 = -1985 块
总计:5103 - 1985 = 3118 块
sdc1 必须还有 3118 个块。而实际上分区较小。为什么?
- 我听说,最好从块 #2048 开始分区,然后从 63 开始。因此,sdc 文件系统必须工作得更快,然后是 sdb。这是真的吗?
答案1
柱面/磁头/扇区寻址已经过时了,但是一些旧的磁盘工具仍然默认使用它,并且 Linux
fdisk
在模拟中支持它。它给出的 CHS 值并不涉及磁盘的任何物理现实,而是基于(我猜测)当前分区表的猜测。也许可以安全地忽略它们。默认情况下,sdc1 一直运行到磁盘末尾
fdisk
; sdb1 在某个较短的地方停止,在末尾留下可用空间,用于某些可能难以理解的目的(也许 Windows 使用这个?)同时,sdc1 从扇区 2048 开始,这意味着它是 1MB 对齐的;这确保了现代磁盘上良好的性能,并且还导致在引导加载程序的第一个分区之前有足够的空间,GPT(如果需要)等等。 sdb1 使用较旧的标准作为第一个启动分区,它仍然可以在现代硬件上工作,但可能会导致对齐问题和引导加载问题。为什么 sdb1 扫描得比 sdc1 大,即使后者的扇区长?如果您从文件系统检查器中得到这些数字,我猜这是由于不同的文件系统,并且代码没有以相同的方式处理它们。 (例如,NTFS FS 代码可能报告更像原始分区大小的内容,而 ext* 正在减去文件系统开销。)这里没有更多详细信息,很难说。
分区起始扇区是否重要取决于您的设置。旧磁盘只要一切都是 512 字节对齐就可以了;较新的设备切换到 4k 物理扇区,因此他们希望事情与该粒度保持一致(如果不这样做,则会造成严重的性能损失)。从 1M 开始,可以更轻松地使用一些各种(主要是 Linux/Unix)设备映射器技术,这些技术会在设备开头增加磁盘开销,同时仍确保 4k 对齐。很难说这对您的情况是否重要,但 1M 对齐可能是很好的形式。