Loading... # 引言 手里有个WD黑盘,游戏和一些备份在这个硬盘里,有时候玩游戏在通关或者切换地图时,会进行硬盘的IO操作,而这个硬盘它所谓的`长时间不操作`会自动进入休眠状态(马达停转),再进行IO操作时,会重新激活硬盘造成3-5秒的时间卡顿,而`WD Drive Utilties`并不能检测到这个硬盘。所以只能自己动手了。 # WD Drive Utilties ![黑盘](https://www.zunmx.top/usr/uploads/2022/12/2742757985.png) ![MyPassport](https://www.zunmx.top/usr/uploads/2022/12/2375386183.png) 所以这个问题只能通过自己来解决了。 # 思路 ## 思路一 找到硬盘的固件,修改固件使休眠停用或增加时间,重新写入固件。 但是这个固件不太好找,奈何能力有限,只能通过软件来实现了,所以这个思路可行性不是很高。 ## 思路二 因为没有IO操作,所以才会休眠,那么定时进行读操作,让硬盘的固件的休眠失效。 也就是说,每隔1分钟,对硬盘进行一次读操作。 这里有个思考,也是盲区,在这里提出来一下。 百度到的结果:*硬盘的0磁道在最外圈* > 如果磁头再扇区的中间位置,那么读磁道0的时候,磁头一定会动的,那么这个时间消耗虽然不必计算,但是也是存在时间的,如果那个位置正好在缓存中,那么磁头就不用动了,对寿命的影响也就小了。 如果按照每隔1分钟对0磁道进行读操作,当时正在最内圈进行IO操作时,对硬盘的负载是什么样的呢? 这里我很热衷于读硬盘的扇区进行读取,因为如果读写文件的话,势必会和文件系统存在关系,根据索引或者其它先去找到文件所在的磁道,进而进行读写,所以这也是一个优势。 ![扇区查看](https://www.zunmx.top/usr/uploads/2022/12/2686030311.png) # 代码 ```python import time import psutil import threading def active(): counters = psutil.disk_io_counters(perdisk=True) for i in counters: with open(rf"\\.\{i}", 'rb') as f: print("[i] Active Drive: " + str(i), end='') print(f" >> 1bit[{f.read(1)}]") time.sleep(60) if __name__ == '__main__': print("=============================================\n" "| keep physical driver active |\n" "=============================================\n") while True: thread = threading.Thread(target=active) thread.start() thread.join() ``` © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏