PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

[PCEVA首发]TrimSSD 支持XP系统的强制TRIM工具!9月16日更新

  [复制链接]
跳转到指定楼层
1#
mengxp 发表于 2012-9-5 19:41 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
点击数:87068|回复数:110
本帖最后由 mengxp 于 2012-9-16 17:02 编辑

Native版本已经支持x64版本windows(9月8日)
Native版本添加按任意键取消功能(9月16日)


TrimSSD是一款可以在任何Windows操作系统对SSD进行TRIM操作的软件

支持重启后对系统盘进行TRIM操作

速度超快,完胜任何同类软件。

仅支持NTFS文件系统,暂不支持FAT32。



**特别注意**

目前只是测试版,可能有bug,请在操作前*务必*备份重要数据。防止数据丢失!




我在以下平台测试通过

P8600
4G RAM
镁光M4 128G
WindowsXP sp3 (64G memory unlimited patched)

分区情况
20G / 10G(未4K对齐) / 10G / 10G / 70G

均为NTFS文件系统,都是4K簇

每个分区都Trim测试过,没有异常,数据无丢失无损坏。



期待高玩们的测试结果。

另寻合作

TrimSSD QQ群 113715040


主界面1



主界面2



Trim标记过程中



重启后对系统盘Trim



下载



如果提示缺少msvcr100.dll请使用下面链接下载(我的账号被限制附件200K)
http://www.vxgate.net/trimssd.rar

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 2活跃度 +10 收起 理由
778856 + 5 略叼
bssharp + 5 赞一个,有没有源代码?

查看全部评分

2#
mengxp  楼主| 发表于 2012-9-5 21:35 | 显示全部楼层
RAID之后好像就不支持trim了吧?

软件会发送ATA指令检测是否支持trim的 你可以试一下。
3#
mengxp  楼主| 发表于 2012-9-5 22:09 | 显示全部楼层
下一步计划使用文件系统过滤驱动实现xp系统的删除文件后发送Trim
4#
mengxp  楼主| 发表于 2012-9-5 23:57 | 显示全部楼层
本帖最后由 mengxp 于 2012-9-6 21:47 编辑

INTEL的官方工具是创建足够大的文件,然后获取这个文件的分配表,对文件的所有簇进行TRIM操作

而我的是直接获取卷位图。对未使用的簇进行TRIM操作,属于磁盘级操作,非文件系统IO。

卷位图是什么?请参考NTFS文件系统$Bitmap文件

显然我的这种方法是最快的,因为我不需要创建文件。

相对于intel的方法,他的不需要锁卷,我的要锁定卷以防止卷位图变化。

TRIM指令就是标记FLASH位图而已,这并不属于擦除(ERASE),标记操作由SSD内部完成
TRIM之后读不出数据不是因为擦除,而是因为Flash块被标记可以回收重映射,强制返回空数据。
TRIM存在的意义在于MLC写入寿命均衡算法(位于SSD固件内部)。

另外我的这就是标准的TRIM指令


ULONG TrimBlock(HANDLE hDrive,ULONGLONG StartLba,ULONG LbaCount)
{
    UCHAR szPassthru[1024];
    PATA_PASS_THROUGH_EX pPassthru = (PATA_PASS_THROUGH_EX)szPassthru;
    ULONG dwPassthruLen = sizeof(ATA_PASS_THROUGH_EX) + 512;
    PLBA_RANGE_ENTRY pLbaEntry = (PLBA_RANGE_ENTRY)(szPassthru + sizeof(ATA_PASS_THROUGH_EX));
    ULONG dwBytesRet;
    BOOL bRet;

    memset(szPassthru,0,sizeof(szPassthru));
    pPassthru->Length = sizeof(ATA_PASS_THROUGH_EX);
    pPassthru->AtaFlags = ATA_FLAGS_DATA_OUT;
    pPassthru->DataTransferLength = 512;
    pPassthru->TimeOutValue = 10;
    pPassthru->DataBufferOffset = sizeof(ATA_PASS_THROUGH_EX);
    pPassthru->CurrentTaskFile[0] = 1;      //TRIM
    pPassthru->CurrentTaskFile[1] = 1;      //Number of 512-byte blocks of LBA Range Entries to be transferred.
    pPassthru->CurrentTaskFile[6] = 6;      //DATA SET MANAGEMENT, DMA
    pLbaEntry->LbaLow = (DWORD)(StartLba & 0xFFFFFFFF);
    pLbaEntry->LbaHigh = (WORD)(StartLba >> 32);
    pLbaEntry->LbaCount = (WORD)LbaCount;

    bRet = DeviceIoControl(hDrive,IOCTL_ATA_PASS_THROUGH,pPassthru,dwPassthruLen,pPassthru,dwPassthruLen,&dwBytesRet,NULL);
    if(!bRet)
        return FALSE;

    if(pPassthru->CurrentTaskFile[6] & 1)   //Any Error?
        return FALSE;
    return TRUE;
}

最有力的文档(摘自ATA命令规范 第99页,ATA8-ACS-2 Draft Rev.2__T13.pdf)
Information technology -
ATA/ATAPI Command Set - 2  (ACS-2)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
5#
mengxp  楼主| 发表于 2012-9-6 08:56 | 显示全部楼层
读取位图之前会锁定分区。锁定之后所有文件级过滤驱动程序(杀毒软件通常都在这一级别),就会停止工作,因为正常的文件读写已经被系统禁止了,就不会有读写文件的请求。但是磁盘过滤级还在工作(磁盘还原类软件)。各个厂家做法不同,这个我没有测试过,不建议使用。

删除文件之后Trim还在可行性探究中。。
6#
mengxp  楼主| 发表于 2012-9-6 18:56 | 显示全部楼层
回楼上。。

软件下面写的不支持TRIM。。。。

所以trim肯定错误啦。。
7#
mengxp  楼主| 发表于 2012-9-6 18:59 | 显示全部楼层
刚查了一下你这个ssd是支持trim的。
但是不知道为什么探测结果是不支持,另外探测出来的型号也不对,居然是SATA
这不应该。。。

难道你的ssd处于RAID模式或者其他什么特殊的工作方式?
8#
mengxp  楼主| 发表于 2012-9-6 21:07 | 显示全部楼层
summer78725 发表于 2012-9-6 19:20

可能是我检测的有问题……
9#
mengxp  楼主| 发表于 2012-9-6 21:49 | 显示全部楼层
我的检测位错了,英文手册没读明白,惭愧~!
另外就是重启后运行的那个版本
由于测试时虚拟机不支持trim所以程序中注释了一段关键代码。
导致之前发布的程序重启后不能正确执行trim
这个错误太低端了。。

已经修复这2个bug并上传新版本 见1楼附件
10#
mengxp  楼主| 发表于 2012-9-7 09:12 | 显示全部楼层
jeffxl 发表于 2012-9-7 01:11
小白鼠再次来报告,AMD 785G芯片组 AHCI环境 WIN7 64BIT旗舰版,无法完成系统盘重启后TRIM操作。

具体表现 ...

当初主要考虑xp用所以我没编译64位版本

。。
11#
mengxp  楼主| 发表于 2012-9-10 14:28 | 显示全部楼层
支持vista

目前64位好像有问题,有个同学反映64位win7有trim error的bug
12#
mengxp  楼主| 发表于 2012-9-11 09:46 | 显示全部楼层
本帖最后由 mengxp 于 2012-9-11 09:48 编辑

告诉你一旦没有trim支持gc神马都是浮云

锁了卷之后读卷位图的那个ioctl会失败

我是手动解析卷位图的,

有点麻烦

其他文件系统我觉得没必要支持就没做。。
13#
mengxp  楼主| 发表于 2012-9-12 21:43 | 显示全部楼层
xmiangui 发表于 2012-9-12 18:46
M4 GC已经很积极了,现在主流盘,我觉得没有Trim问题都不大。家用环境能有多大负载会很依赖Trim……GC导 ...

对的。。
只要不频繁删文件写数据,有没有trim没多大问题。。
14#
mengxp  楼主| 发表于 2012-9-16 16:14 | 显示全部楼层
蓝屏界面不动?是正在trim的时候卡住不动吗?
15#
mengxp  楼主| 发表于 2012-9-19 22:31 | 显示全部楼层
耗时超长 应该就是失败了

程序中trim操作一次超时是5秒。你应该是超时了一整天了。。果断关机取消吧。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部