Lo scenario oggetto di questo argomento è il seguente: per un motivo qualsiasi, voglio aggiungere alla linuxbox un secondo hard disk e riprodurvi il sistema attualmente installato. Poi modificare il boot affinchè avvenga dal nuovo disco.
Ecco le operazioni necessarie
nel seguito si da per scontato che il secondo disco sia stato installato, cioè si sia fermato il sistema, si sia inserito il secondo hard disk e si sia riavviato il tutto. Le operazioni descritte serviranno a chiarire l´uso fondamentale delle utility Linux per la gestione dei dischi. Per la descrizione dettagliata di tutte le opzioni disponibili si rimanda alle relative manpages e alla documentazione facilmente reperibile in rete.
Un meccanismo migliore di quello qui descritto utilizza
partimage. Un'applicazione che consente di centralizzare su un server le immagini di qualunque partizione di qualunque disco di qualunque macchina in modo da riprodurle a piacere su una macchina bersaglio.
Ce ne occuperremo in un altro articolo.
Ricognizione della situazione esistente
Per avere una lista dei dischi esistenti e delle relative partizioni (dischi IDE)
* # ll /dev/hd* *
Per vedere come e'partizionato un disco (es. /dev/hda)
* # parted /dev/hda print *
oppure
* # fdisk -l /dev/hda *
Per dischi scsi i dispositivi sono denominati
sd anzichè
hd
Vediamo un caso pratico....
# ll /dev/hd*
lr-xr-xr-x 1 root root 32 Jun 23 14:18 /dev/hda -> ide/host0/bus0/target0/lun0/disc
lr-xr-xr-x 1 root root 33 Jun 23 14:18 /dev/hda1 -> ide/host0/bus0/target0/lun0/part1
lr-xr-xr-x 1 root root 33 Jun 23 14:18 /dev/hda2 -> ide/host0/bus0/target0/lun0/part2
lr-xr-xr-x 1 root root 33 Jun 23 14:18 /dev/hda5 -> ide/host0/bus0/target0/lun0/part5
lr-xr-xr-x 1 root root 33 Jun 23 14:18 /dev/hda6 -> ide/host0/bus0/target0/lun0/part6
che mi dice che ho un solo disco, di nome simbolico
/dev/hda,
collegato al dispositivo fisico
/dev/ide/host0/bus0/target0/lun0/disc,
cioè al canale ide primario (
bus0) come master (
target0). Le partizioni sono la numero 1 primaria, la 2 estesa (vedi sotto) contenente le partizioni logiche 5 e 6.
Con cfdisk posso a questo punto vedere o modificare la situazione.
# cfdisk /dev/hda attiva la modalità interattiva (l´unica, da cui uscirò immediatamente) che fornisce
cfdisk 2.11z
Disk Drive: /dev/hda
Size: 1624670208 bytes, 1624 MB
Heads: 64 Sectors per Track: 63 Cylinders: 787
Name Flags Part Type FS Type [Label] Size (MB)
-----------------------------------------------------------------------------
hda1 Primary Linux ext2 24.78
hda5 Logical Linux swap 268.37
hda6 Logical Linux ReiserFS 1331.53
# parted /dev/hda print invece restituisce un errore (per lo specifico disco che sto usando come esempio)
Error: The partition table on /dev/ide/host0/bus0/target0/lun0/disc is inconsistent. There are many
reasons why this might be the case. However, the most likely reason is that Linux detected the BIOS
geometry for /dev/ide/host0/bus0/target0/lun0/disc incorrectly. GNU Parted suspects the real geometry
should be 787/64/63 (not 197/255/63). You should check with your BIOS first, as this may not be correct.
You can inform Linux by adding the parameter ide/host0/bus0/target0/lun0/disc=787,64,63 to the command
line. See the LILO or GRUB documentation for more information. If you think Parted's suggested geometry
is correct, you may select Ignore to continue (and fix Linux later). Otherwise, select Cancel (and fix
Linux and/or the BIOS now).
Ignore Cancel ?
# fdisk -l /dev/hda invece emette correttamente la tavola delle partizioni
Disk /dev/hda: 1624 MB, 1624670208 bytes
64 heads, 63 sectors/track, 787 cylinders
Units = cylinders of 4032 * 512 = 2064384 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 12 24160+ 83 Linux
/dev/hda2 13 787 1562400 5 Extended
/dev/hda5 13 142 262048+ 82 Linux swap
/dev/hda6 143 787 1300288+ 83 Linux
dalla quale si vede che la primaria n.2 è in realtà l´èstesa che contiene le logiche 5 e 6.
Per quanto riguarda i
mount point ecco il contenuto di
/etc/fstab
/dev/ide/host0/bus0/target0/lun0/part1 /boot ext2 defaults,rw 1 2
/dev/ide/host0/bus0/target0/lun0/part5 none swap sw 0 0
/dev/ide/host0/bus0/target0/lun0/part6 / reiserfs defaults,rw 1 1
proc /proc proc defaults 0 0
/dev/fd0 /floppy auto defaults,user,noauto 0 0
/dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0
Partizionamento e scelta del filesystem
Decidiamo che il sistema trasferito sul secondo disco sia così ripartito:
Name Flags Part Type FS Type [Label] Size (MB)
-----------------------------------------------------------------------------
hda1 Primary Linux ext2 50
hda5 Logical Linux swap 400
hda6 Logical Linux ReiserFS 2000
hda7 Logical Linux ReiserFS 2000
hda8 Logical Linux ReiserFS 3000
hda9 Logical Linux ReiserFS 3000
a cui saranno associati i seguenti mount point (nellípotesi che il disco assuma il nome /dev/hdc)
/dev/hdc1 /boot ext2 defaults,rw 1 2
/dev/hdc5 none swap sw 0 0
/dev/hdc6 / reiserfs defaults,rw 1 1
/dev/hdc7 /var reiserfs defaults,rw 1 1
/dev/hdc8 /usr reiserfs defaults,rw 1 1
/dev/hdc9 /home reiserfs defaults,rw 1 1
Attenzione, la ripartizione proposta è solo una delle tante possibili sia per quanto riguarda le dimensioni che il numero dei mount point elencari. A questo proposito la discussione è aperta e le opinioni molteplici. Con poche o una partizione si ottimizza lo spazio ma ci si espone a rischi maggiori (quanto realistici non saprei), nel caso contrario la situazione è generalmente vista come più sicura (anche in relazione ai permessi assegnabili a ciascuna partizione) ma occorre avere un`idea degli spazi occupati per non sprecarne ma soprattutto per non rimanerne senza.
Copia del sistema
Installazione del bootloader (grub)
Riavvio