Aligner des partitions
| Fiche express | |
|---|---|
| Domaine | Alignement des partitions disque (SAN/VM/LVM) |
| Commande | fdisk, sfdisk, pvcreate
|
| Contexte | Disques créés avant l'alignement par défaut (RHEL < 6, Windows < 2008, VM sur SAN/NAS) |
| Voir aussi | Fdisk, LVM, NFS |
Un partitionnement désaligné place le début d'une partition (ou d'un volume LVM) à cheval sur deux blocs physiques du support sous-jacent (disque, LUN SAN, datastore VMware). Chaque écriture logique déclenche alors deux écritures physiques au lieu d'une, ce qui dégrade sensiblement les performances I/O — un sujet classique sur les LUN NetApp/SAN et les machines virtuelles créées avant que les hyperviseurs et OS n'alignent correctement par défaut.
Pourquoi le désalignement apparaît
Historiquement, un disque exposait à l'OS une géométrie (cylindres/têtes/secteurs) utilisée par les outils de partitionnement pour placer le début des partitions. Cette géométrie est aujourd'hui émulée par le firmware du disque (ou de l'hyperviseur), mais des outils comme fdisk (GNU/Linux) ou Microsoft DiskPart (Windows 2000/2003) continuent par défaut à démarrer la première partition au secteur 63, qui ne tombe pas sur une frontière de bloc physique propre (typiquement 4 Ko, 32 Ko ou 1 Mo selon le stockage).
Windows Server 2008+/Vista (offset par défaut 1 048 576, divisible par 4096) et RHEL 6+ (alignement correct par défaut) ne nécessitent normalement plus d'ajustement manuel — le problème concerne surtout les systèmes plus anciens ou les disques migrés/clonés depuis un tel système.
Vérifier l'alignement
Sous Linux
fdisk -lu /dev/sda # secteur de départ de chaque partition
cat /sys/block/sda/alignment_offset
cat /sys/block/sda/sda1/alignment_offset
cat /sys/block/sda/queue/physical_block_size
cat /sys/block/sda/queue/logical_block_size
cat /sys/block/sda/queue/minimum_io_size
cat /sys/block/sda/queue/optimal_io_size
Un secteur de départ à 63 (au lieu de 128, 256 ou 2048 selon le block size du support) signale une partition non alignée.
Avec les outils plus récents (RHEL 6+), parted permet une vérification directe :
parted /dev/sda align-check optimal 1 # vérifie l'alignement optimal de la partition 1
Vérifier également que la détection automatique d'alignement est active côté LVM
(/etc/lvm/lvm.conf) :
grep -E 'ata_alignment_offset_detection|data_alignment_detection' /etc/lvm/lvm.conf
# les deux doivent valoir 1
Sous Windows
Récupérer le StartingOffset et la taille de secteur (BlockSize) d'une partition :
wmic partition get BlockSize, StartingOffset, Name, Index
(ou via msinfo32.exe, section Composants → Stockage → Disques). La partition est
alignée si StartingOffset est un multiple de BlockSize.
Côté baie NetApp
priv set -q advanced
lun show -v
lun alignment show
Via sg3_utils
yum install sg3_utils
sg_inq -p 0xb0 disk # page VPD Block Limits (tailles de bloc/alignement annoncées par le disque)
Corriger l'alignement
⚠️ Ces opérations sont destructives (repartitionnement) : sauvegarder les données, ou opérer sur un disque neuf/vierge attaché à une autre VM avant remise en production.
Avec fdisk (mode expert)
fdisk /dev/sda
# x → entrer en mode expert
# b → déplacer le début de données d'une partition
# 1 → numéro de la partition
# 2048 → nouveau secteur de départ (au lieu de 63)
# w → écrire la table de partitions
Alternative en une commande avec sfdisk, pour forcer le premier secteur à 128 :
echo "128,," | sfdisk -uS /dev/sdc
# vérification visuelle du secteur de boot
dd if=/dev/sdc bs=512 count=130 | xxd -c 32
Avec LVM (pvcreate)
pvcreate accepte un décalage (--dataalignmentoffset) et/ou un
alignement (--dataalignment) explicites, à faire correspondre à la géométrie du
stockage sous-jacent (SAN, RAID) :
pvcreate --dataalignmentoffset 512b --dataalignment 512K /dev/sda1
pvcreate --dataalignmentoffset 512b --dataalignment 480K /dev/sda1
pvcreate --dataalignment 4k /dev/mpath/nlun1
Puis, côté LV/FS, aligner les I/O sur le stripe du stockage si pertinent :
lvcreate -i 4 -I 64k -n oradbs -L 600g vg_data
mkfs.ext3 -j -m0 -b4096 /dev/vg_data/oradbs
Cas particulier : VM sur SAN/NAS (VMware/NetApp)
Sur un datastore SAN/NAS (NetApp notamment), le désalignement se cumule à deux niveaux : celui de la partition invitée (OS) et celui du datastore VMFS lui-même. La procédure recommandée par NetApp (document technique TR-3747, section 4.4) consiste à :
- Nouvelle VM : suivre la procédure de partitionnement aligné dès l'installation (Windows
2008/Seven et RHEL 6+ n'ont normalement pas besoin d'ajustement) ;
- VM déjà installée : attacher le disque non aligné à une autre VM et appliquer la
correction (section 5.2 du même document), ou utiliser un outil de réalignement à froid type mbralign (VMware).