Engrandir les particions al servidor FreeBSD en producció amb una nova microSD de 256G

Engrandir les particions al servidor FreeBSD en producció amb una nova microSD de 256G

En aquest article t'explique com he redimensionat el meu servidor FreeBSD 13 que tinc a la Raspberry funcionant 24x7 i que estava quedant-se sense espai.

Ja fa mesos que vaig comprar una microSD de 128G i vaig clonar l'anterior microSD de 64G, i tot funcionava bé però la partició arrel / no detectava 128G sinó 64G, però com que estava en moltes coses, no em va preocupar massa solventar eixe tema.

Però des de juliol ja tenia el servidor a més del 90% d'espai ocupat, el 90% de 64G d'espai, on li donava 50G a la partició arrel (/) on tinc totes les bases de dades i projectes web, i em preocupava trencar-lo i que després tinguera problemes de recuperació de fitxers i bases de dades o que fins i tot no puguera iniciar el sistema. I hui ha segut un gran dia, ja que he pogut trovar finalment la solució que ara et contaré :)

Vaig comprar una nova microSD de 256G de les ràpides, les de classe 10 U3 V30, que ja tinc comprovades que tenen molt bon funcionament a la Raspberry Pi 4.

El meu objectiu és donar-li tot l'espai que puga a la partició /, que té format ufs. Nomès he fet servir 4 passos:

- 1. Fem un backup.
- 2. Estat de les particions de la microSD
- 3. Esborrem particions entre l'espai lliure la partició UFS arrel.
- 4. Tornem a crear la partició swap.
- 5. Redimensionem amb growfs.

I ara a continuació t'ho explique amb més detall.

FEM UNA CÒPIA DE SEGURETAT DE LA MICROSD
Primer de tot, crearem una imatge de la tarjeta microSD actual de 128GB:

# dd if=/dev/da0 of=/home/joan/backup_microsd.img bs=32M
3810+1 records in
3810+1 records out
127865454592 bytes transferred in 5501.407988 secs (23242314 bytes/sec)

Ara copiem la imatge en la nova tarjeta de 256GB:

# dd if=/home/joan/backup_microsd.img of=/dev/da0 bs=32M
3810+1 records in
3810+1 records out
127865454592 bytes transferred in 1776.575740 secs (71972982 bytes/sec)

Ja tenim la tarjeta clonada, i a banda la imatge backup_microsd.img que ens sevirà de recuperació per si no ens ix bé l'experiment i volem tornar a provar.

ESTAT DE LES PARTICIONS DE LA MICROSD
Bé, a continuació, introduirem aquesta nova tarjeta de 256GB en la Raspberry Pi de desenvolupament i iniciarem el sistema. Una vegada ens autentiquem, comprovarem l'espai que tenim a les particions:

$ df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ufs/rootfs 52G 45G 3.1G 93% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/msdosfs/MSDOSBOOT 50M 25M 25M 49% /boot/msdos
tmpfs 9.3G 4.0K 9.3G 0% /tmp

Seguim tenint un disc dur de 52G que munta / i que tenim, ara, al 93%, però aparentment no ens ha detectat que estem sobre una tarjeta microSD més gran.

Mirem les particions que tenim a la MicroSD amb:

# gpart show
=> 63 499744705 mmcsd0 MBR (238G)
63 1985 - free - (993K)
2048 102400 1 fat32lba [active] (50M)
104448 499640320 2 freebsd (238G)
#
=> 0 499640320 mmcsd0s2 BSD (238G)
0 128 - free - (64K)
128 112150400 1 freebsd-ufs (53G)
112150528 12476416 2 freebsd-swap (5.9G)
124626944 375013376 - free - (179G)

Aleshores, en mmcsd0s2, detecta que tinc una microSD amb 238G de capacitat.

ESBORREM PARTICIONS ENTRE L'ESPAI LLIURE I LA PARTICIÓ UFS ARREL

Necessite ampliar la partició nº1 de mmcsd0s2 però després, abans de l'espai lliure de 179G hi ha una swap (de 5.9G), i necessitem esborrar-la primer, perquè per a poder redimensionar amb gpart no ha d'haver cap paritició enmig entre la partició que volem redimensionar i l'espai lliure.

# gpart delete -i 2 mmcsd0s2
gpart: Device busy

No em deixa esborrar la partició swap perquè està muntada. He de desmuntar la partició primer.

Editarem el fitxer /etc/fstab i comentarem la línia que munta la partició swap en l'arranc del sistema:

# Custom /etc/fstab for FreeBSD embedded images
/dev/ufs/rootfs / ufs rw 1 1
/dev/msdosfs/MSDOSBOOT /boot/msdos msdosfs rw,noatime 0 0
tmpfs /tmp tmpfs rw,mode=1777 0 0
#Comente la línia següent:
#/dev/label/growfs_swap none swap sw 0 0

I reiniciarem la màquina:

$ doas shutdown -r now

Ara ja em deixa esborrar-la:

# gpart delete -i 2 mmcsd0s2
mmcsd0s2b deleted

Si ara tornem a consultar les particions que tenim, veiem que ja no tenim la partició swap i que la partició amb espai lliure de 185G està just al costat de l'arrel del nostre sistema (partició freebsd-ufs amb 53G):

# gpart show
=> 63 499744705 mmcsd0 MBR (238G)
63 1985 - free - (993K)
2048 102400 1 fat32lba [active] (50M)
104448 499640320 2 freebsd (238G)
#
=> 0 499640320 mmcsd0s2 BSD (238G)
0 128 - free - (64K)
128 112150400 1 freebsd-ufs (53G)
112150528 387489792 - free - (185G)

Ara ja és possible redimensionar la partició i tornar a crear una partició swap. El primer pas és aturar la protecció de la partició ficant un 'flag' o una marca al kernel.

# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16

Ara, dels 185G que hi ha en l'espai lliure, anem a agafar 180G i anem a sumar-los a l'actual partició nº 1 freebsd-usb que actualment té 53G, és a dir, que al final tindrà 233G de grandària. I farem l'ampliació així:

# gpart resize -i 1 -s 233G -a 4k mmcsd0s2
mmcsd0s2a resized

Si ara mirem com ha quedat el resultat que tenim de moment, veurem que la partició arrel del sistema amb el format freebsd-ufs ja té 233G:

# gpart show
=> 63 499744705 mmcsd0 MBR (238G)
63 1985 - free - (993K)
2048 102400 1 fat32lba [active] (50M)
104448 499640320 2 freebsd (238G)
#
=> 0 499640320 mmcsd0s2 BSD (238G)
0 128 63
- free - (64K)
128 488636416 1 freebsd-ufs (233G)
488636544 11003776 - free - (5.2G)

TORNEM A CREAR LA PARTICIÓ SWAP
Ara ens queda crear la partició swap:

# gpart add -t freebsd-swap -a 4k mmcsd0s2
mmcsd0s2b added, but partition is not aligned on 4194304 bytes

Si ara tornem a mirar l'estat de les nostres particions veiem que ja tenim la swap creada amb 5G d'espai:

# gpart show
+
=> 63 499744705 mmcsd0 MBR (238G)
63 1985 - free - (993K)
2048 102400 1 fat32lba [active] (50M)
104448 499640320 2 freebsd (238G)
#
=> 0 499640320 mmcsd0s2 BSD (238G)
0 128 - free - (64K)
128 488636416 1 freebsd-ufs (233G)
488636544 11003776 2 freebsd-swap (5.2G)

REDIMENSIONEM AMB GROWFS
La solució per engrandir les particions la tenim en el programari growfs, aleshores afegirem a /etc/rc.conf la línia:

growfs_enable="YES"

Ara reiniciem el sistema:

$ shutdown -h now

Ara he llevat la microSD de la tarjeta i l'he muntada en una altra màquina, amb FreeBSD també, i he executat growfs des d'allí:

# growfs /dev/da0s2a
Device is mounted read-write; resizing will result in temporary write suspension for /media/da0s2a.
It's strongly recommended to make a backup before growing the file system.
OK to grow filesystem on /dev/da0s2a, mounted on /media/da0s2a, from 53GB to 233GB? [yes/no] yes
super-block backups (for fsck_ffs -b #) at:
112679616, 113960064, 115240512, 116520960, 117801408, 119081856, 120362304, 121642752, 122923200,
124203648, 125484096, 126764544, 128044992, 129325440, 130605888, 131886336, 133166784, 134447232,
135727680, 137008128, 138288576, 139569024, 140849472, 142129920, 143410368, 144690816, 145971264,
147251712, 148532160, 149812608, 151093056, 152373504, 153653952, 154934400, 156214848, 157495296,
158775744, 160056192, 161336640, 162617088, 163897536, 165177984, 166458432, 167738880, 169019328,
170299776, 171580224, 172860672, 174141120, 175421568, 176702016, 177982464, 179262912, 180543360,
181823808, 183104256, 184384704, 185665152, 186945600, 188226048, 189506496, 190786944, 192067392,
193347840, 194628288, 195908736, 197189184, 198469632, 199750080, 201030528, 202310976, 203591424,
204871872, 206152320, 207432768, 208713216, 209993664, 211274112, 212554560, 213835008, 215115456,
216395904, 217676352, 218956800, 220237248, 221517696, 222798144, 224078592, 225359040, 226639488,
227919936, 229200384, 230480832, 231761280, 233041728, 234322176, 235602624, 236883072, 238163520,
239443968, 240724416, 242004864, 243285312, 244565760, 245846208, 247126656, 248407104, 249687552,
250968000, 252248448, 253528896, 254809344, 256089792, 257370240, 258650688, 259931136, 261211584,
262492032, 263772480, 265052928, 266333376, 267613824, 268894272, 270174720, 271455168, 272735616,
274016064, 275296512, 276576960, 277857408, 279137856, 280418304, 281698752, 282979200, 284259648,
285540096, 286820544, 288100992, 289381440, 290661888, 291942336, 293222784, 294503232, 295783680,
297064128, 298344576, 299625024, 300905472, 302185920, 303466368, 304746816, 306027264, 307307712,
308588160, 309868608, 311149056, 312429504, 313709952, 314990400, 316270848, 317551296, 318831744,
320112192, 321392640, 322673088, 323953536, 325233984, 326514432, 327794880, 329075328, 330355776,
331636224, 332916672, 334197120, 335477568, 336758016, 338038464, 339318912, 340599360, 341879808,
343160256, 344440704, 345721152, 347001600, 348282048, 349562496, 350842944, 352123392, 353403840,
354684288, 355964736, 357245184, 358525632, 359806080, 361086528, 362366976, 363647424, 364927872,
366208320, 367488768, 368769216, 370049664, 371330112, 372610560, 373891008, 375171456, 376451904,
377732352, 379012800, 380293248, 381573696, 382854144, 384134592, 385415040, 386695488, 387975936,
389256384, 390536832, 391817280, 393097728, 394378176, 395658624, 396939072, 398219520, 399499968,
400780416, 402060864, 403341312, 404621760, 405902208, 407182656, 408463104, 409743552, 411024000,
412304448, 413584896, 414865344, 416145792, 417426240, 418706688, 419987136, 421267584, 422548032,
423828480, 425108928, 426389376, 427669824, 428950272, 430230720, 431511168, 432791616, 434072064,
435352512, 436632960, 437913408, 439193856, 440474304, 441754752, 443035200, 444315648, 445596096,
446876544, 448156992, 449437440, 450717888, 451998336, 453278784, 454559232, 455839680, 457120128,
458400576, 459681024, 460961472, 462241920, 463522368, 464802816, 466083264, 467363712, 468644160,
469924608, 471205056, 472485504, 473765952, 475046400, 476326848, 477607296, 478887744, 480168192,
481448640, 482729088, 484009536, 485289984, 486570432, 487850880

Finalment desmunte la microSD, la inserte en la Raspberry Pi de desenvolupament i inicie el sistema, i ja em detecta que tinc 226G en la partició arrel "/":

[joan@mercuri ~]$ df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ufs/rootfs 226G 47G 161G 23% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/msdosfs/MSDOSBOOT 50M 25M 25M 49% /boot/msdos
tmpfs 7.3G 4.0K 7.3G 0% /tmp

microsd particionada

Ja tenim el nostre sistema funcionant i ja tenim la partició arrel amb 226G. Dóna gust veure que ara nomès estem fent servir el 23% de la capacitat del disc :) Faena feta, fa goig.

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.

Utilitats

NAVEGACIÓ SENSE RATOLÍ

- Tab següent enllaç.
- Shift+Tab anterior enllaç.
- Enter activa l'enllaç.
- Alt+esquerra anar arrere.

CONTRAST DE COLORS

Accessibilitat - Color Negre
Accessibilitat - Color Groc
Accessibilitat - Color Verd

Accessibilitat - Color Blau
Accessibilitat - Color Crema
Accessibilitat - Color Blanc

 

PORTADES ALTERNATIVES