Ceci est une ancienne révision du document !
Table des matières
Version : 2020.01
Dernière mise-à-jour : 2020/01/30 03:36
SO208 - Gestion des Disques et le Swap
Disques
La correspondance entre les entrées du répertoire /dev et /devices est gérée par la commande devfsadm qui est lancée au démarrage du système. Cette même commande lance le démon devfsadmd. Ce démon sert aux re-configurations dynamiques des périphériques :
# ls -l /dev/dsk/c0t0d0s0 lrwxrwxrwx 1 root root 47 Nov 29 13:41 /dev/dsk/c0t0d0s0 -> ../../devices/pci@0,0/pci8086,2829@d/disk@0,0:a # ls -l /devices/pci@0,0/pci8086,2829@d/disk@0,0:a* brw-r----- 1 root sys 33, 0 Nov 30 06:44 /devices/pci@0,0/pci8086,2829@d/disk@0,0:a crw-r----- 1 root sys 33, 0 Nov 30 07:20 /devices/pci@0,0/pci8086,2829@d/disk@0,0:a,raw
Le format de chaque ligne dans /devices est pilote@adresse:arguments.
Mode bloc
L'accès aux périphériques en mode bloc se fait via des buffers vers le noyau. Un périphérique en mode bloc peut recevoir un filesystem.
Mode raw bloc
L'accès aux périphériques en mode raw bloc ne se fait pas via des buffers vers le noyau. Un périphérique en mode raw bloc ne peut pas recevoir un filesystem.
Disquettes
Dans un système Solaris, il existe plusieurs liens dynamiques pour le même périphérique. Par exemple le lecteur de disquette est référencé par 4 liens différents :
/dev/fd0 > /dev/fd0c > /dev/diskette0 > /dev/diskette
L'accès à une disquette en mode raw bloc se fait en utilisant le fichier /dev/rdiskette.
Autres Périphériques
Les noms des fichiers spéciaux pour les autres périphériques sont :
Fichier | Description |
---|---|
/dev/rmt/* | Bandes avec rembobinage |
/dev/rmt/*n | Bandes sans rembobinage |
/dev/cua/* | Modems |
/dev/term/* | Terminaux |
/dev/pts/* | Pseudo-terminaux |
/dev/mem | Mémoire physique |
/dev/kmem | Mémoire virtuelle du noyau |
/dev/mouse | Souris |
/dev/swap | Disque swap primaire |
/dev/null | La poubelle de Solaris |
/dev/zero | Périphérique qui renvoie en lecture un octet de 0 |
/dev/dump | Périphérique vers lequel sont envoyés les dumps |
Détection automatique
Afin de procéder à une re-détection automatique des périphériques dans le système, il convient de créer le fichier /reconfigure et de redémarrer le système. Le fichier est supprimé en même temps que la reconfiguration.
Partitionnement
Lors de son installation un disque Solaris est divisé en partitions appelés :
- sections
- tranches
- slices
Le terme partition est générique. En effet lors de l'installation sur un PC, Solaris installe ses partitions dans une seule partition DOS.
En règle générale, il existe aussi une partition destinée à recevoir le swap.
Visualiser les partitions avec format
Pour visualiser les partitions, il convient d'utiliser la commande format :
# format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c0t0d0 <ATA -VBOX HARDDISK -1.0 cyl 2085 alt 2 hd 255 sec 63> /pci@0,0/pci8086,2829@d/disk@0,0 Specify disk (enter its number):
Il convient donc de choisir le disque voulu, dans notre cas le disque 0 :
Specify disk (enter its number): 0 selecting c0t0d0 [disk formatted] Warning: Current Disk has mounted partitions. /dev/dsk/c0t0d0s0 is currently mounted on /. Please see umount(1M). /dev/dsk/c0t0d0s1 is currently used by swap. Please see swap(1M). /dev/dsk/c0t0d0s7 is normally mounted on /export/home according to /etc/vfstab. Please remove this entry to use this device. FORMAT MENU: disk - select a disk type - select (define) a disk type partition - select (define) a partition table current - describe the current disk format - format and analyze the disk fdisk - run the fdisk program repair - repair a defective sector label - write label to the disk analyze - surface analysis defect - defect list management backup - search for backup labels verify - read and display labels save - save new disk/partition definitions inquiry - show vendor, product and revision volname - set 8-character volume name !<cmd> - execute <cmd>, then return quit format>
Le prompt de deuxième niveau attend un choix parmi ceux proposés. Saisissez donc le choix partition pour visualiser les partitions :
format> partition PARTITION MENU: 0 - change `0' partition 1 - change `1' partition 2 - change `2' partition 3 - change `3' partition 4 - change `4' partition 5 - change `5' partition 6 - change `6' partition 7 - change `7' partition select - select a predefined table modify - modify a predefined partition table name - name the current table print - display the current table label - write partition map and label to the disk !<cmd> - execute <cmd>, then return quit partition>
Et enfin le choix print :
partition> print Current partition table (original): Total disk cylinders available: 2085 + 2 (reserved cylinders) Part Tag Flag Cylinders Size Blocks 0 root wm 68 - 1141 8.23GB (1074/0/0) 17253810 1 swap wu 1 - 67 525.56MB (67/0/0) 1076355 2 backup wm 0 - 2084 15.97GB (2085/0/0) 33495525 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 home wm 1142 - 2083 7.22GB (942/0/0) 15133230 8 boot wu 0 - 0 7.84MB (1/0/0) 16065 9 unassigned wm 0 0 (0/0/0) 0 partition>
Par convention la partition virtuelle numéro deux correspond au disque complet vu par Solaris.
L'utilisation des partitions peut être observée en comparant la sortie de format avec celle de la commande mount :
# mount / on /dev/dsk/c0t0d0s0 read/write/setuid/devices/rstchown/intr/largefiles/logging/xattr/onerror=panic/dev=840000 on Sat Nov 30 06:44:41 2019 /devices on /devices read/write/setuid/devices/rstchown/dev=4b80000 on Sat Nov 30 06:44:37 2019 /system/contract on ctfs read/write/setuid/devices/rstchown/dev=4c00001 on Sat Nov 30 06:44:37 2019 /proc on proc read/write/setuid/devices/rstchown/dev=4bc0000 on Sat Nov 30 06:44:37 2019 /etc/mnttab on mnttab read/write/setuid/devices/rstchown/dev=4c40001 on Sat Nov 30 06:44:37 2019 /etc/svc/volatile on swap read/write/setuid/devices/rstchown/xattr/dev=4c80001 on Sat Nov 30 06:44:37 2019 /system/object on objfs read/write/setuid/devices/rstchown/dev=4cc0001 on Sat Nov 30 06:44:37 2019 /etc/dfs/sharetab on sharefs read/write/setuid/devices/rstchown/dev=4d00001 on Sat Nov 30 06:44:37 2019 /lib/libc.so.1 on /usr/lib/libc/libc_hwcap1.so.1 read/write/setuid/devices/rstchown/dev=840000 on Sat Nov 30 06:44:40 2019 /dev/fd on fd read/write/setuid/devices/rstchown/dev=4e80001 on Sat Nov 30 06:44:41 2019 /tmp on swap read/write/setuid/devices/rstchown/xattr/dev=4c80002 on Sat Nov 30 06:44:42 2019 /var/run on swap read/write/setuid/devices/rstchown/xattr/dev=4c80003 on Sat Nov 30 06:44:42 2019
Visualiser les partitions avec prtvtoc
Solaris implémente aussi la commande prtvtoc en spécifiant le nom du disque complet en mode raw bloc :
# prtvtoc /dev/rdsk/c0t0d0s2 * /dev/rdsk/c0t0d0s2 partition map * * Dimensions: * 512 bytes/sector * 63 sectors/track * 255 tracks/cylinder * 16065 sectors/cylinder * 2087 cylinders * 2085 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * * Unallocated space: * First Sector Last * Sector Count Sector * 33479460 16065 33495524 * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 0 2 00 1092420 17253810 18346229 / 1 3 01 16065 1076355 1092419 2 5 00 0 33495525 33495524 7 8 00 18346230 15133230 33479459 /export/home 8 1 01 0 16065 16064
Les chiffres de la colonne Sector Count sont exprimés en blocs de 512 octets.
La commande format
Revenez maintenant à votre commande format :
partition> quit FORMAT MENU: disk - select a disk type - select (define) a disk type partition - select (define) a partition table current - describe the current disk format - format and analyze the disk fdisk - run the fdisk program repair - repair a defective sector label - write label to the disk analyze - surface analysis defect - defect list management backup - search for backup labels verify - read and display labels save - save new disk/partition definitions inquiry - show vendor, product and revision volname - set 8-character volume name !<cmd> - execute <cmd>, then return quit format>
Dans cette liste on peut constater certains choix. Parmi les plus important on trouve :
current
Indique des informations sur le disque courant.
format> current Current Disk = c0t0d0 <ATA -VBOX HARDDISK -1.0 cyl 2085 alt 2 hd 255 sec 63> /pci@0,0/pci8086,2829@d/disk@0,0 format>
format
Effectue un formatage bas niveau mais uniquement pour certains types.
format> format Cannot format disk while it has mounted partitions. format>
fdisk
Ce choix n'est présent que sur des PC. Il permet de créer une partition pour Solaris :
Warning: Current Disk has mounted partitions. Total disk size is 2088 cylinders Cylinder size is 16065 (512 byte) blocks Cylinders Partition Status Type Start End Length % ========= ====== ============ ===== === ====== === 1 Active Solaris2 1 2087 2087 100 SELECT ONE OF THE FOLLOWING: 1. Create a partition 2. Specify the active partition 3. Delete a partition 4. Change between Solaris and Solaris2 Partition IDs 5. Exit (update disk configuration and exit) 6. Cancel (exit without updating disk configuration) Enter Selection: 6
repair
Essaie de réparer un bloc défecteux.
format> repair Enter absolute block number of defect: ^C format>
analyze
Ce choix permet des test d'intégrité sur le disque :
format> analyze ANALYZE MENU: read - read only test (doesn't harm SunOS) refresh - read then write (doesn't harm data) test - pattern testing (doesn't harm data) write - write then read (corrupts data) compare - write, read, compare (corrupts data) purge - write, read, write (corrupts data) verify - write entire disk, then verify (corrupts data) print - display data buffer setup - set analysis parameters config - show analysis parameters !<cmd> - execute <cmd> , then return quit analyze> quit
verify
Affiche des informations sur le disque courant y compris la table des partitions.
format> verify Warning: Primary label on disk appears to be different from current label. Warning: Check the current partitioning and 'label' the disk or use the 'backup' command. Primary label contents: Volume name = < > ascii name = <DEFAULT cyl 2085 alt 2 hd 255 sec 63> pcyl = 2087 ncyl = 2085 acyl = 2 bcyl = 0 nhead = 255 nsect = 63 Part Tag Flag Cylinders Size Blocks 0 root wm 68 - 1141 8.23GB (1074/0/0) 17253810 1 swap wu 1 - 67 525.56MB (67/0/0) 1076355 2 backup wm 0 - 2084 15.97GB (2085/0/0) 33495525 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 home wm 1142 - 2083 7.22GB (942/0/0) 15133230 8 boot wu 0 - 0 7.84MB (1/0/0) 16065 9 unassigned wm 0 0 (0/0/0) 0 format>
volname
Ce choix permet de stipuler un nom de volume de 8 caractères :
format> volname Enter 8-character volume name (remember quotes)[""]:"mydisk" Ready to label disk, continue? y format>
Pour vérifier la prise en compte, choisissez de nouveau le choix verify :
format> verify Warning: Primary label on disk appears to be different from current label. Warning: Check the current partitioning and 'label' the disk or use the 'backup' command. Primary label contents: Volume name = < mydisk> ascii name = <ATA -VBOX HARDDISK -1.0 cyl 2085 alt 2 hd 255 sec 63> pcyl = 2087 ncyl = 2085 acyl = 2 bcyl = 0 nhead = 255 nsect = 63 Part Tag Flag Cylinders Size Blocks 0 root wm 68 - 1141 8.23GB (1074/0/0) 17253810 1 swap wu 1 - 67 525.56MB (67/0/0) 1076355 2 backup wm 0 - 2084 15.97GB (2085/0/0) 33495525 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 home wm 1142 - 2083 7.22GB (942/0/0) 15133230 8 boot wu 0 - 0 7.84MB (1/0/0) 16065 9 unassigned wm 0 0 (0/0/0) 0 format>
A tout moment il est possible d'exécuter une commande système sans quitter le programme format en utilisant le caractère ! :
format> !pwd /tmp/inode [Hit Return to continue] FORMAT MENU: disk - select a disk type - select (define) a disk type partition - select (define) a partition table current - describe the current disk format - format and analyze the disk fdisk - run the fdisk program repair - repair a defective sector label - write label to the disk analyze - surface analysis defect - defect list management backup - search for backup labels verify - read and display labels save - save new disk/partition definitions inquiry - show vendor, product and revision volname - set 8-character volume name !<cmd> - execute <cmd>, then return quit format>
Filesystems Utilisés par Solaris
Filesystems Disques
UFS
Unix File System est le filesystem par défaut de Solaris 10.
ZFS
Solaris 10 comprend le système de fichiers Solaris ZFS, nouveau système de fichiers 128 bits. Solaris ZFS offre une administration simple, une sémantique transactionnelle, une intégrité complète des données et une capacité d'évolution extraordinaire. Solaris ZFS ne constitue pas l'amélioration d'une technologie existante. Il s'agit d'une approche totalement nouvelle de gestion de données.
HSFS
High Sierra File System est le filesystem utilisé pour le standard ISO 9660, c'est-à-dire pour les CD. Solaris support aussi les Rock Ridge Extensions ce qui implique la disponibilité de toutes les fonctions du filesystem UFS sauf celles de l'écriture et les liens physiques.
PCFS
PC File System est le filesystem permettant accès en lecture et écriture à des disquettes DOS.
UDF
Universal Disk Filesystem est le filesystem des DVD.
Filesystems Virtuels
Les filesystems virtuels sont pour la plupart des représentations en mémoire qui n'occupent aucune espace disque. En règle générale les filesystems virtuels ne nécessitent aucune intervention de l'administrateur.
CacheFS
Cache File System est utilisé pour amélioré les performances d'un filesystem NFS.
TMPFS
Temporary File System est un filesystem en mémoire. Il est donc très rapide. Ceci est le filesystem par défaut de /tmp ainsi que le swap.
LOFS
Loopback File System de dupliquer un filesystem comme s'il s'agissait d'une image dans une glace.
PROCFS
Process File System est un filesystem en mémoire. Il est donc très rapide. Ceci est le filesystem par défaut de /proc.
CTFS
ConTract File System est un filesystem spécialement conçu pour des relations entre des processus et les ressources système. Cecie est le filesystem par défaut du nouveau service SMF de Solaris 10 (Service Management Facility).
MNTFS
Ce filesystem donne un accès en lecture seule à la table des filesystems.
OBJFS
OBJect File System. Ce filesystem décrit l'état des modules du noyau. Il sert à déboguer le noyau sans y avoir accès.
SPECFS
SPECial File System. Ce filesystem fournit l'accès aux fichiers spéciaux, c'est-à-dire le répertoire /devices.
Le Swap
Solaris doit disposer d'un espace de pagination appelé le swap. Solaris utilise un type de filesystem virtuel pour le répertoire /tmp, à savoir le TMPFS. Le swap est utilisé par ce type de filesystem.
Lors de la procédure d'installation, Solaris met en place un swap de 512 Mo. Par contre la taille conseillée du swap varie avec la mémoire physique de la machine :
Mémoire Physique | Taille du swap |
---|---|
4Go | 1Go |
8Go | 2Go |
16Go et + | 4Go |
Pour visualiser l'utilisation de la mémoire virtuelle,il convient d'utiliser la commande swap avec l'option l. Saisissez donc la commande suivante :
format> quit # swap -l swapfile dev swaplo blocks free /dev/dsk/c0t0d0s1 33,1 8 1076344 1076344
où :
- swapfile est le nom de la zone de swap
- dev est les numéros de majeur et de mineur expliqués dans la leçon Gestion des Paramètres du Matériel et les Ressources de ce cours
- swaplo est le nombre de blocs de 512 octets réservé en début de zone
- blocks est la taille de la zone de swap en blocs de 512 octets
- free est le nombre de blocs de 512 octets libres
Pour visualiser l'utilisation de la totalité de la mémoire,il convient d'utiliser la commande swap avec l'option s. Saisissez donc la commande suivante :
# swap -s total: 179520k bytes allocated + 40056k reserved = 219576k used, 1484504k available
Il est également possible de créer un fichier de swap grâce àla commande mkfile. Saisissez la commande suivante :*
# mkfile -v 256m /swap /swap 268435456 bytes # ls -l /swap -rw------T 1 root root 268435456 Nov 30 10:19 /swap
On active le fichier swap grâce à la commande swap avec l'option -a. Saisissez la commande suivante :*
# swap -a /swap # swap -l swapfile dev swaplo blocks free /dev/dsk/c0t0d0s1 33,1 8 1076344 1076344 /swap - 8 524280 524280
Pour activer le fichier de swap lors du démarrage de la machine,il convient d'inclure la ligne suivante dans le fichier /etc/vfstab :
/swap - - swap - no -
C'est le script /sbin/swapadd qui se charge d'activer les zones et les fichiers de swap au démarrage.
Pour supprimer votre fichier de swap, il convient d'utiliser la commande swap avec l'option -d :
# swap -d /swap # swap -l swapfile dev swaplo blocks free /dev/dsk/c0t0d0s1 33,1 8 1076344 1076344
N'oubliez pas de supprimer la ligne suivante du fichier /etc/vfstab :
/swap - - swap - no -
et de supprimer le fichier disque lui-même :
# rm /swap
<html> <center> Copyright © 2020 Hugh Norris. </center> </html>