[gull] Problème disque

Marc SCHAEFER schaefer at alphanet.ch
Thu Aug 14 23:11:03 CEST 2003


On Thu, Aug 14, 2003 at 08:18:50PM +0200, Marc Mongenet wrote:
> Mais avec cat, c'est toujours bon ?

pas forcément, ça dépend de sa taille de buffer. Les implémentations GNU
adorent les buffers gigantesques de multiple de 512 bytes, mais pas
toutes les autres.

En pratique sur SGI/IRIX (O2) j'avais lu un CD-ROM avec `cat'
et celui-ci était en 2048 bytes/secteur. Apparemment cat travaillait
en 4096 bytes et donc il y avait des zéros dans les demi-blocs
supérieurs. N'ayant pas de stations SGI sous la main je ne
peux reproduire ni expliquer.

Il y a véritablement une différence fondamentale entre l'interface
block-device de Linux et celle des autres systèmes UNIX.
L'interface direct I/O de Linux ressemble bien plus.

> À quoi dd au fait ? Le seul usage utile que j'aie pu déduire du
> manuel, c'est pour des accès à des périphériques sans système de
> fichier (des bandes). Est-ce que toutes les bandes fonctionnent
> comme cela ?

Non, la plupart des lecteurs de bande peuvent aussi être utilisés
en facteur de blocage non constant (mt -f /dev/nst0 setblk 0).

Mais alors il faut que le programme de lecture connaisse le
facteur de blocage variable à l'avance, sinon c'est diablement
moins efficace. Une alternative fréquemment employée est
32k pour chaque bloc, et le dernier bloc pouvant être plus
petit (ce qui marche grâce aux propriétés de read(2)).

C'est pour cela que oui, on travaille en général en facteur de blocage
constant (p.ex. 512 bytes/block logique). Ce qui signifie que
tar, ou tar + gz doivent aligner les données à 512 bytes, en ajoutant
éventuellement des zéros, sinon le lecteur refusera l'écriture.

Il n'y a pas que dd(1) qui permet de réajuster les facteurs de blocage,
il y a aussi buffer(1), qui avec son option -S permet d'avoir une
indication de performance également.

Autres usages utiles de dd:

   - lire une disquette en ignorant les erreurs (remplaçant par des \0)
        dd if=/dev/fd0 of=floppy bs=512 noerror sync

   - le seek, ignorer des bouts de données, etc. (avec tail ou head,
     suivant l'implémentation, la libc peut consommer jusqu'à la
     fin de la `ligne')

   - la conversion EBCDIC (utile parfois sur systèmes IBM). Sisi,
     j'en ai eu une fois besoin :->

   - le reblocage (cassettes)




More information about the gull mailing list