Luego de haber instalado FreeBSD 10 y hecho una limpieza de particiones de mi ex CentOS 7 con KDE (lo que involucró convertir una partición MBR lógica en primaria), llegó el momento de reparticionar el disco para aprovechar todo el espacio disponible.



Tal como les conté hace un par de artículos, venía arrastrando una tabla de particiones MBR desde CentOS 6 y mi partición de mayor tamaño, utilizada para almacenar datos (la más valiosa), era una partición lógica. Como FreeBSD no se lleva muy bien con particiones extendidas y lógicas (por ejemplo, el instalador no permite hacer uso de una partición lógica), tuve que convertirla a una partición primaria. Al finalizar el "reparticionado", me quedó un desparramo importante en el disco, con algunos espacios libres.

Pero lo más gracioso de todo fue descubrir que FreeBSD aún no posee soporte de escritura para sistemas de archivos ext4. Por lo tanto, el trabajo de "rescatar" la partición de datos fue en vano. Al final debí conseguir un disco de soporte para mover los datos y reparticionar el disco. Quedándome, para colmo, con una tabla MBR, ya que soy muy vago para volver a instalar FreeBSD.

El estado del disco al momento de comenzar la "limpieza de particiones" era el siguiente:

root@hal9000:/home/emi # fdisk-linux -l /dev/ada0

Disk /dev/ada0: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

     Device Boot    Start       End    Blocks   Id  System
/dev/ada0s1   *      8840     16803  63963112+  a5  FreeBSD
Partition 1 does not end on cylinder boundary.
/dev/ada0s3          2615      8839  50002312+  83  Linux
/dev/ada0s4         16808     60801 353381773+  83  Linux

Partition table entries are not in disk order

No me peguen por haber instalado el paquete linuxfdisk en FreeBSD, es que estoy acostumbrado a su salida. Prometo deshacerme de estas herramientas linuxeras, pero vamos de a poco. A ver, con gpart se puede volcar la misma tabla de particiones ejecutando gpart show ada0:

root@hal9000:/home/emi # gpart show ada0
=>       63  976773105  ada0  MBR  (466G)
         63   41993847        - free -  (20G)
   41993910  100004625     3  linux-data  (48G)
  141998535  127926225     1  freebsd  [active]  (61G)
  269924760      79758        - free -  (39M)
  270004518  706763547     4  linux-data  (337G)
  976768065       5103        - free -  (2.5M)

Salvo que la salida es en bloques en lugar de cilindros.

Como se observa, tenía la partición 1, de tipo freebsd (donde está instalado el sistema operativo), comenzando en el bloque 141998535. El resto de las particiones eran para eliminar y crear nuevamente aprovechando todos los huecos.

A diferencia de Windows y GNU/Linux. FreeBSD llama a las particiones primarias de DOS "slices", y a las particiones lógicas simplemente "particiones". Pero por supuesto, al tratarse de una tabla MBR, sólo es posible un máximo de 4 slices.

Get down to business

Para comenzar la limpieza, borré las dos particiones slices linux restantes (3 y 4). Para borrar una slice o partición en FreeBSD utilizando gpart, simplemente ejecutar gpart delete -i <número de slice o partición> <disco o slice>. Por ejemplo:

root@hal9000:/home/emi # gpart delete -i 4 ada0              
ada0s4 deleted
root@hal9000:/home/emi # gpart show ada0       
=>       63  976773105  ada0  MBR  (466G)
         63   41993847        - free -  (20G)
   41993910  100004625     3  linux-data  (48G)
  141998535  127926225     1  freebsd  [active]  (61G)
  269924760  706848408        - free -  (337G)

root@hal9000:/home/emi # gpart delete -i 3 ada0 
ada0s3 deleted
root@hal9000:/home/emi # gpart show ada0       
=>       63  976773105  ada0  MBR  (466G)
         63  141998472        - free -  (68G)
  141998535  127926225     1  freebsd  [active]  (61G)
  269924760  706848408        - free -  (337G)

Luego de haber eliminado ambos slices, sólo quedó el slice 1 en medio del disco, con 68 GB libres al principio y 337 GB libres al final del disco.

El siguiente paso consistió en crear el slice 2 utilizando todo el espacio libre al final del disco. Cuando se ejecuta el comando add sin parámetros adicionales (bloque de comienzo y bloque de fin), la utilidad gpart calcula automáticamente el espacio libre donde crear la nueva partición o slice. Por defecto utilizará el mayor espacio contiguo disponible:

root@hal9000:/home/emi # gpart add -t freebsd -i 2 ada0
ada0s2 added
root@hal9000:/home/emi # gpart show ada0               
=>       63  976773105  ada0  MBR  (466G)
         63  141998472        - free -  (68G)
  141998535  127926225     1  freebsd  [active]  (61G)
  269924760  706848408     2  freebsd  (337G)

Finalmente creé el slice 3 en el espacio restante:

root@hal9000:/home/emi # gpart add -t freebsd -i 3 ada0 
ada0s3 added
root@hal9000:/home/emi # gpart show ada0               
=>       63  976773105  ada0  MBR  (466G)
         63  141998472     3  freebsd  (68G)
  141998535  127926225     1  freebsd  [active]  (61G)
  269924760  706848408     2  freebsd  (337G)

Resultado:

root@hal9000:/home/emi # gpart show ada0
=>       63  976773105  ada0  MBR  (466G)
         63  141998472     3  freebsd  (68G)
  141998535  127926225     1  freebsd  [active]  (61G)
  269924760  706848408     2  freebsd  (337G)

Con las slices ya creadas, el siguiente paso era crear ambos filesystems, "formatear" digamos. Para crear un filesystem UFS se debe utilizar la herramienta newfs:

root@hal9000:/home/emi # newfs /dev/ada0s3 
/dev/ada0s3: 69335.2MB (141998472 sectors) block size 32768, fragment size 4096
        using 111 cylinder groups of 626.09MB, 20035 blks, 80256 inodes.
super-block backups (for fsck_ffs -b #) at:
 192, 1282432, 2564672, 3846912, 5129152, 6411392, 7693632, 8975872, 10258112, 11540352, 12822592, 14104832, 15387072,
 16669312, 17951552, 19233792, 20516032, 21798272, 23080512, 24362752, 25644992, 26927232, 28209472, 29491712,
 30773952, 32056192, 33338432, 34620672, 35902912, 37185152, 38467392, 39749632, 41031872, 42314112, 43596352,
 44878592, 46160832, 47443072, 48725312, 50007552, 51289792, 52572032, 53854272, 55136512, 56418752, 57700992,
 58983232, 60265472, 61547712, 62829952, 64112192, 65394432, 66676672, 67958912, 69241152, 70523392, 71805632,
 73087872, 74370112, 75652352, 76934592, 78216832, 79499072, 80781312, 82063552, 83345792, 84628032, 85910272,
 87192512, 88474752, 89756992, 91039232, 92321472, 93603712, 94885952, 96168192, 97450432, 98732672, 100014912,
 101297152, 102579392, 103861632, 105143872, 106426112, 107708352, 108990592, 110272832, 111555072, 112837312,
 114119552, 115401792, 116684032, 117966272, 119248512, 120530752, 121812992, 123095232, 124377472, 125659712,
 126941952, 128224192, 129506432, 130788672, 132070912, 133353152, 134635392, 135917632, 137199872, 138482112,
 139764352, 141046592

Lo mismo para /dev/ada0s2.

Por último, es posible montar el nuevo filesystem para comenzar a utilizarlo:

root@hal9000:/home/emi # mkdir /vault
root@hal9000:/home/emi # mount /dev/ada0s3 /vault
root@hal9000:/home/emi # mount
/dev/ada0s1a on / (ufs, local, journaled soft-updates)
devfs on /dev (devfs, local, multilabel)
procfs on /proc (procfs, local)
/dev/ada0s3 on /vault (ufs, local)
root@hal9000:/home/emi # ll /vault
total 4
drwxrwxr-x  2 root  operator  512 Dec  2 08:35 .snap/

Adicionalmente cambié los permisos para que el usuario "emi" sea el owner:

root@hal9000:/home/emi # chown -R emi:wheel /vault
root@hal9000:/home/emi # ll -a /vault
total 12
drwxr-xr-x   3 emi   wheel   512 Dec  2 08:35 ./
drwxr-xr-x  20 root  wheel  1024 Dec  2 08:36 ../
drwxrwxr-x   2 emi   wheel   512 Dec  2 08:35 .snap/

Opcionalmente es posible agregar una entrada en el archivo /etc/fstab para que el filesystem sea montado automáticamente durante el inicio:

# Vault
/dev/ada0s3     /vault          ufs     rw      1       1

Referencias

FreeBSD Handbook - 4.6. Disk Organization


Tal vez pueda interesarte


Compartí este artículo