Monthly Archives: Agosto 2018

Elencare, creare, cancellare le partizioni sui dischi MBR e GPT

Nota: questo è un obiettivo d’esame RHCSA 7.

Presentazione

Un disco (disk) può essere utilizzato come entità semplice o suddiviso in una o più partizioni.

I dischi sono generalmente chiamati /dev/sda, /dev/sdb, ecc, nei server fisici (s per scsi anche se hanno interfacce IDE, SATA o SAS) e /dev/vda, /dev/vdb, ecc, in macchine virtuali.

Le partizioni prendono il loro nome dal nome del disco stesso e aggiungono un numero che inizia da 1 (/dev/sda1, /dev/sda2, etc o /dev/vda1, /dev/vda2, ecc.).

Una tabella delle partizioni è una struttura speciale che contiene l’organizzazione delle partizioni.

I dischi non recenti utilizzano settori da 512 byte e la tabella delle partizioni MBR (MBR sta per Master Boot Record). Questa organizzazione consente solo 4 partizioni primarie. Se si desidera altro, è necessario creare una partizione estesa (utilizzando uno dei 4 slot principali) e quindi creare all’interno partizioni logiche. Più fastidioso, su dischi con capacità superiore a 2 TB, lo spazio sopra questo limite non è disponibile.

Per ovviare a tutte queste limitazioni, i dischi recenti utilizzano i settori a 4096 byte e la tabella delle partizioni GPT (GPT sta per GUID – IDentificatore globalmente univoco – Tabella delle partizioni). Maggiori dettagli sono disponibili sulla pagina Wikipedia di GPT.

Storicamente, esistono due comandi per manipolare dischi e partizioni: fdisk e parted.
Poiché il comando fdisk non gestisce le tabelle delle partizioni GPT, non è consigliabile utilizzarlo più (per vostra informazione, alcuni dettagli sono forniti alla fine di questa pagina sul comando fdisk).
Recentemente, un nuovo strumento chiamato gdisk è stato creato per gestire le tabelle delle partizioni GPT, offrendo un’alternativa al comando parted.

Attenzione: in questo tutorial, abbiamo a che fare con dischi reali. Ogni errore potrebbe distruggere completamente il tuo sistema.

Il comando parted

Per avviare il comando parted, digitare:

# parted
GNU Parted 2.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

Per elencare tutti i dischi e le partizioni, digitare:

(parted) print all
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  525MB  524MB  primary  ext4         boot
 2      525MB   500GB  500GB  primary               lvm


Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End  Size  Type  File system  Flags


Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/vg_root-lv_root: 497GB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End    Size   File system  Flags
 1      0.00B  497GB  497GB  ext4


Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/vg_root-lv_swap: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End     Size    File system     Flags
 1      0.00B  2147MB  2147MB  linux-swap(v1)

Qui, abbiamo un disco chiamato /dev/sdb senza partizione ma con una tabella delle partizioni MBR (Partition Table: msdos).
Per selezionare il disco /dev/sdb, digitare:

(parted) select /dev/sdb
Using /dev/sdb

o creare una tabella delle partizioni GPT sul disco /dev/sdb, digitare:

(parted) mktable gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? Y
(parted) print
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

Nota: digitare mktable msdos per creare una tabella delle partizioni MBR.
Per creare una partizione primaria con il tipo ext4 (qui a partire da 1 MB e terminando a 400 GB), digitare:

(parted) mkpart primary ext4 1MB 400GB

Nota 1: la specifica di ext4 non formatta la partizione in ext4, la contrassegna solo come partizione ext4.
Nota 2: la partizione non inizia a 0 ma 1 MB per evitare problemi di allineamento del disco.
Nota3: per specificare tutto lo spazio rimanente, utilizzare -1 come posizione finale.
Nota4: Con parted, 1 GB = 1000 MB.

A volte quando si imposta la prima partizione, viene visualizzato un avviso: “Warning: The resulting partition is not properly aligned for best performance.
Per risolvere questo problema, digitare il seguente comando in cui 400 GB è la dimensione della partizione (è possibile utilizzare il 100% anziché 400 GB se si desidera allocare tutto il disco):

(parted) mkpart primary ext4 0% 400GB

Per verificare che la prima partizione sia allineata correttamente, digitare:

(parted) align-check optimal 1
1 aligned

Per creare una partizione di swap con una dimensione di 2 GB (qui a partire da 400 GB e terminando a 402 GB), digitare:

(parted) mkpart primary linux-swap 400GB 402GB

Nota 1: parted controlla che entrambe le partizioni non si sovrappongano.
Nota 2: se in un secondo momento si desidera modificare il tipo di partizione, non rilasciare e ricreare la partizione: formattare la partizione come si desidera e parted rileverà normalmente il nuovo tipo.

Per stampare il risultato, digitare:

(parted) print
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End    Size    File system  Name     Flags
 1      1049kB  400GB  400GB   ext4         primary
 2      400GB   402GB  2000MB               primary

Per impostare la prima partizione come avviabile(bootable), digitare:

(parted) set 1 boot on
(parted) print
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End    Size    File system  Name     Flags
 1      1049kB  400GB  400GB   ext4         primary  boot
 2      400GB   402GB  2000MB               primary

Nota: digitare set 1 boot off per rimuovere il flag di avvio.
Per rimuovere la partizione di swap (qui numero di partizione 2), digitare:

(parted) rm 2

Per uscire dal prompt parted, digitare:

(parted) quit

Per aggiornare la configurazione del disco vista dal kernel, digitare:

# partprobe /dev/sdb

Il comando parted può anche essere utilizzato per la gestione del file system. Tuttavia, questo utilizzo è deprecato.

Il comando gdisk

Installa il pacchetto gdisk:

# yum install -y gdisk

Esegui il comando gdisk (qui con il /dev/vda disk come parametro):

# gdisk /dev/vda
GPT fdisk (gdisk) version 0.8.6

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


Digitare ? per visualizzare tutte le opzioni:

 

Command (? for help): ?
b       back up GPT data to a file
c       change a partition's name
d       delete a partition
i       show detailed information on a partition
l       list known partition types
n       add a new partition
o       create a new empty GUID partition table (GPT)
p       print the partition table
q       quit without saving changes
r       recovery and transformation options (experts only)
s       sort partitions
t       change a partition's type code
v       verify disk
w       write table to disk and exit
x       extra functionality (experts only)
?       print this menu

Digitare p per stampare la tabella delle partizioni:

Command (? for help): p
Disk /dev/vda: 12582912 sectors, 6.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): C6F7C323-530D-40B5-A985-241A1B181354
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 12582878
Partitions will be aligned on 2048-sector boundaries
Total free space is 1318845 sectors (644.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1026047   500.0 MiB   8300  Linux filesystem
   2         1026048        11266047   4.9 GiB     8E00  Linux LVM


Digitare n per creare una nuova partizione:

Command (? for help): n
Partition number (3-128, default 3): 3
First sector (34-12582878, default = 11266048) or {+-}size{KMGTP}: 34
Last sector (34-2047, default = 2047) or {+-}size{KMGTP}: 2047
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8300
Changed type of partition to 'Linux filesystem'


Digitare p per visualizzare la tabella delle partizioni:

Command (? for help): p
Disk /dev/vda: 12582912 sectors, 6.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): C6F7C323-530D-40B5-A985-241A1B181354
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 12582878
Partitions will be aligned on 2048-sector boundaries
Total free space is 1316831 sectors (643.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1026047   500.0 MiB   8300  Linux filesystem
   2         1026048        11266047   4.9 GiB     8E00  Linux LVM
   3              34            2047   1007.0 KiB  8300  Linux filesystem


Digita w per scrivere la tabella delle partizioni sul disco:

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/vda.
The operation has completed successfully.


Per forzare il kernel a leggere la tabella delle partizioni aggiornata, digitare:

# partprobe

 

Il comando fdisk


Per elencare tutte le partizioni, digitare:

# fdisk -l

Per creare una partizione primaria su un disco (qui /dev/vda), digitare:

# fdisk /dev/vda

Premere “c“, “u“, quindi “p” per stampare la tabella delle partizioni.
Quindi premere ‘n‘ (per nuovo), digitare il numero della partizione (tra 1 e 4), il primo settore e la dimensione.
Infine, premi “w per salvare la tabella delle partizioni.

Per eliminare una partizione primaria su un disco (qui /dev/vda), digitare:

# fdisk /dev/vda

Premere “c“, “u“, quindi “p” per stampare la tabella delle partizioni.
Quindi premere “d” (per eliminare) e digitare il numero della partizione (tra 1 e 4).
Infine, premi “w” per salvare la tabella delle partizioni.

Per impostare il tipo di una partizione primaria (qui /dev/vda3), digitare:

# fdisk /dev/vda

Premere “c“, “u“, quindi “p” per stampare la tabella delle partizioni.
Quindi premere ‘t‘ (per tag), digitare il numero di partizione (qui ‘3’) e il tipo di partizione (83 per linux, 8e per Linux LVM, 82 per lo scambio).
Infine, premi “w” per salvare la tabella delle partizioni.

Per forzare il kernel a leggere la tabella delle partizioni aggiornata, digitare:

# partprobe

 

Archivia, comprimi, decomprimi e decomprimi i file usando tar, star, gzip e bzip2

Nota: questo è un obiettivo d’esame RHCSA 7.

Per comprimere un file, digitare:

# gzip file
# bzip2 file

Per decomprimere un file, digitare:

# gunzip file.gz
# bunzip2 file.bz2

Per archiviare e comprimere una directory (con i contesti SELinux), digitare:

# tar --selinux -czvf directory.tgz directory

Nota: cercare di evitare l’utilizzo del percorso completo quando si specifica il percorso della directory, utilizzare il percorso relativo, sarà più facile durante il ripristino.

In alternativa, puoi raggruppare entrambe le operazioni (tar + compression) in un comando (rispettivamente per il contenuto gzip e bzip2):

# tar cvzf directory.tgz directory
# tar cvjf directory.bz2 directory

Per decomprimere e decomprimere un file di archivio (rispettivamente per i contenuti gunzip e bunzip2) (con i contesti SELinux), digitare:

# tar --selinux xzvf directory.tgz
# tar --selinux xjvf directory.bz2

Per elencare il contenuto dell’archivio (rispettivamente per i contenuti gunzip e bunzip2), digitare:

# tar tzvf directory.tgz
# tar tjvf directory.bz2

Per archiviare una directory con il comando asterisco (con i contesti SELinux), digitare:

# yum install -y star
# star -xattr -H=exustar -c -f=directory.star directory

Per decomprimere un file di archivio, digitare:

# star -x -f=directory.star

Risorse addizionali

Il sito web del linoxide fornisce un tutorial su Relax and Recover, la nuova soluzione di disaster recovery Open Source.

RHEL7:Accesso alla console di una macchina virtuale

Nota: questo è un obiettivo d’esame RHCSA 7.

 

Procedura standard

Con KVM, per accedere alla console della macchina virtuale sotto X Window, digitare:

# virt-manager

Se non sei sotto X Window, c’è un altro modo per accedere alla console di una macchina virtuale: puoi passare attraverso una console seriale.

Sulla macchina virtuale, aggiungi “console = ttyS0” alla fine delle linee del kernel nel file /boot/grub2/grub.cfg:

# grubby –update-kernel=ALL –args=”console=ttyS0″

Nota: In alternativa, puoi modificare il file /etc/default/grub, aggiungere ‘console = ttyS0‘ alla variabile GRUB_CMDLINE_LINUX ed eseguire ‘# grub2-mkconfig -o /boot/grub2/grub.cfg‘.

Ora, riavvia la macchina virtuale:

# reboot

Con KVM, connettiti alla console della macchina virtuale (qui vm.example.com):

# virsh console vm.example.com
Connected to domain vm.example.com
Escape character is ^]

Red Hat Enterprise Linux Server 7.0 (Maipo)
Kernel 3.10.0-121.el7.x86_64 on an x86_64

vm login:

Procedura di emergenza

A volte hai perso tutti i link alla tua macchina virtuale (errore nel file /etc/fstab, configurazione ssh, ecc.) E, dato che non hai configurato alcuna console virtuale, sei nei guai. C’è ancora una soluzione!
Collegati all’host fisico e spegni la tua macchina virtuale (qui chiamata vm.example.com):

# virsh destroy vm.example.com

Definire dove si trova il file immagine della macchina virtuale (per impostazione predefinita nella directory /var/lib/libvirt/images con un nome come vm.example.com.img):

# virsh dumpxml | grep "source file="
      <source file='/var/lib/libvirt/images/vm.example.com.img'/>

Mappare il file immagine della macchina virtuale nell’ambiente host (-a per add e -v per verbose):

# kpartx -av /var/lib/libvirt/images/vm.example.com.img
add map loop0p1 (253:2): 0 1024000 linear /dev/loop0 2048
add map loop0p2 (253:3): 0 10240000 linear /dev/loop0 1026048

Dal display precedente, sai che hai due partizioni (in realtà /boot e /, distinguibili dalle rispettive dimensioni).
È necessario montare la partizione /boot per poter modificare la configurazione di grub:

# mount /dev/mapper/loop0p1 /mnt

Quindi, modifica il file /mnt/grub2/grub.cfg e aggiungi “console = ttyS0” alla fine di ogni riga contenente /vmlinuz (il kernel linux).
Smonta la partizione:

# umount /mnt

Unmap del file immagine della macchina virtuale (-d per delete e -v per verbose):

# kpartx -dv /var/lib/libvirt/images/vm.example.com.img
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0

Riavvia la tua macchina virtuale:

# virsh start vm.example.com
Domain vm.example.com started

Collegati alla tua console della macchina virtuale:

# virsh console vm.example.com
Connected to domain vm.example.com
Escape character is ^]

CentOS Linux 7 (Core)
Kernel 3.10.0-123.el7.x86_64 on an x86_64

vm login:

Questa procedura funziona per RHEL 6 / CentOS 6 e RHEL 7 / CentOS 7.

RHEL7: Avviare, riavviare e spegnere normalmente un sistema.

Nota: questo è un obiettivo d’esame RHCSA 7.

Prerequisiti

Attivare un server fisico o una macchina virtuale (in questo caso, digitare: # virsh start vm).
Connettiti alla console.

Gestione di base

Per riavviare il sistema, scegli un comando tra questi:

# reboot
# systemctl reboot
# shutdown -r now
# init 6
# telinit 6

Per spegnere il sistema, scegli un comando tra questi:

# halt
# systemctl halt
# shutdown -h now
# init 0
# telinit 0

Per spegnere “brutalmente”,scegli un comando tra questi:

# poweroff
# systemctl poweroff

Gestione avanzata

Per sospendere il sistema, digitare:

# systemctl suspend
Per mettere il sistema in stato di ibernazione, digitare:
# systemctl hibernate
Per mettere il sistema in ibernazione e sospenderlo, digitare:
# systemctl hybrid-sleep

 

Risorse addizionali

il sito Bob Cromwell fornisce alcune pagine molto interessanti sui dettagli del kernel di Linux e il processo di avvio di Linux.