Friday, October 28, 2016

CentOS - 13 : disques et partitions - lsblk et fdisk


Disques et partitions sous CentOS


CentOS est compatible avec toutes sortes de disques : IDE/SATA, SCSI/SAS et les plus récents SSD.

Ce sont des fichiers dans le répertoire /dev qui constituent le lien entre le système d'exploitation et les différents disques disponibles. Il en va de même pour les autres périphériques d'ailleurs.

Ces disques (et les partitions) sont désignés de la manière suivante :

xxyN

  • xx - indique le type de disque dur : hd pour les IDE et sd pour les SCSCI, SATA et SAS.
  • y - indique le disque dur à partir de "a", soit a, b, c, etc..

Un exemple :

sda

C'est le premier disque dur du système

  • N - représente la partition. C'est un chiffre, à compter de 1.

sda1 - C'est la première partition du premier disque dur.


sda2 - Ce serait la seconde partition.


sdb1 - Ce serait la première partition du second disque dur.


Allons jeter un coup d'oeil dans le répertoire /dev afin de voir les différents types de périphériques disponibles et en particulier les disques durs.

Précisons que nous nous servons d'une machine virtuelle avec le matériel suivant pour cet exercice :


Note : il s'agit des propriétés de la machine virtuelle dans VMware Workstation.

 Et voici ce que nous pouvons voir dans le répertoire /dev :



Je ne ferais que quelques remarques...
  • Les objets en bleu sont des dossiers et les objets en jaune de "simples" fichiers. Les fichiers exécutables seraient en vert. Ce sont les fichiers jaune qui nous intéressent.
  • fd0 représente le lecteur de disque "floppy". Je ne m'explique pas sa présence étant donné l'absence d'un tel périphérique dans mon système.
  • Nous avons un seul disque dur - sda - avec deux partitions : sda1 et sda2.
  • sda représente le disque lui-même et contient le MBR (Master Boot Record). Le MBR réside en dehors de toute partition particulière.
  • sr0 représente le lecteur de CD/DVD et cdrom est un lien symbolique vers ce lecteur.

J'ai désigné l'objet "tty1" d'un point rouge parce qu'il m'a intrigué. Je m'aperçois de cette séquence de lettres et de chiffres chaque fois que j'ouvre une session :


De quoi s'agit-il ?

Si j'ai bien compris, il représente la console à laquelle je me suis trouvé lorsque j'ai ouvert la dernière session. Autrefois, il y avait une distinction entre "console" (visible elle aussi d'ailleurs parmi les fichiers contenus dans /dev) et les nombreux fichiers tty*. La console était bien la console et les fichiers tty* représentaient les périphériques en série qu'on pouvait brancher sur le serveur. Aujourd'hui, les fichiers tty* représentent des consoles virtuelles, à compter de tty1.

Si nous voulons cibler un type de périphérique, nous pouvons peaufiner l'affichage avec grep :



Mais comment faire pour obtenir plus d'informations sur les disques en question ? Par exemple, quelle en est la taille ? Et comment faire pour afficher les seuls disques du système au lieu de l'ensemble des périphériques ?


lsblk est une commande susceptible de fournir au moins certaines réponses à ces questions :


Outre fd0 et sr0, nous avons un disque dur (sda) de 20 Go avec une partition de démarrage (sda1) de 500 Mo et une autre partition de 19,5 Go (sda2). Nous avons donc des disques (type = disk), un seul en fait ; des partitions (type = part) et puis quelque chose du type "lvm".

LVM (Logical Volume Manager) permet de rassembler des disques physiques et même des partitions physiques en un "fond commun" à partir duquel on peut tailler de nouvelles "partitions logiques". Suivant l'arborescence dans la capture d'écran ci-dessus, nous constatons que la partition physique sda2 se découpe en deux partitions logiques : centos-root et centos-swap. La première, à 17,5 Go, est la partition principale et la second, à 2 Go, joue le rôle de fichier de pagination (swap file) dans le monde Windows. En fait, Linux peut recourir à un fichier pour la pagination mais l'utilisation d'une partition dédiée est préférée.

Note : je ne traite pas davantage de LVM dans ce billet.


lsblk --fs nous montre le système de fichiers choisi pour les partitions :



xfs est le système de fichiers de CentOS7 / RHEL7 par défaut. ext3 et ext4 figurent parmi les autres options.

***

Mais comment faire pour créer une partition ou en supprimer une? Nous pouvons choisir entre plusieurs outils : fdisk, gdisk et parted. Je me servirai de fdisk dans ce billet.

Note : fdisk est capable de gérer des partitions d'une taille maximale de 2 To. Il faut recourir à gdisk ou parted pour des partitions plus grandes.

De même que lsblk, fdisk est capable d'afficher la liste des disques installés dans le système :

fdisk -l

Cette commande inclut tous les disques. Pour cibler un disque en particulier, nous saisissons cette commande :

fdisk -l /dev/sda

Note : à supposer que ce soit le disque sda qui nous intéresse.


Pour cette expérience, j'ai ajouté un second disque (virtuel) de 20 Go.




Comme je m'y attendais, fdisk et lsblk présentent ce disque sous le nom de "sdb", par exemple :



Alors, comment fait-on pour créer une nouvelle partition sur le disque /dev/sdb ?

D'abord, nous exécutons fdisk en désignant bien /dev/sdb, soit :

fdisk /dev/sdb

Voilà ce qui s'affiche :


Note : vous pouvez cliquer sur les images pour les agrandir.

Nous choisissons les options suivantes :

  • n - pour nouvelle partition
  • p - pour partition primaire
  • 1 - pour la première partition (ou rien, car 1 est la valeur par défaut)

Pour une partition de 1 Go, nous appuyons sur Entrée/Retour pour le premier secteur et +1G pour le dernier secteur.

Et surtout... nous tapons bien "w" ("write") à la fin pour que le changement prenne effet : 



Nous pouvons confirmer la création de la nouvelle partition avec lsblk :



Je répète les mêmes étapes pour la création d'une seconde partition de 1 Go sur /dev/sdb :



Encore une fois, la nouvelle partition est visible dans la sortie de la commande lsblk :



Nous pouvons voir les choses d'une autre perspective avec fdisk qui montre en particulier quelle partition est la partition d'amorçage :



Mais comment supprimer une partition ?

Dans l'exemple ci-dessous, je vais supprimer la seconde partition du second disque dur.

Nous ciblons le second disque dur avec la command suivante :

fdisk /dev/sdb

Et puis...

  • d - pour supprimer ("delete")
  • 2 - pour choisir la seconde partition


Nous pouvons constater (toujours dans la capture d'écran ci-dessus) l'absence de la partition sdb2 que nous venons de supprimer.

Mais surtout, il faut taper "w" pour que la suppression soit effective.

Comme nous pouvons nous y attendre, l'outil lsblk montre la même chose :



***

Et voilà une première incursion dans le monde des disque et partitions sous Linux. J'ai l'intention d'en examiner d'autres aspects ainsi que les systèmes de fichiers dans les billets de blogues à venir.

Monday, October 17, 2016

CentOS - 12 : paramètres régionaux et configuration de clavier


Dans un billet de blogue précédent, j'ai présenté un moyen de ré-initialiser un mot de passe root oublié. En fait, je n'avais rien oublié... sinon la configuration de clavier choisie au moment de l'installation. De ce fait, j'avais bien du mal à saisir le bon mot de passe. Déjà, il y a l'opposition QWERTY - AZERTY et il peut y avoir des différences entre le clavier français de France, celui de la Belgique et celui du Canada. Si on choisit un mot de passe complexe à l'installation, avec plusieurs caractères spéciaux, et puis, ne se souvient plus de la configuration du clavier, l'ouverture de session peut constituer un gros défi. En fin de compte, j'ai réussi à trouver les bonnes touches équivalentes et, le mot de passe enfin accepté, je me suis mis à ajuster les paramètres ci-dessous afin d'avoir des connexions plus faciles à l'avenir.

***

D'abord, nous pouvons afficher le statu quo avec la commande suivante :

localectl status



Je compare les paramètres à ceux d'une autre machine virtuelle (oui, ce sont toutes des machines virtuelles) qui fonctionne bien.

Note : je n'ai pas ici de capture d'écran pour ce second jeu de paramètres mais vous les verrez, peu à peu, dans les captures suivantes.

Je vais changer ces paramètres :
  • System Locale
  • VC Keymap
  • X11 Layout
Note: il n'était pas nécessaire de changer le paramètre "X11 Variant".


De retour à la machine qui me fait des soucis, j'affiche les "locales" disponibles. Compte tenu du grand nombre, je restreins la sortie aux seuls paramètres contenant "fr" avec grep :



Je modifie le paramètre "System Locale" avec la commande suivante :

localectl set-locale LANG=locale




Je dresse la liste des paramètres "VC Keymap" disponible avec cette commande :

localectl list-keymaps



grep limite la sortie  aux seuls paramètres contenant "us" (c'est un type de clavier américain que j'utilise en ce moment).


Je modifie le paramètre "VC Keymap" avec la commande suivante :

localectl set-keymap us-intl



Enfin, je modifie le paramètre "X11 Layout" avec la commande suivante :

localectl set-x11-keymap map

ou:

localectl --no-convert set-x11-keymap map


Si je saisis à nouveau la commande "localectl status" (voir la capture d'écran - les dernières lignes), je peux constater les changements effectués, comparé aux valeurs dans la toute première capture d'écran ci-dessus.

Quant à la signification du paramètre --no-convert, veuillez vous rapporter au guide indiqué par le lien en bas de page.  


***

Et voilà comment j'ai réparé l'oubli de l'agencement de clavier que j'avais d'abord choisi lors de l'installation de cette instance de CentOS 7.

Même si je ne les présenterai ici que de façon succincte, je veux au moins mentionner deux commandes qui peuvent être utiles pour connaître deux autres paramètres de base : l'heure et la date.

date

Cette commande simple nous affiche la date et l'heure mais sans préciser le fuseau d'horaire et autres détails. La sortie ressemble à ceci :

sam. sept. 1 12:00:05 CDT 2016


timedatectl

Cette commande (sans autre paramètre) affiche beaucoup plus de données, le fuseau horaire et les dates du changement d'heure, par exemple.

Pour plus de détails, sur les paramètres régionaux comme sur l'heure et la date, je vous renvoie à cette section du guide de l'administrateur Red Hat :

CONFIGURATION DE BASE DU SYSTÈME





Sunday, October 2, 2016

CentOS - 11 : les niveaux de fonctionnement (cibles)

Après avoir rencontré le concept de "niveaux de fonctionnement" au cours de mes recherches pour le billet précédent, je voudrais reprendre cette notion ici et l'étudier plus en détail.

En anglais, on dit  "run level", ce qui donne, dans la traduction française, soit "niveau de fonctionnement", soit "niveau d'exécution". J'ai vu aussi "niveau fonctionnel".

Il s'agit de modes d'opération dans lesquels plus ou moins de fonctions sont disponibles.

Le niveau de fonctionnement 1 se caractérise par des fonctions limitées : seul un utilisateur (root) peut ouvrir une session, d'où une autre désignation pour ce mode, le mode "mono-utilisateur".

Le niveau de fonctionnement 3 se caractérise par une interface en ligne de commande et une connectivité réseau activée.

Voici une liste de tous les niveaux avec plus de détails :

Niveau 0
Remarque - le serveur passe en ce mode lors de l'arrêt.

Niveau 1
Mode - mono-utilisateur (single user mode)
Remarques :
  • Seul "root" peut ouvrir une session.
  • Seul un nombre limité de services démarrent
  • Les interfaces réseau ne s'activent pas.

Niveau 2
Mode - multi-utilisateur mais sans accès au réseau.

Niveau 3
Mode - multi-utilisateur avec accès au réseau
Remarque - c'est le niveau par défaut pour CentOS (et RHEL).

Niveau 4
Remarque - non défini (il ne s'utilise pas).

Niveau 5
Mode - multi-utilisateur avec accès au réseau.
Remarque - C'est le niveau 3 plus une interface graphique.

Niveau 6
Remarque :  c'est pour le redémarrage


Selon le niveau, le système  accepte seulement une ouverture de session avec le compte "root", soit le mode "mono-utilisateur", ou avec n'importe lequel des comptes existants, soit le mode "multi-utilisateur".

Les niveaux de fonctionnement 1 à 5 ne se succèdent pas les uns après les autres. Si le système démarre au niveau 1, il reste au niveau 1 jusqu'à ce que le système  s'arrête ou redémarre, ce qui correspond aux niveaux 0 et 6 respectivement. Si nous voulons faire démarrer au niveau 5, il ne s'agit pas d'attendre que le système passe d'un niveau à un autre, jusqu'à 5. Ce n'est pas ainsi que cela se passe !

Par défaut, CentOS démarre au niveau 3. Si on installe une interface graphique (Gnome, KDE, Xfce, etc.), il peut démarrer au niveau 5.

Si nous voulons faire démarrer à un autre niveau, nous devons modifier certaines lignes dans des fichiers associés avec GRUB ou même installer une interface graphique. Nous avons vu un exemple du premier cas dans le billet précédent où nous avons appuyé sur la touche "e" au moment où GRUB affiche les versions de Linux disponibles, et puis ajouté des paramètres comme "systemd.unit=rescue.target".

Il faut préciser deux choses :
  1. Les niveaux de fonctionnement ne sont pas identiques chez toutes les distributions Linux. La plupart des distributions se conforment à la norme "Linux Standard Base" (un ensemble de normes, en fait), ce qui n'est pas le cas de Slackware, par exemple. Les niveaux diffèrent aussi entre des versions d'Unix comme AIX (IBM), HP-UX (HP) et Solaris (Oracle).
  2. Un "niveau de fonctionnement" (ou d'exécution, selon les traductions) est un concept qui relève du "System V" (cinq), une des premières formes d'Unix et qui subsiste encore chez AIX, HP-UX et Solaris. Dans le monde de Linux, "systemd" commence à évincer "System V". Il s'agit d'un système d'initialisation (init) qui monte l'espace utilisateur (user space) et gère les processus qui ont lieu ensuite. systemd remplace le concept de "run level" par celui de "target" (cible en français). Nous avons vu que le paramètre "systemd.unit=rescue.target" lance le système en mode de secours et utilise le terme "target" plutôt que "run level". Cela dit, la commande "runlevel" fonctionne toujours.

Autrefois, après que GRUB a chargé le noyau (core) lors du démarrage, le programme /sbin/init lisait le fichier /etc/inittab pour connaître le comportement à adopter pour chaque niveau de fonctionnement, et le niveau 3 en particulier (le niveau par défaut).

Ces éléments se trouvent donc aux emplacements suivants :

/sbin/



/etc/




Mais si nous ouvrons le fichier inttab, nous voyons la notice qui nous rappelle que systemd s'occupe désormais de l'initialisation :