Main menu:

Site search

Categories

March 2010
M T W T F S S
« Feb    
1234567
891011121314
15161718192021
22232425262728
293031  

Archive

Disque dur: des secteurs de plus de 512 octets

L’IDEMA (International Disk Drive Equipment and Materials Association) a annoncé que début 2011, les disques durs adopteront le format 4K. Cela signifie qu’à cette date, les disque durs auront des secteurs dont la taille sera de 4K octets au lieu des 512 octets actuels.

Un peu d’histoire

C’est IBM qui avait standardisé cette taille de 512 bytes pour les secteurs des disquettes et ça remonte déjà à une trentaine d’années. Ensuite cette taille avait été adoptée pour les disques durs aussi. Seulement à cette époque, pour ceux qui s’en souviennent, les disques durs n’avaient pas la taille de ceux d’aujourd’hui. Ils ne faisaient que quelques Megabytes. De l’ordre de 20MB pour les premiers et cette taille de 512 octets était bien adaptée à la taille du disque dur.

Quel est le problème

Chaque secteur de 512 octets contient un pointeur qui indique où se trouve le secteur suivant et un code d’erreur. Ces quelques octets qui ne sont pas utilisés pour stocker des données font que sur un disque de grande capacité, on perd finalement beaucoup de place. Et c’est sans compter sur le fait que, entre chaque secteur sur le disque, il y a une petite zone libre, non utilisée qui sépare les secteurs (gap). Sur un disque de 1To ou plus, on imagine aisément la place perdue avec des secteurs de 512 octets. D’après les fabricants, en adoptant une taille de secteur de 4K, on pourrait gagner près de 10%. Ce n’est pas négligeable.

Et Linux?

L’adoption de ce format de 4K posera un problème avec tous les ordinateurs non récents. Windows ne supporte une taille de secteur supérieure à 512 octets que depuis Vista. XP ne le supporte donc pas.
Le noyau Linux récent supporte déjà une taille supérieure à 512 octets. Par contre les applications comme GParted ne le supporte pas encore. GParted est incapable de partitionner ou de formater un disque dur dont les secteurs ont une taille plus grande que 512 octets. Voici le message d’erreur que vous obtiendrez:

La taille des secteurs logiques pour le périphérique /dev/sda est 1024. Tous les modules de GNU Parted ne supportent pas cela pour l'instant : fonction EXPERIMENTALE

D’après Curtis Gedak, un des développeur de GParted, il y travaille mais beaucoup de boulot est encore nécessaire (source: http://gparted-forum.surf4.info/viewtopic.php?id=13924).

Si vous avez l’habitude de parcourir les forums, vous aurez certainement remarqué que certaines personnes ont déjà rencontré un problème avec leur disque dur. Il semblerait que certains fabricants ont déjà adopté pour certains de leurs disques durs, des tailles de secteur supérieures à 512 octets. C’est le cas de certains disques durs externes comme le Samsung S2. Ces disques n’ont pas encore adopté le format 4K mais des tailles intermédiaires. J’en ai vu avec une taille de secteur de 1024 ou de 2048 octets.

Comment reconnaître un disque qui a des secteurs de plus de 512 octets?

Simplement avec la commande très classique fdisk. Par exemple:

$ sudo fdisk -l
Disque /dev/sde: 250.1 Go, 250059350016 octets
255 têtes, 63 secteurs/piste, 15200 cylindres
Unités = cylindres de 16065 * 1024 = 16450560 octets
Identifiant de disque : 0x76534e6f

Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sde1               1       15200   244187937    c  W95 FAT32 (LBA)

La ligne Unités = cylindres de 16065 * 1024 = 16450560 octets indique que les cylindres du disque sont divisés en blocs de 1024 octets au lieu de 512.
Le gros problème que les utilisateurs de ces disques rencontrent est que cette taille n’est pas indiquée lors de l’achat du disque dur. On ne peut le savoir qu’une fois installé dans la machine ou connecté par usb au PC.

Quelle solution?

Aucune pour l’instant. Notez que tant que vous ne devez pas repartitionner ou reformater votre disque, Linux sera capable de lire ou d’écrire sur le disque grâce à son kernel qui est déjà à jour. Mais si vous voulez le reformater en ext3 ou y installer Ubuntu, pas de chance, cela échouera. On a déjà signalé que GParted ne le supportait pas encore mais c’est le cas aussi de l’utilitaire dd et de tous les programmes qui font des images de disques comme Clonezilla ou PartImage.
Une seule alternative; soit attendre que les développeurs mettent leurs programmes à jours et ce devra être fait pour 2011 soit ramener votre disque chez le revendeur pour incompatibilité avec Linux.

Bouger les boutons de la barre de titre

Il y a en ce moment une petite polémique sur les forums au sujet de la position de boutons (minimize, maximize et close) dans la barre de titre des fenêtres. Il semblerait que dans Lucid Lynx, la version 10.04 d’Ubuntu, les boutons soient placés à gauche à la Mac OSX au moins dans certains des thèmes proposés. Cette disposition peut évidemment être modifiée via l’Editeur de configuration.

C’est l’occasion de rappeler que sous Karmic, il est aussi possible de modifier la disposition de ces boutons en modifiant une clef dans l’Editeur de configuration. Sans entrer dans les détails, c’est Metacity qui gère ce genre de décoration des fenêtres et la clef à modifier est la clef /apps/metacity/general/button_layout.

Ci-dessous, différentes configurations possibles et le contenu de la clef:


menu à gauche et boutons à droite

Cette disposition qui est celle par défaut correspond à la valeur de clef suivante:

menu:minimize,maximize,close


Menu gauche supprimé

Ici, le menu de gauche a été enlevé. C’est le menu qui s’obtient en cliquant sur l’icône à gauche dans la barre de titre. Ce menu est appelé menu système:

:minimize,maximize,close


menu à droite et bouton à gauche

Cette disposition est l’inverse de la version par défaut. Boutons à gauche et menu à droite:

minimize,maximize,close:menu


bouton à gauche et menu supprimé

C’est la même disposition que la précédente mais on a supprimé le menu:

minimize,maximize,close:

Si vous êtes du genre aventureux, vous pouvez aussi essayer de supprimer certains boutons. Le maximize ou le minimize. Sachez qu’il n’est pas possible de tout supprimer. Même si vous effacez le contenu de la clef, vous verrez que le bouton close reste présent dans la barre de titre quoi que vous fassiez.

Monter un disque sans authentification

Pour monter un disque ou une partition, il est demandé d’avoir des droits d’administration. Ainsi, si vous avez plusieurs disques/partitions dans votre PC, ceux-ci apparaissent dans le menu Raccourcis du tableau de bord du haut, mais votre mot de passe vous est demandé pour que l’icône du disque monté apparaisse sur le bureau.

La solution adoptée pour empêcher d’avoir à chaque fois ce mot de passe à taper est en général d’ajouter une ligne dans le fichier /etc/fstab. L’avantage est que le montage est automatique et que vous n’avez plus de mot de passe à entrer. L’inconvénient est que l’icône du disque est présente en permanence sur le bureau.

Il existe une autre solution, qui a été donnée sur un forum, c’est de modifier les règles définies dans le PolicyKit d’Ubuntu. Celles-ci consistent en un ensemble de fichiers XML que l’on peut éditer facilement.
Ces fichiers se trouvent dans le répertoire /usr/share/polkit-1/actions et le fichier qui nous intéresse plus particulièrement est org.freedesktop.devicekit.disks.policy. Celui-ci contient les règles concernant les disques et systèmes de fichiers. Chaque règle est contenue dans un tag appeléaction.

Pour supprimer l’authentification au montage d’un disque, il faut éditer le fichier:

$ gksudo gedit /usr/share/polkit-1/actions/org.freedesktop.devicekit.disks.policy

Dans le fichier, il faut trouver le tag action dont l’id est org.freedesktop.devicekit.disks.filesystem-mount-system-internal et dans cet action, modifier la ligne:

<allow_active>auth_admin_keep</allow_active>

par:

<allow_active>yes</allow_active>

Il ne vous reste plus qu’à sauver le fichier et à constater que la prochaine fois que vous monterez un disque ou une partition, votre mot de passe ne vous sera plus demandé.

Problèmes de résolution d’écran ?

Sous Linux et Ubuntu en particulier, l’écran est géré par le serveur X (X Windows Manager) et Xorg en est une implémentation libre. La configuration de ce serveur X passe par le fichier /etc/X11/xorg.conf.
A l’installation, Xorg détermine le type de carte graphique installé et installe un driver libre par défaut. Par après, il vous est loisible d’installer le driver propriétaire, s’il y en a un, correspondant à votre carte graphique.
La commande classique qui permettait de reconfigurer le serveur X était :

sudo dpkg-reconfigure xserver-xorg

En fait, j’ai utilisé l’imparfait parce que cette commande ne sert plus qu’à configurer le clavier. L’auto-détection du hardware étant considérée comme suffisamment bonne, cette commande ne permet plus la configuration manuelle du serveur X. De même, actuellement, le fichier xorg.conf est limité à un squelette qu’il vous faudra modifié manuellement si vous voulez changer la configuration du serveur X.
Au besoin, vous pouvez générer vous-même un tel fichier squelette de xorg de la façon suivante. Ouvrez une console en tapant Ctrl+Alt+F2 (un émulateur de terminal sous Gnome n’est pas suffisant) et tapez les commandes:

$ sudo /etc/init.d/gdm stop
$ sudo Xorg -configure

Ceci va créer dans votre home un fichier xorg.conf.new que vous pouvez recopier dans /etc/X11/ éventuellement.

Si la résolution de votre écran ne correspond pas à ce que vous espériez, ouvrez un terminal et tapez la commande suivante:

$ xrandr
Screen 0: minimum 320 x 240, current 1280 x 1024, maximum 1280 x 1024
default connected 1280x1024+0+0 0mm x 0mm
   1280x1024      50.0*    51.0
   1280x960       52.0
   1152x864       53.0     54.0     55.0     56.0
   1024x768       57.0     58.0     59.0
   960x600        60.0
   960x540        61.0
   840x525        62.0     63.0     64.0
   832x624        65.0
   800x600        66.0     67.0     68.0     69.0     70.0
   800x512        71.0
   720x450        72.0
   680x384        73.0     74.0
   640x512        75.0     76.0
   640x480        77.0     78.0     79.0     80.0
   576x432        81.0     82.0     83.0     84.0
   512x384        85.0     86.0     87.0
   416x312        88.0
   400x300        89.0     90.0     91.0     92.0
   320x240        93.0     94.0     95.0

Cette commande liste à l’écran tous les modes vidéo supportés par votre moniteur. Les résolutions et les fréquences de rafraîchissement supportées.
Il faut alors choisir celle que l’on veut voir affichée à l’écran. Imaginons que votre écran soit en 800×600 et que vous désiriez passer en 1280×1024. On note que celle-ci est possible aux fréquences de rafraîchissement de 50Hz et 51Hz.
Ensuite, utilisez la commande gtf qui calcule les modes GTF vesa. On lui donne la résolution et la fréquence de rafraîchissement et elle retourne une ligne appelée Modeline qui est à ajouter à votre xorg.conf :

$ gtf 1280 1024 50

  # 1280x1024 @ 50.00 Hz (GTF) hsync: 52.70 kHz; pclk: 89.38 MHz
  Modeline "1280x1024_50.00"  89.38  1280 1352 1488 1696  1024 1025 1028 1054  -HSync +Vsync

On va copier la réponse donnée par gtf dans le fichier xorg.conf, dans la section Monitor de ce fichier.

Attention: modifier le fichier xorg.conf peut avoir des conséquences fâcheuses comme le non-démarrage du serveur X. Ne le modifiez qu’en connaissance de cause et après avoir fait une copie de sécurité.

Pour éditer le fichier, tapez:

gksudo gedit /etc/X11/xorg.conf

Trouvez la section Monitor et ajoutez-y la ligne donnée ci-dessus:

Section "Monitor"
    Identifier   "Monitor0"
    VendorName   "Monitor Vendor"
    ModelName    "Monitor Model"
    Modeline "1280x1024_50.00"  89.38  1280 1352 1488 1696  1024 1025 1028 1054  -HSync +Vsync
EndSection

Dernière chose à faire, ajouter ce mode toujours dans le fichier xorg.conf dans chaque sous-section de la section Screen. Par exemple:

Section "Screen"
    Identifier      "Default Screen"
    Monitor         "Monitor0"
    Device          "Card0"
    DefaultDepth    24
    SubSection "Display"
        Depth        16
        Modes        "1280x1024" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
        Depth        24
        Modes        "1280x1024" "800x600" "640x480"
    EndSubSection
EndSection

Redémarrez le serveur X soit en vous déconnectant puis en vous reconnectant, soit en faisant un Ctrl+Alt+Backspace si votre version d’Ubuntu vous le permet, soit encore en faisant Alt+PrintScreen+K.

Mise à jour à partir du CD Alternate

Il est possible de mettre à jour Ubuntu à partir du CD Alternate. Pratique lorsque vous n’avez pas de liaison Internet, quand vous voulez effectuer la mise à jour sur plusieurs machines mais sans devoir recharger les paquets à chaque fois, etc…

Pour cela, il faut avoir la version Alternate d’Ubuntu soit sur CD soit sous forme d’une image de CD. Si vous avez le CD gravé, aucun problème, il suffit de le mettre dans le lecteur. Il devrait afficher une petite fenêtre vous demandant si vous voulez effectuer la mise à jour.
Si vous avez sur votre disque dur l’image iso, pas besoin de la graver sur CD. Montez-la simplement dans le répertoire de votre choix et lancez l’utilitaire de mise à jour:

sudo mkdir /mnt/imagecd
sudo mount -o loop ~/ubuntu-9.10-alternate-i386.iso /mnt/imagecd
gksudo "sh /mnt/imagecd/cdromupgrade"

Cette méthode a aussi l’avantage que vous ne devez plus craindre une coupure réseau laissant votre mise à jour bancale et non-fonctionnelle.

Sauvegarder une partition entière avec dd

La commande dd permet de sauvegarder un disque entier ou une partition sans devoir faire attention à ce qu’il y a effectivement sur le disque, à sa structure. Il copie les données se trouvant sur le disque physique sans se préoccuper de savoir si il y a une ou plusieurs partitions ni comment elles sont formatées. De plus dd peut copier des secteurs du disque qui ne se trouvent pas sur une partition comme le MBR par exemple.

Il est donc possible de sauvegarder un disque entier ou simplement une partition et donc, même une partition Windows Vista par exemple. Et comme je suis un peu comme Saint Thomas, je ne crois que ce que j’ai pu expérimenter, je me suis lancé dans la sauvegarde et la restauration d’une partition contenant un Windows Vista en parfait état de marche.

La première chose que j’ai faite, c’est monter un disque dur externe sur /media/disk. Ce disque va servir à recevoir la sauvegarde de ma partition. Ensuite j’ai fait une sauvegarde du MBR parce qu’on ne sait jamais! Si quelque chose se passe mal, je suis sûr d’au moins pouvoir restaurer le MBR du disque avec la table des partitions:

$ sudo dd if=/dev/sda of=/media/disk/mbr.bin bs=512 count=1

La commande dd permet de sauvegarder les données par blocs. La taille du bloc est déterminée par le paramètre bs dans la commande. Dans le cas du MBR, celui-ci correspond au premier secteur du disque et fait 512 octets. On donnera donc au bloc la taille de 512. Par contre, lors de la sauvegarde d’une partition ou d’un disque entier, il peut être intéressant de donner au bloc une taille multiple de celle des blocs sur le disque. La plupart des disques sont constitués de blocs de 512 octets. Définir une taille de 1024 ou 2048 permet d’accélérer la sauvegarde. Créer des blocs de taille plus grande ne sert à rien d’après mes essais.

L’inconvénient de dd, c’est qu’il copie absolument tout. Même les parties du disque non-utilisées. Si votre partition fait 250GB, la sauvegarde fera aussi 250GB. Pour diminuer cette taille, nous pouvons compresser avec gzip les données. Les essais que j’ai fait sur une partition de 25GB donnaient une sauvegarde de 18GB. C’est déjà mieux. Il peut être aussi intéressant de s’assurer avant de formater le disque qu’il contient bien des zéros partout. De cette façon, les zones inutilisées sont constituées de zéros qui se compressent très bien. D’après ce que j’ai pu voir, c’est déjà le cas des partitions NTFS et mes partitions ext3/ext4 contenaient aussi des zéros dans les zones inutilisées. Mais pour être sûr, remplissez le disque de zéro avant tout formatage, cela diminuera la taille de la sauvegarde plus tard si cela s’avère nécessaire. La commande suivante remplit le disque sda de zéros:

$ sudo dd if=/dev/zero of=/dev/sda bs=1024k conv=noerror,sync

Attention: n’utilisez la commande ci-dessus que si vous savez ce que vous faites. L’utiliser sur un disque en utilisation, le remplira de zéro et effacera toutes les données du disque.

Autre inconvénient de dd, ça prend du temps! Comme il copie tout, cela prend même un temps fou. Trois quarts d’heure pour ma partition de 25GB sur mon (vieux) système.

Passons maintenant à la sauvegarde proprement dite. Je veux donc sauvegarder ma partition Vista se trouvant sur le disque sda1.

$ sudo dd if=/dev/sda bs=2048 conv=noerror,sync | pv | gzip -c > /media/disk/sda1_backup.gz

La commande pv permet d’avoir une indication de ce qui est déjà fait et de ce qui reste à faire. La commande gzip avec l’option -c envoie le résultat vers la sortie standard qui est redirigée vers un fichier sur le disque externe monté dans /media/disk.

Si par malheur un jour, vous devez restaurer la partition, il suffit de faire l’opération inverse:

$ gunzip -c /media/disk/sda1_backup.gz | pv | sudo dd of=/dev/sda1 bs=2048

Je vous l’ai dit, cette commande dd permet tout aussi bien de sauvegarder un disque en entier. Il suffit dans les commandes ci-dessus de remplacer /dev/sda1 par /dev/sda.
Pour installer pv qui ne l’est pas par défaut, tapez:

$ sudo aptitude install pv

La commande dd copie à l’identique. Il faut donc, lors de la restauration, que le disque ou la partition soit d’une taille suffisante pour recevoir l’image du disque ou de la partition qui a été sauvegardée.

Pour info, il existe une multitude d’outils permettant de sauvegarder ou de cloner une partition ou un disque dur autre que dd. Les plus connus sont PartImage et Clonezilla.