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.
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.
Depuis l'alignement apparaît dans beaucoup d'endroits -
- Je vais développer un peu sur la question.
"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
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:
stripe size / block size
(ex. 64k/4k = 16) 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:
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.
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
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.