我的笔记本问题非常烦人。我有一个带有系统的内部SSD驱动器和一个外部旧硬盘驱动器(在光盘托架中),主要用于大型游戏。问题是,每10秒不活动后,硬盘驱动器会继续旋转。无论如何都会发生这种情况 - 尝试了一切(包括Windows电源管理),没有运气 - 磁盘每次都完全忽略所有设置。当在spindown之后尝试访问新数据时,这会造成无法忍受的滞后,这使大多数游戏无法播放。这些不断的旋转/缩小也会缩短磁盘寿命。
因此,在尝试了一些方法之后,我决定编写一个C#应用程序,它将简单地计算下面列表中随机文件中的行 - 位于外部驱动器上,逐行读取文件。它是一个winforms应用程序,但方法keepSpinning在一个单独的线程中调用。
List<string> filesToSpin = new List<string>();
public Form1()
{
filesToSpin.Add(@"D:\book\Generic_User_Guide.pdf");
filesToSpin.Add(@"D:\book\Quick Guide.pdf");
filesToSpin.Add(@"D:\book\pck_ls.pdf");
filesToSpin.Add(@"D:\book\guide_amd64.pdf");
}
private void keepSpinning()
{
while(someKeepAliveVariable)
{
Random r = new Random();
int index = r.Next(filesToSpin.Count);
string spinThis = filesToSpin[index];
int counter = 0;
string line;
Console.WriteLine("Reading file: " + spinThis);
System.IO.StreamReader file =
new System.IO.StreamReader(spinThis);
while ((line = file.ReadLine()) != null)
{
counter++;
}
file.Close();
Console.WriteLine("Read {0} lines.", counter.ToString());
Thread.Sleep(2000);
}
}
好。令人惊讶的是,这也行不通。它工作了一段时间,但它继续打印读取文件的信息,但磁盘停止。我想驱动器会以某种方式缓存这些文件。行计数方法也非常占用CPU。 有关代码更改的任何建议都会有所帮助,也期待任何其他解决方案。
答案 0 :(得分:2)
写入磁盘上的文件而不是读取。请记住每隔一段时间清除这些文件。
另外,另一方面,硬盘听起来不太好。
答案 1 :(得分:2)
首先,谢谢大家的所有回复。我尝试了一些不同的方法,最后,经过一年的努力找到了解决方案。很抱歉没有提供硬盘名称。这是:WD750BPVT。我也没有提到第二个问题:驱动器在空闲时点击,在磁盘spindown之前几次。 我会回答我自己的问题,以便将头发留在某人头上。问题不容易追踪。
编写C#应用程序是一种非常好的方法,但它有其缺点。当我将代码更改为写入数据而不是读取时,它非常成功(没有spindowns)但驱动器在空闲时(每2-3秒)不断点击。
有人会说,由于点击声音,硬盘已经准备好死了,我应该备份我的数据,同时准备丢弃设备。但是我找到了解释。所有这些东西的原因是一个功能,旨在节省一些电源和磁盘寿命(原文如此!)。这个功能,或者实际上有两个是:
Automatic Acoustic Management (AAM)
Advanced Power Management (APM)
电源管理调节旋转和声学管理负责头部停车(点击噪音)。 您所要做的就是禁用这两个。 例如,您可以在CrystalDiskInfo中执行此操作:functions - &gt;高级 - &gt; AAM / APM控件,选择所需的驱动器,然后单击两个禁用按钮。直到重启才解决问题。它不是永久性的,因此将CrystalDiskInfo添加到启动是一个很好的举措。
此解决方案也可能适用于其他设备/制造商,因此如果您遇到类似问题,我强烈建议尝试一下。
答案 2 :(得分:0)
它可能会失败,因为操作系统会读取文件的大缓冲区并将其放入缓存中。
你可以: