¿Cómo formatear un disco duro del sector 4k?

12

Compré un disco duro Seagate ST3000DM001 3TB. Fue vendido dentro de un recinto. Formateé a ext4, copié algunos datos y luego lo saqué del gabinete y lo conecté directamente a la placa base. Mis datos no eran visibles para el sistema operativo (estaba viendo una partición desconocida de ~ 300GiB y el resto como espacio libre), así que comencé a leer sobre el formato avanzado y las unidades> 2TB.

Volví a conectar el disco con USB, copié todos los datos y volví a conectarlo a sata. Solía ​​gparted para crear una tabla de particiones GPT (la utilidad de disco ubuntu no me dejaba Error synchronizing after initial wipe: Timed out waiting for object (udisks-error-quark, 0), creé una gran partición Ext4 de 3Tb, dejé el Align tovalor predeterminado MiBy formateé.

La unidad se reconoce correctamente y se monta correctamente. Los archivos se pueden copiar desde y hacia la unidad con éxito.

Sin embargo:

Gparted muestra el disco que tiene 512k sectores que sé que no es cierto 1

captura de pantalla separada

mientras cat /sys/block/sdb/queue/physical_block_sizeinformes4096

He encontrado algunos informes que libpartedtienen un problema con sectores no 512k 2 y otros 3 que dicen que alinearse con MiB es suficiente.

Parted informa que la unidad está alineada cuando elijo mínimo:

(parted) align-check 
alignment type(min/opt)  [optimal]/minimal? min                           
Partition number? 1                                                       
1 aligned
(parted)    

¿Es correcta mi configuración? ¿Tengo una penalización de rendimiento porque el disco está formateado con 512k sectores, gParted informa de valores falsos o he entendido todo mal?

  1. http://www.storagereview.com/seagate_barracuda_3tb_review_1tb_platters_st3000dm001
  2. http://ubuntuforums.org/showthread.php?t=1536933&p=9754234#post9754234
  3. http://wdc.custhelp.com/app/answers/detail/a_id/5655
qwazix
fuente
Tengo algunas de estas unidades Seagte, así como unidades WD y Fujitsu / HGST de 3 TB y todas funcionan sin problemas. Puede que tenga razón acerca de GParted, porque mi Seagate que está conectado actualmente a través de USB aparece con un tamaño de sector 4096 en GParted. Mi versión GParted es 0.12.1, la predeterminada es quantal.
LiveWireBT
Creo que también mostrará 4096 aquí si lo conecto a través de USB. Hay algo de magia en el controlador USB-SATA allí.
qwazix
QA relevante: superuser.com/questions/679725/...
qwazix

Respuestas:

5

Informa 512 bytes porque ese es el tamaño del sector lógico para la compatibilidad con versiones anteriores de sistemas operativos (Windows). (g) parted alinea las particiones a 1 MiB, que es más que suficiente para funcionar correctamente con unidades que utilizan sectores físicos de 4k, por lo que está bien como está.

psusi
fuente
11

Primero, la mayoría de las unidades de formato avanzado presentan un tamaño de sector lógico de 512 bytes, aunque el tamaño del sector físico es de 4096 bytes (4KiB). Esto se hace a través de malabares de datos en el firmware de la unidad, y puede provocar problemas de rendimiento si las particiones no están alineadas correctamente. Sin embargo, es probable que esta no sea la fuente de su problema, y ​​su enfoque en la alineación de la partición está fuera de lugar. (Para estar seguro, la alineación de la partición es importante; simplemente no es la fuente de su problema).

Mi corazonada (y essolo una corazonada) es que su problema es el resultado de cambiar entre un gabinete USB y la conexión directa del disco. Algunos gabinetes traducen sectores lógicos de 512 bytes en el disco en sectores lógicos de 4096 bytes presentados a la computadora, es decir, lo contrario de lo que hace el firmware en un disco de formato avanzado. No soy positivo, pero sospecho que algunos gabinetes hacen esto solo en discos de más de 2TiB. Los esquemas de partición MBR y GPT se refieren a datos por números de sector, por lo que cambiar el tamaño del sector invalida los datos de partición. Por lo tanto, si prepara el disco en un gabinete USB que se traduce de esta manera y luego intenta usar el disco directamente (o viceversa), verá errores porque las particiones (e incluso los datos de respaldo GPT) no serán donde la computadora espera que sea. Sería como decirle a una persona con los ojos vendados que "

La solución a este problema consiste en preparar y utilizar el disco de una manera - ya sea utilizar el recinto del USB o utilizar una conexión directa, no ambos. Si ambos son necesarios por algún motivo, deberá encontrar un recinto que funcione sin aplicar este tipo de traducción.

Para probar mi hipótesis, puede usar una herramienta (como parted) que informa los tamaños de sectores lógicos . Por ejemplo:

sudo parted /dev/sda print
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B

He omitido un montón de información de esta salida. El detalle importante está en la línea final que se muestra aquí: los tamaños del sector lógico y físico son 512 bytes. Si ejecuta esta prueba, luego vuelva a conectar el disco de la otra manera y ejecútelo nuevamente, puede comparar los resultados. Si el tamaño del sector lógico cambia dependiendo de cómo conecte el disco, entonces mi hipótesis es correcta y es la fuente de su problema. O al menos, es un problema; puede haber otros también. En particular, el Error synchronizing after initial wipeerror que mencionó podría indicar otro problema. OTOH, eso podría ser un efecto secundario departedtratando de leer datos GPT de respaldo desde más allá del final del disco. De cualquier manera, si ve un cambio en el tamaño del sector lógico, debe abordar ese problema antes de tratar con cualquier otra cosa. Si desea volver a particionar el disco pero tiene problemas debido al Error synchronizingerror, intente usar gdisko cgdisk(en el gdiskpaquete) en lugar de partedo GParted; La gdiskfamilia es más robusta frente a los errores que la partedfamilia.

Rod Smith
fuente
Creo que el problema se debe a cambiar entre usb e interno. De hecho, ese fue mi pensamiento inicial y es por eso que recreé la tabla de particiones después de volver a colocar el disco en la PC y conectarme con sata. (Lo saqué en primer lugar solo para sacar mis datos). No quiero volver a eliminarlo para probar el sector lógico informado a través de USB, pero todos los hechos lo sugieren.
qwazix
No tengo la intención de seguir cambiando las interfaces, el disco funciona como está ahora, preparado bajo conexión SATA. Solo estoy preocupado por las penalizaciones de rendimiento que mencionaste y quiero entender lo que realmente sucede. parted /dev/sdb printregresa, 512/4096por lo que parece que gParted informa el tamaño del sector lógico, lo que explica por qué @LiveWireBT ve 4096 para el mismo disco (conectado a través de USB) y también confirma su presentimiento como anteriormente.
qwazix
Tuve el mismo problema con una unidad externa Verbatim Store'n'Go, el tamaño del sector lógico es 512 mientras que el tamaño físico es 4096.
2015
4

Se han realizado cambios tanto en el kernel de Linux como en las utilidades para admitir unidades de formato avanzado. Estos cambios aseguran que todas las particiones en unidades de formato avanzado estén correctamente alineadas en los límites del sector 4K. El soporte del núcleo para unidades de formato avanzado está disponible en las versiones del núcleo 2.6.31 y superiores. El soporte para dividir y formatear unidades de formato avanzado está disponible en las siguientes utilidades de Linux:

Fdisk: GNU Fdisk es una utilidad de línea de comandos que divide los discos duros. Las versiones 1.2.3 y superiores admiten unidades de formato avanzado.

Parted: GNU Parted es una utilidad gráfica para particionar discos duros. Las versiones 2.1 y superiores admiten unidades de formato avanzado.

Los discos nativos 4K (4Kn) tienen un tamaño de sector lógico de 4 KB. Los sistemas operativos modernos pueden almacenar datos en estos discos, pero generalmente no pueden arrancar desde estos discos. Estos discos son comúnmente unidades externas con conexión USB.

Para crear una partición utilizada como dispositivo de almacenamiento de medios, simplemente presione Ctrl+ Alt+ Ten su teclado para abrir Terminal. Cuando se abra, ejecute los siguientes comandos:

sudo mkfs.ext4 -m 0 /dev/sdb1

La mayoría de los discos 4k tienen un tamaño de sector físico de 4096 bytes para que 3 TB puedan caber en las placas, pero aún tienen un tamaño de sector lógico de 512 B para compatibilidad con sistemas operativos que esperan que un sector sea 512B. Es por eso que cuando utiliza el comando de impresión en parte para imprimir los detalles, se dice tamaño de sector lógico / físico 512B / 4096B. Eso es normal.

Esta "conversión" se realiza mediante la inteligencia en el disco, y es normal. Así es como debería funcionar.

Si no puede ver los 3TB completos primero verifique en BIOS que no está limitando el tamaño del disco. Tal vez necesite una actualización de BIOS para admitir el disco.

También usando parted para crear una partición a partir de 0, lo cual es un error. Debe iniciar la primera partición en el sector 2048, que es equivalente a 1MiB para que las particiones en el disco estén alineadas para un rendimiento óptimo.

Por lo tanto, cambie la unidad a MiB, imprima los detalles del disco, que también imprimirá el tamaño del disco en MiB, y cree la partición (si solo desea una partición) comenzando desde 1MiB y terminando en el último MiB (o uno antes del último) .

Por ejemplo, un disco de 3TB debería tener en realidad algo así como 2.861.022 MiB. Por lo tanto, crear una única partición que abarque todo el disco en un dispositivo de disco llamado / dev / sdX sería como (reemplace la X con la letra correcta):

sudo parted /dev/sdX
unit MiB
mklabel gpt
print (to see the total size in MiB)
mkpart primary 1 2861022
quit

Si el tamaño del disco es poco MiB más o menos de 2861022, ajuste la ubicación final.

Eso es. Después de eso, cree el sistema de archivos que desea en la partición.

Fuentes y lectura extra

Unidades del sector 4K y Linux

Comprobación de errores e instalación de unidades 4k en Linux

Foros de Ubuntu

Mitch
fuente
Gracias por la respuesta, pero en realidad no responde mi pregunta. Entiendo que el kernel reconoce el tamaño del sector de la unidad y que se supone que gparted también debe reconocer eso, pero informa lo contrario y tengo curiosidad por saber si hay una explicación, si es un error o si he hecho algo mal .
qwazix
0

Siempre y cuando alinee sus particiones en un múltiplo de 4KB, está bien. De lo contrario, no tiene que hacer nada especial para unidades con sectores físicos de 4KB.

El software de particionamiento antiguo alineó las particiones en un múltiplo de 63x512B sectores, lo que resultará en un mal rendimiento si el disco tiene sectores físicos de 4KB porque eso es 31 kilogramos y medio, NO un múltiplo de 4KB.

Prácticamente ningún software de partición disponible ahora en Ubuntu lo hará más (a menos que lo solicite específicamente de alguna manera). La mayoría se alineará a un múltiplo de 1MiB (sectores de 2048x512B, que también son sectores de 256x4KB) de forma predeterminada.

¿Qué pasaría si no lo alineas?

Si no alinea las particiones a múltiplos de 4KB, lo peor que sucederá es una pérdida de rendimiento (bastante significativa para archivos pequeños). Las unidades con sectores de 4KB tienden a emular sectores de 512B para la compatibilidad con los sistemas existentes. Por lo tanto, funcionan perfectamente bien si solo los trata como una unidad de sector 512B. Pero cuando escribe en un área de 512B, reescribirá un sector completo de 4KB.

Por lo tanto, por razones de rendimiento, es importante asegurarse de que los clústeres de 4KB que usa en su sistema de archivos se alineen con los sectores de 4KB en la unidad, de modo que una sola escritura de clúster no resulte en la necesidad de escribir dos sectores de 4KB en la unidad.

thomasrutter
fuente