¿Cómo particionar correctamente la unidad flash USB y qué sistema de archivos elegir teniendo en cuenta la nivelación de desgaste?

13

Dos problemas Primero: ¿cómo particionar la unidad flash?

No debería necesitar hacer esto, pero ya no estoy seguro de si mi partición está alineada correctamente ya que me vi obligado a eliminar y crear una nueva tabla de particiones después de que gparted se quejara cuando intenté formatear la unidad de disco de FAT a ext4.

La respuesta ingenua sería decir "solo usa el valor predeterminado y todo va a estar bien". Sin embargo, si lee los siguientes enlaces, sabrá que las cosas no son tan simples: https://lwn.net/Articles/428584/ y http://linux-howto-guide.blogspot.com/2009/10/increase- usb-flash-drive-write-speed.html

Luego está también el tema de los cilindros, las cabezas y los sectores. Actualmente obtengo esto:

$sfdisk -l -uM  /dev/sdd
Disk /dev/sdd: 30147 cylinders, 64 heads, 32 sectors/track
Warning: The partition table looks like it was made
   for C/H/S=*/255/63 (instead of 30147/64/32).
For this listing I'll assume that geometry.
Units = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start   End    MiB    #blocks   Id  System
/dev/sdd1         1  30146  30146   30869504   83  Linux

$fdisk -l /dev/sdd
Disk /dev/sdd: 31.6 GB, 31611420672 bytes
255 heads, 63 sectors/track, 3843 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00010c28

Entonces, desde mi comprensión actual, debería alinear las particiones a 4 MiB (actualmente está a 1 MiB). Pero todavía no sé cómo configurar los cabezales y sectores correctamente para mi dispositivo.

Segundo problema: sistema de archivos.

De los puntos de referencia que vi ext4 proporciona el mejor rendimiento, sin embargo, existe el problema de la nivelación del desgaste. ¿Cómo puedo saber que mi microcontrolador Transcend JetFlash 700 proporciona nivelación de desgaste? ¿O simplemente mataré mi disco más rápido?

He visto muchas publicaciones en la web que dicen que no te preocupes, las unidades más nuevas ya se encargan de eso. Pero nunca he visto una sola evidencia respaldada de eso y en algún momento la gente comienza a mezclar SSD con tecnología de unidades flash USB. ¡La opción segura sería ir a ext2, sin embargo, una serie de pruebas que realicé mostraron un rendimiento horrible!

Estos valores provienen de un escenario real y no de una prueba sintética:

42 files: 3,429,415,284 bytes copied to flash drive
original fat32: 15.1 MiB/s
ext4 after new partition table: 10.2 MiB/s
ext2 after new partition table:  1.9 MiB/s

Lea los enlaces que publiqué anteriormente antes de responder. También me interesarían las respuestas respaldadas con algunas referencias porque se dice y se repite mucho, pero carece de hechos.

Gracias por la ayuda.

aleatorio1
fuente
"Sin embargo, existe el problema de la nivelación del desgaste" - Realmente no tiene otra opción en el asunto. La unidad flash USB o la tarjeta SD que compre hace un trabajo de nivelación de desgaste satisfactorio o no. No puede / no debe usar un sistema de archivos que nivele el desgaste (por ejemplo, JFFS2). Y no puede instalar la gestión de volumen UBI (primero necesitaría instalar MTD, pero eso es para dispositivos Flash sin formato). Por lo tanto, no puede confiar en el controlador incorporado.
aserrín

Respuestas:

8

No se preocupe por los cilindros, las cabezas y los sectores y solo trabaje con sectores. La forma más fácil de alinear el sistema de archivos es simplemente no tener una tabla de particiones (es decir, crear el sistema de archivos /dev/sdXdirectamente). La mayoría de los sistemas Linux manejarán esto bien, pero Windows se asustará y tampoco podrá hacerlo arrancable. Si necesita una tabla de particiones, calcule cuántos sectores de 512 bytes forman un bloque de borrado. Los bloques de borrado son alrededor de 128-512KiB, por lo que si no puede averiguar qué usa su unidad flash, use 1024 sectores. Asegúrese de que las particiones comiencen en un múltiplo de este número.

También desea informarle a ext2 / 3/4 sobre el tamaño del bloque de borrado para que pueda evitar la modificación innecesaria de bloques. Establezca ambos stridey stripe-widthel número de bloques del sistema de archivos que forman un bloque de borrado, por lo que al trabajar en un bloque de borrado de 512 KB use lo siguiente:

mkfs.ext4 -b 4096 -E stride=128,stripe-width=128

En términos de rendimiento, no tener un diario debería mejorar el rendimiento (pero aumentar la posibilidad de corrupción de datos si se interrumpe la operación). Sin embargo, las extensiones de ext4 deberían mejorar el rendimiento porque es necesario modificar menos metadatos para archivos grandes. Probablemente usaría ext4 con el diario deshabilitado:

tune2fs -O ^has_journal
mgorven
fuente
Puede usar cat /proc/mtdpara averiguar el tamaño de los bloques de borrado para dispositivos flash conectados.
Tomalak
Las unidades flash sin tabla de particiones deberían funcionar bien en Windows siempre que el sistema de archivos sea compatible. Los pendrives generalmente no tienen una tabla de partición lista para usar y funcionan bien.
gronostaj
La optimización de fs en la tarjeta SD para Linux / Fedora en Dreamplug muestra cómo dejar que ext4 "conozca" el tamaño de los bloques de borrado y establezca su tamaño de bloque y el valor de "zancada" en consecuencia. También creo que / proc / mtd no es relevante aquí, ya que está disponible solo para dispositivos flash sin procesar como dijo el aserrín, no para dispositivos de memoria flash SD / stick.
tuk0z
Intenté eso, fue un consejo terriblemente malo. No use esos parámetros con una unidad flash USB. blogofterje.wordpress.com/2012/01/14/optimizing-fs-on-sd-card : este tipo tiene mejores parámetros, pero todavía es marginalmente mejor, si es que lo hace, que lo que gparted usa por defecto.
Zdenek
Ese es el mismo enlace que di en septiembre ^^ Correcto sobre AFAIK dividido / dividido.
tuk0z
4

En la actualidad, la mayoría de las herramientas de creación de particiones y sistema de archivos de Linux tienen valores predeterminados que alinean los datos en los límites de 4K e incluso usarán el tamaño de bloque subyacente si el disco lo expone para que las cosas no sean tan malas como en el artículo LWN:

TLDR; Al usar una distribución moderna de Linux (digamos 2013 o posterior) con versiones recientes de herramientas para crear sus particiones y sistemas de archivos, la alineación mejor (pero no perfecta) ocurrirá automáticamente. También tenga cuidado: los mejores valores para una tarjeta SD pueden ser diferentes a los de una memoria USB (creo que su Transcend JetFlash es una memoria USB, no una tarjeta SD). Tendría que comparar para deducir el verdadero tamaño del bloque de borrado subyacente en flash barato ...

Luego
fuente
1

Además, en su fstab, asegúrese de usar la opción de montaje "noatime" para evitar escrituras innecesarias cada vez que se accede a un archivo.

docwebhead
fuente
Todavía fiel a este día y esto me recordó que faltaba esta opción XD Thx
HypeWolf