Reformatear exFat con tamaño de bloque de dispositivo específico y tamaño de clúster

Tengo un SSD de 512 GB en mi MacBook Retina con uno de los volúmenes disks0s6 formateado con exFat para usarlo tanto en Mac como en Windows.

información diskutil disk0s6:

   Device Identifier:        disk0s6
   Device Node:              /dev/disk0s6
   Part of Whole:            disk0
   Device / Media Name:      Basic data partition

   Volume Name:              WORK
   Escaped with Unicode:     WORK

   Mounted:                  Yes
   Mount Point:              /Volumes/WORK
   Escaped with Unicode:     /Volumes/WORK

   File System Personality:  ExFAT
   Type (Bundle):            exfat
   Name (User Visible):      ExFAT

   Partition Type:           Microsoft Basic Data
   OS Can Be Installed:      No
   Media Type:               Generic
   Protocol:                 PCI
   SMART Status:             Verified
   Volume UUID:              40CF8BFC-3143-3BB9-B659-DE1A62DCA9E6

   Total Size:               54.1 GB (54117007360 Bytes) (exactly 105697280 512-Byte-Units)
   Volume Free Space:        36.1 GB (36128292864 Bytes) (exactly 70563072 512-Byte-Units)
   Device Block Size:        512 Bytes

   Read-Only Media:          No
   Read-Only Volume:         No
   Ejectable:                No

   Whole:                    No
   Internal:                 Yes
   Solid State:              Yes

Tengo muchos archivos pequeños en ese volumen y mis archivos pequeños ocupan mucho espacio físico, por lo que quiero volver a formatear el volumen con un Tamaño de bloque de dispositivo y un Tamaño de clúster mínimos para que mis archivos pequeños no ocupen espacio adicional. ¿Cómo puedo hacer eso en OS X?

Aquí hay un ejemplo de archivos en una carpeta bower_componentsque está 46.1 MBocupando 9.75 GBespacio en el disco (impreso desde Windows):

ingrese la descripción de la imagen aquí

ACTUALIZAR 1

No encontré una manera de verificar el tamaño del clúster en Mac, así que inicio Windows y ejecuto chkdsken esa unidad:ingrese la descripción de la imagen aquí

Como puede ver, 131072 bytes en cada unidad de asignación, ese es mi tamaño de clúster actual creado por Mac DiskUtil predeterminado

ACTUALIZAR 2

Simplemente reinicie Mac y ejecute el comandosudo newfs_exfat -N /dev/disk0s6:

Reformatting existing ExFAT volume
Partition offset : 871407616 sectors (446160699392 bytes)
Volume size      : 105697280 sectors (54117007360 bytes)
Bytes per sector : 512
Bytes per cluster: 131072
FAT offset       : 2048 sectors (1048576 bytes)
# FAT sectors    : 3328
Number of FATs   : 1
Cluster offset   : 6144 sectors (3145728 bytes)
# Clusters       : 412856
Volume Serial #  : 0227bd88
Bitmap start     : 2
Bitmap file size : 51607
Upcase start     : 3
Upcase file size : 5836
Root start       : 4

Entonces parece que chkdisk mostró los mismos 131072bytes por clúster

Totalmente anecdótico, pero en estos días, me estremezco cada vez que veo exfat en una Mac. He perdido datos demasiadas veces. Recomiendo encarecidamente Fat32 (si puede lidiar con el límite de tamaño de archivo de 4 GB por archivo) o NTFS + los controladores Tuxera.

Respuestas (1)

El número máximo de bloques de asignación (o clúster) para exFAT es 2^32 = 4 294 967 296.

Para obtener el tamaño mínimo de un clúster de asignación en su partición, divida el tamaño de su partición por 2^32.

Ejemplos:

  • para una partición de 100 GB, el tamaño mínimo es 100 000 000 000 bytes/4 294 967 296=~23,3 bytes. Dado que el tamaño de bloque de dispositivo más pequeño es de 512 bytes, el tamaño de bloque de asignación no puede ser menor.

  • Para una partición de 3 TB, el tamaño mínimo es 3.000.000.000.000 bytes/4.294.967.296=~698,5 bytes. El tamaño mínimo posible del bloque de asignación es entonces 1024 bytes.

Para formatear una partición usenewfs_exfat [options] /dev/disk*s*

Están disponibles las siguientes opciones con respecto a los tamaños de los bloques de asignación:

 -b bytes-per-cluster
         File system block size (bytes per cluster).  Acceptable values
         are powers of 2 in the range 512 through 33554432.

 -c sectors-per-cluster
         Sectors per cluster.  Acceptable values are powers of 2 in the
         range 1 through 65536. 

Para reformatear su volumen exFAT, primero copie el contenido a otro volumen. Luego ingrese:

diskutil list #to get the disk identifier of the exFAT partition
diskutil unmount /dev/disk0s6
sudo newfs_exfat -c 1 -v exFAT /dev/disk0s6
diskutil mount /dev/disk0s6

El comando creará un bloque de asignación (o clúster)/bloque de dispositivo y cambiará el nombre del volumen a exFAT .

Alternativamente, puede usar

sudo newfs_exfat -b 512 -v exFAT /dev/disk0s6

La mayoría de los HDD o SSD modernos utilizan tamaños de bloque de dispositivo de 4096 bytes y el tamaño de bloque de dispositivo mostrado de 512 bytes es solo un tamaño de bloque de dispositivo "lógico", probablemente por razones de compatibilidad. Por lo tanto, se recomienda un tamaño de bloque de asignación mínimo de al menos 4096 bytes.

Además, los tamaños de bloque de clúster predeterminados de particiones exFAT de varios tamaños en Windows "mencionan" al menos 4 kb.


Para obtener el tamaño de bloque de clúster actual (y otra información) de un volumen exFAT, haga lo siguiente:

diskutil list #to get the disk identifier of the exFAT partition
diskutil unmount /dev/disk0s6
sudo newfs_exfat -N /dev/disk0s6
diskutil mount /dev/disk0s6
¿Cómo puedo verificar cuál es el tamaño actual del clúster? Puedo ver que mi tamaño de bloque de dispositivo es de 512 bytes, pero no puedo encontrar una manera de verificar cuál es el tamaño actual del clúster.
@Riapp agregó una explicación sobre cómo obtener los valores actuales
Acabo de actualizar la pregunta con detalles. Parece que el tamaño de mi clúster es de 131072 bytes, que fue creado por Mac DiskUtil de forma predeterminada.