Trim и SSD с корпусом usb 3.0 не работают - UASP не поддерживается?

X-ref: Как заставить новое уведомление в notify-osd появиться, не дожидаясь, когда предыдущий будет удален?

без патчей вы можете просто сделать

#!/bin/bash

for i in {0..100..10}
    do
          killall notify-osd
          notify-send "testing" $i
          sleep 1
    done

Закладка: Как заставить новое уведомление в notify-osd появиться, не дожидаясь выхода более раннего?

[!d7 ]

Отправляет сообщение об ошибке-osd (2592): операция не разрешена. Что это значит?

Это может означать, что привилегии неадекватны:

sudo killall notify-osd

1
задан 9 March 2013 в 05:40

2 ответа

Это проблема с программным обеспечением, Linux, похоже, в настоящее время не поддерживает TRIM через USB. Проблема в том, что устройства хранения USB используют набор команд SCSI, тогда как накопитель SSD реализует набор команд ATA. Корпус USB должен обеспечивать переводчик между этими наборами команд. Операция, называемая TRIM в ATA, называется UNMAP в SCSI и DISCARD в ядре Linux. Когда Linux получает команду обрезать устройство, он ищет правильную команду для отправки на устройство. Поскольку устройства хранения USB выглядят как диски SCSI, Linux пытается использовать UNMAP или пару других возможных команд SCSI. В принципе, переводчик в USB-корпусе часто мог переводить запросы UNMAP на соответствующий ATA TRIM, хотя, вероятно, есть сложные случаи. На практике вложения не делают этого, и вместо этого они указывают, что устройство не поддерживает МНООНД. Тем не менее, во многих приложениях реализована команда SCSI для выдачи команд ATA непосредственно на устройство. Он называется транзитным транзитом ATA. Для этого есть стандартная команда, но вместо этого в некоторых приложениях есть собственная команда. Фактически, hdparm -I использует транзитную передачу ATA для получения информации с устройства. Такая же сквозная пересылка может использоваться для выдачи TRIM непосредственно на устройство, но драйвер Linux в настоящее время этого не делает. Это должно было бы обнаружить, что SCSI-диск на самом деле является транслятором SCSI-to-ATA, который поддерживает сквозную передачу ATA и использует сквозную передачу для DISCARD вместо собственных команд SCSI.

9
ответ дан 25 May 2018 в 00:59

Если UNMAP неверно переведено вашим корпусом, вы можете по крайней мере вручную обрезать весь диск с помощью hdparm (это использует сквозную передачу протокола SCSI и отлично работает на док-станции hdd UASP). Но вам нужно вычислить сектора вручную, потому что hdparm поддерживает только обрезку 65535 секторов за раз. Я написал короткий скрипт для выполнения математики:

#!/usr/bin/env python3

import sys

remaining = int(sys.argv[1])
i = 0

while remaining > 0:
    add = min(65535, remaining)
    print("%d:%d" % (i, add))
    remaining -= add
    i += add

Сохраните его как sectors.py и сделайте chmod +x sectors.py. Он дает список секторов, используемых с hdparm --trim-sector-ranges-stdin. Теперь выполните hdparm -I /dev/sdX (как root) и выдержите для строки, которая выглядит так:

LBA48  user addressable sectors:   62533296

Это подсчет сектора устройств (как вы могли бы рассчитать это SSD на 32 ГБ, я часто использую для тестирования).

Скопируйте номер в следующую команду:

./sectors.py SECTOR_COUNT | sudo hdparm --trim-sector-ranges-stdin --please-destroy-my-drive /dev/sdX

ВНИМАНИЕ: Это приведет к стиранию WHOLE DRIVE!

. По завершении запустите sync и подождите несколько секунд. Теперь вы можете перечитать таблицу разделов с помощью hdparm -z /dev/sdX или просто отключить питание устройства. Поздравляем, теперь у вас есть «свежий» SSD.

1
ответ дан 25 May 2018 в 00:59
  • 1
    Это лучший способ сделать это. Он реализован как часть функции безопасности накопителя под названием «Безопасное удаление». hdparm используется с опцией --security-erase после установки пароля с помощью --security-set-pass. После стирания весь диск по существу обрезается и обнуляется. Все это делается в контроллере вспышки привода. Я написал подробное сообщение в блоге , в котором подробно описаны этапы. – Mansour 21 December 2015 в 11:34
  • 2
    @Mansour делает --security-erase уничтожить существующие данные? – Krypton 10 January 2017 в 23:34
  • 3
    Неважно, я получил ответ. Он уничтожает все ваши данные. Быть осторожен! – Krypton 10 January 2017 в 23:49

Другие вопросы по тегам:

Похожие вопросы: