¿Cuáles son los tamaños de sector en Mac OS X?


15

Leí en la página de Wikipedia HFS Plus que el tamaño de sector predeterminado en una Mac es 512 b. Sin embargo, también leí que las Mac admiten sectores de 4kb. ¿Cómo puedo determinar cuál tengo, 512 b o 4 kb sectores? Creo que 512 es la respuesta correcta, pero me gustaría estar seguro.

Respuestas:


27

En la terminal, puede usar diskutil para obtener información sobre la unidad, incluido el tamaño del bloque del dispositivo:

$ diskutil info / | grep "Block Size"
  Device Block Size:        512 Bytes

1
Gracias Timothy, no sabía sobre este comando. Parece un tesoro para la información / manipulación del disco bajo OS X.
kalaracey

Precaución: esta respuesta no distingue entre el tamaño del bloque del dispositivo y el tamaño del bloque de asignación. Pueden ser muy diferentes, y el tamaño del bloque de asignación puede ser lo que el OP está buscando, ya que es lo que usa el sistema de archivos. Ver la respuesta de Mike.
LarsH

12

Primero, tenga en cuenta que el tamaño de bloque del dispositivo es diferente del tamaño de bloque en uso por el sistema de archivos. El valor anterior según lo informado por diskutil se refiere al tamaño de bloque sin procesar utilizado por el hardware. No he encontrado una manera fácil de verificar el último valor por la línea de comando, pero puede crear un archivo de cero bytes y luego obtener información del buscador. Dirá 0 bytes, pero se usaron 4k en el disco.

En segundo lugar, puede crear un sistema de archivos HFS + con bloques de más de 4k utilizando el programa de línea de comandos newfs_hfs. La forma más fácil es usar la Utilidad de Discos para particionar la unidad y crear una partición con el formato predeterminado, luego usar /bin/dfpara determinar el dispositivo de bloqueo (solo un ejemplo:) /dev/disk0s2. Luego desmonte esa partición (usando umount /dev/diskXXXo la Utilidad de Discos), y para formatear como HFS + con bloques de 64k:

newfs_hfs -v VolumeName -b 65536 /dev/disk0s2

Use el consejo Obtener información anterior para verificar que un archivo pequeño ahora ocupa 64k en el disco (puede decir 65k para unidades de potencia de 10).

El rendimiento es la razón principal por la que puede querer hacer esto, si la mayoría de los datos que se almacenarán son archivos grandes (como MP3, fotos, videos, archivos .zip, etc.), y también ayuda a mantener baja la fragmentación del disco. Obviamente, no te molestes si planeas almacenar principalmente archivos pequeños.

He encontrado que en unidades grandes (> 1 TB) formateadas como HFS con el tamaño de bloque predeterminado de 4k, cuando la unidad se acerca a la capacidad, el rendimiento de escritura se degrada terriblemente. Supongo que eso se debe a que la partición está fragmentada y tiene que buscar y picotear bloques libres para escribir el último 1% de los datos. Espero que los tamaños de bloque más grandes alivien un poco este problema.


El tamaño del bloque del sistema de archivos viene dado por stat -f %k ..
lhf

Además: es más fácil en la unidad si el tamaño de bloque del sistema de archivos coincide con el tamaño de bloque físico de la unidad. De lo contrario, cada escritura tiene que ser en realidad un ciclo de lectura-modificación-escritura (el almacenamiento en caché ayuda, por supuesto)
Edward Falk,

Re: "No he encontrado una manera fácil de verificar el último valor por la línea de comando" No sé sobre versiones anteriores, pero en macOS Sierra 10.12.6, diskutil infoa veces le diré el tamaño del bloque de asignación: Allocation Block Size: 32768 Bytesasí como El tamaño del bloque del dispositivo. Encontré que esto es cierto cuando se usa el dispositivo sin procesar rdisk2s0con una tarjeta SD en el lector de tarjetas. No sé cómo hacer que funcione para el disco duro.
LarsH

9

El tamaño del bloque del dispositivo OS X se puede determinar ejecutando el siguiente comando desde una ventana de Terminal:

diskutil info / | grep "Block Size"

Lo que generará la siguiente información:

Device Block Size: 512 Bytes

El tamaño del bloque del sistema de archivos se puede determinar utilizando la statutilidad:

stat -f %k .

Que le mostrará el tamaño óptimo del bloque de operación de E / S del sistema de archivos en bytes:

4096

4

Con el antiguo sistema de archivos HFS, el segundo intento de Apple de un sistema de archivos para Macintosh, solo podría haber hasta 65.535 bloques de asignación en un disco. El tamaño del bloque era una función del tamaño del disco en bytes dividido por el número máximo de bloques de asignación, 65.535. Para discos pequeños, esto estaba bien, pero cuando los tamaños de los discos comenzaron a acercarse a 1 GB, el tamaño mínimo del bloque de asignación fue de 16 KB (1073741824/65535) = 16384.25, pero debe truncar a 16384.

Lo que esto significa es que un archivo de 1 byte en un disco HFS de 1 GB requería 16.384 bytes para almacenarse en el disco duro, por lo que había demasiado espacio desperdiciado. Entonces Apple creó el contenedor HFS + para reducir el espacio desperdiciado.

Puede haber una manera de configurar el tamaño del bloque más alto, pero ¿por qué querría hacerlo?

Aquí hay un script bash rápido que enumerará todos los resultados de diskinfo para todos los discos conectados actualmente.

#!/bin/bash

for disk in /dev/disk*s*
do
    diskutil info $disk
    echo "**************************************************************************************"
    echo " "
done

Gracias por su respuesta, Mark, pero creo que puede haber entendido mal mi pregunta. Estoy buscando cuál es el tamaño de un bloque en HFS Plus (el sistema de archivos predeterminado actual para Mac). Sin embargo, eso es interesante sobre las fallas de HFS.
kalaracey

El punto es que varía, pero parece ser generalmente 512 bytes.
Ɱark Ƭ

0

Parece que el tamaño del bloque del dispositivo ahora es de 4096 bytes en los iMacs 2017 (iMac18,1), lo que causa problemas a las personas que usan ntfsprogs.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.