web-dev-qa-db-fra.com

Comment aligner ma table de partition correctement?

Je suis en train de construire mon premier ensemble RAID5. J'ai utilisé mdadm pour créer la configuration suivante:

root@bondigas:~# mdadm --detail /dev/md1
/dev/md1:
        Version : 00.90
  Creation Time : Wed Oct 20 20:00:41 2010
     Raid Level : raid5
     Array Size : 5860543488 (5589.05 GiB 6001.20 GB)
  Used Dev Size : 1953514496 (1863.02 GiB 2000.40 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Wed Oct 20 20:13:48 2010
          State : clean, degraded, recovering
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

 Rebuild Status : 1% complete

           UUID : f6dc829e:aa29b476:edd1ef19:85032322 (local to Host bondigas)
         Events : 0.12

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       4       8       64        3      spare rebuilding   /dev/sde

En attendant, j'ai décidé de formater la bête avec la commande suivante:

root@bondigas:~# mkfs.ext4 /dev/md1p1 
mke2fs 1.41.11 (14-Mar-2010)
/dev/md1p1 alignment is offset by 63488 bytes.
This may result in very poor performance, (re)-partitioning suggested.
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=16 blocks, Stripe width=48 blocks
97853440 inodes, 391394047 blocks
19569702 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
11945 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848

Writing inode tables: ^C 27/11945
root@bondigas:~# ^C

Je ne sais pas quoi faire à propos de "L'alignement/dev/md1p1 est décalé de 63488 octets". et comment partitionner correctement les disques afin que je puisse le formater correctement.

19
Jorge Castro

Un de mes amis a fait remarquer que je pouvais simplement mkfs.ex4 directement sur /dev/md1 sans rien partitionner. J'ai donc supprimé la partition et je l'ai fait.

7
Jorge Castro

Depuis l'alignement apparaît dans beaucoup d'endroits -

  • Disques durs "Advanced Format" avec blocs de 4k
  • SSD
  • RAID
  • LVM

- Je vais développer un peu sur la question.

Aligner des partitions

"Linux sur des disques de secteur de 4 Ko" (IBM developerWorks) parcourt les étapes avec fdisk, parted et GPT fdisk.

Avec fdisk:

Sudo fdisk /dev/XXX 
c # turn off DOS compatibility
u # switch to sector units
p # print current partitions, check that start sectors are multiples of 8

# for a new partition:
n # new partition
<select primary/secondary and partition #>
first sector: 2048 
  # 2048 is default in recent fdisk, 
  # and is compatible with Vista and Win 7, 
  # 4k-sector disks and all common RAID stripe sizes

Aligner le système de fichiers

Cela concerne principalement le RAID (niveaux 0, 5 et 6; pas le niveau 1); le système de fichiers fonctionne mieux s'il est créé avec la connaissance des tailles de bande.

Il peut également être utilisé pour les SSD si vous souhaitez aligner le système de fichiers sur la taille du bloc d'effacement SSD (Theodore Tso, développeur du noyau Linux).

Dans l'OP post mkfs a apparemment détecté automatiquement les paramètres optimaux, aucune action supplémentaire n'a donc été requise.

Si vous souhaitez vérifier, pour RAID, les paramètres pertinents sont les suivants:

  • taille de bloc (taille de bloc du système de fichiers, ex. 4096)
  • taille de bande (identique à la taille de morceau mdadm, ex. 64k)
  • stride: stripe size / block size (ex. 64k/4k = 16)
  • stripe-width: stride * #-of-data-disks (ex. 4 disques RAID 5 = 3 disques de données; 16 * 3 = 48)

De Wiki Linux Raid . Voir aussi cette calculatrice simple pour différents niveaux de RAID et le nombre de disques.

Pour alignement de bloc d'effacement SSD, les paramètres sont les suivants:

  • taille du bloc fs (ex. 4096)
  • Taille du bloc d'effacement SSD (ex. 128k)
  • stripe-width: taille-bloc-effacement/taille-bloc-fs (ex. 128k/4k = 32)

De message SSD de Theodore .

Alignement des étendues LVM

Le problème potentiel est que LVM crée un en-tête 192k. Ceci est un multiple de 4k (donc pas de problème avec les disques de bloc 4k) mais peut ne pas être un multiple de la taille de bande RAID (si LVM s'exécute sur un RAID) ou de la taille du bloc d'effacement SSD (si LVM s'exécute sur un SSD).

Voir post de Theodore pour la solution de contournement.

17
j-g-faustus

Je trouve que cette voie est la plus facile

parted -a opt /dev/md0
(parted) u MiB
(parted) rm 1
(parted) mkpart primary 1 100%

ou une autre méthode sale irait simplement comme ça

(parted) mkpart primary ext4 1 -1
6
AllGamer

Il semble que mkfs.ext4 souhaite que les systèmes de fichiers de votre RAID démarrent sur une limite de 64 Ko. Si vous utilisez le disque en entier, il commence à 0, ce qui est bien sûr également un multiple de 64 Ko ...

De nos jours, la plupart des outils de partitionnement utilisent quand même une limite de 1 MiB (ce n’est probablement pas le cas de fdisk).

La raison en est que la plupart des disques durs et SSD utilisent sur le périphérique des secteurs physiques beaucoup plus grands que les secteurs logiques. En conséquence, si vous lisez un secteur logique de 512 octets à partir du disque, le matériel doit en réalité lire une quantité de données beaucoup plus grande.

Dans le cas de votre périphérique RAID logiciel, quelque chose de similaire se produit: les données qu’il contient sont stockées dans des "morceaux" de 64 Ko avec les paramètres mdadm par défaut.

1
JanC