El problema
A l’Escola Politècnica Superior (EPS) solem treballar amb el programa partclone que permet clonar una partició d’un disc i guardar-la en un fitxer per poder restaurar-la més avant en un altre ordinador.
Fent proves, ens adonàrem que quan descomprimíem un Windows 10 creat amb el partclone o amb ntfsclone la grandària real de la partició no es corresponia amb la mida que mostrava el sistema de fitxers del disc C:.
En les següents imatges es mostra un exemple:
- Al primer disc (Disco 0) hi ha tres particions: la de Windows (C:), la de Gnu/Linux i la d’intercanvi (Swap).
- Observem que la mida de la unitat C: és de 697,13 GB.
- En canvi, si mirem en les propietats del disc C: ens diu que la seua capacitat és de 195 GB. O siga, que tenim una partició amb quasi 700 GB, però Windows només n’utilitzarà 195 GB. Estem perdent 505 GB!
Perquè passa açò?
El problema és que en clonar el Windows 10 amb el partclone o ntfsclone es queda la informació de la mida de la partició original, no la de l’actual. El Windows 10 que nosaltres comprimírem estava en una partició d’uns 200 GB i aquesta és la grandària que es mostra en descomprimir-lo en un altre ordinador.
La solució des de Windows
Per sort, després de pegar-li voltes, trobàrem una senzilla solució a aquest problema, amb un comandament natiu de Windows, diskpart, que ens permet estendre el sistema de fitxers perquè ocupe tota la partició.
Com sempre, abans de res, feu una còpia de seguretat del vostre sistema.
Executarem aquesta orde obrint, com a administrador, una finestra del símbol del sistema:
- En el quadre de cerca de Windows escriviu cmd.
- Feu clic amb el botó dret del ratolí damunt del programa “Símbolo del sistema” i seleccionar l’opció “Ejecutar como administrador”.
En la consola que s’obri escriviu diskpart i entrareu en l’entorn d’aquest programa. Ho notareu perquè l’indicador canvia i ara és DISKPART>
Una vegada dins del diskpart teclegeu LIST VOLUME, aquesta instrucció mostrarà els volums que tenim i el número que correspon a cadascun.
En el nostre cas, el problema el tenim amb el disc C: que, com es pot veure a la imatge, es correspon amb el volum 1.
A continuació, seleccionarem el volum adequat i estendrem el sistema:
DISKPART> select volume 1 DISKPART> extend filesystem
Ara, si tornem a mirar les propietats del disc C: comprovarem que la grandària d’aquest ja és la mateixa que la de la partició (697 GB):
La solució des de GNU/Linux
Per la nostra forma de treballar, l’anterior solució no ens servia. Ho explique: a l’EPS preparem els paquets d’instal·lació des de GNU/Linux. Solem comprimir, per una banda, el que anomenem “base”, que és el sistema operatiu (en aquest cas Windows) i els programes estretament relacionats amb ell (Visual Studio, Office, etc.) i, per altra banda, comprimim cada programa de forma separada. Açò ens permet tindre flexibilitat a l’hora d’adaptar la instal·lació dels laboratoris a les diferents necessitats de les assignatures que s’hi imparteixen.
Nosaltres decidírem comprimir la base en una partició de 200 GB, que era la més xicoteta de totes les que hi havia en els diferents models d’ordinadors dels laboratoris. Quan descomprimíem només aquesta base no hi havia cap problema, però quan tractàvem de descomprimir la base i tots els programes que anaven a utilitzar en un laboratori, la instal·lació fallava per falta d’espai. Només es reconeixien els 200 GB de la partició original, encara que la del nou destí tinguera més d’1 TB.
Llavors, teníem dues possibilitats: comprimir una base per cada grandària del disc dur, o siga, una per cada model d’ordinador diferent; o buscar la manera d’estendre la partició de Windows abans d’instal·lar els programes i després d’haver instal·lat la base (ja que era aquesta la que canviava la grandària del sistema de fitxers).
Ens decidírem per la segona, tractar d’estendre la partició de Windows des de GNU/Linux. Ho fem de la següent forma:
- Dividim el disc en particions i les formatem.
- Instal·lem la base (Windows i programes bàsics).
- Estenem la partició de Windows.
- Instal·lem la resta de programes, segons les necessitats de les assignatures.
El procés per estendre la partició és el següent:
# Esbrinar la mida de la partició de Windows (als laboratoris la /dev/sda1) blocks=`sfdisk -s /dev/sda1` # El resultat, en blocks, el convertim a bytes. bytes=$(( $blocks * 1024 )) # Canviem la grandària del sistema de fitxers. ntsresize --force --force -s $bytes /dev/sda1
Es pot donar el cas que la conversió de blocks a bytes done un número tan gran que es trunque o es mostre en format científic (1.59899710362e+12), cosa que faria que el resultat obtingut no ens servira. Podem optar per una d’aquestes solucions:
- Treballar amb Kilobytes, Megabytes o Gigabytes en comptes de bytes. En aquest cas podem utilitzar els modificadors k, M o G de sfdisk.
- Fer la multiplicació amb bc:
bytes=`echo $blocks \* 1024 | bc`
En l’ordre ntsrezise posem dues vegades l’argument –force per evitar que el sistema ens pregunte.