¿Cómo se puede "particionar" un disco sin partición sin perder datos?

¿Cómo se puede "particionar" un disco sin partición sin perder datos?

Tengo un disco duro portátil de 1 TB que uso para copias de seguridad. Toda la unidad ( /dev/sdb) ha sido formateada como un ext4sistema de archivos.

He estado leyendo sobre los beneficios de btrfslas copias de seguridad (sumas de verificación, autorreparación, etc.) y estoy considerando convertir este disco de ext4a btrfs.

Estoy bastante seguro de que aún puedo cambiar el tamaño del disco ( e2fsck -f /dev/sdb && resize2fs /dev/sdb 500G && fdisk /dev/sdbo algo así). Sin embargo, no estoy seguro de cómo "introducir" particiones en un dispositivo que no tenía particiones al principio.

¿Se puede hacer esto? Y si se puede, cómo?

(Tenga en cuenta que los sistemas de archivos en sí mismos ( ext4,, btrfsetc.) son bastante irrelevantes; la pregunta es simplemente sobre particionar un dispositivo que se creó inicialmente sin una partición y hacerlo sin perder el sistema de archivos existente).

Respuesta1

Las tablas de particiones (al menos en estilo MBR o GPT) se encuentran al principio y/o al final de los discos, por lo que puede introducirlas si puede liberar el espacio requerido.

Trabajando con un disco de terabyte, procedería de la siguiente manera.

  1. Cambie el tamaño del sistema de archivos ext4 a 499G (pecando en el lado seguro). Esto garantiza que todos los datos, la estructura del sistema de archivos, etc. quepan dentro de los primeros bloques de 499G del disco. Lo ideal sería reducir el sistema de archivos tanto como sea posible, eso reducirá la cantidad de datos que necesita copiar en los pasos siguientes.
  2. Copie los bloques a la segunda mitad del disco, usando dduna herramienta similar.
  3. Particione el disco, creando una partición que sea un poco más grande que el sistema de archivos (500G). Utilice GPT para esto; sobrescribirá bloques al inicio y al final del disco, por lo que la copia del sistema de archivos al inicio del disco ahora está disponible.
  4. Copie los bloques sin formato de la segunda mitad del disco a la partición recién creada, nuevamente usando ddalgo similar. Deberá calcular las compensaciones y los tamaños según lo que hizo en el paso 2, pero el objetivo es fácil ( /dev/sdX1).
  5. Cambie el tamaño del sistema de archivos nuevamente para que ocupe toda la partición.

Con una herramienta comoddrescueque se puede copiar al revés, podrías simplificarlo un poco:

  1. Cambie el tamaño del sistema de archivos de origen tanto como sea posible.
  2. Calcule dónde comenzaría la primera partición (sin crear realmente la tabla de particiones).
  3. Mueva los bloques que componen el sistema de archivos fuente para que comiencen donde comenzaría la primera partición. (Aquí es donde debes comenzar a copiar desde el final).
  4. Particionar el disco.
  5. Cambie el tamaño del sistema de archivos.

Dada la cantidad de copias involucradas, sería más fácil hacer una copia de seguridad de los datos en otro lugar y restaurarlos. Puede limitar la cantidad de copias guardando el inicio del sistema de archivos ext4 y restaurándolo seguido del resto de los datos, pero eso requiere una contabilidad más cuidadosa.

Respuesta2

Reparticioné con éxito una unidad de 2 TB sin pérdida de datos. Quería realizar copias de seguridad desde una caja GNU/Linux y una caja Windows, así que reduje la partición EXT4 a 1 TB y creé una nueva partición de 1 TB que formateé como un sistema de archivos NTFS.

Todo lo que necesitaba hacer era usar la aplicación GUI Disks en Ubuntu. Otras distribuciones deberían tener una aplicación GUI similar para administrar particiones. Me imagino que usar BTRFS en lugar de NTFS funcionaría igual de bien.

Por supuesto, también debería poder realizar la repartición desde la terminal.

Respuesta3

Estoy confundido.

Dijiste que el disco está formateado como ext4, entoncesteneruna partición. Quizás fdisk no lo muestra porque la tabla de particiones del disco es gpt y su fdisk no lo admite. En este caso puedes usar partido.

sudo parted -l /dev/sdb

Además de esto, puedes convertir ext4 a btrfs.como se dice en esta guía de arch linux.

información relacionada