BigAdmin System Administration Portal
Article envoyé à la communauté
Print-friendly VersionPrint-friendly Version
This content is submitted by a BigAdmin user. It has not been reviewed for technical accuracy by Sun Microsystems, though it may have been lightly edited to improve readability. If you find an error or would like to comment on the article, please contact the submitter or use the comment field at the bottom of the article. Community submissions may not follow Sun trademark guidelines. For information on Sun trademarks, please see http://www.sun.com/suntrademarks/.
 
 

L'utilitaire 'format' dans le système d'exploitation Solaris

Greg (shoe) Schuweiler, novembre 2004

Pour beaucoup, un disque dur est une "boîte noire" considéré comme un petit périphérique qui stocke des données, des programmes et/ou un système d'exploitation. Cette approche n'est pas critiquable, dans la mesure bien entendu où cela résume votre intérêt. Mais en qualité d'administrateur système, l'une de vos principales préoccupations doit être la protection des données. Une autre préoccupation dans la catégorie des hautes priorités doit être le mouvement efficace des données entre la mémoire et le disque physique. Dans cet article, je souhaite étudier l'un des utilitaires de base disponible dans le SE Solaris : format.

L'utilitaire format qui sert à gérer les tranches sur un disque a été écrit à l'origine pour administrer les disques connectés en SCSI ; par conséquent les performances peuvent varier avec les disques connectés via IDE. Si vous disposez des pilotes appropriés correctement configurés, vous devez pouvoir administrer également des unités rattachées par fiber channel ou des LUN présentés par des moteurs RAID.

Parallèlement à format, j'aborde d'autres commandes de deux types : non destructives et destructives. Je place toujours les commandes destructives en gras et en italique, et les fais précéder du terme Avertissement. Par exemple : exécution «Avertissement : cd / ; rm –r * » comme racine détruira réellement votre disque système.

Un autre avertissement : les commandes non destructives le sont, mais il vous appartient de décider de les exécuter ou non sur votre système. Les commandes destructives détruisentles données d'un disque ; ne les exécutez que si vous êtes certain de savoir ce que vous faites.

Voici les commandes que j'utilise dans cet article : format, prtvtoc, dd, od, cat et fmthard. Pour commencer, j'aimerais définir la terminologie relative au disque que j'utilise.

Étiquette de disque
Cette zone spéciale contient des informations sur le disque, comme sa géométrie et ses tranches. Elle est également appelée table des matières du volume (VTOC). L'étiquette du disque est constituée des 512 premiers octets sur le disque. La plupart des disques sont désormais étiquetés en usine.

Liste des défauts :
Il s'agit de la liste des zones du disque qui ne peuvent être ni écrites ni lues. Il existe toujours une liste de défauts du fabricant et, comme nous le verrons, une liste "accrue", qui est une liste de défaut qui s'accroît avec le temps.

Table de partition :
Une partie de la VTOC du disque est la table de partition, qui contient les tranches du disque (également appelées partitions), les limites des tranches et leur taille. Une tranche se compose d'une plage de blocs contigus sur un disque. Un disque compte huit tranches [0-7] sauf si vous étiquetez le disque avec un Extensible Firmware Interface Label (EFI) -- je vous en dirai plus à ce sujet ultérieurement. Dans la plupart des cas, la tranche 2 n'est pas utilisée car elle représente le disque entier.

Gardez les points suivants à l'esprit en lisant cet article :

  • Chaque tranche de disque ne peut contenir qu'un seul système de fichiers.
  • Un système de fichiers ne peut pas s'étendre sur plusieurs tranches (en supposant qu'aucun gestionnaire de volume logique n'est utilisé).
  • Après la création d'un système de fichiers, sa taille ne peut pas être modifiée sans recommencer la partition complète du disque.
  • Les tranches ne peuvent pas s'étendre sur plusieurs disques. (Dans le cas d'un moteur RAID prenant n disques et les présentant au système comme un seul disque, l'utilitaire format ne voit qu'un seul disque.)

J'espère que vous avez un système muni d'un disque avec lequel vous pouvez jouer, car j'aimerais que cet article soit interactif. Choisissez tout d'abord le disque que vous allez utiliser avec format :

r_gps@holstein: format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
0.c0t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  boot
  /pci@1f,4000/scsi@3/sd@0,0
1.c0t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  home
  /pci@1f,4000/scsi@3/sd@1,0
2.c2t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  trashme
  /pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0
Specify disk (enter its number):

Vous pouvez tapez 'quit' pour quitter ou sauvegarder un menu ou <Cntrl-D>, qui ferme complètement l'utilitaire format. Dans mon cas, j'utilise "AVAILABLE DISK SELECTION 2". Comme je l'ai déjà mentionné, si vous achetez des disques chez Sun ou un revendeur d'équipement Sun, les disques sont déjà munis d'une étiquette. Mais si vous êtes dans un environnement hétérogène et que vous déplacez les disques SCSI, évidemment, une unité de 36 Go d'un serveur HP, AIX ou Windows possède une étiquette de disque méconnaissable (en tous cas pour le SE Solaris), et vous devez ajouter une étiquette. Pour commencer par la base et s'amuser un peu, je vais détruire l'étiquette du disque sur lequel je travaille :

« Warning: echo "adios data" | dd of=/dev/dsk/c2t1d0s2 bs=1 count=512 »

Ainsi, la commande format donne désormais ce qui suit :

r_gps@holstein: format
Searching for disks...done

c2t1d0: configured with capacity of 33.92GB

AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  boot
          /pci@1f,4000/scsi@3/sd@0,0
       1. c0t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  home
          /pci@1f,4000/scsi@3/sd@1,0
       2. c2t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
          /pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0
Specify disk (enter its number): 2
selecting c2t1d0
[disk formatted]
Disk not labeled. Label it now?

Ici, vous tapez 'y' si vous souhaitez étiqueter le disque, ce qui est une bonne idée car il devient ainsi utilisable pour le SE Solaris. Quittez ensuite la commande format et utilisez prtvtoc pour regarder les informations de géométrie et de partition du disque :

r_gps@holstein: prtvtoc /dev/dsk/c2t1d0s2                            
* /dev/dsk/c2t1d0s2 partition map
*
* Dimensions:
*       512 bytes/sector
*       107 sectors/track
*         27 tracks/cylinder
*     2889 sectors/cylinder
*   24622 cylinders
*   24620 accessible cylinders
*
* Flags:
*   1: unmountable
*  10: read-only
*
*                          First        Sector       Last
* Partition  Tag  Flags    Sector        Count       Sector     Mount Directory
   0	       2    00	   0		262899	     262898
   1	       3    01	   262899	262899	     525797
   2	       5    01	   0		71127180     71127179
   6	       4    00	   525798	70601382     71127179

Vous pouvez obtenir un certain nombre d'informations similaires à partir de la commande format, mais cette sortie montre que les quatre partitions existent. La colonne Balise montre que nous avons les partitions racine (2), swap (3), sauvegarde (5) et utilisateur (4). La colonne Indicateur montre que deux partitions sont montables, avec lecture et écriture (00), et deux partitions sont non montables (01). Pour chaque partition, la colonne Premier secteur indique où commence la partition, le Compteur de secteur indique le nombre de secteurs et le Dernier secteur indique l'emplacement de celui-ci dans la partition. Si nous avions un système de fichiers monté, le Répertoire de montage nous indiquerait où la partition a été montée. Avant de progresser davantage dans la destruction et la réparation, voyons ce que la commande format nous indique à propos du disque étiqueté. Exécutez la commande suivante :

r_gps@holstein: format /dev/rdsk/c2t1d0s2

A l'invite format, tapez partition, puis dans le menu partition, tapez print. Vous obtiendrez la table suivante :

Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part    Tag     Flag     Cylinders        Size       Blocks
  0     root	  wm	0 - 90     	128.37MB  (91/0/0)        262899
  1        swap	  wu	91 - 181      	128.37MB  (91/0/0)        262899
  2       backup  wu	0 - 24619       33.92GB	  (24620/0/0)   71127180
  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          usr  wm	182 - 24619      33.67GB   (24438/0/0)  70601382
  7   unassigned  wm	0      	0       (0/0/0)         0

partition>

Nous avons certaines de ces informations, comme avec la commande prtvtoc. Le format est légèrement différent, et nous voyons les partitions inutilisées. Vous aurez peut-être remarqué que j'indique à format quel disque je compte utiliser. Ceci dans le but d'éviter de créer accidentellement des problèmes avec les autres disques du système que j'utilise pour expérimenter. Une autre méthode pour regarder l'étiquette du disque consiste à la vider à l'aide de la commande dd :

r_gps@holstein: dd if=/dev/dsk/c2t1d0s2 of=wart.bin bs=512 count=1  
1+0 records in
1+0 records out

Nous obtenons ainsi un fichier binaire sur lequel nous pouvons utiliser la commande od.

r_gps@holstein: od -x wart.bin
0000000 5355 4e33 3647 2063 796c 2032 3436 3230
0000020 2061 6c74 2032 2068 6420 3237 2073 6563
0000040 2031 3037 0000 0000 0000 0000 0000 0000
0000060 0000 0000 0000 0000 0000 0000 0000 0000
*
0000200 0000 0001 0000 0000 0000 0000 0008 0002
0000220 0000 0003 0001 0005 0001 0000 0000 0000
0000240 0000 0000 0000 0004 0000 0000 0000 0000
0000260 0000 0000 0000 0000 0000 0000 600d deee
0000300 0000 0000 0000 0000 0000 0000 0000 0000
*
0000640 0000 0000 2729 602e 0000 0000 0000 0001
0000660 602c 0002 001b 006b 0000 0000 0000 0000
0000700 0004 02f3 0000 005b 0004  02f3  0000 0000
0000720 043d 508c 0000 0000 0000 0000 0000 0000
0000740 0000 0000 0000 0000 0000 0000 0000 00b6
0000760 0435 4aa6 0000 0000 0000 0000 dabe 4297
0001000

Le vidage octal contient beaucoup d'informations, et un excellent document Sun aborde ce sujet -- Je ne souhaite pas dupliquer ces informations. Recherchez le Document 74087 dans SunSolve. Il convient de noter que od évite toujours de répéter les lignes (le *), VTOC_SANE correspond toujours à 0x600ddeee au décalage 0xbc, et DKL_MAGIC correspond toujours à 0xdabe au décalage 0x1fc juste avant la somme de contrôle. Maintenant que notre disque est étiqueté, que pouvons-nous (et que peut la commande format) en faire ? Regardez d'abord la liste du menu ci-dessous. A l'exception de l'option volname, je vais commencer par les options du menu format non destructives. Ces options figurent ci-dessous en gras.

r_gps@holstein: format /dev/rdsk/c2t1d0s2
selecting /dev/rdsk/c2t1d0s2
[disk formatted]

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

J'aime donner à chaque disque un nom de volume pour mieux personnaliser le système. Ceci est également très utile si vous avez plusieurs systèmes pointant vers les mêmes unités de disque, ce qui peut être le cas dans un cluster haute disponibilité. J'ai vu plus de 120 disques présentés par deux moteurs RAID, tous visibles par 15 systèmes dans un cluster VERITAS. Attribuer un nom de volume à chaque disque aide à identifier ceux qui ont déjà été utilisés. Les disques sans nom de volume son inutilisés. A noter lorsque vous utilisez l'option de menu volname, comme illustré dans l'exemple suivant :

format> volname
Enter 8-character volume name (remember quotes)[""]:"pigsnot"
Ready to label disk, continue? y

format>

L'option volname efface l'étiquette du disque. Je l'ai fait sur des disques avec des systèmes de fichiers montés et contenant des données valides. La première fois, c'était par accident. La terre ne s'est pas arrêtée de tourner. J'ai donc fait quelques tests sur des unités de disque, en changeant le nom de volume de disques avec des systèmes de fichiers montés et d'autres sans. Bien que l'étiquette change, je n'ai jamais perdu de données. Bien entendu les déclarations de non responsabilité standard s'appliquent : "Votre kilométrage peut varier -- à vos risques et périls -- aucune responsabilité acceptée pour les coquilles, et ainsi de suite.'"

L'option disk vous permet de changer les disques au sein de l'utilitaireformat, mais comme j'ai sélectionné le disque que je veux utiliser, il ne me montre que ce disque.

format> disk

AVAILABLE DISK SELECTIONS:
       0. /dev/rdsk/c2t1d0s2 <SUN36G cyl 24620 alt 2 hd 27 sec 107> pigsnot
          /pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0
Specify disk (enter its number)[0]:

L'option current indique le disque actuel sélectionné après le démarrage de la commande format. J'ai utilisé ce disque 2 pour les besoins de cet article, et l'option current indique ce qui suit :

Current Disk = c2t1d0: pigsnot
<SUN36G cyl 24620 alt 2 hd 27 sec 107>
/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0

L'option current indique l'emplacement physique du disque dans la dernière ligne. Vous devez faire précéder l'emplacement physique par /devices, et une lettre représente le numéro de partition.

r_gps@holstein: ls /devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0*

/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:a
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:a,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:b
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:b,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:c
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:c,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:d
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:d,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:e
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:e,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:f
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:f,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:g
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:g,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:h
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:h,raw

Le nom du périphérique physique avec le terme "raw" est le périphérique de caractère, et l'autre de périphérique de bloc. La lettre 'a' correspond à la partition 0, la lettre 'b' à la partition 1, et ainsi de suite.

L'option defect ouvre le menu Defect, qui permet de voir le nombre de défauts du disque lorsqu'il a quitté l'usine. Utilisez l'option principale pour le voir. Les trois disques sur mon bureau ont une page de défaut principal de 72 à 2922. Mais nous sommes davantage intéressés par l'option grown. Les défaut "accrus" sur un disque peuvent augmenter dans le temps ; notre préoccupation concerne le taux d'augmentation. Évidemment, si les défauts augmentent selon un rythme rapide, vous êtes peut-être en présence d'une défaillance imminente du disque.

L'option print fournit une liste des défauts et de leur emplacement sur le disque. Vous pouvez aussi vider (enregistrer) la liste de défauts dans un fichier. Je l'ai fait sur de courtes périodes sur un disque suspect.

L'option verify fournit un grand nombre d'informations que nous avons déjà eues avec la commande prtvtoc et en affichant les partitions avec la commande format.

format> verify

Primary label contents:

Volume name 	= < pigsnot>
ASCII name  	= <SUN36G cyl 24620 alt 2 hd 27 sec 107>
pcyl        	= 24622
ncyl        	= 24620
acyl        	=    2
nhead       	=   27
nsect       	=  107
Part   Tag   	 Flag   Cylinders       Size       	Blocks
  0        root  wm	0 - 90        128.37MB	 (91/0/0)         262899
  1        swap  wu	91 - 181      128.37MB	 (91/0/0)         262899
  2      backup  wu	0 - 24619      33.92GB	 (24620/0/0) 	71127180
  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         usr  wm	182 - 24619    33.67GB   (24438/0/0)    70601382
  7   unassigned wm	0      	0     (0/0/0)    0

L'option save écrit un fichier format.dat (ou tout autre nom que vous lui attribuez). Ce fichier dat constitue des informations que la commande format peut utiliser pour la configuration de l'unité. (Voir man -s4 format.dat pour plus d'informations sur ce fichier.) Si vous placez le nouveau fichier format.dat dans une fenêtre et que vous utilisez la commande verify dans une autre fenêtre, vous verrez un grand nombre des mêmes informations, mais dans un format différent ou, pour certains, un format plus lisible. Vous trouvez une information supplémentaire dans le fichier format.dat créé avec l'option save : la vitesse de rotation du disque.

#
# New disk/partition type  saved on Fri Aug  6 06:34:05 2004
#
disk_type = "SUN36G" \
         : ctlr = SCSI : ncyl = 24620 : acyl = 2 : pcyl = 24622 \
         : nhead = 27 : nsect = 107 : rpm = 10025
...

Enfin, l'option inquiry figure dans notre liste d'options utilisées pour recueillir des informations sur le disque. Elle fournit les informations de base notées ci-dessous.

format> inq
Vendor:   FUJITSU 
Product:  MAN3367M SUN36G 
Revision: 1502
format>

Le niveau de révision doit être noté. Les mises à jour du microprogramme ressortent pour les unités de disque. Cette option vous permet de comparer les niveaux de révision de vos disques avec ce qui est disponible auprès du fournisseur. J'ai eu des fournisseurs qui mettent à jour le microprogramme sur les disques de leurs grandes baies RAID, mais ils le font à la volée. J'ai mis à jour le microprogramme sur des disques SCSI une ou deux fois, il y a longtemps. Mais je ne le fais plus -- principalement en raison du nombre de disques dans les environnements actuels et du temps total d'indisponibilité nécessaire. (Et de ce vieil adage, "Ne pas réparer quelque chose qui fonctionne," parfois très sensé.) Je n'ai pas trouvé comment faire la mise à niveau sans temps d'indisponibilité. Pour le moment.

L'un des côtés plaisants de la commandeformat est que vous pouvez la placer dans un fichier de commande. Par exemple, nous pouvons utiliser le fichier de commande suivant pour enregistrer la liste des défauts dans un fichier :

defect
both
dump /disks/c2t1d0-defect.dat

r_gps@holstein: format -f c2t1d0.cmd /dev/rdsk/c2t1d0s2

Mais en raison de la puissance destructive de la commande format, nous ne pouvons pas la passer en fichier de commande si des partitions sont montées sur le disque. Si cela peut vous être utile, vous pouvez utiliser Perl et Expect pour obtenir ces informations.

Avertissement : J'ai reproduit le menu format et, en regardant les options restantes, il s'agit des options capables de détruire les données sur un disque. N'oubliez pas d'agir avec prudence, car ce sont vos données que vous détruisez.

r_gps@holstein: format /dev/rdsk/c2t1d0s2
selecting /dev/rdsk/c2t1d0s2
[disk formatted]

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

L'option typeest rarement utilisée de nos jours. Elle était beaucoup utilisée lorsque les disques (principalement non SCSI) n'embarquaient pas toujours les informations les concernant. Les administrateurs d'anciens systèmes se souviennent de la saisie des informations telles que cylindres, cylindres alternatifs, cylindres physiques, nombre de têtes, nombre physique de têtes, nombre de secteurs/pistes de données et une foule d'autres éléments. Pour un grand nombre d'entre elles, nous prenions la valeur par défaut car parfois nous ne pouvions tout simplement pas trouver les informations. Les fournisseurs de disques -- qui étaient beaucoup plus nombreux à l'époque -- étaient très jaloux de leurs informations exclusives. Parfois nous faisons des essais de valeurs jusqu'à obtenir un résultat correct. Vous pouvez jouer à ce jeu, mais enregistrez auparavant toutes les informations concernant votre disque recueillies plus haut. Oui, ces informations doivent être dans un genre de dispositif en lecture seule sur le disque, mais il vaut mieux être prudent que de travailler jusqu'au petit matin. Vous pouvez en avoir besoin pour redéfinir les paramètres du disque sur les valeurs correctes, en particulier si vous utilisez un disque ancien.

Les unités pour lesquelles nous devions pratiquer ainsi s'appelaient IPI et SMD. Essayez de faire une recherche sur Google avec unité de 'disque ipi smd' pour connaître l'historique et découvrir où vous pouvez encore acheter ce type d'unités si cela vous intéresse.

L'option partition est probablement la plus utilisée dans l'utilitaireformat. La sélection de cette option démarre le menu Partition, à partir duquel vous pouvez modifier les partitions d'un disque. N'oubliez pas que la deuxième partition (la partition numéro 2), appelée partition de sauvegarde, représente le disque entier. Il ne faut pas modifier la partition de sauvegarde. Toutefois, il existe de rares cas dans lesquels vous créez un système de fichiers sur la partition de sauvegarde et ne montez que cela -- en général avec les bases de données. Mais sachez que c'est une mauvaise idée. Si vous utilisez un logiciel qui se rattache à une partition sur un disque, vous pouvez rencontrer des problèmes. J'ai travaillé avec une application dans ce cas, et la maintenance, les mises à niveau etc. étaient un cauchemar. Si les fournisseurs ne sont pas attentifs, lorsque leur produit doit utiliser la tranche 2, le logiciel peut saccager la VTOC.

Un domaine dans lequel je ne suis pas du tout d'accord avec Sun commence maintenant à émerger. Par exemple, dernièrement Sun et les ingénieurs Sun Systems (SE) que je connais ont recommandé une partition racine et une autre partition pour tout le reste sur le disque système. Balivernes ! Chaque tranche d'un disque est considérée comme un disque séparé par le SE ; alors avant de partitionner notre disque d'essai, voyons pourquoi je ne suis pas d'accord avec Sun sur ce point. Vous n'êtes pas obligés d'être d'accord avec moi -- vous pouvez même rédiger votre propre article !

Qu'advient-il si / (root) se remplit car une application se détraque (remplissant /var/tmpà son tour) ? Ceci ne fera aucun mal au SE, ni même peut-être à l'application responsable. Mais en même temps, cela peut arrêter tout traitement jusqu'à ce que l'application responsable soit corrigée. Il nous faut donc une partition pour construire un système de fichiers et monter /. Sun et moi sommes d'accord sur ce point : une partition. Mais nous devons aussi placer cette /var sur un système de fichiers distinct. Il nous faut donc une autre partition pour /var. Deux partitions. Je place aussi /usr dans une partition distincte. Le système de fichiers /usr ne doit contenir que des fichiers exécutables et ASCII. Trois partitions. Les éléments que j'ai placés dans /opt n'étant pas nécessaires pour exécuter le système, j'en fais également un système de fichiers séparés. Quatre partitions. Je crée également un système de fichiers pour/tmp, qui ne contiendra que des fichiers temporaires générés par le système. Cinq partitions. Il s'agit de notre disque système, donc il nous faut une partition swap. Et de six. Il reste une partition libre pour tout autre usage. Si je verrouille le système pour des raisons de sécurité, je place tous les systèmes de fichiers en lecture seule, sauf /tmp et /var/tmp.

Le système d'exploitation considère chaque partition comme un système de fichier distinct. Cela signifie qu'il crée un cache et des tampons pour chacun de ces systèmes de fichiers. Les caches et les tampons supplémentaires répartissent un peu la charge des E/S. Oui, vous êtes limité par la sauvegarde, la vitesse d'interconnexion et le contrôleur du disque. Mais dans les périodes lourdes d'E/S, vous risquez beaucoup moins de rencontrer des problèmes.

OK, je cesse mon cours magistral nous continuons avec le menu Partition. Il ouvre un autre menu qui se présente comme suit :

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

La méthode la plus facile que je connaisse pour travailler avec une partition est la suivante : une fois dans le menu Partition, j'appuie juste sur la touche 'P' pour l'option print. Nous voyons ainsi avec quoi nous commençons. Cela donne la sortie suivante, que nous avons déjà vue plus haut.

Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part    Tag     Flag     Cylinders     Size       	Blocks
  0        root	wm	0 - 90     128.37MB	(91/0/0)      	  262899
  1        swap	wu	91 - 181   128.37MB 	(91/0/0)     	  262899
  2      backup	wu	0 - 24619   33.92GB	(24620/0/0) 	71127180
  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         usr	wm	182 - 24619 33.67GB	(24438/0/0) 	70601382
  7  unassigned	wm	0     0    (0/0/0)        0

Il s'agit de la table de partition par défaut que nous devons modifier, en nous rappelant que nous ne voulons absolument pas de partitions se chevauchant. L'option modify est la méthode la plus sûre pour modifier les partitions. Elle fait appel à la tranche Free Hog, qui est une partition temporaire qui augmente et rétrécit "automatiquement" en fonction des options de partition. la tranche Free Hog n'existe que si vous exécutez l'utilitaire format.

Lorsque vous entrez modify, vous avez la possibilité de sélectionner une base de partition, et vous pouvez modifier la partition actuelle ou la partition All Free Hog.

partition> modify
Select partitioning base:
        0. Current partition table (original)
        1. All Free Hog
Choose base (enter number) [0]?

Par défaut, vous allez modifier la partition courante, c'est parfait. La différence est très faible une fois l'opération terminée. Lorsque vous sélectionnez la table Current partition, l'utilitaire format affiche tout d'abord la partition actuelle. Si vous sélectionnez All Free Hog, vous verrez que la seule partition avec de l'espace attribué est la partition de sauvegarde. En utilisant l'option modify, vous avez la possibilité de modifier toutes les partitions, sauf la partition de sauvegarde. Ce que je n'aime pas avec l'option modify c'est que je ne peux pas attribuer une balise ni définir l'indicateur des partitions que je crée. Je peux le faire ultérieurement en sélectionnant chaque partition individuellement, mais cela me semble redondant.

Si je choisis de ne pas utiliser l'option modify, je peux modifier chaque partition individuellement. Puisque je dispose d'une unité de 36 Go, autant agrandir un peu la partition racine. Je commence par sélectionner la partition à modifier, définir les autorisations pour la partition, puis lui octroyer un cylindre de démarrage et enfin une taille.

partition> 0
Part      Tag    Flag     Cylinders         Size      		Blocks
  0       root    wm       0 -    90      128.37MB    (91/0/0)      262899

Enter partition id tag[root]: 
Enter partition permission flags[wm]: 
Enter new starting cyl[0]: 
Enter partition size [262899b, 91c, 90e, 128.37mb, 0.13gb]: 256mb

Vous pouvez aussi saisir un '?' au niveau de la balise id et les questions de l'indicateur d'autorisation, et obtenir des réponses acceptables. Si j'appuie à nouveau sur la touche 'P', nous constatons que j'ai un problème à résoudre.

Part      Tag   Flag     Cylinders      Size          		Blocks
  0      root	wm	0 - 181      	256.74MB	(182/0/0)   525798
  1      swap	wu	91 - 181      	128.37MB	(91/0/0)    262899
		...

La partition 0 chevauche la partition 1. A mesure que vous créez vos partitions, vérifiez qu'aucune d'entre elles n'en chevauche une autre. Le nombre de partitions que vous créez et leur taille dépendent de votre site, de vos besoins, de vos expériences, etc. Une fois terminé, j'obtiens ceci :

Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part      Tag   Flag     Cylinders         Size    		Blocks
  0        root	wm	0 -  181      	56.74MB		(182/0/0)        525798
  1        swap	wu	182 - 272      128.37MB		(1452/0/0)     	4194828
  2      backup	wu	0 - 24619      	33.92GB		(24620/0/0)    71127180
  3  unassigned	wm	3540 - 4265      1.00GB   	(726/0/0)      	2097414
  4  unassigned	wm	0      0    	(0/0/0)   	0
  5  unassigned	wm	4266 - 4991      1.00GB   	(726/0/0)      	2097414
  6         usr	wm	273 - 2087     	 2.50GB		(1815/0/0) 	5243535
  7         var	wm	2088 -	3539     2.00GB   	(1452/0/0)   	4194828

Nous devons toujours écrire la table de partition. Pour cela, nous tapons simplement labelet répondons par 'Y' à la question de poursuite de l'opération. Vous vous demandez probablement où se trouve /home. Je place rarement des éléments utilisateur sur le disque système. Cela facilite un peu le passage d'un niveau du SE à un autre.

Vous n'avez pas réellement besoin d'utiliser l'option format si vous avez acheté vos disques auprès de Sun. Si vous avez acheté des disques d'occasion, ou qu'il proviennent d'un autre SE ou si leur liste de défauts est importante, l'option format prépare le disque pour le SE Solaris. En cas de liste de défauts importante, elle peut nettoyer un peu le disque. L'une des raisons pour lesquelles vous avez besoin de cette option est si votre système est connecté à des moteurs RAID qui ne sont pas suffisamment "intelligents" pour présenter les LUN créés afin que le SE Solaris puisse les comprendre. Si vous avez toujours du matériel de ce type, vous devriez rechercher de l'équipement plus récent. Selon sa taille, il peut être préférable de démarrer le formatage d'un disque en fin ou en début de journée. Une unité de 36 Go sur ma station de travail Ultra Enterprise (UE-60) prend environ 332 minutes.

L'option repair peut être utilisée pour réparer un bloc défectueux sur le disque -- enfin, peut-être. Je ne l'ai pas utilisée depuis des années. En fait, jusqu'à ce que je commence à rédiger cet article, j'avais oublié cette option. Compte-tenu du faible coût des unités de disques aujourd'hui, il est plus sûr et probablement plus économique de remplacer un disque plutôt que de consacrer des heures à le bricoler, en essayant de récupérer un bloc par ci ou par là. Pas aussi amusant, mais probablement plus sûr.

Je pense en avoir écrit plus qu'assez sur l'option label plus haut, je vais donc l'ignorer et passer directement à l'option analyze. Tout comment l'option Defect, l'option analyze ouvre un autre menu. Je n'utilise plus que rarement l'option analyze, sauf pour m'amuser ou pour écrire un article. Vous pouvez utiliser les éléments du menu Analyze pour... analyser le disque. Vous remarquerez que certaines sélections indiquent qu'elle corrompent les données.

L'option backup recherche des étiquettes de sauvegarde. Elle commence toutefois par rechercher une étiquette principale et, si elle en trouve une, format vous demande si vous souhaitez continuer. Si vous continuez, l'option backup remplace l'étiquette principale par la sauvegarde trouvée. Je n'ai jamais eu à le faire, et je me demande comment l'utiliser -- autant que je sache, sans l'étiquette principale, vous ne pouvez pas atteindre l'option de sauvegarde dans la commande format. Je pense que l'assistance de Sun doit pouvoir vous indiquer comment utiliser la commande dd pour déplacer une étiquette sauvegardée à la place de l'étiquette principale sur le disque, mais ce n'est qu'une théorie de ma part.

N'était-ce pas distrayant ? Formater et partitionner une paire de disque ne pose pas de problème - cela demande un peu de saisie, mais c'est supportable. Mais qu'advient-il lorsque vous êtes relié à une vaste baie RAID et que vous devez configurer 10 ou même 200 disques de manière identique ? J'ai une amie qui a dû faire cela pour un gros project d'imagerie. Elle a utilisé fmthardet un peu de script pour le faire d'un seul coup.

Comme toujours, man -s1m fmthard vous fournira plus d'informations mais, en deux mots, voici comment utiliser fmthard. Il vous faut d'abord un fichier de données ASCII qui indique à fmthard comment définir les partitions sur les disques cible. Vous pouvez en créer un avec votre éditeur préféré ou avec la commande fmthard proprement dite. En regardant le fichier texte, vous remarquerez que vous devez indiquer le premier secteur et de nombre de secteurs pour chaque partition de chaque disque. Comme vous l'avez appris plus tôt, nous ne voulons pas que les partitions se chevauchent.

* Partition    Tag     		Flag   		First Sector  Sector Count
  0		2		00		4194828		1048707
  1		7		00		5243535		4145715
  2		5		00		0		71127180
  3		3		01		0		4194828
  4		0		00		9389250		2097414
  5		0		00		11486664	8389656
  6		4		00		19876320	6292242

Le meilleur moyen consiste à employer l'utilitaire format pour partitionner l'un des disques pour la configuration voulue, puis à utiliser la commande fmthard pour créer le fichier de données à utiliser pour partitionner le reste de vos disques.

fmthard -i -n "" /dev/rdsk/c2t1d0s2 > ./mypartition.dat
 

La commande précédente écrit les partitions du disque sur c2t1d0 dans le fichier mypartition.dat. Vous utilisez ensuite ce fichier dat pour 'alimenter' la commande fmthard pour tous les disques que vous souhaitez partitionner de cette façon.

« fmthard -s mypartition.dat -n "volumename" /dev/rdsk/cxtydzs2 »

Le désavantage de la commande fmthard est qu'elle met la VTOC à jour. Donc, si vos disques n'avaient pas d'étiquette valide au départ, fmthard ne fonctionne pas. Si vous envisagez d'utiliser ou de définir le nom de volume avec la commande fmthard, vous pouvez vous retrouver avec 200 lignes (en fonction du nombre de disques que vous modifiez) dans votre script. Mais c'est toujours mieux que de configurer lentement les partitions d'une poignée de disques avec l'utilitaire format.

Si vous avez effectivement lu la page du manuel concernant format, vous remarquerez ce qui suit :

-e    Enable SCSI expert  menu.  Note  this  option  is  not
      recommended for casual use.

Je ne sais pas ce que vous en pensez, mais en ce qui me concerne, je n'ai pas pu m'empêcher de jouer avec cette option. Lorsque vous entrez dans l'utilitaireformat, vous obtenez deux lignes supplémentaires dans le menu :

scsi	- independent SCSI mode selects
cache	- enable, disable or query SCSI disk cache

Vous obtenez même un paragraphe d'avertissement clair et net lorsque vous accédez à l'option scsi ! En réalité, si vous ne maîtrisez pas le protocole SCSI, il vous faut une bonne publication qui explique ce protocole, en particulier les sélections de mode que vous pouvez changer sous l'option scsi de l'utilitaire format. Je vous recommande The SCSI Bus and IDE Interface: Protocols, Applications, and Programming par Friedhelm Schmidt. J'ai un peu joué avec, mais je n'ai jamais mis mes bricolages dans un serveur de production. Il vaut parfois mieux ne toucher à rien.

Un mot d'avertissement si vous envisagez de jouer dans la zone de l'option scsi : démarrez d'abord l'utilitaire format avec l'option de connexion (-l c2t1d0.log), puis accédez à chaque écran de l'utilitaire format ; ainsi tout sera enregistré dans le fichier journal. La sélection de format sous l'option scsi est différente de celle du menu un niveau au-dessus.

Maintenant l'option cache fournit un menu pour le cache de lecture et d'écriture du disque. Tous les disques SCSI ne disposent pas d'un cache, et parmi ceux qui en ont un, tous ne permettent pas de changer leurs options de cache. Ce cache est une petite quantité de mémoire sur le disque -- et n'a rien à voir avec la mémoire du système. Ceci signifie que chaque disque peut être légèrement différent et se comporter différemment lorsque vous utilisez ces outils. J'ai découvert que le cache de lecture est généralement activé, ce qui est logique car rien n'est perdu en cas de coupure de courant pendant une opération de lecture. Les données doivent toujours être sur le disque. De la même façon, j'ai toujours trouvé le cache d'écriture désactivé. Ceci est également logique car, si vous perdez l'alimentation, vous perdez tout ce qui se trouve dans le cache d'écriture. Lorsque je l'ai activé et comparé les charges d'E/S en utilisant IOzone, les améliorations des opérations d'écriture se situaient entre très faibles et très marquées. L'amélioration varie selon le modèle de disque et le fournisseur.

Puisque vous êtes dans l'utilitaire format avec l'option -e, nous avons un autre élément à étudier. Tapez label, et vous obtenez la réponse suivante :


format> label
[0] SMI Label
[1] EFI Label
Specify Label type[0]:

Je pense que SMI signifie Sun Microsystems. Il s'agit de l'option par défaut, et vous la voyez lorsque vous entrez dans l'utilitaire format sans l'option -e. L'option SMI indique votre configuration de partition standard de huit partitions, la deuxième étant la partition de sauvegarde.

Si vous sélectionnez l'étiquette EFI (Extensible Firmware Interface), vous obtenez une autre partition présentée ci-dessous.


ascii name  = <FUJITSU  MAN3367M SUN36G  1502 43d671f>
bytes/sector    =  512
sectors = 71132958
accessible sectors = 71132925
Part      Tag    Flag     First Sector        Size            Last Sector
  0	   root    wm               34     128.35MB         	  262898    
  1	   swap    wu           262899     128.37MB         	  525797    
  2  unassigned    wm                0         0                     0  
  3  unassigned    wm                0         0                     0    
  4  unassigned    wm                0         0                     0    
  5  unassigned    wm                0         0                     0    
  6         usr    wm           525798      33.66GB         	71116540    
  7  unassigned    wm                0         0                     0   
  8    reserved    wm         71116541       8.00MB         	71132924    

format>

Vous trouverez beaucoup d'autres informations sur EFI dans la page Extensible Firmware Interface du site web Intel.

Alors où en sommes nous ? J'espère avoir éclairci quelques points que vous pouvez pratiquer avec l'utilitaire format et sur ce que l'utilitaire format peut faire pour vous.

A propos de l'auteur

Greg (shoe) Schuweiler travaille dans l'accueillant Midwest (États-Unis) depuis 20 ans en qualité de conseiller, comme concepteur de logiciel, Oracle DBA, et une foule d'autres titres étranges. Il exerce la noble profession d'UNIX SA depuis huit ans. Si vous souhaitez le joindre : gshoe [at] xadd.org.

The information and links on this page have been provided by a BigAdmin user. The submitter is solely responsible for such information and links. Sun is not responsible for the availability of external sites or resources, and does not endorse and is not responsible or liable for any content, advertising, products, or other materials on or available from such sites or resources. Sun will not be responsible or liable, directly or indirectly, for any actual or alleged damage or loss caused by or in connection with use of or reliance on the information posted here, or goods or services available on or through any external site or resource.
 
 

Comments (latest comments first)

Discuss and comment on this resource in the BigAdmin Wiki

Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License.


BigAdmin