[Index de la FAQ] [Section 13 - Multimédia] [Section 15 - Paquetages et Ports]
Les détails de la mise en place des disques dans OpenBSD varie selon les plates-formes, donc vous devriez lire les instructions d'installation dans le fichier INSTALL.<arch> de votre plate-forme afin de déterminer les spécificités pour votre système.
Les deux types de "partitions" sont:
Toutes les plates-formes OpenBSD utilisent disklabel(8) comme principal moyen pour gérer les partitions du système de fichier OpenBSD, mais seules certaines plates-formes requièrent l'utilisation de fdisk(8) pour gérer les Tables de Partitions. Sur les plates-formes utilisant des partitions fdisk, une partition fdisk est utilisée pour contenir tous les systèmes de fichiers OpenBSD, cette partition est ensuite découpée vers le haut dans le disklabel. Ces partitions disklabel sont étiquetées de "a" à "p". Quelques-unes de celles-ci sont "spéciales":
Quelques utilitaires vous permettront d'utiliser le nom "raccourcis" d'une partition (i.e., "sd0d") ou d'un disque (i.e., "wd1") à la place du nom actuel du périphérique ("/dev/sd0d" ou "/dev/wd1c", respectivement).
Notez encore une fois que si vous mettez des données sur wd2d, puis que vous enlevez wd1 du système et que vous redémarrez, vos données seront à présent sur wd1d, car votre ancien wd2 sera devenu wd1. Cependant, une identification de disque ne va pas changer après le démarrage, donc si une clé USB est débranchée ou plante, cela ne va pas changer l'identification des autres disques jusqu'au redémarrage.
Ces UIDs peuvent être utilisé pour identifier les disques presque partout où une partition ou un périphérique devraient être spécifiés, par exemple dans /etc/fstab ou dans les lignes de commande. Bien sûr, les disques et les partitions peuvent aussi être identifiés de façon traditionnelle, par le périphérique, le numéro et la partition (i.e., /dev/sd1f), et de manière interchangeable.
Il est à noter que le DUID est une propriété du disklabel, bien que cela soit surtout académique, comme OpenBSD ne supporte qu'un seul disklabel par disque.
fdisk(8) est utilisé sur certaines plates-formes (i386, amd64, macppc, zaurus et armich) pour créer une partition reconnue par la ROM de démarrage du système dans laquelle les partitions disklabel d'OpenBSD peuvent être inscrites. Les autres plates-formes n'ont pas besoin d'utiliser fdisk(8). fdisk(8) peut également être utilisé pour la manipulation du MBR ("Master boot record") pouvant avoir un impact sur tous les systèmes présents sur la machine. À l'inverse de certains programmes dont les fonctionnalités sont proches de celles de fdisk, sous OpenBSD cette commande assume que vous savez ce que vous voulez faire et en règle générale n'interviendra pas dans vos décisions, ce qui en fait un outil très puissant. Il vous laissera également faire des choses que vous n'aviez pas forcément prévues et doit donc être utilisé avec précaution.
Normalement, seule une partition fdisk OpenBSD sera inscrite sur le disque. Cette partition sera divisée par disklabel en différentes partitions systèmes de fichiers OpenBSD.
Pour simplement voir votre table de partition avec fdisk, utilisez:
# fdisk sd0
Ce qui vous donnera une sortie similaire à celle-ci:
Disk: sd0 geometry: 553/255/63 [8883945 Sectors]
Offset: 0 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
------------------------------------------------------------------------
*0: A6 3 0 1 - 552 254 63 [ 48195: 8835750 ] OpenBSD
1: 12 0 1 1 - 2 254 63 [ 63: 48132 ] Compaq Diag.
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
Dans cet exemple, nous voyons la sortie de fdisk concernant le premier lecteur SCSI. Nous pouvons voir les partitions OpenBSD (A6). Le * indique que la partition OpenBSD est amorçable.
Dans l'exemple précédent, nous avons simplement accédé à une information. Qu'en est-il si nous souhaitons éditer notre table de partition ? Et bien, pour ce faire, nous devons utiliser l'option - e. Ceci fera apparaître une invite de commandes pour interagir avec fdisk.
# fdisk -e wd0
Enter 'help' for information
fdisk: 1> help
help Command help list
manual Show entire OpenBSD man page for fdisk
reinit Re-initialize loaded MBR (to defaults)
setpid Set the identifier of a given table entry
disk Edit current drive stats
edit Edit given table entry
flag Flag given table entry as bootable
update Update machine code in loaded MBR
select Select extended partition table entry MBR
swap Swap two partition entries
print Print loaded MBR partition table
write Write loaded MBR to disk
exit Exit edit of current MBR, without saving changes
quit Quit edit of current MBR, saving current changes
abort Abort program without saving current changes
fdisk: 1>
Voici un aperçu des commandes disponibles lorsque vous utilisez l'option -e.
Pour commencer, lisez le manuel de disklabel(8).
La façon de configurer les disques sous OpenBSD diffère légèrement selon les plates-formes. Sous i386, amd64, macppc, zaurus et armish, la configuration se déroule en deux étapes. Tout d'abord, la tranche contenant OpenBSD sur le disque est définie en utilisant fdisk(8) et ensuite divisée en partitions OpenBSD avec disklabel(8).
Toutes les autres plates-formes utilisent disklabel(8) pour la gestion complète des partitions OpenBSD. Les plates-formes qui utilisent aussi fdisk(8) placent toutes les partitions disklabel(8) dans une tranche fdisk.
Les labels contiennent certaines informations sur votre disque, comme sa géométrie ou les systèmes de fichiers présents sur celui-ci. Le disklabel est utilisé par le programme de bootstrap pour accéder aux disques et connaître le type de systèmes de fichiers présents. Vous pouvez accéder à de plus amples informations sur disklabel en lisant le manuel disklabel(5).
Sur certaines plates-formes, l'utilisation de disklabel permet de passer outre les limitations de partitionnement liées aux types d'architectures. Par exemple, sur i386, vous pouvez avoir 4 partitions primaires mais avec disklabel(8), vous utilisez une de ces partitions 'primaires' pour stocker toutes vos partitions OpenBSD (par exemple, 'swap', '/', '/usr', '/var', etc...) et il vous reste encore 3 partitions disponibles pour d'autres systèmes d'exploitation !
Une partie importante de l'installation d'OpenBSD est la création initiale des labels. À l'installation, vous utiliserez disklabel(8) afin de créer les différentes partitions. Vous pourrez définir vos points de montage à partir de disklabel(8) et le changer plus tard pendant l'installation ou même après celle-ci.
Il n'existe pas de "bonne" façon de créer un label disque mais il en existe beaucoup de mauvaises. Avant de créer un label sur votre disque, lisez ce chapitre sur le partitionnement.
Pour un exemple d'utilisation de disklabel(8) pendant l'installation, référez-vous à la configuration des disques du guide d'installation.
Après l'installation, un des usages les plus courants de disklabel(8) est de vérifier la disposition de votre disque. La commande suivante affichera le disklabel courant sans le modifier :
# disklabel wd0 <-- Selon le disque que vous souhaitez vérifier type: ESDI disk: ESDI/IDE disk label: SAMSUNG HD154UI duid: d920a43a5a56ad5f flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 16 sectors/cylinder: 1008 cylinders: 2907021 total sectors: 2930277168 boundstart: 64 boundend: 2930272065 drivedata: 0 16 partitions: # size offset fstype [fsize bsize cpg] a: 1024064 64 4.2BSD 2048 16384 1 # / b: 4195296 1024128 swap c: 2930277168 0 unused d: 4195296 5219424 4.2BSD 2048 16384 1 # /usr e: 4195296 9414720 4.2BSD 2048 16384 1 # /tmp f: 20972448 13610016 4.2BSD 2048 16384 1 # /var h: 2097632 34582464 4.2BSD 2048 16384 1 # /home
Notez que, pour le moment, ce disque n'a qu'une partie de son espace disponible allouée. Disklabel offre deux modes d'édition différents, un mode de commandes (utiliser à l'installation d'OpenBSD) et un éditeur complet tel que vi(1). Le mode de commandes peut paraître plus simple puisqu'il vous guide à travers les différentes étapes et propose une aide intégrée, mais le mode éditeur possède également une véritable utilité.
Ajoutons une partition au système précédent.
Attention : chaque fois que vous touchez à votre disklabel, vous mettez en danger toutes les données présentes sur le disque. Soyez sûr que vos données soient sauvegardées avant d'éditer un disklabel existant !
Nous utiliserons le mode de commandes intégré qui est lancé avec l'option "-E" de disklabel(8)
Dans ce cas, disklabel(8) a été capable de calculer un bon point de départ pour la partition. La plupart du temps ce sera le cas mais si vous avez des "trous" dans votre disklabel (ex. vous avez supprimez votre partition ou vous aimez simplement vous compliquer la vie) il vous faudra prendre le temps de calculer un offset correct. Notez que même si disklabel(8) effectue certaines vérifications il est très possible de faire de grosses erreurs. Faites attention et comprenez bien les valeurs que vous utilisez.# disklabel -E wd0 ... > a k offset: [36680096] size: [2893591969] 1T Rounding to cylinder: 2147483536 FS type: [4.2BSD] > p m OpenBSD area: 64-2930272065; size: 1430796.9M; free: 364310.8M # size offset fstype [fsize bsize cpg] a: 500.0M 64 4.2BSD 2048 16384 1 # / b: 2048.5M 1024128 swap c: 1430799.4M 0 unused d: 2048.5M 5219424 4.2BSD 2048 16384 1 # /usr e: 2048.5M 9414720 4.2BSD 2048 16384 1 # /tmp f: 10240.5M 13610016 4.2BSD 2048 16384 1 # /var h: 1024.2M 34582464 4.2BSD 2048 16384 1 # /home k: 1048575.9M 36680192 4.2BSD 8192 65536 1 > q Write new label?: [y]
Sur la plupart des plates-formes OpenBSD, il y 16 partitions disklabel disponibles, notées de "a" à "p" (certains systèmes "spécialisés" n'en ont que huit). Chaque disklabel doit avoir une partition 'c' avec un "fstype" défini à "unused" qui couvre l'ensemble du disque physique. Si ce n'est pas le cas de votre disklabel, il doit être fixé, l'option "D" (plus bas) peut être utilisée. Ne tentez jamais d'utiliser la partition "c" pour autre chose que l'accès en mode raw des secteurs du disque et n'essayez pas de créer un système de fichiers sur "c". Sur le périphérique de démarrage et seulement sur celui-ci, "a" est réservé pour la partition racine et "b" pour le swap. Tous les autres périphériques peuvent utiliser l'ensemble des quinze partitions en dehors de 'c' pour leur système de fichiers.
Une fois votre disque CORRECTEMENT installé, vous devez utiliser fdisk(8) (i386 seulement) et disklabel(8) afin de le configurer pour OpenBSD.
Pour les utilisateurs i386, commencez avec fdisk. Les autres architectures peuvent ignorer cette étape. Dans l'exemple suivant, nous ajouterons un troisième disque SCSI au système.
Cette commande va initialiser la "véritable" table de partition du disque pour un usage exclusif par OpenBSD. Ensuite, vous devez créer un disklabel. Ceci risque de sembler confus.# fdisk -i sd2
Tout d'abord, ignorez la partition 'c', celle-ci est toujours présente et est nécessaire au fonctionnement de programmes comme disklabel ! Le type de système de fichiers ("fstype") pour OpenBSD est 4.2BSD. Le nombre total de secteurs ("total sectors") représente la taille du disque. Admettons qu'il s'agit d'un disque de 3 gigaoctets. 3 gigaoctets en terme de constructeur de disques représente 3000 mégaoctets. Divisons 6185088 par 3000 (on utilise bc(1)). Vous obtenez 2061. Ainsi, pour décider des tailles des partitions a, d, e, f, g, ... multipliez simplement X par 2061 afin d'avoir X mégaoctets d'espace sur cette partition. L'offset de votre première partition doit être égal à "sectors/track" comme rapporté par disklabel. Pour nous, cette valeur est égale à 63. L'offset de chaque partition suivante résultera de la combinaison de la taille et de l'offset de chacune d'elle (sauf la partition 'c' qui n'intervient pas dans cette équation).# disklabel -e sd2 (screen goes blank, your $EDITOR comes up) type: SCSI ...bla... sectors/track: 63 total sectors: 6185088 ...bla... 16 partitions: # size offset fstype [fsize bsize cpg] c: 6185088 0 unused 0 0 # (Cyl. 0 - 6135) d: 1405080 63 4.2BSD 1024 8192 16 # (Cyl. 0*- 1393*) e: 4779945 1405143 4.2BSD 1024 8192 16 # (Cyl. 1393*- 6135)
Ou, si vous souhaitez simplement une partition couvrant tout le disque, afin d'offrir un espace de stockage web, un répertoire d'utilisateurs ("home") ou autre chose, ôtez simplement la valeur "sectors/track" à la taille totale du disque. 6185088-63 = 6185025. Votre partition est :
d: 6185025 63 4.2BSD 1024 8192 16
Si tout ceci vous semble inutilement complexe, vous pouvez simplement
utiliser disklabel -E pour entrer dans le même mode de partitionnement
dont vous disposiez à l'installation ! Dans celui- ci, vous pouvez
utiliser "96M" pour spécifier "96 mégaoctets" ou, 96G pour 96 gigaoctets.
Voilà qui était dense. Mais tout n'est pas terminé. Vous devez à présent créer un système de fichiers sur ce disque en utilisant newfs(8).
# newfs sd2d
Ou autre, selon le nom donné à votre disque par le système de nommage d'OpenBSD (regardez la sortie de dmesg(8) pour voir comment OpenBSD a nommé votre disque).
Maintenant, il vous faut décider où vous souhaitez monter cette partition nouvellement créée. Disons que vous vouliez la monter sur /u. Tout d'abord, créez le répertoire /u. Puis montez-le.
# mount /dev/sd2d /u
Enfin, ajoutez-le a /etc/fstab(5).
/dev/sd2d /u ffs rw 1 1
Et si vous souhaitiez migrer un répertoire existant comme /usr/local ? Vous devriez monter le nouveau disque sur /mnt et copier /usr/local dans le dossier /mnt. Exemple:
Éditez le fichier /etc/fstab(5) afin de préciser que votre partition /usr/local est maintenant /dev/sda2d (votre nouvelle partition formatée). Exemple :# cd /usr/local && pax -rw -p e . /mnt
/dev/sd2d /usr/local ffs rw 1 1
Redémarrez en mode single user avec boot -s, déplacez le répertoire /usr/local vers /usr/local-backup (ou si vous vous sentez en veine, supprimez-le) et créez un répertoire /usr/local vide. Enfin, redémarrez le système et voilà, les fichiers sont présents !
Une non-utilisation manifeste de l'espace de pagination est d'être un lieu ou le noyau peut générer une copie du système de base en cas de mode panique pour une analyse ultérieure. Pour que cela fonctionne vous devez avoir une partition de pagination (pas un fichier de pagination) au moins aussi grand que la taille de votre RAM. Par défaut, le système sauvera une copie de ce vidage mémoire dans /var/crash au redémarrage, donc si vous désirez faire cela automatiquement, vous devez avoir assez d'espace libre dans /var. Cependant, vous pouvez aussi démarrer le système en mode mono-utilisateur et utiliser savecore(8) pour faire le vidage ailleurs.
Plusieurs types de systèmes peuvent être configurés de façon approprié sans aucun espace de pagination. Par exemple, les pare-feu ne doivent pas paginer en fonctionnement normal. Les machines avec un stockage flash ne doivent généralement pas paginer. Si votre pare-feu est basé sur une flash, vous bénéficierez (légèrement) par la non allocation d'une partition d'espace de pagination, mais dans la plupart des cas, une partition d'espace de pagination ne fera de mal à personne; la plupart des disques possèdent assez d'espace pour en allouer un petit peu à l'espace de pagination.
Il y a toutes sortes d'astuces pour optimiser l'espace de pagination (ou sur le disque, disques séparés, etc...), mais si vous vous trouvez vous-même dans une situation où l'espace de pagination est une solution, vous avez probablement besoin de plus de RAM. En général, la meilleure optimisation pour l'espace de pagination est de ne pas en avoir besoin.
Sur OpenBSD, l'espace de pagination est géré par le programme swapctl(8) qui ajoute, supprime, affiche et donne des priorités sur les fichiers et périphériques d'espace de pagination.
Sur OpenBSD, la partition 'b' du disque de démarrage est utilisée par défaut et automatiquement pour l'espace de pagination. Pas de configuration est nécessaire pour mettre cela en place. Si vous ne désirez pas utiliser d'espace de pagination sur le disque de démarrage, ne définissez pas une partition "b". Si vous désirez utiliser l'espace de pagination sur une autre partition ou sur un autre disque, vous devez définir ces partitions dans /etc/fstab avec des lignes ressemblant à cela :
/dev/sd3b none swap sw 0 0 /dev/sd3d none swap sw 0 0
(Note : si vous souhaitez ajouter un espace de pagination dans un fichier parce que vous recevez des erreurs du type "virtual memory exhausted", vous devriez d'abord essayer d'augmenter la limite des processus avec unlimit pour csh(1) ou ulimit pour sh(1))
Quelquefois, votre envie initiale sur la quantité de swap nécessaire est fausse, et vous devez ajouter plus d'espace de pagination, occasionnellement dans l'urgence (comme dans "Geez, at the rate it is burning swap, we'll be wedged in five minutes"). Si vous vous retrouvez dans cette situation, ajouter de l'espace de pagination dans un fichier sur un système de fichier existant peut-être une solution rapide.
Ce fichier ne doit pas résider sur un système de fichiers dont l'option "SoftUpdates" est activée (cette option est désactivée par défaut). Pour commencer, vous pouvez voir la taille totale et utilisée de votre swap actuel en utilisant l'utilitaire swapctl(8). Pour ce faire, lancez la commande :
$ swapctl -l Device 512-blocks Used Avail Capacity Priority swap_device 65520 8 65512 0% 0
Cela vous affiche les différents dispositifs utilisés pour la pagination ainsi que leurs statistiques actuelles. Dans l'exemple précédent, il n'y a qu'un seul dispositif nommé "swap_device". Il s'agit de l'espace disque prédéfini utilisé pour paginer (partition b visible sous disklabel). Comme vous pouvez le constater dans l'exemple précédent, cet espace n'est pas beaucoup utilisé pour le moment. Mais pour les besoins de ce document, nous imaginerons que 32Mo supplémentaires sont nécessaires.
La première chose à faire pour configurer un fichier en tant que dispositif de pagination est de créer ce fichier. Le mieux est d'utiliser la commande dd(1). Voici un exemple montrant la création d'un fichier /var/swap d'une taille de 32Mo.
$ sudo dd if=/dev/zero of=/var/swap bs=1k count=32768 32768+0 records in 32768+0 records out 33554432 bytes transferred in 20 secs (1677721 bytes/sec)
Une fois que cela est fait, nous pouvons activer la pagination vers ce fichier. Pour ce faire, utilisez la commande suivante :
$ sudo chmod 600 /var/swap $ sudo swapctl -a /var/swap
À présent, vérifions que ce fichier a bien été ajouté à la liste des dispositifs de pagination disponibles.
$ swapctl -l Device 512-blocks Used Avail Capacity Priority swap_device 65520 8 65512 0% 0 /var/swap 65536 0 65536 0% 0 Total 131056 8 131048 0%
Maintenant que le fichier de pagination est activé, vous devez ajouter une ligne à votre fichier /etc/fstab afin que les changements soient pris en compte au prochain redémarrage. Si cette ligne n'est pas ajoutée, ce dispositif ne sera plus activé au prochain reboot.
$ cat /etc/fstab /dev/wd0a / ffs rw 1 1 /var/swap /var/swap swap sw 0 0
Les "Soft Updates" sont basés sur une idée de Greg Ganger et Yale Patt et ont été développés pour FreeBSD par Kirk McKusick. Les Soft Updates imposent une réorganisation partielle des opérations sur le tampon permettant la suppression du code FFS, des écritures synchrones des entrées. Une augmentation des performances est ainsi réalisée lors des écritures sur disque.
L'activation des Soft Updates est effectuée par une option de montage. Lors du montage d'une partition avec l'utilitaire mount(8), vous pouvez activer les Soft Updates sur celle-ci. Voici l'exemple d'une entrée dans le fichier /etc/fstab(5) permettant de monter la partition sd0a avec les Soft Updates activés.
/dev/sd0a / ffs rw,softdep 1 1
Note aux utilisateur sparc : n'activez pas Soft Updates sur les machines de type sun4 ou sun4c. Ces architectures ne supportent qu'un montant très faible de mémoire noyau et ne peuvent utiliser cette fonctionnalité. En revanche, les machines de type sun4m ne posent pas de problème.
Bien qu'OpenBSD inclue son propre MBR, vous n'êtes pas obligé de l'utiliser puisque virtuellement, n'importe quel MBR est capable de le faire démarrer. Le MBR se manipule avec l'aide du programme fdisk(8) qui est utilisé pour éditer la table de partition mais également pour installer le code MBR sur le disque.
Le MBR d'OpenBSD s'annonce avec le message suivant :
Using drive 0, partition 3.
montrant le disque ainsi que la partition d'où il s'apprête à charger le
PBR. On peut également voir un point (".") en fin de ligne, ce qui
signifie que la machine est capable d'utiliser la conversion LBA
("Logical Block Adressing") au démarrage. Si la machine avait été
incapable d'une telle conversion, le point aurait été remplacé par un
point-virgule (";"), indiquant une conversion CHS
("Cylinder-Head-Sector") :
Using drive 0, partition 3;
Notez que le point ou le point-virgule en fin de ligne peut servir
d'indicateur du "nouveau" MBR OpenBSD introduit à partir de la version
3.5.
Le PBR est installé par installboot(8), décrit dans plus en détails dans la suite de ce document. Le PBR s'annonce avec le message suivant :
Loading...
affichant un point pour chaque bloc qu'il essaye de charger. Comme
précédemment, le PBR montre s'il utilise une conversion LBA ou CHS pour
s'exécuter. Dans le cas de CHS, il affichera un message suivi d'un point-
virgule :
Loading;...
boot(8) est un programme interactif. Après son exécution, il tente de localiser et lire /etc/boot.conf si celui-ci existe (ce qui n'est pas le cas dans une installation par défaut) puis lance les commandes qui y sont indiquées. A moins que le fichier /etc/boot.conf ne l'en empêche, boot(8) offre à l'utilisateur une invite de commandes similaire à celle-ci :
probing: pc0 com0 com1 apm mem[636k 190M a20=on]
disk: fd0 hd0+
>> OpenBSD/i386 BOOT 3.18
boot>
Par défaut, l'utilisateur a cinq secondes pour entrer une commande avant
le démarrage du noyau, bsd, à partir de la partition racine du
premier disque dur, ce qui représente le comportement par défaut. Le "second-
stage boot loader" détecte (et examine) votre matériel grâce au BIOS
(puisque le noyau OpenBSD n'est pas encore chargé). Précédemment on peut
voir qu'il a détecté :
Using drive 0, partition 3. <- MBR
Loading.... <- PBR
probing: pc0 com0 com1 apm mem[636k 190M a20=on] <- /boot
disk: fd0 hd0+
>> OpenBSD/i386 BOOT 3.18
boot>
booting hd0a:/bsd 4464500+838332 [58+204240+181750]=0x56cfd0
entry point at 0x100120
[ using 386464 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993 <- Noyau
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2012 OpenBSD. All rights reserved. http://www.OpenBSD.org
OpenBSD 5.2 (GENERIC) #278: Wed Aug 1 10:04:16 MDT 2012
deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
...
Vous pouvez installer le MBR OpenBSD sur votre disque dur à l'aide du programme fdisk. Démarrez à l'aide du médium d'installation; choisissez "Shell" pour vous retrouver en ligne de commandes :
# fdisk -u wd0
Vous pouvez également installer un MBR particulier avec fdisk :
# fdisk -u -f /usr/mdec/mbr wd0
ce qui installera le fichier /usr/mdec/mbr en tant que MBR de votre
système. Dans une installation standard d'OpenBSD, ce fichier représente le MBR
par défaut codé dans fdisk, mais n'importe quel autre MBR pourrait ici être
spécifié.
Pour plus d'informations sur le processus de démarrage pour i386, référez-vous à :
OpenBSD supporte les systèmes de fichiers FFS et FFS2 (aussi connu comme UFS et UFS2). FFS est le système de fichiers historique de OpenBSD, FFS2 est nouveau depuis la 4.3. Avant de regarder les limites de chaque système, nous avons besoin de regarder à des limites système plus générale.
Bien entendu, les capacités du système de fichiers et celles d'un matériel défini sont deux choses bien différentes. Un nouveau disque dur IDE de 250Go pourrait provoquer des problèmes sur des interfaces trop anciennes (d'une capacité standard de 137Go maximum, mais il fonctionne très bien), certains adaptateurs SCSI très anciens peuvent avoir des problèmes avec des lecteurs modernes et des BIOS un peu trop vieux peuvent se figer lorsqu'ils tombent sur un disque dur de trop grande capacité. De fait, vous devez respecter les possibilités de votre matériel et boot code.
Pour cette raison, le fichier /bsd (le noyau) doit se trouver dans l'espace disque adressable par la ROM. Cela signifie que sur certains systèmes i386, la partition racine doit se situer dans les premiers 504Mo, mais les ordinateurs plus récents peuvent avoir des limites de l'ordre de 2Go, 8Go, 32Go, 128Go ou plus. Il est important de noter que de nombreux ordinateurs récents supportant un adressage au delà de 128Go sont en fait limités par le BIOS et ne peuvent démarrer que sur les 128 premiers gigaoctets. Vous pouvez utiliser ces systèmes avec de gros disques durs, mais la partition racine devra être placée dans l'espace supporté par la ROM de démarrage.
Notez qu'il est toujours possible d'installer un disque dur de 40Go sur un vieux 486 et d'y placer OpenBSD sur une seule et énorme partition ; vous pourriez penser avoir réussi à violer la règle précédente. Cependant, un beau jour, celle-ci risque de revenir vous hanter de manière peu plaisante :
Pourquoi ? Simplement parce que vous avez "écrasé" l'ancien /bsd par le nouveau, ce fichier n'a pas été écrit au-dessus de l'autre, mais a été relocalisé vers un autre endroit sur le disque, probablement au-delà des 504 premiers Mo supportés par le bios. Le chargeur de démarrage se voit alors dans l'impossibilité d'atteindre /bsd et le système se fige.
Afin de permettre le lancement d'OpenBSD, les chargeurs de démarrage (biosboot(8) et /boot dans le cas d'un i386/amd64) ainsi que le noyau (/bsd) doivent se situer à l'intérieur de l'espace d'adressage supporté par la ROM de boot et par leurs propres capacités. Afin de ne jamais rencontrer de problèmes, la règle est simple :
La partition racine dans son ensemble doit se situer dans l'espace d'adressage supporté par le BIOS (ou la ROM de démarrage).
Certains utilisateurs n'utilisant pas d'i386 peuvent penser qu'ils sont immunisés contre ce problème, cependant, de nombreuses plates-formes possèdent une certaine limite fixée par la ROM de démarrage concernant la taille du disque. Trouver cette limite peut être compliquée.
Et c'est une autre raison pour partitionner votre disque dur, plutôt que d'utiliser une seule grosse partition.
Le temps nécessaire à l'utilisation de fsck peut devenir un problème au fur et à mesure que le système de fichiers grossit, mais vous n'avez besoin d'utiliser fsck que sur les systèmes de fichiers montés. C'est une autre raison de NE pas allouer tout l'espace disque Juste Parce Ce Qu'il Est La. Garder le système de fichier monté RO ou pas monté aide à les garder du besoin d'être fsck(8) après l'arrachage du câble d'alimentation. Réduire le nombre d'inodes (en utilisant l'option -i de newfs) peut aussi améliorer le temps de fsck -- en supposant que vous n'avez vraiment pas besoins d'eux.
N'oubliez pas que si vous avez plusieurs disques sur le système, ils pourraient se retrouver tous à devoir subir un fsck(8) en même temps après un crash et donc demander plus de RAM qu'un disque seul.
Les noyaux de démarrage/installation supportent seulement FFS, pas FFS2, donc les partitions systèmes clés (/, /usr, /var, /tmp) ne doivent pas être en FFS2 ou de sérieux problèmes de maintenance arriveront (il n'y a aucune raison pour avoir ces partitions aussi large de toute façon). Pour cette raison, les partitions très grandes doivent être utilisées uniquement pour des partitions "non-système", par exemple /home, /var/www/ ,/bigarray, etc.
Il faut remarquer que tous les contrôleurs et pilotes ne supportent pas les grands disques. Par exemple, ami(4) a une limite de 2To par volume logique. Faites toujours attention à ce qui était disponible quand un contrôleur ou une interface a été fabriqué, et ne vous fiez pas seulement à "l'adéquation des connecteurs".
Pour utiliser un disque de plus de 2To, créez une partition OpenBSD sur le disque en utilisant fdisk, quelle que soit la taille que fdisk vous affichera. Lorsque vous étiquetez le disque avec disklabel(8), utilisez l'option "b" pour mettre les limites d'OpenBSD (qui sont par défaut à la taille de la partition fdisk OpenBSD) pour couvrir le disque entier. Maintenant, vous pouvez créer vos partitions comme bon vous semble. Vous devez toujours respecter les capacités de votre BIOS, qui aura la limitation de seulement comprendre les partitions fdisk, donc votre partition 'a' devrait entièrement être dans la partie du disque gérée par fdisk, en plus de toutes les limitations du BIOS.
OpenBSD a un boot loader très robuste qui est indifférent à la géométrie des disques, mais pas indifférent à l'endroit où le fichier /boot se situe sur le disque. Si vous effectuez une manipulation ayant pour cause de déplacer boot(8) vers un autre endroit sur le disque (en fait un nouvel inode), vous "casserez" votre système l'empêchant de démarrer normalement. Pour réparer votre bloc de démarrage afin que vous puissiez booter normalement, insérez un CDROM dans votre lecteur (ou utilisez une disquette bootable) et à l'invite de commandes, tapez "boot hd0a:/bsd" afin de le forcer à démarrer sur le premier disque (et non sur le CD ou la disquette). Votre machine devrait se lancer normalement. Vous devez à présent réinstaller le chargeur de premier niveau (biosboot(8)) en se basant sur le nouvel emplacement du fichier /boot en utilisant le programme installboot(8).
Notre exemple assume que votre disque de démarrage est sd0 (mais pour de l'IDE, ce pourrait être wd0, etc...) :
Notez que "/boot" est l'emplacement physique du fichier "boot" que vous souhaitez utiliser étant donné que le système est actuellement monté. Si votre situation était un peu différente et que vous avez booté depuis le CD et monté la partition 'a' sur /mnt, cela devrait probablement être "/mnt/boot" à la place. installboot(8) fait deux choses ici -- il installe le fichier "biosboot" où cela est nécessaire pour être dans la partition Boot Record, et le modifie avec l'emplacement physique du fichier "/boot".# cd /usr/mdec; ./installboot /boot biosboot sd0
Si vous envisagez d'administrer ce que l'on pourrait appeler un serveur de production, il est préférable d'avoir une sauvegarde au cas où l'un de vos disques durs tomberait en panne ou que les données seraient perdues d'une autre façon.
Cette documentation vous assistera dans l'utilisation des utilitaires standards dump(8)/ restore(8) fournis avec OpenBSD. Des utilitaires de sauvegarde plus avancés, comme "Amanda" et "Bacula" sont disponibles via les ports afin de sauvegarder plusieurs serveurs vers des disques et lecteurs de bandes.
Sauvegarder sur bande demande de savoir exactement où vos systèmes de fichiers sont montés. Vous pouvez le déterminer en utilisant la commande mount(8) dans un terminal. Vous devriez obtenir une sortie similaire à celle-ci :
# mount /dev/sd0a on / type ffs (local) /dev/sd0h on /usr type ffs (local)
Dans cet exemple, le système de fichiers racine (/) réside physiquement sur sd0a, ce qui désigne la partition 'a' du disque de type SCSI fixé à 0. Le système de fichiers /usr réside sur sd0h, la partition h du disque de type SCSI fixé à 0.
Un autre exemple de ce qu'une table de montage plus avancée pourrait être :
# mount /dev/sd0a on / type ffs (local) /dev/sd0d on /var type ffs (local) /dev/sd0e on /home type ffs (local) /dev/sd0h on /usr type ffs (local)
Dans cet exemple plus compliqué, le système de fichiers racine (/) réside physiquement sur sd0a ; /var sur sd0d; /home sur sd0e et enfin /usr sur sd0h.
Afin de sauvegarder votre machine, vous aurez besoin de renseigner dump avec le nom exact de chaque partition fixe. Voici un exemple des commandes nécessaires pour sauvegarder la table de montage simple vue plus haut :
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h # mt -f /dev/rst0 rewind
Pour la table de montage plus avancée, vous utiliserez des commandes similaires à :
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0d # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0e # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h # mt -f /dev/rst0 rewind
Vous pouvez vous référer à la page de manuel de dump(8) afin de connaître les fonctionnalités de chaque option. Voici une brève description des paramètres utilisés :
Et finalement, la partition à sauvegarder (/dev/rsd0a, etc...).
La commande mt(1) est utilisée à la fin pour rembobiner la bande. Référez-vous au manuel de mt afin de connaître les options disponibles (comme eject).
Si vous n'êtes pas sûr du nom de périphérique du lecteur, utilisez dmesg pour le localiser. Un lecteur de bande peut, par exemple, apparaître ainsi dans dmesg :
st0 at scsibus0 targ 5 lun 0: <ARCHIVE, Python 28388-XXX, 5.28>
Vous avez peut-être noté que, lors d'une sauvegarde, le lecteur est accédé par son nom de périphérique "nrst0" au lieu de "st0" qui apparaît dans dmesg. Lorsque vous accédez st0 à la place de nrst0, vous accédez au même lecteur bande mais en mode "raw" et en lui indiquant de ne pas rembobiner la bande à la fin du travail. Pour sauvegarder plusieurs systèmes de fichiers sur une même bande, soyez certains d'utiliser le périphérique de non-rembobinage ; dans le cas contraire (si vous utilisez rst0), la sauvegarde du système de fichiers précédent sera écrasée à la prochaine écriture sur la bande. Vous pouvez trouver une description plus conséquente de plusieurs lecteurs de bande dans la page de manuel de dump.
Si vous souhaitez écrire un petit script appelé "backup", il pourrait ressembler à celui-ci :
echo " Starting Full Backup..." /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a /sbin/dump -0au -f /dev/nrst0 /dev/rsd0d /sbin/dump -0au -f /dev/nrst0 /dev/rsd0e /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h echo echo -n " Rewinding Drive, Please wait..." mt -f /dev/rst0 rewind echo "Done." echo
Si des sauvegardes nocturnes planifiées sont nécessaires, cron(8) pourra être utilisé pour lancer votre utilitaire de sauvegarde automatiquement.
Il serait également utile de préciser (sur un bout de papier) la taille que devrait avoir chaque système de fichiers. Vous pouvez utiliser "df -h" afin de connaître l'espace actuellement utilisé par chaque partition. En effet, ceci pourra vous aider lorsque votre disque dur tombera en panne et que vous devrez recréer la table de partition sur le nouveau disque.
Restaurer vos données aidera aussi à réduire la fragmentation. Afin d'être sûr de récupérer tous les fichiers, le meilleur moyen de sauvegarder est de redémarrer votre système en mode "single user". Les systèmes de fichiers n'ont pas besoin d'être montés pour être sauvegardés. N'oubliez pas de monter la racine (/) en mode r/w (lecture/écriture) après avoir redémarré en mode "single user" ou dump retournera une erreur lorsqu'il essayera d'écrire les "dumpdates". Au démarrage, entrez "bsd -s" à l'invite de commandes boot> pour lancer le système en mode "single user".
Après avoir sauvegardé votre système de fichiers pour la première fois, il est bon de vérifier rapidement votre bande afin d'être certain que les données sont bien présentes.
Vous pouvez utiliser l'exemple suivant afin de voir le catalogue de fichiers présents sur une bande :
# /sbin/restore -tvs 1 -f /dev/rst0
Cette commande affichera la liste des fichiers présents sur la première partition de la bande. Si l'on se réfère à l'exemple précédent, 1 serait votre système de fichiers racine (/).
Pour afficher se qui est présent sur la deuxième partition vers un fichier, vous utiliserez une commande similaire à :
# /sbin/restore -tvs 2 -f /dev/rst0 > /home/me/list.txt
Pour une table de partition assez simple, 2 serait /usr ; si la vôtre est plus compliquée, 2 pourrait être /var/ ou un autre système de fichiers. L'ordre des séquences est similaire à celui utilisé pour sauvegarder les systèmes de fichiers sur la bande.
Le scénario de l'exemple suivant pourrait être utile si votre disque tombait complètement en panne. Dans le cas où vous ne souhaiteriez récupérer qu'un seul fichier à partir de la bande, référez-vous à la page de manuel de la commande restore et soyez attentifs aux instructions concernant le mode interactif.
Si vous avez bien tout préparé, remplacer un disque et restaurer vos données à partir d'une bande peut être une procédure très rapide. La disquette standard install/boot sous OpenBSD contient déjà l'utilitaire restore ainsi que les exécutables nécessaires au partitionnement de votre nouveau disque et permettant de le rendre bootable. Dans la plupart des cas, cette disquette et votre bande de sauvegarde la plus récente sont tout ce dont vous avez besoin pour remettre votre machine en production.
Après avoir remplacé le disque en panne, suivez les étapes suivantes afin de restaurer vos données :
Démarrez à partir de la disquette install/boot d'OpenBSD. Au menu, choisissez
Shell. Insérez la bande de votre sauvegarde la plus récente bande, en lecture
seule, dans votre lecteur.
En vous aidant de la commande fdisk(8), créez une partition primaire OpenBSD sur le nouveau disque. Par exemple :
# fdisk -e sd0
Référez-vous à l'Utilisation de fdisk(8) sous OpenBSD pour de plus amples informations.
Avec la commande disklabel, recréez votre table de partition OpenBSD à l'intérieur de la partition primaire que vous venez de créer avec fdisk. Par exemple :
# disklabel -E sd0
(N'oubliez pas la partition d'échange, swap, référez-vous à Utilisation de disklabel pour plus d'informations)
Utilisez la commande newfs pour créer un système de fichier vierge sur chaque partition que vous venez de créer. Par exemple :
# newfs /dev/rsd0a # newfs /dev/rsd0h
Monter votre nouvelle partition racine (/) sur /mnt. Par exemple :
# mount /dev/sd0a /mnt
Allez dans le nouveau répertoire racine et démarrez la procédure de restauration. Par exemple :
# cd /mnt # restore -rs 1 -f /dev/rst0
Vous aurez besoin de rendre ce disque bootable, inspirez-vous la commande suivante pour y inscrire un nouveau MBR. Par exemple :
# fdisk -i sd0
En plus d'inscrire un nouveau MBR, vous aurez besoin d'installer les blocs de démarrage afin de pouvoir lancer la machine. Voici un bref exemple :
# cp /usr/mdec/boot /mnt/boot # /usr/mdec/installboot -v /mnt/boot /usr/mdec/biosboot sd0
Votre nouveau système de fichiers racine devrait être suffisamment prêt pour que vous puissiez démarrer dessus et continuer de restaurer le reste de vos systèmes de fichiers. Puisque votre système d'exploitation n'est pas encore complet, soyez sûrs de redémarrer en mode single-user. À l'invite de commandes, effectuez la procédure suivante afin de démonter et redémarrer le système :
# umount /mnt # halt
Retirez la disquette install/boot du lecteur et redémarrez votre machine. À l'invite de commandes de boot d'OpenBSD, lancez les commandes suivantes :
boot> bsd -s
La commande "bsd -s" ordonnera au noyau de démarrer en mode single-user qui ne nécessite que le système de fichiers racine (/).
En admettant que vous ayez effectué correctement les étapes précédentes et que tout se soit bien passé, vous devriez vous retrouver à une invite de commandes vous demandant le chemin d'accès à un shell ou d'appuyer sur entrée. Appuyez sur entrée pour utiliser sh. Ensuite, vous devrez remonter la racine en mode r/w plutôt qu'en lecture seule. Lancez la commande suivante :
# mount -u -w /
Une fois la racine en mode r/w, vous pourrez continuer à restaurer vos autres systèmes de fichiers. Par exemple :
(table de montage simple) # mount /dev/sd0h /usr; cd /usr; restore -rs 2 -f /dev/rst0 (table de montage avancée) # mount /dev/sd0d /var; cd /var; restore -rs 2 -f /dev/rst0 # mount /dev/sd0e /home; cd /home; restore -rs 3 -f /dev/rst0 # mount /dev/sd0h /usr; cd /usr; restore -rs 4 -f /dev/rst0
À la place, vous pourriez utiliser "restore rvsf" ou juste rsf pour voir le nom des fichiers extraits de la sauvegarde.
Pour terminer, après avoir restauré tous vos systèmes de fichiers sur le disque, redémarrez en mode multi-utilisateurs. Si tout s'est déroulé comme prévu, votre système devrait se retrouver dans l'état dans lequel il se trouvait à la date de votre sauvegarde la plus récente et être totalement fonctionnel.
Pour monter une image disque (images ISO, images disques créées avec dd, etc...) sous OpenBSD, vous devez configurer un périphérique vnd(4) . Par exemple, si vous avez une image ISO localisée dans /tmp/ISO.image , voici les étapes nécessaires pour la monter :
# vnconfig vnd0 /tmp/ISO.image # mount -t cd9660 /dev/vnd0c /mnt
Remarquez que, puisqu'il s'agit d'une image ISO-9660 utilisée sur les CDs et DVDs, vous devez spécifier le type cd9660 lors du montage. Ceci est vrai peut importe le type, par exemple, vous devez utiliser ext2fs lors du montage d'images disque Linux.
Pour démonter une image, utilisez les commandes suivantes.
# umount /mnt # vnconfig -u vnd0
Pour plus d'information, référez-vous à la page de manuel de vnconfig(8).
Les transferts IDE DMA supportés par pciide(4) ne sont pas fiables avec plusieurs combinaisons de matériel ancien.
OpenBSD est agressif et tente d'utiliser le mode DMA le plus haut qu'il puisse configurer. Ceci pourrait engendrer une corruption dans le transfert des données sur certaines configurations à cause de certaines puces ("chipsets") de cartes mères, de disques de mauvaise qualité et/ou de la friture sur les câbles. Heureusement, les modes Ultra-DMA protègent les transferts de données avec CRC afin de détecter une éventuelle corruption. Si le CRC de l'Ultra-DMA échoue, OpenBSD affichera un message d'erreur et recommencera l'opération de transfert.
wd2a: aborted command, interface CRC error reading fsbn 64 of 64-79 (wd2 bn 127; cn 0 tn 2 sn 1), retrying
Après plusieurs échecs, OpenBSD fera descendre le mode Ultra-DMA (à priori plus fiable). Lorsqu'un mode Ultra-DMA atteint 0, le mode PIO prendra le relais.
Les erreurs UDMA sont souvent causées par des câbles endommagés ou de mauvaise qualité. C'est pourquoi les câbles devraient être les premiers suspectés si vous avez de nombreuses erreurs de DMA ou des performances dégradées. De plus, il n'est pas conseillé de placer un lecteur de CD-ROM sur la même nappe qu'un disque dur.
Si le remplacement des câbles ne résout pas le problème et qu'OpenBSD n'arrive pas à faire descendre le niveau UDMA, que votre machine se fige ou que vous obtenez trop de messages d'erreur sur la console et dans les logs, vous pouvez forcer le système à utiliser un mode DMA ou UDMA inférieur par défaut. Ceci peut être effectué avec UKC ou config(8) afin de changer les options du périphérique wd(4).
Lorsqu'un système de fichiers est créé avec newfs(8) , un certain montant d'espace disque inaccessible aux utilisateurs est réservé. Cela permet d'avoir une marge d'erreur en cas de remplissage accidentel du disque et de garder la fragmentation au minimum. Par défaut, l'espace réservé correspond à 5% de la capacité du disque ce qui signifie que si root a imprudemment rempli le disque, vous pouvez vous retrouver avec 105% de capacité disponible utilisée.
Si une valeur de 5% ne vous semble pas appropriée, vous pouvez la changer avec la commande tunefs(8).
Si vous avez une table de partitions endommagée, vous disposez de plusieurs moyens afin d'essayer de la récupérer.
Premièrement, paniquez. Vous le faites relativement souvent, et ceci devrait donc bien se passer. Cependant, ne faites rien de stupide. Paniquez à l'écart de votre machine. Ensuite, relaxez-vous, et voyez si les étapes suivantes ne pourraient pas vous aider.
Une copie de votre disklabel est sauvegardée pour chaque disque dans /var/backups via la maintenance système journalière. À condition d'avoir encore votre partition var, vous pouvez simplement lire la sortie, et la réintégrer dans disklabel.
Dans le cas où vous ne pouvez plus voir cette partition, il y a deux options. Corriger une assez grande partie du disque afin de la voir, ou fixer une partie suffisamment grande du disque afin de pouvoir récupérer vos données. Selon ce qui s'est passé, l'une ou l'autre de ces deux solutions serait préférable (avec des disques mourants vous voudrez en premier les données, avec des doigts mouillés vous ne pourrez avoir que le label).
Le premier bon outil dont vous avez besoin est scan_ffs(8) (remarquez l'underscore, il ne s'appelle pas "scanffs"). scan_ffs(8) regardera au travers du disque, et essaiera de trouver les partitions, en vous avertissant des informations qu'il trouve sur celles-ci). Vous pouvez utiliser ces informations pour recréer le disklabel. Si vous voulez uniquement restaurer /var, vous pouvez recréer la partition pour /var, et ensuite récupérer le label et ajouter le reste.
disklabel(8) mettra à jour à la fois la compréhension du disklabel par le noyau, et essaiera également d'écrire le label sur le disque. Ainsi, même si la partie du disque qui contient le disklabel est illisible, vous serez en mesure de la monter avec mount(8) jusqu'au prochain redémarrage.
Nous allons donner un aperçu sur la façon d'utiliser un de ces systèmes de fichiers sous OpenBSD. Afin d'utiliser un système de fichiers, celui-ci doit être monté. Pour plus de détails sur les options de montage, référez-vous au manuel de mount(8) ainsi qu'à celui correspondant au système de fichiers que vous souhaitez monter. Par exemple, mount_msdos, mount_ext2fs, ...
Tout d'abord, vous devez connaître le périphérique sur lequel votre système de fichiers est présent. Cela peut être tout simplement votre disque dur, wd0 ou sd0, mais ça n'est pas toujours évident. Tous les périphériques reconnus et configurés par votre système apparaissent dans la sortie de la commande dmesg(1) : un nom de périphérique, suivi par une ligne descriptive. Ainsi, mon premier CD-ROM est reconnu de la façon suivante :
cd0 at scsibus0 targ 0 lun 0: <COMPAQ, DVD-ROM LTD163, GQH3> SCSI0 5/cdrom removable
Afin d'obtenir une liste beaucoup plus courte des disques disponibles, vous pouvez utiliser sysctl(8). La commande
affichera tous les disques reconnus par votre système, par exemple :# sysctl hw.disknames
hw.disknames=cd0:,cd1:,wd0:,fd0:,cd2:
À présent, il est temps de déterminer quelles partitions sont présentes sur le périphérique et sur quelle partition le système de fichiers qui nous intéresse est présent. Nous examinerons le périphérique en utilisant disklabel(8). Le 'disklabel' comporte une liste de partitions, 16 au maximum. La partition c désigne toujours le périphérique dans son ensemble. Les partitions a-b et d-p sont utilisées par OpenBSD. Les partitions i-p peuvent être allouées automatiquement aux systèmes de fichiers d'autres systèmes d'exploitation. Dans notre cas, j'analyserai le 'disklabel' de mon disque dur qui contient un certain nombre de systèmes de fichiers.
REMARQUE : OpenBSD a été installé après les autres systèmes d'exploitation sur cette machine et pendant l'installation, le disklabel contenant les partitions pour systèmes de fichiers natifs et étrangers a été installé. Cependant, si vous ajoutez des systèmes de fichiers étrangers après l'installation du disklabel d'OpenBSD vous devrez probablement les ajouter ou les modifier ultérieurement. Cette procédure est expliquée ici.
# disklabel wd0 # using MBR partition 2: type A6 off 20338290 (0x1365672) size 29318625 (0x1bf5de1) # /dev/rwd0c: type: ESDI disk: ESDI/IDE disk label: ST340016A duid: d920a43a5a56ad5f flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 16 sectors/cylinder: 1008 cylinders: 16383 total sectors: 78165360 boundstart: 20338290 boundend: 49656915 drivedata: 0 16 partitions: # size offset fstype [fsize bsize cpg] a: 408366 20338290 4.2BSD 2048 16384 16 # / b: 1638000 20746656 swap c: 78165360 0 unused d: 4194288 22384656 4.2BSD 2048 16384 16 # /usr e: 409248 26578944 4.2BSD 2048 16384 16 # /tmp f: 10486224 26988192 4.2BSD 2048 16384 16 # /var g: 12182499 37474416 4.2BSD 2048 16384 16 # /home i: 64197 63 unknown j: 20274030 64260 unknown k: 1975932 49656978 MSDOS l: 3919797 51632973 unknown m: 2939832 55552833 ext2fs n: 5879727 58492728 ext2fs o: 13783707 64372518 ext2fs
Comme on peut le constater, les partitions OpenBSD sont affichées en premier. Puis l'on peut voir un certain nombre de partitions ext2, une partition MSDOS ainsi que plusieurs partitions inconnues ('unknown'). Sous i386 ou amd64, vous pouvez généralement en savoir plus sur celles-ci en utilisant l'utilitaire fdisk(8). Pour le lecteur curieux, la partition i est une partition de maintenance créée par le revendeur, la partition j est une partition NTFS et la partition l est une partition d'échange Linux ('Linux swap').
Après avoir déterminée la partition que vous souhaitez utiliser, vous pouvez enfin monter le système de fichiers qu'elle contient. La plupart des systèmes de fichiers sont supportés par de noyau GENERIC : référez-vous à son fichier de configuration situé dans le répertoire /usr/src/sys/arch/<arch>/conf. Si vous souhaitez utiliser un de ces systèmes de fichiers, vous devrez recompiler votre noyau.
Une fois les informations nécessaires entre vos mains, il est temps de monter le système de fichiers. Imaginons que le répertoire /mnt/otherfs existe, nous l'utiliserons pour monter le système de fichiers souhaité. Dans l'exemple suivant, nous monterons un système de fichiers ext2 dans la partition m :
# mount -t ext2fs /dev/wd0m /mnt/otherfs
Si vous souhaitez utiliser ce système de fichiers régulièrement, vous gagnerez du temps en insérant la ligne suivante dans votre fichier /etc/fstab :
Notez les valeurs 0 dans les cinquièmes et sixièmes champs. Cela indique que nous ne souhaitons pas que le système de fichiers soit sauvegardé (avec dump) ni vérifié avec fsck. Généralement, il est préférable de laisser le système d'exploitation associé à ces systèmes de fichiers s'occuper de cela./dev/wd0m /mnt/otherfs ext2fs rw,noauto,nodev,nosuid 0 0
Pour prendre un exemple, j'ai modifié une de mes partitions ext2 existantes : en utilisant le programme fdisk de Linux, j'ai réduit la taille de la partition 'o' (voir la sortie de disklabel plus haut) à 1Go. Il sera facile de la reconnaître grâce à sa position de départ (offset: 64372518) et sa taille (13783707) sur le disque. Notez que ces valeurs sont exprimées en numéros de secteurs (et pas en mégaoctets ou autre mesure) et qu'utiliser de tels nombres reste le moyen le plus sûr et le plus précis d'obtenir ces informations.
Avant notre changement, la partition ressemblait à ceci (en utilisant le fdisk(8) d'OpenBSD et en ne gardant que ce qui nous intéresse) :
# fdisk wd0
. . .
Offset: 64372455 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
------------------------------------------------------------------------
0: 83 4007 1 1 - 4864 254 63 [ 64372518: 13783707 ] Linux files*
. . .
Comme vous pouvez le voir, la position de départ et la taille sont
exactement les mêmes que celles rapportées précédemment par
disklabel(8) (ne vous méprenez pas sur par la valeur indiquée par
"Offset" : il s'agit de la position de départ de la partition étendue à
laquelle la partition ext2 fait partie).
Après avoir changé la taille de la partition sous Linux, elle ressemble à ceci :
# fdisk wd0
. . .
Offset: 64372455 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
------------------------------------------------------------------------
0: 83 4007 1 1 - 4137 254 63 [ 64372518: 2104452 ] Linux files*
. . .
Ceci doit être changé par disklabel(8). Vous pouvez, par exemple,
utiliser disklabel -e wd0 qui lancera l'éditeur correspondant à
la variable d'environnement EDITOR (par défaut il s'agit de vi). Une
fois dans l'éditeur, changez la dernière ligne du disklabel afin qu'elle
corresponde à la nouvelle taille :
Pour terminer, enregistrez le disklabel sur le disque. À présent que le disklabel est à jour, vous devriez pouvoir monter vos partitions comme indiqué précédemment.o: 2104452 64372518 ext2fs
Vous pouvez suivre une procédure similaire afin d'ajouter de nouvelles partitions.
Ces lignes indiquent que le pilote umass(4) (périphérique de masse USB -'USB mass storage') à été rattaché au périphérique mémoire et qu'il utilise le système SCSI. Les deux dernières lignes sont les plus importantes : elles indiquent sur quel fichier de périphérique le matériel a été rattaché ainsi que le montant total d'espace de stockage. Si vous avez manqué ces lignes, vous pouvez vous y référez plus tard à l'aide de la commande dmesg(1). La géométrie CHS est fictive puisque le périphérique USB est traité comme un disque SCSI classique.umass0 at uhub1 port 1 configuration 1 interface 0 umass0: LEXR PLUG DRIVE LEXR PLUG DRIVE, rev 1.10/0.01, addr 2 umass0: using SCSI over Bulk-Only scsibus2 at umass0: 2 targets sd0 at scsibus2 targ 1 lun 0: <LEXAR, DIGITAL FILM, /W1.> SCSI2 0/direct removable sd0: 123MB, 512 bytes/sec, 251904 sec total
Nous allons voir deux scénarios possibles.
Dans cet exemple, je ne vais créer qu'une seule partition a dans laquelle je placerai un système de fichiers FFS :
# newfs sd0a
Warning: inode blocks/cyl group (125) >= data blocks (62) in last
cylinder group. This implies 1984 sector(s) cannot be allocated.
/dev/rsd0a: 249856 sectors in 122 cylinders of 64 tracks, 32 sectors
122.0MB in 1 cyl groups (122 c/g, 122.00MB/g, 15488 i/g)
super-block backups (for fsck -b #) at:
32,
Montons le système de fichiers créé dans la partition a sur
/mnt/flashmem. Si le point de montage n'existe pas, créez-le.
# mkdir /mnt/flashmem # mount /dev/sd0a /mnt/flashmem
Il y a une grande chance que la personne en question n'utilise pas OpenBSD, ce qui signifie qu'un système de fichiers étranger doit être présent sur le périphérique. Nous allons donc devoir découvrir quelles partitions sont présentes, comme décrit dans la section précédente : Est-il possible d'accéder aux données présentes sur des systèmes de fichiers autres que FFS ?.
Le 'disklabel' nous apprend qu'il n'y a qu'une seule partition i, contenant un système de fichiers FAT créé sur une machine Windows. Comme d'habitude, la partition c représente l'ensemble du disque.# disklabel sd0 # /dev/rsd0c: type: SCSI disk: SCSI disk label: DIGITAL FILM flags: bytes/sector: 512 sectors/track: 32 tracks/cylinder: 64 sectors/cylinder: 2048 cylinders: 123 total sectors: 251904 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: 251904 0 unused 0 0 # Cyl 0 - 122 i: 250592 32 MSDOS # Cyl 0*- 122*
À présent, nous allons monter le système de fichiers présent dans la partition i vers /mnt/flashmem.
Vous pouvez désormais l'utiliser comme n'importe quel autre disque.# mount -t msdos /dev/sd0i /mnt/flashmem
ATTENTION : Vous devriez toujours démonter le système de fichiers avant de débrancher le périphérique de masse. Si vous ne le faites pas, le système de fichiers pourrait être laissé dans un état inconsistant ce qui aurait pour résultat d'avoir des données corrompues.
Après avoir débranché le périphérique de votre machine, vous verrez à nouveau des messages du noyau sur la console :
umass0: at uhub1 port 1 (addr 2) disconnected sd0 detached scsibus2 detached umass0 detached
Un périphérique flash attaché à un port USB sera visible comme un périphérique SCSI sd(4). Attaché à une adaptateur IDE, il sera visible comme un périphérique wd(4).
Dans le cas d'un média flash dans un adaptateur IDE, il pourra être démarré de tout système qui peut démarrer un disque dur IDE sur le même adaptateur. D'un certain sens, le système voit le média flash comme un disque IDE. Configurez simplement le matériel de manière appropriée, et installez OpenBSD sur le disque flash comme d'habitude.
Dans le cas de démarrage d'un périphérique USB, votre système doit être capable de démarrer d'un périphérique USB sans être distrait par un autre périphérique sur le système. Il faut remarquer que si votre intention est de faire un environnement portable de démarrage sur un périphérique USB, vous préférerez vraiment utiliser les DUIDs, plus que la traditionnelle notation "/dev/sd0X". Le périphérique USB va apparaître comme un disque SCSI, parfois sd0. Sans les DUIDs, si vous branchez ce périphérique dans un système ayant déjà quelques disques de type SCSI (i.e., périphériques attachés à une interface ahci(4)) branchés, il se terminera probablement par un identifiant différent, ce qui compliquera l'utilisation de ce périphérique flash de système en système, vous devriez donc mettre à jour /etc/fstab. L'utilisation des DUIDs résout ce problème.
Quelques remarques :
Des raisons pour lesquelles vous voudriez le faire :
Il y a certaines choses que vous voudrez faire après l'installation pour améliorer vos résultats :
La performance des disques est un facteur significatif de la vitesse globale de votre machine. Ce facteur devient de plus en plus important quand votre machine héberge un environnement multi utilisateur (des utilisateurs de toutes les catégories tels que les utilisateurs qui se connectent de manière interactive et les utilisateurs qui voient votre machine comme un serveur de fichiers ou un serveur Web). Le stockage de données demande une attention constante et particulièrement quand vos partitions ne contiennent plus d'espace libre ou quand vos disques ne fonctionnent plus. OpenBSD possède peu d'options pour augmenter la vitesse des opérations sur disque.
Question : "Je fais simplement "mount -u -o async /" ce qui rend un paquetage dont j'ai besoin (qui touche à une centaine de chose de temps à autre) utilisable. Pourquoi le montage asynchrone n'est pas vu d'un bon il et n'est pas activé par défaut (comme c'est le cas sur d'autres versions d'Unix) ? C'est un mécanisme sûrement plus simple et plus sûr d'améliorer les performances de certaines applications."
Réponse : "les montages asynchrones sont en effet plus rapides que des montages synchrones, mais ils sont aussi moins sûrs. Qu'arrive-t-il dans le cas d'une panne de courant ? Ou un problème matériel ? la quête de la vitesse ne doit pas sacrifier la fiabilité et la stabilité du système. Reportez-vous à la page du manuel de mount(8)."
async All I/O to the file system should be done asynchronously.
This is a dangerous flag to set since it does not guaran-
tee to keep a consistent file system structure on the
disk. You should not use this flag unless you are pre-
pared to recreate the file system should your system
crash. The most common use of this flag is to speed up
restore(8) where it can give a factor of two speed in-
crease.
D'un autre côté, quand vous travaillez avec des données temporaires que vous pouvez recréer après un plantage, vous pouvez gagner en vitesse en utilisant une partition à part montée en asynchrone, utilisée uniquement pour ce type de données. Encore une fois, n'effectuez cette opération que si vous ne voyez pas d'inconvénient à perdre toutes les données de cette partition si quelque chose va mal. Pour cette raison, les partitions mfs(8) sont montées en mode asynchrone vu que de toute façon, elles vont être écrasées et recréées après un redémarrage.
[Index de la FAQ] [Section 13 - Multimédia] [Section 15 - Paquetages et Ports]