精华内容
下载资源
问答
  • 通用 SSD Trim 工具

    2017-01-15 10:30:03
    1,威刚SSD 工具 单文件运行 支持任何SSD 不分品牌 2,TrimSSD是一款可以在任何Windows操作系统对SSD进行TRIM操作的软件
  • SSD Trim介绍

    2020-06-19 15:45:19
    固态硬盘 固态硬盘(SSD)主要是通过NandFlash来存取数据。操作系统按照操作机械硬盘的方式来操作固态硬盘时,会面临一些问题。 当用户删除文件时,操作系统只是在文件系统中标记对应数据区为空闲,并不真正擦除对应...

    1. 机械硬盘

    机械硬盘(HDD)主要是通过机械装置来控制磁头在硬盘上对磁性物质进行磁化来进行写读操作的装置,因此机械硬盘可以直接覆盖写,所以不需要特别的擦除操作。
    操作系统(包括磁盘驱动及文件系统)对机械硬盘的此特性进行了专门优化。当用户删除硬盘上的文件时,操作系统并没有告诉硬盘删除操作,操作系统只是将文件系统的数据映射表进行相应的标记(如FAT表中标记FAT表项为空),并不是真正是删除文件数据。这样做,可以提高操作效率。下次有新文件写入时,操作系统会通过文件系统表项中空白项对应数据区的位置,直接进行覆盖写操作即可。

    2. 固态硬盘

    固态硬盘(SSD)主要是通过NandFlash来存取数据。操作系统按照操作机械硬盘的方式来操作固态硬盘时,会面临一些问题。
    当用户删除文件时,操作系统只是在文件系统中标记对应数据区为空闲,并不真正擦除对应数据区。下一次写操作时,是直接覆盖写。FLASH对应的SLC块容量为1MB,操作系统删除100MB文件之后,假设写128K数据大小文件,此时直接是覆盖写,覆盖因为需要搬移,并且实际搬移的数据可能是需要擦除的无效数据,这就非常影响写速度。
    在这里插入图片描述

    3. Trim

    针对固态硬盘的这种问题,操作系统层面还有各种协议协会,共同提出了专门针对固态硬盘的优化方案——Trim。Trim命令在ATA命令集中,被称为TRIM,在SCSI命令集中被称为UNMAP。
    Trim,就是操作系统在删除文件时,直接告诉固态硬盘删除操作,而不只是在文件系统中标记一下。例如,操作系统删除200MB文件,通过Trim告诉固件,那么固件就直接将对应200MB的NandFlash擦除。这样写的时候,就不用进行过多搬移,尤其是针对无效数据的搬移。
    所以Trim主要有两个作用:
    将擦除操作从覆盖写移到删除操作时。
    将对无效数据的搬移操作直接消除掉。
    Trim的效果必须是操作系统与固态硬盘匹配,才能发挥效果。windows7默认状态下trim指令是开启的,如果想查询目前的trim指令状态,我们可以在管理员权限下,进入命令提示符界面,

    • 输入“fsutil behavior query disabledeletenotify”,之后会得到相关查询状态的反馈。
    • 提示为“disabledeletenotify=0”即trim指令已启用;
    • 提示为“disabledeletenotify=1”即为trim指令未启用。
    • 输入“fsutil behavior set disabledeletenotify 0”,启用TRIM功能。
    • 输入“fsutil behavior set disabledeletenotify 1”,关闭TRIM功能。

    4. 补充

    传统机械硬盘没有TRIM,也不需要TRIM。但是最新的机械硬盘,为了追求更高的容量,采用了SMR(叠瓦式磁记录方式),这就导致写的时候需要写更宽的磁道,也就是说写的时候,如果当前磁道相领磁道有数据,
    也是需要有一个相应的搬移操作,这同样影响写速度。为了避免这种情况,主要是删除文件时,需要提前完成一个搬移操作,以此来避免影响写时的速度。所以此种方式的机械硬盘也是可以响应操作系统的Trim指令,并且有良好的效果。

    展开全文
  • SSD TRIM命令

    2020-11-25 15:40:08
    TRIM(SATA), Deallocate(NVMe), UNMAP(SCSI)指的是同一类指令,都是为了减少不必要的数据搬移。 原因: 在文件系统中,删除文件并没有真正的删除物理...Trim 只是一个指令,它让操作系统通知 SSD 主控某个页的数据已

    TRIM(SATA), Deallocate(NVMe), UNMAP(SCSI)指的是同一类指令,都是为了减少不必要的数据搬移。

    原因:

    在文件系统中,删除文件并没有真正的删除物理的数据,只是清空了记录表。而此时,对SSD来说,它并不知道文件已经被删除了,只有下次覆写的时候,SSD才能发现之前被删除的文件对应的page是无效的,从而启动GC。然而,如果在此之前发生了GC等数据搬移动作,无效的page仍然会被当做是有效的。

    作用:

    Trim 只是一个指令,它让操作系统通知 SSD 主控某个页的数据已经‘无效’后,任务就已完成,并没有更多的操作。TRIM 的先进性在于它可以让固态硬盘在进行垃圾回收的时候跳过移动无用数据的过程,从而不再用重新写入这些无用的数据,达到节省时间的目的。

    这将会产生三大优点:

    1. 降低写入放大。更少的数据被重写,更多的空闲空间为垃圾回收所利用。更多的空间可用也意味着不需要重新写入更多的数据。

    2. 更高的吞吐量。支持了 TRIM 指令,就意味着在垃圾回收阶段需要移动的数据表少,固态硬盘性能就会提升。固态硬盘吞吐量的瓶颈在于闪存。固态硬盘的最快写入速度就是闪存所能支持的最快写入速度。在执行垃圾回收过程中,由于涉及到数据的移动和写入,固态硬盘不得不要停止一些主控的数据传输。这也是为什么固态硬盘知道无用数据的优点所在,至少在垃圾回收阶段,它这些数据不在需要移动,从而节省带宽。

    3. 改善耐用性。由于不在需要重新写入无用数据,这样可以减少固态硬盘的实际写入次数。

    注意:目前 TRIM 并不能正常工作在 RAID 环境中。这是因为目前 RAID 驱动一般都不支持 TRIM

     

    展开全文
  • 之前知道 SSDTRIM 的功能,但一直没有深究,直到最近同事问起。目前了解的信息如下,如有错误,欢迎指正。SSD 在闪存单元中存取数据时有 page 和 block 的概念。SSD 被划分成很多 block, 而 block 被划分成很多 ...

    之前知道 SSD 有 TRIM 的功能,但一直没有深究,直到最近同事问起。目前了解的信息如下,如有错误,欢迎指正。

    SSD 在闪存单元中存取数据时有 page 和 block 的概念。SSD 被划分成很多 block, 而 block 被划分成很多 page。

    f94efec8d186d30ffb95943ee405573e.png

    SSD Read 和 Write 都以 page 为单位,而清除数据(Erase) 是以 block 为单位的。不过 SSD 的 Write 只能写到空的 page 上,不能像传统机械磁盘那样直接覆盖,修改数据时,操作流程为 read-modify-write:读取原有 page 的内容,在 cache 中修改,写入新的空的 page 中,修改逻辑地址到新的 page ,原有 page 标记为 'stale',并没有清零。

    Linux 文件系统对于删除操作,只标记为未使用,实际并没有清零,底层存储如 SSD 和传统机械磁盘并不知道哪些数据块可用,哪些数据块可以 Erase。所以对于非空的 page,SSD 在写入前必须先进行一次 Erase,则写入过程为 read-erase-modify-write: 将整个 block 的内容读取到 cache 中,整个 block 从 SSD 中 Erase, 要覆写的 page 写入到 cache 的 block 中,将 cache 中更新的 block 写入闪存介质,这个现象称之为写入放大( write amplification)。

    为了解决这个问题,SSD 开始支持 TRIM,TRIM 功能使操作系统得以通知 SSD 哪些页不再包含有效的数据。TRIM 功能有助于延长 SSD 的长期性能和使用寿命。如果要启用 TRIM, 需要确认 SSD 、操作系统、文件系统都支持 TRIM。

    根据 RedHat 的 SOLID-STATE DISK DEPLOYMENT GUIDELINES 介绍:随着所使用的 block 接近磁盘容量, SSD 的性能会开始降低,性能影响程度因供应商而异,但是所有设备都会遇到一些性能下降。为了解决性能退化问题,Linux 操作系统支持发送 discard 请求来通知存储器哪些 block 不再使用。

    检测 SSD 是否支持 TRIM

    可以通过 /sys/block 下的信息来判断 SSD 支持 TRIM, discard_granularity 非 0 表示支持。

    # cat /sys/block/sda/queue/discard_granularity

    0

    # cat /sys/block/nvme0n1/queue/discard_granularity

    512

    也可以直接使用 lsblk 来检测,DISC-GRAN (discard granularity) 和 DISC-MAX (discard max bytes) 列非 0 表示该 SSD 支持 TRIM 功能。

    # lsblk --discard

    NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO

    sda 0 0B 0B 0

    ├─sda1 0 0B 0B 0

    ├─sda2 0 0B 0B 0

    └─sda3 0 0B 0B 0

    sr0 0 0B 0B 0

    nvme0n1 512 512B 2T 1

    nvme1n1 512 512B 2T 1

    网上也有文章介绍通过 hdparm 来检测,不过我在 Intel P4500 SSD 测试没有返回该信息。

    # hdparm -I /dev/sda | grep TRIM

    * Data Set Management TRIM supported (limit 1 block)

    Continuous TRIM

    RedHat Enterprise Linux 6.3 和之前版本,只有 ext4 文件系统完全支持 discard。 RedHat Enterprise Linux 6.4 开始,ext4 和 XFS 已经完全支持 discard。

    对于 ext4 文件系统,可以在/etc/fstab里添加 discard 参数来启用 TRIM,添加前请确认你的 SSD 支持 TRIM。

    /dev/sdb1 /data1 ext4 defaults,noatime,discard 0 0

    以下是 ext4 文档中的挂载参数介绍:

    discard

    nodiscard(*)

    Controls whether ext4 should issue discard/TRIM. commands to the underlying block device when blocks are freed.

    Periodic TRIM

    util-linux 中自带了 fstrim 工具(Discard unused blocks on a mounted filesystem.),平常用 -a 选项(-a, --all trim all mounted filesystems that are supported)比较多,可以自动检测硬盘是否支持 trim 功能,并在已挂载文件系统上执行 trim。

    有兴趣的同学可以看 fstrim 源码 具体实现。

    以下是我在 CentOS 7.4 系统做的测试,/dev/nvme0n1 和 /dev/nvme1n1 是 Intel P4500 NVMe SSD, 文件系统为 ext4。

    # fstrim -a -v

    /data2:3.4 TiB (3710506934272 字节) 已修剪

    /data1:3.2 TiB (3546946879488 字节) 已修剪

    # df -h

    文件系统 容量 已用 可用 已用% 挂载点

    /dev/sda2 267G 7.0G 246G 3% /

    devtmpfs 63G 0 63G 0% /dev

    tmpfs 63G 0 63G 0% /dev/shm

    tmpfs 63G 1.1G 62G 2% /run

    tmpfs 63G 0 63G 0% /sys/fs/cgroup

    /dev/sda1 190M 147M 29M 84% /boot

    /dev/nvme0n1 3.6T 365G 3.1T 11% /data1

    /dev/nvme1n1 3.6T 212G 3.2T 7% /data2

    tmpfs 13G 0 13G 0% /run/user/1000

    fstrim 过程中,磁盘 IO 使用率还是比较高的, 两块盘加起来用了 2 分钟。

    Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

    nvme0n1 0.00 319.00 592.00 716.00 2368.00 76391672.00 116810.46 1.10 0.84 0.20 1.37 0.74 97.40

    nvme1n1 0.00 0.00 0.00 6.00 0.00 24.00 8.00 0.00 0.00 0.00 0.00 0.00 0.00

    sda 0.00 9.00 0.00 2.00 0.00 44.00 44.00 0.00 0.00 0.00 0.00 0.00 0.00

    在使用 systemd 的 Linux 发行版中,一般都自带了 fstrim.timer 和 fstrim.service,启用后会定期一周执行一次 fstrim。以下是 CentOS 7.4 中的 service 文件。

    # systemctl enable fstrim.timer

    # systemctl start fstrim.timer

    # cat /usr/lib/systemd/system/fstrim.timer

    [Unit]

    Description=Discard unused blocks once a week

    Documentation=man:fstrim

    [Timer]

    OnCalendar=weekly

    AccuracySec=1h

    Persistent=true

    [Install]

    WantedBy=multi-user.target

    # cat /usr/lib/systemd/system/fstrim.service

    [Unit]

    Description=Discard unused blocks

    [Service]

    Type=oneshot

    ExecStart=/usr/sbin/fstrim -a

    参考

    从 Intel 工程师那边了解到,Intel Optane SSD 不同于 NAND, 使用了 write-in-place 技术, 没有垃圾回收,没有 trim。而 Intel P4500、P4600 系列的 NVMe SSD 都是 NAND 产品,主动 trim 可以优化性能并延长寿命,特别是写频繁场景:

    For NAND SSD:

    mount -t xfs -o noatime,nodiratime,discard,nobarrier /dev/nvme0n1 /data/nandssd

    The noatime/nodiratime parameters reduces the updates to the access time structures on disk.

    The “discard” parameter tells the SSD to use the NVMe “TRIM” transaction to inform the SSD on “free space”.

    The “nobarrier” parameter informs the OS that the drive supports a power-protected write buffer…and the OS can relax ordered writes on filesystem updates.

    There have been some very recent changes in the XFS filesystem code that are now ignoring this option.

    That appears to change some of the performance results…I need to go back and measure what the impacts are.

    For Optane SSD:

    mount -t xfs -o noatime,nodiratime,nodiscard,nobarrier /dev/nvme${i}n1 /data/optssd${i}

    We changed “discard” to “nodiscard”. That is because “discard” does not provide any performance benefit on Optane.

    Because Intel supports a “zeros” discard policy…(reads to unallocated data items returns zeros rather than random data)…the Optane drives were doing an extra erase of the memory when it handled a NVME TRIM transaction. Not good.

    有经验的同学欢迎在评论中讨论。

    展开全文
  • 如果卷全部由 SSD(固态硬盘)构成,建议你启用 SSD TRIM。此功能可提升 SSD 上所创建卷的读写性能、提高效率以及延长 SSD 的使用寿命。 启用 SSD TRIM TOS 桌面-控制面板-存储管理-卷; 2…选择一个完全由 SSD ...

    如果卷全部由 SSD(固态硬盘)构成,建议你启用 SSD TRIM。此功能可提升 SSD 上所创建卷的读写性能、提高效率以及延长 SSD 的使用寿命。
    启用 SSD TRIM

    1. TOS 桌面-控制面板-存储管理-卷;
      在这里插入图片描述

    2…选择一个完全由 SSD 组成的卷,然后在“更多”下拉菜单中选择SSD TRIM。
    在这里插入图片描述

    3.在弹出窗口中,勾选启用 TRIM 复选框;
    在这里插入图片描述

    4.设置系统执行 SSD TRIM 的周期、时间等,点击确定;
    在这里插入图片描述

    5.设置成功。
    在这里插入图片描述

    展开全文
  • 关于SSD Trim功能

    2018-04-16 10:04:00
    TRIM指令是微软联合各大SSD厂商所开发的一项技术,属于ATA8-ACS规范的技术指令。    TRIM是告诉NAND闪存固态存储设备要擦除哪些数据的SATA接口指令。当相关页面的数据可以被覆盖时,操作系统会发给SSD一个TRIM...
  • NVMe SSD Trim在数据安全中的作用

    千次阅读 2018-05-15 19:36:06
    SSD存储系统中,定期主动执行trim指令,能够减少因IO触发的写放大,从而提升IO性能。另外,主动trim后,再次读取返回0,这样使client无法读取已经删除的数据,有利于数据安全(隐私),特别是在公有云中,存储系统...
  • 什么是SSD TRIM (by quqi99)

    千次阅读 2016-03-23 15:04:31
    作者:张华 发表于:2016-03-23 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息...但SSD物理覆盖写却是很慢的(对于SSD,可以以4KB大小的页(128个page组成一个block)来读写数据,但却...
  • SSD TRIM

    2017-02-06 23:54:00
    SSD 在操作方式上与传统磁性驱动器不同,并且它们需要在软件上另行处理以达到功能优化。-- Don Watkins 编译自: https://opensource.com/article/17/1/solid-state-drives-linux-enabling-trim-ssds 作者: Don ...
  • Mac OS X 10.10.4开启第三方SSD TRIM教程.docx
  • 苹果OS X El Capitan开启第三方SSD TRIM支持更简单!.docx
  • SSD Trim在OSX10.10

    2015-05-24 20:03:46
    一个不错的开Trim,避免打一堆命令,试过可以的 一个不错的开Trim,避免打一堆命令,试过可以的
  • ssd trimWindows 7 and above are set toautomatically enable TRIM on solid-state drives. You shouldn’t need to worry about enabling TRIM yourself. But, if you want to double-check that Windows has enab...
  • SSDTRIM原理及实践

    2021-09-23 15:13:15
    TRIM指令是微软联合各大SSD厂商所开发的一项技术,属于ATA8-ACS规范的技术指令。 TRIM是告诉NAND闪存固态存储设备要擦除哪些数据的SATA接口指令。当相关页面的数据可以被覆盖时,操作系统会发给SSD一个TRIM指令。SSD...
  • 1. 写trim bitmap时需要先下刷bitmap再去更新L2P table, 不然在spor起来后会读到老数据。即trim completion 回了之后要保证是unmap的,就需要立即下刷trim bitmap,不然spor起来之后就会读到未trim之前的数据。 ...
  • Mac SSD TRIM的终极方案

    2021-03-13 09:57:34
    Enable SSD TRIM for Mac, Ultimate Solution. TRIM终极方案 我的Mac机型是Mac mini Late2012,把硬盘换成了SSD。试了多种打开SSD TRIM的教程,总不能成功,有一次还弄到系统无法启动。今天大盘开始盘整了,于是可以...
  • 在我们接触到SSD(固态硬盘)之后,就知道固态硬盘比机械硬盘速度快,但是有着一个写入寿命的问题,所以今天我们讨论一下如何使用Trim功能来提高SSD的使用性能和寿命。 正文 首先,我们了解下什么是Trim命令?其实...
  • trim ssd 在运行Linux的计算机上安装了第一个固态驱动器(SSD)之后,我已经开始研究如何保养它们。 固态驱动器的运行方式与传统磁驱动器不同,并且它们需要从软件方面进行不同的维护才能发挥最佳功能。 在传统的...
  • TrimSSD是一款可以在任何Windows操作系统对SSD进行TRIM操作的软件 支持重启后对系统盘进行TRIM操作。 速度超快,完胜任何同类软件。 仅支持NTFS文件系统,暂不支持FAT32。 WindowsXP M4-128G 测试通过。 *注意...
  • 如 果你要问当前PC最大的性能瓶颈是什么,大多数资深玩家会告诉你是存储系统。若你要问如何弥补这个...其实不然,玩 家们纠结的其实是一个叫trim的技术……相 信玩家们对Trim都不陌生了,虽然它是一项诞生不到三年...
  • SSDTRIM功能有什么作用?

    万次阅读 2018-01-02 16:00:47
    TRIM指令是微软联合各大SSD厂商所开发的一项技术,属于ATA8-ACS规范的技术指令。  TRIM是告诉NAND闪存固态存储设备要擦除哪些数据的SATA接口指令。当相关页面的数据可以被覆盖时,操作系统会发给SSD一个TRIM指令...
  • SSD为什么需要Trim

    千次阅读 2017-07-18 11:42:48
    什么是TrimTrim又叫 Disable Delete Notify。当系统删除某个文件时候,它只是简单的在逻辑数据表内把存储要删除的数据的位置标记为可用而已。使用机械硬盘的系统根本就不需要向存储设备发送任何有关文件删除的...
  • no zuo no die, 这把手欠升级到了Yosemite, 然后发现原来在Mavericks里已经激活的TRIM在这里不行了, 又提示trim enable软件不适于此版本。 然后,悲剧就开始了, 随手找了一个老帖子,按照那个命令把内核文件改了...
  • SSD写数据会出现什么问题 SSD读写的单位不是位,而是一个块。如果要改变这个块中的一位,首先要将整个块擦写成1,然后再写入更新的数据。 为了解决擦写块的低效,SSD的策略是将需要改写的块,读取出来,进行数据修改...
  • 开启SSD固态硬盘的TRIM具体方法如下: 1、在开始按钮点右键,以管理员身份运行“命令提示符” 2、执行如下命令: fsutil behavior set disabledeletenotify 0

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,816
精华内容 726
关键字:

ssdtrim