first commit

This commit is contained in:
VC
2025-02-27 12:51:50 +01:00
commit f5e914e533
234 changed files with 11519 additions and 0 deletions

View File

@@ -0,0 +1,173 @@
+++
title = "Redimensionner un disque OpenBSD"
date = 2021-01-11
[taxonomies]
tags = [ "système", "openbsd" ]
+++
Le sujet étant assez peu ou mal documenté, je me suis dit que ce serait intéressant de te faire partager mes notes.
<!-- more -->
# La base
Pour lexpérience (et surtout parce que cétait à peu près mon cas dusage), jai donc installé un OpenBSD 6.8 tout frais avec un disque dur de 16Gio et le partitionnement par défaut. Ce dernier met la partition `/home` en dernier sur le disque. Cest la seule que tu pourras facilement redimensionner (ça tombe bien, cest ce que je comptais faire).
Bref, donc on ne peut pas redimensionner nimporte quelle partition, seulement la dernière du disque en gros (un peu comme du partitionnement plus classique pour Linux, mais ça fait quelques années que je nen ai pas fait).
La situation initiale ressemble donc à cela :
```
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/wd0a 413M 64.5M 328M 16% /
/dev/wd0k 2.6G 2.0K 2.4G 0% /home
/dev/wd0d 546M 6.0K 518M 0% /tmp
/dev/wd0f 1.9G 1.1G 787M 58% /usr
/dev/wd0g 530M 2.0K 504M 0% /usr/X11R6
/dev/wd0h 1.8G 216K 1.7G 0% /usr/local
/dev/wd0j 5.1G 2.0K 4.8G 0% /usr/obj
/dev/wd0i 1.3G 2.0K 1.3G 0% /usr/src
/dev/wd0e 782M 5.6M 737M 1% /var
```
Et cest donc surtout le `/home` qui va nous intéresser.
# Arrêt, redémarrage, toussa
Première étape donc, arrêter la machine et redimensionner le disque sous-jacent. Je lai passé à 64G pour les besoins de la démonstration, mais évidemment, ça pourrait fonctionner avec nimporte quelle valeur (enfin presque, je suppose que si on met un trillion de péta-octets, ça va ptet moins bien passer…).
Au redémarrage, à linvite de boot, il faut préciser `bsd.rd`. Il sagit du disque de secours qui est inclus à linstallation (sauf si tu las enlevé mais je pars du principe que tu nes pas un sauvage à ce point-là) :
```
>> OpenBSD/amd64 BOOT 3.52
boot> bsd.rd
```
Une fois démarré, choisis loption `(S)hell` pour tomber sur un shell standard (`/bin/sh`). À ce stade, le `/dev` de notre OpenBSD nest pas encore peuplé, il va donc au moins falloir y mettre le disque en question. Si cest un disque SATA, ce sera `sd0` si cest un disque IDE, ce sera `wd0` (sur une VM, il y a de bonnes chances que ce soit `wd0` du coup) :
```
# cd /dev
# sh MAKEDEV wd
```
# Je suis venu pour redimensionner des partitions et botter des culs
On va pouvoir vérifier les partitions MBR du disque :
```
# fdisk wd0
Disk: wd0 geometry: 8354/255/63 [134217728 Sectors]
Offset: 0 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
-------------------------------------------------------------------------------
0: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
*3: A6 0 1 2 - 2087 254 63 [ 64: 33543656 ] OpenBSD
```
Comme tu peux le constater la géométrie du disque est déjà à la bonne dimension en nombre de secteur. Mais la partition 3 (la partition OpenBSD) nest pas encore tout-à-fait à jour. On va donc forcer `fdisk` à faire ce quil faut :
```
# fdisk -iy wd0
Writing MBR at offset 0.
# fdisk wd0
Disk: wd0 geometry: 8354/255/63 [134217728 Sectors]
Offset: 0 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
-------------------------------------------------------------------------------
0: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
*3: A6 0 1 2 - 8353 254 63 [ 64: 134206946 ] OpenBSD
```
La quantité de secteur du disque a doublé : nous avons bien alloué de lespace supplémentaire à la partition OpenBSD. En toute logique, `disklabel` devrait être capable de retrouver rapidement ces petits :
```
# disklabel wd0
# /dev/rwd0c:
type: ESDI
disk: ESDI/IDE disk
label: VBOX HARDDISK
duid: 71abc1c5e7522ff0
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 2088
total sectors: 134217728
boundstart: 64
boundend: 33543720
drivedata: 0
```
Donc là, techniquement, on a la bonne taille de disque, mais pas encore la bonne taille de partition (regarde bien le champs `boundend` pour ten rendre compte).
On va donc donner les indications nécessaires à `disklabel` pour mettre la frontière au bon endroit et agrandir la dernière partition du disque :
```
# disklabel -E wd0
Label editor (enter '?' for help at any prompt)
wd0> b
Starting sector: [64]
Size ('*' for entire disk): [33543656] *
wd0*> c k
Partition k is currently 5535936 sectors in size, and can have a maximum
size of 106209952 sectors.
size: [5535936] *
wd0*> p
OpenBSD area: 64-134217728; size: 134217664; free: 30
# size offset fstype [fsize bsize cpg]
a: 880288 64 4.2BSD 2048 16384 6822
b: 1310050 880352 swap
c: 134217728 0 unused
d: 1162688 2190432 4.2BSD 2048 16384 9011
e: 1653888 3353120 4.2BSD 2048 16384 12921
f: 4218208 5007008 4.2BSD 2048 16384 12960
g: 1130272 9225216 4.2BSD 2048 16384 8760
h: 3816448 10355488 4.2BSD 2048 16384 12960
i: 2891616 14171936 4.2BSD 2048 16384 12960
j: 10944224 17063552 4.2BSD 2048 16384 12960
k: 106209952 28007776 4.2BSD 2048 16384 12960
wd0*> w
wd0> q
No label changes.
```
Pour le détail : on commence par changer la taille du disque (histoire de lui faire reconnaître ce quil y a en plus), puis on change la taille de la partition `k` (qui correspond donc au `/home` mais surtout qui est la dernière partition, la seule que lon peut redimensionner). À partir de là, il ne reste plus quà faire grandir le système de fichiers correspondant :
```
# growfs /dev/rwd0k
We strongly recommend you to make a backup before growing the Filesystem
Did you backup your data (Yes/No) ? Yes
new filesystem size is: 26552488 frags
Warning: 41632 sector(s) cannot be allocated.
growfs: 51840.0MB (106168320 sectors) block size 16384, fragment size 2048
using 256 cylinder groups of 202.50MB, 12960 blks, 25920 inodes.
super-block backups (for fsck -b #) at:
5806240, 6220960, 6635680, 7050400, 7465120, 7879840, 8294560, 8709280,
[…]
105339040, 105753760
```
Dernière étape avant de valider que tout est bon : faire un petit `fsck` des familles histoire de vérifier que tout est correct.
```
# fdisk /dev/rwd0k
```
# Conclusage
Au démarrage suivant, on constate bien quon a récupéré de lespace disque en plus :
```
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/wd0a 413M 84.4M 308M 22% /
/dev/wd0k 49.0G 2.0K 46.6G 0% /home
[…]
```
Bon évidemment, si on doit redimensionner autre chose que la dernière partition (`/var` au pif), ça va être nettement moins simple et jaurais tendance à dire que tauras plus vite fait de tout réinstaller. Néanmoins, le partition automatique étant pas trop mal foutu, il sarrange pour avoir suffisamment de place partout et garder la partition qui va probablement satûrer le plus vite à la fin.
Cest loin dêtre une science exacte mais jusquà présent, je lai plutôt bien vérifié dans la pratique.