3 votos

Reducción de un volumen de Core Storage sin la partición de arranque

Tengo una unidad externa de 14 TB que contiene una única partición cifrada HFS+ de 14 TB (además de EFI). No puedo redimensionar esta partición para añadir una nueva. Cuando intenté usar la Utilidad de Discos o diskutil dice

No puede realizar este redimensionamiento a menos que tenga un booter (la partición de destino es probablemente demasiado pequeña)

Esencialmente estoy teniendo el mismo problema que se describe en esta pregunta: No puedo cambiar el tamaño de la partición: "No se puede realizar este redimensionamiento a menos que tenga un booter"

Sin embargo, la respuesta a esa pregunta no funciona para mi escenario porque no hay espacio sin asignar después de la partición única y no puedo añadir manualmente el booter usando gdisk o gpt por eso.

Mi pregunta es,

  • ¿hay otras formas de reducir esta partición, además de mover todo y reformatearla? O,
  • ¿Cómo añado la partición de arranque necesaria (para poder redimensionar normalmente con la Utilidad de Discos)?

Tenga en cuenta que se trata de un volumen de Core Storage porque está encriptado.

  • He tenido la idea de crear a la fuerza una nueva tabla GPT donde haya espacio suficiente para el booter, pero no lo he hecho porque no sé cómo afectaría a la partición existente.
  • También he probado a utilizar diskutil cs resizeVolume El problema es que estos dos volúmenes compartirán la misma clave de encriptación. El problema es que estos dos volúmenes compartirán la misma clave de cifrado, lo que no es deseable.

Para tu información, aquí están todas las cosas que han sucedido para ponerme en esta situación:

  • Se trata de un disco duro nuevo de 14 TB. Originalmente lo formateé en dos particiones: una de 10TB y otra de 4TB. Ambas estaban encriptadas con HFS+ (por lo que eran volúmenes de Core Storage).

  • Más tarde, intenté redimensionarlos en 12TB/2TB utilizando la Utilidad de Discos, que fracasó estrepitosamente.

  • Después de esto, la segunda partición de 4TB no pudo ser encontrada, y la primera no pudo ser montada. Esto fue reportado por diskutil cs info sobre la primera partición (originalmente de 10TB):

    |
    +-- Logical Volume Group 69E42F2B-A2E4-41EC-93A9-4D62C0C9082B
    |   =========================================================
    |   Name:         -none-
    |   Status:       Initializing
    |   Size:         0 B (0 B)
    |   Free Space:   -none-
    |   |
    |   +-< Physical Volume 4BBFE85D-06C3-4285-98D9-D6D30E3E4031
    |       ----------------------------------------------------
    |       Index:    0
    |       Disk:     disk2s2
    |       Status:   Failed
    |       Size:     14000175669248 B (14.0 TB)
  • Sin embargo, logré recuperar completamente la primera partición (sistema de archivos intacto y fsck aprobado), por destruir y volver a crear la tabla GPT, en la que la primera partición ocupa todo el disco - es decir, el final de la partición está ahora justo antes del GPT secundario. Ahora el GPT tiene este aspecto:

          start         size  index  contents
              0            1         PMBR
              1            1         Pri GPT header
              2           32         Pri GPT table
             34            6
             40       409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
         409640  27344355255      2  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
    27344764895           32         Sec GPT table
    27344764927            1         Sec GPT header
  • Y ahora no puedo redimensionar la partición de 14TB.

2voto

Tony Wu Puntos 11

He seguido Consejos de David Anderson y descubrí que la partición (según la descripción de GPT) es 3584 bytes (7 bloques LBA) más grande que el volumen físico de almacenamiento del núcleo. Usando esta información, logré reducir el volumen para añadir una segunda partición.

El proceso es, sin embargo, bastante aterrador: implica un pánico del kernel, y luego algunos más crípticos, inútiles y sin solución diskutil errores, y luego algunos fallos más espantosos.

Y que esto sea una antirespuesta:

  • si se trata de un sistema de archivos diseñado por Apple (como HFS y APFS),
  • y no tienes conocimiento profesional de su funcionamiento interno,
  • y encuentras tu volumen en un estado inconsistente - debe considerarse inconsistente tan pronto como la Utilidad de Discos comience a quejarse -
  • y sin embargo el volumen sigue siendo utilizable de alguna manera (puedes ver tus archivos y demás):

Entonces, por amor a tus datos y a tu bienestar, en lugar de intentar arreglar el problema metiéndote con la cabecera del volumen o la tabla de particiones (como hice yo),

Sólo hay que mover todo y reformatear.


Al final no perdí ningún dato. Este es mi proceso. Espero que personas más conocedoras que yo puedan señalar todos los errores que cometí.

Nota: 1 bloque son 512 bytes.

  • (En primer lugar, hice una copia de los primeros 512 bytes de la partición, que contiene el encabezado del volumen, utilizando dd ).

  • Utilizando el gpt me enteré de que mi segunda partición GPT (la partición principal) tiene un tamaño de 27344355255 bloques; después de esto especificación de Core Storage (que es la capa de abstracción que permite el cifrado HFS), examiné la cabecera del volumen de la partición y me enteré de que el volumen físico de almacenamiento del núcleo sólo ocupa 27344355248 bloques. Esto significa que había un espacio extra de 7 bloques.

  • Entonces decidí liberar estos 7 bloques recreando la tabla GPT (usando el gpt ), marcando también el tipo de la nueva partición como Bota de Apple .

  • Intenté crear un volumen HFS+ en la nueva partición utilizando diskutil . Esto no es posible porque un volumen HFS+ requiere un mínimo de 512 KB.

  • Con la partición de arranque de Apple sin formatear, hice el arriesgado movimiento de pedir a la Utilidad de Discos que redimensionara la partición de 14 TB. Esta vez, la Utilidad de Discos no se quejó de que faltaban arrancadores. Sin embargo, antes de que terminara el redimensionamiento, se produjo un pánico en el núcleo.

  • Después de reiniciar, diskutil informó que la partición original de 14 TB es ahora de 12 TB, todavía intacta. La partición de arranque de Apple de 7 bloques ocupaba ahora los 2 TB de espacio libre restantes, todavía sin formatear.

  • Luego, volví a modificar la tabla GPT, esta vez añadiendo un 262144 -bloqueo de la partición de arranque de Apple después de la partición de ahora 12 TB, y otra partición de almacenamiento del núcleo que ocupa el espacio restante.

  • En este momento, tanto la partición de 12 TB como la de 2 TB aparecen en la Utilidad de Discos. Al reformatear la partición de 2 TB como un volumen encriptado JHFS+ (para que también tenga un booter), ambas particiones pueden ser redimensionadas libremente usando la Utilidad de Discos sin errores.

  • La única advertencia fue que el uso de los Primeros Auxilios ( diskutil verifyVolume ) en el volumen de 12 TB ahora reporta persistentemente el error "Tamaño incorrecto para el volumen" (justo después de decir que el volumen "parece estar bien", también). Esto no se ha podido arreglar con ningún diskutil de mando. Pero a pesar del error, los dos volúmenes pueden ser redimensionados y montados normalmente.

  • Llegados a este punto, parece que mi pregunta original ha quedado resuelta, en gran medida.

Este es el aspecto que tiene ahora el esquema de partición:

   #:                       TYPE NAME                    SIZE       IDENTIFIER 
   0:      GUID_partition_scheme                        *14.0 TB    disk2 
   1:                        EFI EFI                     209.7 MB   disk2s1 
   2:          Apple_CoreStorage - Main Partition -      12.0 TB    disk2s2 
   3:                 Apple_Boot Boot OS X               134.2 MB   disk2s3 
   4:          Apple_CoreStorage Time Machine            2.0 TB     disk2s4 
   5:                 Apple_Boot Boot OS X               134.2 MB   disk2s5 

(El resto es que no sé lo que estoy haciendo).

  • Después de esto, se me ocurrió la hipótesis de que el error "Tamaño de volumen incorrecto" del que se quejaba la Utilidad de Discos era sobre el Volumen Lógico, y no sobre el Volumen Físico.

    • Core Storage tiene muchas capas de abstracción, cuyo orden es Volumen físico → Grupo de volúmenes lógicos → Familia de volúmenes lógicos → Volumen lógico.
    • Si lo estoy entendiendo bien, PV es lo más parecido a la partición GPT, LVF es donde se produce el cifrado de FileVault, y LV es el volumen que los usuarios pueden ver.
  • Para probarlo, borré la partición de 2 TB mediante la Utilidad de Discos. No hubo ningún problema. El disco duro ahora contenía EFI, la partición de 14 TB y el booter de 134,2 MB.

  • Intenté usar diskutil cs resizeVolume para redimensionar sólo el Volumen Lógico a 12 TB, y no el Volumen Físico. El redimensionamiento no ha podido llevarse a cabo debido al error "Tamaño de volumen incorrecto". (Lo mismo ocurrió con diskutil cs resizeStack ).

  • Entonces tuve la horrible idea de revertir no sólo la tabla GPT, sino también la cabecera del volumen Core Storage, al estado en que se encontraba cuando se publicó esta pregunta.

    • Esto es con la esperanza de que diskutil verifyVolume se ajustará automáticamente el tamaño del volumen, y entonces puedo empezar de nuevo el proceso, pero redimensionando primero el Volumen Lógico.
    • Hice una copia de seguridad de la cabecera del volumen actual, y luego dd reescribió los primeros 512 bytes del volumen utilizando la copia de seguridad .img archivo que hice de la cabecera al principio de esta respuesta.
    • Después de hacerlo, el volumen de 14 TB volvió a ser imposible de montar. Todo diskutil las operaciones fracasarían en este punto.
  • Intenté revertir este cambio escribiendo de nuevo la cabecera de volumen de 512 bytes. Entonces, se produjo otro pánico en el núcleo.

  • Esta vez, las cosas se pusieron mucho más serias. Durante las siguientes horas, cada vez que conectaba el disco duro a mi portátil, el kernel de MacOS entraba inmediatamente en pánico, ya fuera en modo normal, recuperación, modo seguro o modo de usuario único.

  • Intenté arrancar en Ubuntu desde el USB, y examinar y manipular el Volume Header desde allí, sin éxito.

  • Casi perdí la esperanza, cuando recordé que, cuando la partición falló por primera vez, ejecuté dd a través de los primeros GBs de la partición y la guardé como una imagen, la cual fue borrada desde entonces. La recuperé usando Disk Drill, y después de comparar dolorosamente los volcados hexadecimales, Decidí copiar el primer 62500 bloques (32 MB) del archivo de imagen a la partición.

    • Mi idea era que esto haría que MacOS reconociera el volumen de la misma manera que reconoció el volumen original de 14 TB cuando falló por primera vez, y entonces si volvía a hacer los pasos que describí en la pregunta (recreando la tabla GPT), podría recuperar el volumen por segunda vez, y pensé que lo peor que podría pasar es que perdería todos los cambios de archivos desde que la partición falló por primera vez.
  • Sorprendentemente, esto no sólo recuperó la partición, sino que todos los archivos que estaban en el disco duro antes de que rompiera la partición la segunda vez siguen ahí.

  • Ahora estoy en el proceso de hacer una copia de seguridad de todo para poder empezar el disco duro de nuevo.


Para reiterar: ante la menor duda, ¡respaldo!

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X