Disques durs et systèmes de fichiers

De UnixManiax
Aller à la navigation Aller à la recherche


Conventions

Solaris fait la distinction entre les partitions "normale" (type bloc) et les partitions raw : ce sont les mêmes partitions physiques, mais c'est la façon d'y accéder qui est différente. Un programme va utiliser la partition normale, la partition raw est réservée aux commandes de bas niveau comme "fsck".

Les partitions normales sont vues dans /dev/dsk/. Pour y accéder en mode raw, il faut aller dans /dev/rdsk.

Exemple de disque dur : /dev/dsk/c0t0d0.

  • le "c" représente le numéro de contrôleur SCSI.
  • le "t" est la target SCSI
  • le "d" est le numéro de disque sur la target.


Ensuite, le disque est découpé en "slices", qui correspondent à des partitions dans le langage windows ou linux. Le numéro de slice est repéré par la lettre "s", allant de 0 à 7. ATTENTION : le slice 2 n'est pas utilisable, il représente le disque dur dans son ensemble.

Ainsi, /dev/dsk/c1t0d2s6 correspond à la 7ème partition du 3è disque de la première target du 2è contrôleur. /dev/dsk/c1t0d2s2 correspond au même disque, mais dans son ensemble.


L'utilitaire format

Format est un utilitaire qui permet de voir ou modifier les disques et les partitions. Il suffit de taper "format" et de faire son choix dans les menus.

Dans l'exemple qui suit, on tape "format" qui va afficher la liste des disques, puis on tape "0" pour voir en détail le disque 0. Puis on tape "p" pour voir la table des partitions et encore "p" pour afficher le détail des partitions :

# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
 0. c0t0d0 <SUN4.2G cyl 3880 alt 2 hd 16 sec 135>
 /pci@1f,4000/scsi@3/sd@0,0
 1. c0t1d0 <SUN4.2G cyl 3880 alt 2 hd 16 sec 135>
 /pci@1f,4000/scsi@3/sd@1,0
 2. c0t2d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
 /pci@1f,4000/scsi@3/sd@2,0
 3. c0t3d0 <IBM-DDRS39130SUN9.0G-S98E cyl 4924 alt 2 hd 27 sec 133>
 /pci@1f,4000/scsi@3/sd@3,0
 4. c2t0d0 <IBM-DDYST1835SUN18G-S96H cyl 7506 alt 2 hd 19 sec 248>
 /pci@6,4000/scsi@4/sd@0,0
Specify disk (enter its number): 0
selecting c0t0d0
[disk formatted]
Warning: Current Disk has mounted partitions.


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


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
partition> p
Current partition table (original):
Total disk cylinders available: 3880 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders        Size            Blocks
 0       root    wm       0 -  758      800.51MB    (759/0/0)  1639440
 1        usr    wm     759 - 2181        1.47GB    (1423/0/0) 3073680
 2     backup    wm       0 - 3879        4.00GB    (3880/0/0) 8380800
 3       swap    wu    2941 - 3225      300.59MB    (285/0/0)   615600
 4 unassigned    wm       0               0         (0/0/0)          0
 5 unassigned    wm       0               0         (0/0/0)          0
 6       swap    wu    2182 - 2940      800.51MB    (759/0/0)  1639440
 7 unassigned    wm       0               0         (0/0/0)          0

partition>


Pour sortir on tape "q" puis "q".

On voit dans l'exemple qu'il y a 5 disques dur. Quand on regarde en détail le disque 0, on voit qu'il fait 4GB (partition 2 = disque entier). Il y a une partition root de 800Mo, une usr de 1.47Mo et deux partitions swap de 300Mo et 800Mo. La colonne Tag n'est qu'indicative et n'a pas obligatoirement de rapport avec le point de montage final.

Lorsqu'on prépare les partitions du disque, on passe par le même menu et on tape ensuite le numéro de la partition qu'on veut modifier. Il faut faire très attention à ce qu'on écrit, car format demande le numéro de cylindre auquel on veut commencer, puis la taille de la partition ; si on ne fait pas attention, on peut se retrouver avec des partitions à cheval sur les mêmes cylindres et ça va mal se passer !


Faire un fsck

Pour le fsck, on accède au périphérique de type raw. La partition doit être démontée. Exemple :

# fsck [-fy] /dev/rdsk/c2t0c0d0


Les options entre crochets sont facultatives.

  • "f" : force, pour forcer le fsck, même si le filesystem semble ok "y" : yes, répond automatiquement yes à toutes les questions (peut sauver la vie quand il demande 500 fois s'il doit réparer un secteur...)"f" : force, pour forcer le fsck, même si le filesystem semble ok
  • "y" : yes, répond automatiquement yes à toutes les questions (peut sauver la vie quand il demande 500 fois s'il doit réparer un secteur...)


Cas particulier de Veritas File System (VxFS)

Dans le cas de partitions Veritas, les partitions sont accessibles dans /dev/vx/dsk et en mode raw dans /dev/vx/rdsk. Pour un fsck, il est préférable de préciser à fsck qu'on est en vxfs comme suit :

# fsck -F vxfs [-fy] /dev/rdsk/c2t0c0d0

ATTENTION : pour voir le type de FS d'une partition il existe la commande "fstyp" (voir ci-après). Curieusement, fsck ne se sert pas de cette commande pour savoir à quel type de FS il a affaire, mais il se base sur ce qu'il voit dans /etc/vfstab. S'il ne trouve pas dans /etc/vfstab, alors il va choisir le type de FS "par défaut" qui est inclus dans /etc/default/fs qui est normalement UFS. Si jamais fsck se trompe de type de filesystem et corrige des problèmes (car du coup il va forcément en trouver), les données seront irrécupérables !


Voir le type de filesystem

Solaris possède la commande "fstyp" qui permet de connaître le type de filesystem d'une partition. Exemples :

# fstyp /dev/vx/dsk/zonedg/zonelv
vxfs
# fstyp /dev/vx/dsk/appli_stddg/appli_stdlv
ufs


fstyp fonctionne indifféremment avec dsk ou rdsk.


/etc/vfstab

/etc/vfstab est l'équivalent de /etc/fstab sous linux. La syntaxe est légèrement différente car il nécessite d'indiquer les raw devices. Exemple de fichier /etc/vfstab :

#device         device          mount           FS      fsck    mount   mount
#to mount       to fsck         point           type    pass    at boot options
#
fd      -       /dev/fd fd      -       no      -
/proc   -       /proc   proc    -       no      -
/dev/md/dsk/d0  /dev/md/rdsk/d0 /       ufs     1       no      -
/dev/md/dsk/d1  -       -       swap    -       no      -
/dev/md/dsk/d3  /dev/md/rdsk/d3 /var    ufs     1       no      -
/devices        -       /devices        devfs   -       no      -
sharefs -       /etc/dfs/sharetab       sharefs -       no      -
ctfs    -       /system/contract        ctfs    -       no      -
objfs   -       /system/object  objfs   -       no      -
swap    -       /tmp    tmpfs   -       yes     -
/dev/vx/dsk/zonedg/zonelv       /dev/vx/rdsk/zonedg/zonelv      /zones  vxfs    2       yes     -
/dev/vx/dsk/zonedg/uirgs49lv    /dev/vx/rdsk/zonedg/uirgs49lv   /zones/uirgs49  vxfs    2       yes     -
/dev/vx/dsk/zonedg/uirgs50lv    /dev/vx/rdsk/zonedg/uirgs50lv   /zones/uirgs50  vxfs    2       yes     -
/dev/vx/dsk/zonedg/uirgs51lv    /dev/vx/rdsk/zonedg/uirgs51lv   /zones/uirgs51  vxfs    2       yes     -