Ceci est une ancienne révision du document !


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 © 2019 Hugh Norris. </center> </html>

Menu