Howto Gestion des disques sous OpenBSD
La gestion des disques sous OpenBSD est parfois déroutante, surtout si l’on vient du monde GNU/Linux. Pour une introduction, lire la FAQ
Ajout d’un disque
Disque formaté pour OpenBSD (FFS)
Si l’on ajoute un nouveau disque sur un système OpenBSD, voici les différentes étapes pour l’initialiser (outre l’installation matérielle ;-).
Prenons l’exemple avec disque sd1
ajouté. Il faut
d’abord initialiser sa table des partitions :
# fdisk -i sd1
Do you wish to write new MBR and partition table? [n] y
Writing MBR at offset 0.
# fdisk sd1
Disk: sd1 geometry: 60734/255/63 [975699968 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 1 - 60733 254 63 [ 63: 975691647 ] OpenBSD
On gère ensuite la partie disklabel :
# disklabel -E sd1
# Inside MBR partition 3: type A6 start 63 size 975691647
Treating sectors 63-975691710 as the OpenBSD portion of the disk.
You can use the 'b' command to change this.
Initial label editor (enter '?' for help at any prompt)
> a
partition: [a]
offset: [63]
size: [975691647]
FS type: [4.2BSD]
> p
OpenBSD area: 63-975691710; size: 975691647; free: 0
# size offset fstype [fsize bsize cpg]
a: 975691647 63 4.2BSD 2048 16384 1
c: 975699968 0 unused
> q
Write new label?: [y]
On peut enfin créer le système de fichiers et le monter :
# newfs sd1a
newfs: reduced number of fragments per cylinder group from 103664 to 103656 to enlarge last cylinder group
/dev/rsd1a: 476411.9MB in 975691644 sectors of 512 bytes
2354 cylinder groups of 202.45MB, 12957 blocks, 25984 inodes each
super-block backups (for fsck -b #) at:
32, 414656, 829280, 1243904, ......
# mount /dev/sd1a /mnt/
Disque en FAT32
Afin qu’il soit lisible par d’autres systèmes (par exemple un disque
USB pour des sauvegardes), voici les différentes étapes pour initialiser
un disques en FAT32. Prenons l’exemple avec disque sd1
ajouté. Il faut d’abord initialiser sa table des partitions :
# fdisk -i sd1
-----------------------------------------------------
------ ATTENTION - UPDATING MASTER BOOT RECORD ------
-----------------------------------------------------
Do you wish to write new MBR and partition table? [n] y
On indique ensuite que la partition est de type FAT32 :
# fdisk -e sd1
Enter 'help' for information
fdisk: 1> p
Disk: sd1 geometry: 60801/255/63 [976773168 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 1 - 60800 254 63 [ 63: 976768002 ] OpenBSD
fdisk: 1> e 3
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
-------------------------------------------------------------------------------
*3: A6 0 1 1 - 60800 254 63 [ 63: 976768002 ] OpenBSD
Partition id ('0' to disable) [0 - FF]: [A6] (? for help) ?
Choose from the following Partition id values:
00 unused 20 Willowsoft 67 Novell AB MacOS X boot
01 DOS FAT-12 24 NEC DOS 68 Novell AF MacOS X HFS+
02 XENIX / 38 Theos 69 Novell B7 BSDI filesy*
03 XENIX /usr 39 Plan 9 70 DiskSecure B8 BSDI swap
04 DOS FAT-16 40 VENIX 286 75 PCIX BF Solaris
05 Extended DOS 41 Lin/Minux DR 80 Minix (old) C0 CTOS
06 DOS > 32MB 42 LinuxSwap DR 81 Minix (new) C1 DRDOSs FAT12
07 HPFS/QNX/AUX 43 Linux DR 82 Linux swap C4 DRDOSs < 32M
08 AIX fs 4D QNX 4.2 Pri 83 Linux files* C6 DRDOSs >=32M
09 AIX/Coherent 4E QNX 4.2 Sec 84 OS/2 hidden C7 HPFS Disbled
0A OS/2 Bootmgr 4F QNX 4.2 Ter 85 Linux ext. DB CPM/C.DOS/C*
0B Win95 FAT-32 50 DM 86 NT FAT VS DE Dell Maint
0C Win95 FAT32L 51 DM 87 NTFS VS E1 SpeedStor
0E DOS FAT-16 52 CP/M or SysV 8E Linux LVM E3 SpeedStor
0F Extended LBA 53 DM 93 Amoeba FS E4 SpeedStor
10 OPUS 54 Ontrack 94 Amoeba BBT EB BeOS/i386
11 OS/2 hidden 55 EZ-Drive 99 Mylex EE EFI GPT
12 Compaq Diag. 56 Golden Bow 9F BSDI EF EFI Sys
14 OS/2 hidden 5C Priam A0 NotebookSave F1 SpeedStor
16 OS/2 hidden 61 SpeedStor A5 FreeBSD F2 DOS 3.3+ Sec
17 OS/2 hidden 63 ISC, HURD, * A6 OpenBSD F4 SpeedStor
18 AST swap 64 NetWare 2.xx A7 NEXTSTEP FF Xenix BBT
19 Willowtech 65 NetWare 3.xx A8 MacOS X
1C ThinkPad Rec 66 NetWare 386 A9 NetBSD
Partition id ('0' to disable) [0 - FF]: [A6] (? for help) 0B
Do you wish to edit in CHS mode? [n]
offset: [63]
size: [976768002]
fdisk:*1> w
Writing MBR at offset 0.
fdisk: 1> q
La partition est ainsi accessible en sd1i
comme
l’indique disklabel :
# disklabel sd1
disklabel: warning, DOS partition table with no valid OpenBSD partition
# /dev/rsd1c:
type: SCSI
disk: SCSI disk
label: HM500JI
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 60801
total sectors: 976773168
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # microseconds
track-to-track seek: 0 # microseconds
drivedata: 0
16 partitions:
# size offset fstype [fsize bsize cpg]
c: 976773168 0 unused 0 0
i: 976768002 63 MSDOS
Enfin, on la formate ensuite en FAT32 :
# newfs_msdos sd1i
/dev/rsd1i: 974863936 sectors in 121857992 FAT32 clusters (4096 bytes/cluster)
bps=512 spc=8 res=32 nft=2 mid=0xf8 spt=63 hds=255 hid=63 bsec=976768002 bspf=952016 rdcl=2 infs=1 bkbs=2
Monter une partition FFS sous Linux
# mount -t ufs -o ufstype=44bsd -o ro /dev/sdb4 usb/
Pour le support en RW, c’est encore expérimental d’après le message :
kernel: [1816288.453987] ufs was compiled with read-only support, can't be mounted as read-write
Créer un swap sur un fichier image
Exemple avec une swap de 1Go.
# dd if=/dev/zero of=/var/swap bs=1k count=1048576
# chmod 600 /var/swap
# swapctl -a /var/swap
## Verifier
# swapctl -l
# echo "/var/swap /var/swap swap sw 0 0" >> /etc/fstab
Agrandir une partition (exemple avec /home)
On peut agrandir une partition si elle est placée en dernier dans le schéma de partitionnement et s’il y a de la place libre non partitionnée sur le disque.
Pour afficher les partitions sur un disque on utilise
disklabel
, qui affiche la taille en Gio :
# disklabel -pg sd0
# /dev/rsd0c:
type: SCSI
disk: SCSI disk
label: PERC H330 Adp
duid: efdfad9f52e8f066
flags:
bytes/sector: 512
sectors/track: 4
tracks/cylinder: 23
sectors/cylinder: 92
cylinders: 21222266
total sectors: 1952448512 # total bytes: 931.0G
boundstart: 4
boundend: 1952448472
drivedata: 0
16 partitions:
# size offset fstype [fsize bsize cpg]
a: 1.0G 4 4.2BSD 2048 16384 12958 # /
b: 2.0G 2097216 swap # none
c: 931.0G 0 unused
d: 10.0G 6291616 4.2BSD 2048 16384 12958 # /var
e: 5.0G 27263168 4.2BSD 2048 16384 12958 # /usr
f: 2.0G 37748960 4.2BSD 2048 16384 12958 # /tmp
g: 10.0G 41943328 4.2BSD 2048 16384 12958 # /home
Sous OpenBSD la partition c:
représente le disque
complet, si on soustrait les tailles des autres partitions, on voit
qu’il reste 901Gio de libre sur ce disque.
On veut augmenter la taille de la partition /home
qui
est placée à la fin du disque.
- On s’assure que la partition
/home
n’est pas utilisée (se connecter directement en tant que root temporairement), puis on la démonte :
# fstat -f /home
USER CMD PID FD MOUNT INUM MODE R/W SZ|DV
# umount /home
- On entre en mode édition de la partition de la manière suivante :
# disklabel -E sd0
- On affiche les partitions avec la commande
p
Label editor (enter '?' for help at any prompt)
sd0> p
OpenBSD area: 4-1952448472; size: 1952448468; free: 1889533572
# size offset fstype [fsize bsize cpg]
a: 2097212 4 4.2BSD 2048 16384 12958 # /
b: 4194388 2097216 swap # none
c: 1952448512 0 unused
d: 20971552 6291616 4.2BSD 2048 16384 12958 # /var
e: 10485792 27263168 4.2BSD 2048 16384 12958 # /usr
f: 4194368 37748960 4.2BSD 2048 16384 12958 # /tmp
g: 20971584 41943328 4.2BSD 2048 16384 12958 # /home
- On change la taille de la partition avec l’option
c
sur la partitiong
(/home), et on indique la taille finale souhaitée :
sd0> c g
Partition g is currently 20971584 sectors in size, and can have a maximum
size of 1910505144 sectors.
size: [20971584] 100G
- On écrit les changements sur le disque et on quitte :
sd0*> w
sd0> q
No label changes.
- Ensuite on étend la partition
g
du disquesd0
que l’on vient d’augmenter :
# growfs sd0g
We strongly recommend you to make a backup before growing the Filesystem
Did you backup your data (Yes/No) ? Yes
new filesystem size is: 52428805 frags
Warning: 313940 sector(s) cannot be allocated.
growfs: 102246.7MB (209401280 sectors) block size 16384, fragment size 2048
using 505 cylinder groups of 202.47MB, 12958 blks, 25984 inodes.
with soft updates
super-block backups (for fsck -b #) at:
21147488, 21562144, 21976800, 22391456, 22806112, 23220768, 23635424, 24050080, 24464736, 24879392, 25294048,
....
- On fait un fsck sur la partition pour s’assurer qu’elle soit propre et sans erreur :
# fsck /dev/sd0g
** /dev/rsd0g
** Last Mounted on /home
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
376 files, 748 used, 51521360 free (192 frags, 6440146 blocks, 0.0% fragmentation)
MARK FILE SYSTEM CLEAN? [Fyn?] y
***** FILE SYSTEM WAS MODIFIED *****
- On remonte la partition
/home
et on vérifie que l’augmentation de la taille a bien été prise en compte :
# mount /home
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/sd0a 1005M 117M 838M 12% /
/dev/sd0f 2.0G 24.0K 1.9G 0% /tmp
/dev/sd0e 4.9G 1.8G 2.8G 39% /usr
/dev/sd0d 9.8G 7.7G 1.6G 82% /var
/dev/sd0g 98.3G 1.5M 93.4G 0% /home