在 Ubuntu 10.04 机器上,将 LG 型号 GH22NS40 光驱连接到英特尔 82801IR/IO/IH(ICH9R/DO/DH)4 端口 SATA IDE 控制器,使用 P5E WS Pro 主板,通过运行以下命令将 ISO 文件刻录到标准空白 DVD-R DVD:
nice -n 18 ionice -c3 growisofs -dvd-compat -Z /dev/dvd1="video.iso"
导致计算机冻结(无法在 vim 中输入,无法呈现 Firefox 屏幕等),有时会持续几分钟,而输出
执行“builtin_dd if=video.iso of=/dev/dvd1 obs=32k seek=0”
将显示。命令“top”和“atop”没有显示任何异常的资源消耗,我原本以为包括“ionice”命令可以防止这种冻结。有人能找出问题并提出解决方案吗?
答案1
我相信我已经找到了解决这个问题的方法,这要感谢 Thomas Schmitt 的深刻见解,我向他表示热烈的感谢!
在华硕 P5E WS Pro 主板的 BIOS 设置实用程序中,在“SATA 配置”下,“将 SATA 配置为”选项可以设置为 IDE、RAID 或 AHCI。在安装 Ubuntu 操作系统时,我将此选项保留为 IDE,这是默认设置(可能是为了 Windows XP 用户的利益;见下文)。手册中写道:“如果您想将串行 ATA 硬盘驱动器用作并行 ATA 物理存储设备,请保留默认设置 (IDE)。”
为了解决使用光驱写入介质时计算机冻结的问题,我进入 BIOS 并将“将 SATA 配置为”选项更改为 AHCI。手册中写道:“AHCI 允许板载存储驱动程序启用高级串行 ATA 功能,通过允许驱动器内部优化命令顺序来提高随机工作负载下的存储性能。” 我警告读者,进行此更改可能不安全,或者在操作系统已经安装后可能不安全。互联网搜索显示,Windows 用户在进行此类更改后遇到了启动计算机的问题。我只能证明,在我的计算机上运行 Ubuntu 10.04 时,我没有遇到此类问题。似乎 AHCI 驱动程序在 Ubuntu 10.04 中默认安装(我希望在更高版本的 Ubuntu 中也是如此),但在 Windows XP 中则没有。
进行更改后,我确实遇到了两个小问题。首先,重新启动后,分配给 /dev/sdc 的 SCSI 磁盘被重新分配给 /dev/sdd,分配给 /dev/sdd 的 SCSI 磁盘则被重新分配给 /dev/sdd。由于我之前已在 /etc/fstab 文件中添加了为 /dev/sdc1 和 /dev/sdd1 提供挂载点的行,因此我暂时无法访问这些驱动器,直到适当编辑 /etc/fstab 文件后才能访问。(如果我使用 UUID 来识别 /etc/fstab 中的设备而不是 /dev/sd 中的设备,则可能不会出现此问题……)
第二个小问题是,在将 IDE 更改为 AHCI 后,第一次重启后我必须重置以太网 eth0 连接信息。在 Ubuntu 10.04 中,可以在“系统”->“首选项”->“网络连接”中完成此操作:在 IPv4 设置下,必须将地址、网络掩码和网关重置为我之前的设置。
经过多次后续重启后,这两个小问题均未再次出现。
从 IDE 更改为 AHCI 后,命令“lspci -k”报告“SATA 控制器 Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 端口 SATA AHCI 控制器(修订版 02)”(之前列为“IDE 接口 Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 4 端口 SATA IDE 控制器(修订版 02)”),“正在使用的内核驱动程序”已从“ata_piix”更改为“ahci”。从 IDE 切换到 AHCI 后,“IDE 接口:Marvell Technology Group Ltd. 88SE6145 SATA II PCI-E 控制器(修订版 a1)”的列表保持不变(“正在使用的内核驱动程序”原为“pata_marvell”)。此外,打开“系统”->“管理”->“磁盘实用程序”,我发现曾经给我带来问题的硬盘和光驱现在被组织在“SATA 主机适配器”下,并带有 82801IR/IO/IH 硬件列表。我记得,在更改之前,磁盘实用程序将它们放在 82801IR/IO/IH 下,标记为“PATA 主机适配器”。
自做出改变以来,该命令
nice -n 18 ionice -c3 growisofs -dvd-compat -Z /dev/dvd1="video.iso"
似乎不会以任何明显的方式减慢计算机速度。我尝试了一些基准测试,例如在启动上述命令后向各种硬盘驱动器写入几兆字节的数据,并且在计算机同样处于运行状态时不写入该命令:运行命令时(尤其是启动时,即之前的问题时期),挂钟时间和 CPU 时间似乎都在正常范围内。使用 vim 和 Firefox 时,我在命令后立即观察到的问题似乎不再发生。
答案2
如果 DVD 刻录机和硬盘作为主从设备位于同一个 PATA 控制器上(例如 /dev/hda 和 /dev/hdb),则此行为是合理的。但对于 SATA,这种情况不会发生。
尽管如此,您是否已经尝试将刻录机连接到不同的 SATA 插槽?(这对 PATA 有帮助。)
祝你今天过得愉快 :)
托马斯