Ajout de swap sous Solaris

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Le but de cette documentation est de décrire de manière rapide comment créer de la swap sous Solaris. Existe d'autres documentations comme celle du Management des disques sous Solaris qui permettent de décrire en profondeur le fonctionnement des disques sous Solaris, mais ce n'est pas le but ici.

Nous allons voir qu'il y a 3 méthodes pour ajouter de la swap :

  • Sur de l'UFS
  • Sur du ZFS
  • Avec un fichier

2 Swap sur UFS

Si vous souhaitez ajouter de la swap sur un disque UFS, il va falloir créer une partition. Pour le moment, affichons ce que nous avons :

Command swap
 > swap -l
swapfile             dev  swaplo blocks   free
/dev/dsk/c1t0d0s1   30,65      8 8401984 8401984

Ensuite nous allons lancer la commande format puis sélectionner le disque sur lequel nous voulons travailler :

Command format
 > Searching for disks...done
 
 
AVAILABLE DISK SELECTIONS:
       0. c1t0d0 <DEFAULT cyl 53499 alt 2 hd 255 sec 63>          /pci@0,0/pci10de,375@f/pci108e,286@0/disk@0,0
       1. c2t201500A0B856312Cd31 <DEFAULT cyl 17 alt 2 hd 64 sec 32>
          /pci@7c,0/pci10de,377@f/pci1077,143@0/fp@0,0/disk@w201500a0b856312c,1f
       2. c2t202400A0B856312Cd31 <DEFAULT cyl 17 alt 2 hd 64 sec 32>
          /pci@7c,0/pci10de,377@f/pci1077,143@0/fp@0,0/disk@w202400a0b856312c,1f
       3. c3t201400A0B856312Cd31 <DEFAULT cyl 17 alt 2 hd 64 sec 32>
...
Specify disk (enter its number): 0

On choisis ici le disque 0. Puis nous allons lui rentrer dans l'outil pour gérer les partitions :

Command format
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

Ensuite, nous allons afficher le contenu pour voir les partitions actuelles :

Command format
partition> pCurrent partition table (original):
Total disk cylinders available: 53499 + 2 (reserved cylinders)
 
Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm     524 -  3134       20.00GB    (2611/0/0)   41945715
  1       swap    wu       1 -   523        4.01GB    (523/0/0)     8401995
  2     backup    wm       0 - 53498      409.82GB    (53499/0/0) 859461435
  3        var    wm    3135 -  4440       10.00GB    (1306/0/0)   20980890
  4 unassigned    wm    4441 -  4571        1.00GB    (131/0/0)     2104515
  5 unassigned    wm       0                0         (0/0/0)             0  6 unassigned    wm       0                0         (0/0/0)             0
  7       home    wm    4572 -  7182       20.00GB    (2611/0/0)   41945715
  8       boot    wu       0 -     0        7.84MB    (1/0/0)         16065
  9 unassigned    wm       0                0         (0/0/0)             0

On peut voir au niveaux des cylindres que le dernier s'arrête à 7182 sur 53498. Nous continuerons donc après ce cylindre. Prenons un slice au hasard (le 5 par exemple) et créons une nouvelle partition de swap là dessus :

Command format
partition> 5Part      Tag    Flag     Cylinders         Size            Blocks
  5 unassigned    wm       0                0         (0/0/0)             0
Enter partition id tag[unassigned]: swapEnter partition permission flags[wm]: wuEnter new starting cyl[1]: 7183Enter partition size[0b, 0c, 7183e, 0.00mb, 0.00gb]: 70gb

Ici j'ai créer une partition à partir du dernier cylindre utilisé (7182) + 1 (7183), une partition swap avec le flag correspondant (wu), d'une taille de 70Gb.
J'affiche ensuite la nouvelle table des partitions :

Command format
partition> pCurrent partition table (unnamed):
Total disk cylinders available: 53499 + 2 (reserved cylinders)
 
Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm     524 -  3134       20.00GB    (2611/0/0)   41945715
  1       swap    wu       1 -   523        4.01GB    (523/0/0)     8401995
  2     backup    wm       0 - 53498      409.82GB    (53499/0/0) 859461435
  3        var    wm    3135 -  4440       10.00GB    (1306/0/0)   20980890
  4 unassigned    wm    4441 -  4571        1.00GB    (131/0/0)     2104515
  5       swap    wu    7183 - 16320       70.00GB    (9138/0/0)  146801970  6 unassigned    wm       0                0         (0/0/0)             0
  7       home    wm    4572 -  7182       20.00GB    (2611/0/0)   41945715
  8       boot    wu       0 -     0        7.84MB    (1/0/0)         16065
  9 unassigned    wm       0                0         (0/0/0)             0

Et là je peux voir ma nouvelle partition de swap. Nous allons écrire ces nouvelles données sur le disque :

Command format
partition> labelReady to label disk, continue? y

Nous allons tout quitter et annoncer cette nouvelle partition comme étant une partition de swap :

Command format
swap -a /dev/dsk/c1t0d0s5

Maintenant, lorsque j'affiche la liste des partitions actives, je peux voir la nouvelle :

Command swap
 > swap -l
swapfile             dev  swaplo blocks   free
/dev/dsk/c1t0d0s1   30,65      8 8401984 8401984
/dev/dsk/c1t0d0s5   30,69      8 146801960 146801960

Il ne me reste plus qu'à mettre une ligne dans le vfstab pour la persistance :

Configuration File /etc/vfstab
#device device  mount   FS  fsck    mount   mount
#to mount   to  fsck        point       type    pass    at boot options
#           
fd  -   /dev/fd fd  -   no  -
/proc   -   /proc   proc    -   no  -
/dev/dsk/c1t0d0s1   -   -   swap    -   no  -
/dev/dsk/c1t0d0s0   /dev/rdsk/c1t0d0s0  /   ufs 1   no  -
/dev/dsk/c1t0d0s3   /dev/rdsk/c1t0d0s3  /var    ufs 1   no  -
/dev/dsk/c1t0d0s5   -   -   swap    -   no  -/dev/dsk/c1t0d0s7   /dev/rdsk/c1t0d0s7  /export/home    ufs 2   yes -
#/dev/dsk/c1t0d0s4  /dev/rdsk/c1t0d0s4  /globaldevices  ufs 2   yes -
/devices    -   /devices    devfs   -   no  -
sharefs -   /etc/dfs/sharetab   sharefs -   no  -
ctfs    -   /system/contract    ctfs    -   no  -
objfs   -   /system/object  objfs   -   no  -
swap    -   /tmp    tmpfs   -   yes -
/dev/did/dsk/d4s4 /dev/did/rdsk/d4s4 /global/.devices/node@2 ufs 2 no global

3 Swap sur ZFS

Il suffit d'agrandir la taille du ZFS associé a la swap.

3.1 Ajouter une swap

Verifions le nombre de swap attribuées :

Command swap
> swap -l
swapfile             dev  swaplo blocks   free
/dev/dsk/c1t0d0s1   30,65      8 8401984 8401984

Maintenant on ajoute un ZFS :

Command swap
zfs create -V 30G rpool/swap1

Ici nous venons de créer la swap a 30G. Puis nous déclarons cette nouvelle partition comme swap :

Command swap
swap -a /dev/zvol/dsk/rpool/swap1

Maintenant, lorsque j'affiche la liste des partitions actives, je peux voir la nouvelle :

Command swap
 > swap -l
swapfile             dev  swaplo blocks   free
/dev/dsk/c1t0d0s1   30,65      8 8401984 8401984
/dev/dsk/c1t0d0s5   30,69      8 146801960 146801960

Si vous avez ce genre de message :

/dev/zvol/dsk/rpool/swap is in use for live upgrade -. Please see ludelete(1M).

Il faudra utiliser la commande suivante pour l'activer :

Command swapadd
/sbin/swapadd

3.2 Agrandir une swap

Lorsque la machine tourne et que l'espace de swap est utilisé, on peut agrandir la taille de la swap pour que le système puisse s'en servir. Cela nécessitera une désactivation puis réactivation pour que le nouvel espace soit prise en compte. Pour cela nous allons agrandir le zfs :

Command zfs
zfs set volsize=72G rpool/swap
zfs set refreservation=72G rpool/swap

Nous allons maintenant désactiver la swap :

Command zfs
swap -d /dev/zvol/dsk/rpool/swap

Il faut maintenant supprimer ou commenter l'entrée dans /etc/vfstab qui correspond à la swap, car elle sera automatiquement créer dans l'étape suivante :

Configuration File /etc/vfstab
#/dev/zvol/dsk/rpool/swap    -   -   swap    -   no  -

puis la réactiver pour que la nouvelle taille soit prise en compte :

Command swap
 swap -a /dev/zvol/dsk/rpool/swap

On peut vérifier la taille du swap :

Configuration File swap
> swap -l
swapfile             dev  swaplo blocs   libres
/dev/zvol/dsk/rpool/swap 181,1       8 150994936 150994936

4 Fichier de swap

Pour un fichier de swap, c'est ce qu'il y a de plus rapide à mettre ne oeuvre mais également ce qu'il y a de plus sale. Trouvez un endroit sur votre disque ou vous avez de la place puis créez un fichier vide de la taille souhaitée :

Command mkfile
mkfile 70g /swap1

Puis nous activons cette nouvelle swap :

Command mkfile
swap -a /swap1

Maintenant, lorsque j'affiche la liste des partitions actives, je peux voir la nouvelle :

Command swap
 > swap -l
swapfile             dev  swaplo blocks   free
/dev/dsk/c1t0d0s1   30,65      8 8401984 8401984
/dev/dsk/c1t0d0s5   30,69      8 146801960 146801960