我有两个磁盘,SSD(三星 830 128GB)和普通 HDD(WD 1TB),安装了 Ubuntu 12.10。BIOS 中启用了 AHCI。我遇到了一个问题,即所有方向的复制速度都非常慢(三星->三星、WD->WD、WD->三星和三星->WD)。
让我描述一下我所做的事情:
sudo hdparm -Tt /dev/sda
结果还算不错:
Timing cached reads: 16678 MB in 2.00 seconds = 8358.48 MB/sec
Timing buffered disk reads: 1362 MB in 3.00 seconds = 453.96 MB/sec
当我使用cp
午夜指挥官复制时,我的传输速度只有 1MB/s 左右!开始读取一点,在禁用写入缓存后
hdparm -W 0 /dev/sda
速度达到了疯狂的60MB/s,但这对于SSD驱动器内部的操作来说仍然不算什么。
两个驱动器都连接到主板上的 SATA 3 插槽。仅供参考:从 USB Pendrive 复制速度更快,因此看起来像是读取速度问题。Windows 不会出现此问题。我将 dmesg 粘贴在下面:
[ 4898.720381] ata1.00: configured for UDMA/133 [ 4898.720387] ata1: EH complete
[ 4898.720509] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 4983.122199] ata2.00: configured for UDMA/133
[ 4983.122205] ata2: EH complete
[4983.122315] sd 1:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
您知道可能出了什么问题吗?
答案1
看起来您的分区未与 SSD 的擦除块边界对齐,也未与 HDD 的扇区边界对齐。这就是为什么问题出现在复制时,这涉及写入其中一个驱动器,但仅从驱动器读取时不会出现问题。
WD Caviar HDD 有 4096 字节扇区,但向 BIOS 公开了 512 字节扇区以增加“兼容性”。Ubuntu 中的默认分区不会将分区与 8 个扇区对齐,这将导致驱动器的 512 字节扇区仿真将每次写入转换为读取和重写。这将彻底损害性能。
SSD 的擦除页面大小通常在 128kB 到 1024kB 之间。最好将分区对齐为 1024kB 的倍数。
通常fdisk
使用 512 的扇区大小。这意味着您的 HDD 分区应从 8 的倍数的扇区开始,而 SSD 分区应从 2048 的倍数的扇区开始。请注意,在启动驱动器上,第一个分区应距离驱动器的起始位置至少 64kB,以便 GRUB 启动映像可以放入 MBR 和第一个分区之间。
总而言之,您需要重新分区并重新格式化驱动器。使用fdisk -u /dev/sda
LiveCD 设置从 2048 扇区的倍数开始的分区。设置分区后,您可以使用 Ubuntu 的安装程序对其进行格式化。