Monthly Archives: Agosto 2018

RHEL7: Avviare manualmente i sistemi in modi deversi

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

Ai vecchi tempi


Prima di Systemd, c’erano i seguenti runlevel:

1: singolo: livello di manutenzione,
2: livello senza risorse di rete (NFS, ecc.),
3: livello multiutente senza interfaccia grafica,
5: livello multiutente con interfaccia grafica.

Nota: il livello di esecuzione predefinito era impostato nel file /etc/inittab.

Per ottenere il livello di esecuzione corrente con la vecchia maniera, digitare:

# runlevel

Per modificare il livello di esecuzione corrente (dove X è il livello di esecuzione), digitare:

# init X

Nota: come visto prima, i livelli 0 e 6 sono stati utilizzati rispettivamente per arrestare un sistema e riavviarlo.

 

Stato attuale

Con Systemd, sono disponibili nuovi comandi:

systemctl rescue: per passare alla modalità utente singolo/manutenzione con i file system locali montati,
systemctl emergency: per passare alla modalità utente singolo/manutenzione con solo il file system root montato,
systemctl isolate multi-user.target: per passare al livello multiutente senza interfaccia grafica (equivalente al precedente livello di esecuzione 3),
systemctl isolate graphical.target: per passare al livello multiutente con interfaccia grafica (equivalente al precedente livello di esecuzione 5),
systemctl set-default graphical.target: per impostare il livello di esecuzione predefinito sulla modalità grafica multiutente,
systemctl get-default: per ottenere il livello di esecuzione predefinito.

Estendere i volumi logici

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


Prerequisiti

Questo tutorial richiede 200MB di spazio disponibile su disco.

Prima di estendere qualsiasi volume logico non crittografato, creiamo uno di 100MB chiamato lv_vol nel gruppo di volumi vg:

# lvcreate --size 100M --name lv_vol vg

Solo i file system Ext4 e XFS non crittografati possono essere estesi, non vfat.

Nota 1: in questo tutorial, i comandi lvextend e lvreduce vengono utilizzati rispettivamente per aumentare e ridurre la dimensione di un volume logico. Per brevità, il comando lvresize non è discusso qui, ma le stesse operazioni possono essere fatte in un modo leggermente diverso con questo comando (vedi commenti).
Nota 2: con RHEL 7.3, il servizio NetworkManager ha ottenuto due nuove direttive nel suo file di unità: ProtectSystem=true e ProtectHome=read-only. Queste direttive vietano alcune modifiche apportate al sistema (/usr, /boot, /root, /run /user) e / home directory, principalmente la creazione di collegamenti simbolici (vedere i dettagli qui). Per la maggior parte delle operazioni, questo non dovrebbe cambiare nulla, ma è meglio saperlo.


Estensione di un Ext4 logical Volume

Per creare un file system ext4 sul volume logico creato in precedenza, digitare:

# mkfs.ext4 /dev/vg/lv_vol
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Facoltativamente, installa il nuovo file system su /mnt:

# mount /dev/vg/lv_vol /mnt
Per allocare tutto lo spazio disponibile nel gruppo di volumi in un volume logico in formato Ext4 non crittografato (qui /dev/vg/lv_vol), digitare:
# lvextend -l +100%FREE -r /dev/vg/lv_vol
Nota: il file system viene automaticamente esteso (-r) senza bisogno di smontarlo.
Per estendere la dimensione di un volume logico in formato Ext4 non criptato (qui /dev/vg/lv_vol) di 50MB, digitare:
# lvextend --size +50M -r /dev/vg/lv_vol
  Rounding size to boundary between physical extents: 52.00 MiB
  Extending logical volume lv_vol to 152.00 MiB
  Logical volume lv_vol successfully resized
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg-lv_vol is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/vg-lv_vol is now 155648 blocks long.
Sebbene non vi sia alcun motivo per farlo, puoi comunque farlo in due passaggi:
# lvextend --size +50M /dev/vg/lv_vol
  Rounding size to boundary between physical extents: 52.00 MiB
  Extending logical volume lv_vol to 152.00 MiB
  Logical volume lv_vol successfully resized
# resize2fs /dev/vg/lv_vol
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg/lv_vol is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/vg/lv_vol is now 155648 blocks long.

Riduzione di un Ext4 logical volume

Al contrario, per ridurre la dimensione di un volume logico (qui di 50MB), devi seguire questi passaggi:
Smontare il file system (qui /dev/vg/lv_vol):
# umount /dev/vg/lv_vol
Ridurre la dimensione del volume logico (qui /dev/vg/lv_vol) e il file system associato allo stesso tempo (-r):
# lvreduce --size -50M -r /dev/vg/lv_vol
  Rounding size to boundary between physical extents: 48.00 MiB
fsck from util-linux 2.23.2
/dev/mapper/vg-lv_vol: 11/37544 files (9.1% non-contiguous), 10390/155648 blocks
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/vg-lv_vol to 106496 (1k) blocks.
The filesystem on /dev/mapper/vg-lv_vol is now 106496 blocks long.

  Reducing logical volume lv_vol to 104.00 MiB
  Logical volume lv_vol successfully resized
Montare il file system (qui /dev/vg/lv_vol):
# mount /dev/vg/lv_vol /mnt

Estensione di un XFS logical volume

Per creare un file system XFS sul volume logico precedentemente creato denominato lv_vol (vedere prerequisiti), digitare:
# mkfs.xfs /dev/vg/lv_vol
meta-data=/dev/vg/lv_vol isize=256 agcount=4, agsize=6400 blks
         = sectsz=512 attr=2, projid32bit=1
         = crc=0
data     = bsize=4096 blocks=25600, imaxpct=25
         = sunit=0 swidth=0 blks
naming   =version 2 bsize=4096 ascii-ci=0 ftype=0
log      =internal log bsize=4096 blocks=853, version=2
         = sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

Montare il nuovo file system su /mnt:

# mount /dev/vg/lv_vol /mnt

Per estendere la dimensione di un volume logico in formato XFS non criptato (qui /dev/vg/lv_vol) di 50 MB, digitare:

# lvextend --size +50M -r /dev/vg/lv_vol
  Rounding size to boundary between physical extents: 52.00 MiB
  Extending logical volume lv_vol to 152.00 MiB
  Logical volume lv_vol successfully resized
meta-data=/dev/mapper/vg-lv_vol isize=256    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 25600 to 38912

Nota 1: il file system viene automaticamente esteso (-r) senza bisogno di smontarlo.
Nota 2: non è possibile ridurre un file system XFS anche se lo si smonta. Devi eseguire il backup (con tar o un altro strumento), rilasciarlo e ricrearlo.

Sebbene non vi sia alcun motivo per farlo, puoi comunque farlo in due passaggi:

# lvextend --size +50M /dev/vg/lv_vol
  Rounding size to boundary between physical extents: 52.00 MiB
  Extending logical volume lv_vol to 152.00 MiB
  Logical volume lv_vol successfully resized
# xfs_growfs /mnt
meta-data=/dev/mapper/vg-lv_vol isize=256    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 25600 to 38912

Nota: il comando xfs_growfs accetta solo un file system XFS montato come parametro.

Creare, eliminare e modificare i gruppi locali e le appartenenze di gruppo

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

Per creare un gruppo senza alcun utente associato (qui grp), digitare:

# groupadd grp

Per creare un gruppo senza alcun utente associato (qui grp) con un determinato GID, digitare:

# groupadd -g GID grp

Per cambiare il nome di un gruppo (qui da grp a gr), digita:

# groupmod -n gr grp

Per rimuovere un gruppo senza alcun utente associato (qui grp), digitare:

# groupdel grp

Per cambiare il GID di un gruppo (qui grp), digita:

# groupmod -g GID grp

Per aggiungere un gruppo secondario (qui grp) a un account utente (qui user), digitare:

# usermod -aG grp user

o:

# gpasswd -a user grp

Per rimuovere un utente (qui utente) da un gruppo secondario (qui grp), digitare:

# gpasswd -d user grp

Nota: questo non funziona sul gruppo principale.
Per ottenere l’elenco dei membri di un determinato gruppo (qui mail), digitare:

# groupmems -g mail -l
postfix