---
title: "Linux USB-SSD固态硬盘开启Trim"
id: "301"
type: "post"
slug: "linux-usb-ssd%e5%9b%ba%e6%80%81%e7%a1%ac%e7%9b%98%e5%bc%80%e5%90%aftrim"
published_at: "2020-06-11T10:36:18+00:00"
modified_at: "2020-06-11T10:46:00+00:00"
url: "https://www.hitsword.org/2020/301.html"
markdown_url: "https://www.hitsword.org/2020/301.md"
excerpt: "在使用Proxmox的时候，想吧SATA控制器直通给虚拟机（受制于PCIE槽不足、机箱空间不足、散热、功耗、成 […]"
taxonomy_category:
  - "Proxmox"
taxonomy_post_tag:
  - "fstrim"
  - "Proxmox"
  - "SSD"
  - "trim"
  - "固态硬盘"
---

# Linux USB-SSD固态硬盘开启Trim

在使用Proxmox的时候，想吧SATA控制器直通给虚拟机（受制于PCIE槽不足、机箱空间不足、散热、功耗、成本等原因）。就把系统盘做到USB3.0的SSD上。在网上找了很多资料，基本上都是英文的，配置好后还是记录一下：  
 1.使用ASM1153E芯片的ngff转usb转接卡  
 2.在linux系统看看硬盘是不是已经支持trim：

```
root@pve:~#lsblk --discard /dev/sda
NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda           0        0B       0B         0
└─sda1        0        0B       0B         0
```

  
 看到上面DISC-MAX都是0B就是还没开trim  
 3.使用lsusb命令找到对应的Vendor ID 和 Product ID,我这个转接卡是174C:55AA  
 4.针对这个设备配置trim规则，映射trim操作为unmap  
```
#编辑规则文件
root@pve:~#nano /etc/udev/rules.d/50-usb-ssd-trim.rules
#输入下面内容并保存
ACTION=="add|change", ATTRS{idVendor}=="174C", ATTRS{idProduct}=="55AA", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"
```

  
 5.重启后再查看硬盘是不是已经支持trim:  
```
root@pve:~#lsblk --discard /dev/sda
NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda           0        4K      32G         0
└─sda1        0        4K      32G         0
```

  
 6.看到上面的DISC-MAX显示xxG代表已经支持trim了,如果还是不支持联系转接卡卖家更新固件.测试确定ASM1153E芯片是支持的,但是要更新固件.  
 7.确定转接卡和lsblk查看trim开启正常后,就可以使用fstrim来做trim啦  
```
fstrim /挂载目录
```

  
 8.如果fstrim提示设备不支持的话，要确定分区的格式，要是ext4、xfs等支持trim的格式才行.  
 9.lvm开启trim  
```
#修改lvm.conf
root@pve:~#nano /etc/lvm/lvm.conf
#找到issue_discards并改为1
issue_discards 1
```

  
 最后重启解决。
