BloodyCarnage a écrit :
* création du filesystem (dans mon cas ext4) avec une taille de 4K et un stride de 256 correspondant à mes blocs phy de 1Mio (bien que d'après le man, ça ne sert que pour le RAID)
|
J'ai cherché également à quoi pouvait servir cette option dans le cadre de la création d'un système de fichiers aligné sur un ssd et je n'ai trouvé qu'une mention au RAID ici en plus du man de mke2fs :
Citation :
stride=taille_bande
Configurer le système de fichiers pour une matrice
RAID avec une taille de bande de stride-size blocs
du système de fichiers. Il s'agit du nombre de blocs
lus ou écrits sur le disque avant de passer au
disque suivant, ce qui est parfois aussi appelé la
taille des morceaux. Ceci affecte principalement le
placement des méta-données comme la carte des blocs
au moment de la création du système de fichier avec
mke2fs pour éviter de les placer toutes sur le même
disque, ce qui peut réduire les performances.Elle
peut aussi être utilisée par l'allocateur de blocs.
|
donc a priori cette option est totalement inutile si tu ne fais pas de RAID.
D'ailleurs sur la documentation d'Arch consacrée au ssd, et qui pourtant aborde le problème de l'alignement, il n'en est pas fait mention une seule fois.
ogaby a écrit :
Citation :
Device Model: Corsair CSSD-V64GB2
Serial Number: 10340045080009790011
Firmware Version: 2.1
User Capacity: 64 023 257 088 bytes [64,0 GB]
Sector Size: 512 bytes logical/physical
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Sun Jan 8 11:44:06 2012 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
|
Ça doit être pour ça que j'ai pas non plus cette ligne.
(version svn de smartmontools)
|
Je ne pense pas :
Code :
- smartctl 5.42 2011-10-20 r3458 [i686-linux-2.6.39-bpo.2-686-pae] (local build)
- Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
- === START OF INFORMATION SECTION ===
- Model Family: Intel 320 Series SSDs
- Device Model: INTEL SSDSA2CW160G3
- Serial Number: PEPR1433000S160DGN
- LU WWN Device Id: 5 001517 366ee825a
- Firmware Version: 4PC10362
- User Capacity: 160 041 885 696 bytes [160 GB]
- Sector Size: 512 bytes logical/physical
- Device is: In smartctl database [for details use: -P show]
- ATA Version is: 8
- ATA Standard is: ATA-8-ACS revision 4
- Local Time is: Mon Jan 9 02:07:09 2012 CET
- SMART support is: Available - device has SMART capability.
- SMART support is: Enabled
- SMART Attributes Data Structure revision number: 5
- Vendor Specific SMART Attributes with Thresholds:
- ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
- 3 Spin_Up_Time 0x0020 100 100 000 Old_age Offline - 0
- 4 Start_Stop_Count 0x0030 100 100 000 Old_age Offline - 0
- 5 Reallocated_Sector_Ct 0x0032 100 100 000 Old_age Always - 0
- 9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 46
- 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 20
- 170 Reserve_Block_Count 0x0033 100 100 010 Pre-fail Always - 0
- 171 Program_Fail_Count 0x0032 100 100 000 Old_age Always - 0
- 172 Erase_Fail_Count 0x0032 100 100 000 Old_age Always - 0
- 183 Runtime_Bad_Block 0x0030 100 100 000 Old_age Offline - 0
- 184 End-to-End_Error 0x0032 100 100 090 Old_age Always - 0
- 187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
- 192 Unsafe_Shutdown_Count 0x0032 100 100 000 Old_age Always - 2
- 199 UDMA_CRC_Error_Count 0x0030 100 100 000 Old_age Offline - 0
- 225 Host_Writes_32MiB 0x0032 100 100 000 Old_age Always - 2030
- 226 Workld_Media_Wear_Indic 0x0032 100 100 000 Old_age Always - 2685690
- 227 Workld_Host_Reads_Perc 0x0032 100 100 000 Old_age Always - 14
- 228 Workload_Minutes 0x0032 100 100 000 Old_age Always - 2778
- 232 Available_Reservd_Space 0x0033 100 100 010 Pre-fail Always - 0
- 233 Media_Wearout_Indicator 0x0032 100 100 000 Old_age Always - 0
- 241 Host_Writes_32MiB 0x0032 100 100 000 Old_age Always - 2030
- 242 Host_Reads_32MiB 0x0032 100 100 000 Old_age Always - 3001
|
Je n'ai pas non plus la ligne en question, pourtant j'ai installé la dernière release 5.42 de smartmontools à partir des dépôts backports de Debian et j'ai mis à jour la base de données drivedb.h :
Code :
- # /usr/sbin/update-smart-drivedb
|
muzah a écrit :
Tu pourras me dire quelle méthode tu as suivi pour faire ton alignement ?
|
Je ne comprenais pas cette histoire d'alignement, je me suis donc documenté sur le sujet essentiellement (même si pas totalement) à partir de cette page.
Je précise qu'il s'agit de l'alignement dans le cadre des nouveaux disques durs dont la taille des secteurs est de 4 Kio.
Il y a peut-être beaucoup d'erreurs dans ce que je vais écrire, si c'est le cas je m'en excuse par avance, mais faute de mieux c'est comme ça que je m'explique la chose pour le moment :
D'abord il y a 3 termes qui reviennent quand on parle d'alignement et pour lesquels j'avais du mal à trouver une définition précise (en particulier pour "bloc" ) :
secteur : la plus petite unité de stockage sur un disque dur que le contrôleur/firmware (fw) peut lire/écrire.
bloc :
- pour un système de fichiers (fs) tels que ext2/3/4, la plus petite unité de stockage.
- pour un utilitaire unix, une unité arbitraire généralement 512 octets / 1 Kio.
- pour un ssd, unité de base pour l'effacement des données correspondant à un certain nombre de pages. (le contrôleur du ssd lit/écrit par page mais efface par bloc)
cluster : pour un fs Windows tel que FAT, la plus petite unité de stockage (depuis DOS 4.0 on parle d'unité d'allocation même si le terme cluster reste très utilisé).
Les disques durs sont divisés en unités appelées secteurs, dont la taille est habituellement de 512 octets. En plus des données qu'il est censé stocker chacun de ces secteurs utilisent entre autre une partie de son espace pour permettre au fw du dd de corriger d'éventuelles erreurs via des algorithmes de code de correction d'erreur (ECC).
La taille des dd augmentant, l'espace alloué à la correction des erreurs est de plus en plus importante (plus de secteurs = plus d'espace ECC), de plus la densité des données augmentant les erreurs de bas niveau augmentent elles-aussi et mettent à rude épreuve la capacité du fw à les corriger toutes.
Pour ces 2 raisons les constructeurs produisent désormais de nouveaux dd dont la taille des secteurs est de 4 Kio, ce qui permet de maximiser l'espace disponible pour l'utilisateur (secteurs plus gros = moins de secteurs = moins d'espace ECC) et de soulager le fw en utilisant des algorithmes de corrections d'erreurs plus puissants qui le sollicitent moins.
Toutefois il reste un problème : la compatibilité avec les logiciels (BIOS, bootloaders, noyaux d'OS, fs, utilitaires).
En attendant que toutes ces briques logicielles soient mises à jour et compatibles avec des secteurs de 4 Kio, les constructeurs ont mis au point des fw qui présentent à ces dernières (émulent) des secteurs de 512 octets.
Les secteurs physiques lus/écrits par le fw font bien 4 Kio mais les logiciels eux ne voient que des secteurs logiques (émulés par le fw) de 512 octets. Cette caractéristique est appelé Advanced Format (Format Avancé).
Pour connaître la taille des secteurs logiques et physiques il suffit de lire les résultats des commandes suivantes :
Code :
- cat /sys/block/sdx/queue/logical_block_size
- cat /sys/block/sdx/queue/physical_block_size
|
... en remplaçant sdx par la dénomination correcte du dd (sda, sdb, sdc etc).
Malheureusement, le résultat de la 2e commande est parfois (souvent ?) faux. Je possède par exemple un dd Seagate (référence ST2000DL003) qui utilise la technologie de Format Avancé et donc des secteurs physiques de 4 Kio. Pourtant les commandes présentées ci-dessus me retournent une valeur de 512 octets pour les secteurs logiques (juste) et physiques (faux).
D'ailleurs quand je lance GParted dessus et que j'affiche les informations à son sujet (Affichage > Informations sur le périphérique) la taille des secteurs annoncée est encore de 512 octets. En cherchant rapidement sur Google j'ai lu qu'il se pourrait que le fw "mente" pour une histoire de compatibilité avec d'anciens OS comme Windows XP...
Un autre problème se pose, celui de l'alignement des partitions et des fs.
Supposons que la taille des blocs des fs ne dépasse pas 4 Kio ce qui est souvent le cas.
Si un fs n'est pas aligné, cela signifie que chaque bloc de ce fs est à cheval sur 2 secteurs physiques. Lorsque le fw devra lire un tel bloc cela n'aura le plus souvent qu'une faible incidence, par contre cela peut fortement dégrader les performances lorsqu'il devra écrire dessus car pour un bloc écrit il devra lire 2 secteurs (au lieu d'un), modifier des portions de ces 2 secteurs (au lieu d'un) et écrire 2 secteurs (au lieu d'un).
Toutefois l'ampleur de cette dégradation est extrêmement variable selon les fs en témoignent les graphes de la page citée plus haut.
Aligner un fs consiste donc à faire en sorte qu'aucun bloc ne soit à cheval sur 2 secteurs physiques.
Pour ce faire il suffit de donner aux partitions des tailles multiples de 4 Kio, et de faire commencer la 1e partition sur un secteur tel que l'espace le précédant soit lui-aussi un multiple de 4 Kio typiquement le secteur 2048 qui est choisi par défaut avec certains utilitaires tel que GParted.
En effet le 1er secteur (MBR) ayant l'adresse LBA 0, le secteur logique 2048 débute après 1 Mio ((2047+1) x 512 octets), qui est un multiple de 4 Kio, donc le 1er bloc de la 1e partition est bien aligné tout comme les autres blocs des fs des différentes partitions si on a donné aux partitions des tailles multiples de 4 Kio.
En conclusion : avec GParted il devrait suffire d'aligner les partitions sur le Mio et vérifier qu'il a bien fait commencé la 1e partition sur le secteur n° 2048, ce qu'il fait de toute façon automatiquement depuis longtemps. (et ne pas laisser d'espace non-alloué entre les partitions à moins qu'ils n'aient des tailles multiples de 4 Kio)
Maintenant concernant les ssd que signifie aligner les partitions et les fs ?
Je suppose qu'il s'agit d'aligner les blocs des fs avec les pages et les blocs du ssd. Autrement dit il faut faire en sorte qu'aucun bloc d'un fs ne soit à cheval sur 2 pages ou sur 2 blocs du ssd.
Si les blocs des fs sont à cheval sur 2 pages, lorsque l'OS voudra en écrire un le fw devra accéder à 2 pages au lieu d'une.
Si des blocs des fs sont à cheval sur 2 blocs du ssd, lorsque l'OS voudra écrire un bloc d'un fs, non seulement le fw devra accéder à 2 pages au lieu d'une mais si en plus elles ne sont pas vides tout le processus consistant à copier le contenu d'un bloc du ssd en mémoire cache, à l'effacer, à modifier la page qui change, et à recopier le bloc sur le ssd (processus qui est nécessaire pour modifier une page puisque le fw doit effacer une page avant de la modifier et qu'il ne peut effacer que par bloc de ssd) sera multiplié par 2 ce qui dégradera les performances.
Or les pages d'un ssd font généralement 4 Kio, de plus 1 Mio est un multiple de toutes les tailles de blocs de ssd (généralement 512 Kio , 1 Mio).
Donc la conclusion précédente devrait rester valable même pour un ssd, à savoir pour aligner les partitions et les fs d'un ssd il suffit, avec GParted, de créer des partitions dont la taille est alignée sur le Mio et vérifier que le 1er secteur de la 1e partition est le 2048.
Conclusion que l'on peut d'ailleurs retrouver sur cette page.