Mi partición /dev/sda3
en una unidad SSD no contiene ningún sistema de archivos, pero contiene basura. ¿Cómo hago una operación TRIM / DISCARD en toda la partición?
linux
partitioning
ssd
trim
pts
fuente
fuente
Respuestas:
Si su versión de util-linux es lo suficientemente nueva (septiembre de 2012), en realidad hay una herramienta especialmente diseñada
blkdiscard
, esa es la mejor manera de hacerlo:Pero si necesita compatibilidad con versiones anteriores de distribución de Linux, sigue leyendo ... Hay casos en
hdparm
/wiper.sh
de basura para tocar un volumen porque no es una partición, por lo que necesitamos algo más allá de eso.La forma más compatible que he encontrado es aprovechar el hecho de que los volúmenes de intercambio de Linux admiten DISCARD cuando están habilitados. El wipefs al final está allí, por lo que el volumen no se reconoce como intercambio más tarde.
Esto emite el DESCARGO en la mayoría del dispositivo.
fuente
blkdiscard
. Comando peligroso ... :)WARNING: All data in the discarded region on the device will be lost!
Sé que esta pregunta es bastante antigua, pero ...
La forma más sencilla de hacer esto es simplemente crear un sistema de archivos ext4 en la partición con una versión razonablemente reciente de
mkfs.ext4
. Lo primero que hace esta herramienta es RECORTAR toda la partición. Una vez que haya hecho eso, puede sobrescribir los datos que se crean con el sistema de archivos que desee.(Acabo de hacer esto para crear una nueva partición vfat en una tarjeta SD, por ejemplo).
fuente
mkfs.ext4 -J size=4 -N1 /dev/my/device
-E lazy_journal_init
parece dar como resultado un poco menos de escrituras que-J size=4
lo que hace. (Basado en experimentos usando un archivo disperso en lugar de un SSD físico ydu
para verificar cuánto se había escrito)hdparm --trim-sector-range es de bajo nivel, se supone que debe hablar directamente con el SSD, por lo que no depende del sistema de archivos. Lo que wiper.sh hace es usar programas específicos del sistema de archivos para mapear regiones libres (sistema de archivos) a sectores SSD (hardware), ellos usan hdparm para recortarlos.
Respondiendo a la pregunta, puede usar hdparm para recortar esa partición, pero debe tener mucho cuidado . La forma de hacerlo es obtener el rango de sector utilizado por la partición, luego use hdparm en ese rango de sector. Probablemente necesitará pasar varios rangos de sector, ya que cada rango para --trim-sector-range puede tener un máximo de 65535 sectores.
fdisk -l puede decirle el comienzo y el tamaño de las particiones. Preste atención a las unidades que usa fdisk y al tamaño del sector de su SSD.
Ejemplo (mi SSD):
Para descartar el espacio antes de esta partición, podría recortar (tamaño de 512 bytes, en mis SSD) 2047 sectores a partir de sector 1:
hdparm --trim-sector-ranges 1:2047
. No puedo recortar a partir del sector 0 porque ese es el MBR (no sé cómo va para GPT).Para descartar el espacio utilizado por la partición, lo haría
hdparm --trim-sector-ranges 2048:65535 67583:65535 133118:65535 ...
. Puede ser guionizado pero no voy a escribir uno ahora.También para estar seguro: no estoy garantizando nada aquí, es posible que haya calculado mal los sectores, haga una copia de seguridad de todo antes de usar efectivamente --trim-sector-range.
Nota : si recorta el espacio "vacío" antes de la primera partición, como lo mostré, asegúrese de reinstalar GRUB (o cualquier cargador de arranque que use) antes de reiniciar, ya que GRUB almacena parte de él en sectores "no utilizados" antes de la primera partición . No conozco otros cargadores de arranque, pero supongo que puede ser el caso, así que tenga cuidado.
fuente
wiper.sh
está obsoleto por lofstrim
que es mucho más seguro, pero para este uso específicoblkdiscard
supera a ambos. En 2013, no hay necesidad de arriesgar rangos de computación manualmente.Puede echar un vistazo a la secuencia de comandos
wiper.sh
incluida con el paquete hdparm. Utiliza el comando hdparm--trim-sector-ranges
para RECORTAR todos los sectores vacíos en una partición, al menos si contiene un sistema de archivos ext3 / 4. No estoy seguro de si funciona con particiones sin formato, pero siempre puede formatearlo temporalmente con ext4.fuente
wiper.sh
recortaría casi toda la partición, excepto los metadatos ext4. Pero me gustaría recortar toda la partición.blkdiscard
puede funcionar en particiones, no solo en unidades completas. Lo probé con éxito en Fedora 20. Revisé las fuentes deblkdiscard
: es un programa muy simple que no sabe nada sobre particiones. Supongo que el núcleo hace la traducción.Tenga mucho cuidado,
blkdiscard
no haga preguntas y no muestre información de progreso.Si blkdiscard no está disponible, use este script y alimente su salida a hdparm. El primer argumento es el número de sectores a recortar, el segundo es el primer sector a recortar.
fuente
Aquí hay un artículo interesante que habla sobre el uso de HDDErase para invocar la función de borrado seguro incorporada del SSD, que debería obtener lo que desea:
http://www.windowsitpro.com/article/file-systems/q-how-can-i-reset-a-solid-state-disk-ssd-to-a-fully-erased-clean-state-
fuente
blkdiscard --secure
hace.