Ik heb een homeserver staan die Debian draait. Toen ik die, bijna een jaar geleden, samenstelde, zaten er 6 harde schijven van 1.5 TB in die ik met mdadm in Raid5 aan elkaar hing. Daar zette ik dan lvm2 over om handiger te kunnen partitioneren.
Het zijn allemaal standaard 512B-sector schijven, dus de raid array en de lvm laag heb ik allemaal gewoon default aangemaakt, zonder me met speciale alignment bezig te houden. De oorspronkelijke mdadm chunk size was 64 KiB, lvm PE's 4 MiB.
Ondertussen heb ik al een paar keer de array laten groeien. Momenteel bestaat die uit 14 schijven van 1.5 TB in Raid6, met 512 KiB chunk size. Dit is de huidige situatie:
Als ik nu echter een nieuwe partitie op de array wil aanmaken en mkfs-en, krijg ik deze waarschuwing:
Stride en stripe width kloppen wel, maar hoe kan ik deze misalignment oplossen? Dit is de snelheid die ik op deze partitie krijg:
Op de andere filesystems in de array krijg ik gelijkaardige resultaten.
Kan de performance nog verbeterd worden met een juiste alignment? Op Google vind ik enkel informatie over het alignen van SSD's of Advanced Sector Drives. Kan ik de alignment nog aanpassen zonder dat ik de hele array moet heraanmaken? Er staat momenteel een 14 TiB aan data op, die kan ik niet zomaar ergens tijdelijk plaatsen. (Ik weet dat raid geen backup is, van de echt onmisbare data heb ik ook wel een backup, maar de rest wil ik liever ook niet kwijt...)
Het zijn allemaal standaard 512B-sector schijven, dus de raid array en de lvm laag heb ik allemaal gewoon default aangemaakt, zonder me met speciale alignment bezig te houden. De oorspronkelijke mdadm chunk size was 64 KiB, lvm PE's 4 MiB.
Ondertussen heb ik al een paar keer de array laten groeien. Momenteel bestaat die uit 14 schijven van 1.5 TB in Raid6, met 512 KiB chunk size. Dit is de huidige situatie:
$ sudo mdadm -D /dev/md0 /dev/md0: Version : 0.90 Creation Time : Thu Dec 24 17:40:26 2009 Raid Level : raid6 Array Size : 17581627392 (16767.15 GiB 18003.59 GB) Used Dev Size : 1465135616 (1397.26 GiB 1500.30 GB) Raid Devices : 14 Total Devices : 14 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Thu Nov 4 09:46:52 2010 State : clean Active Devices : 14 Working Devices : 14 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K UUID : 315d2f61:4920e233:dee7863d:af5dab7f (local to host utal) Events : 0.5052324 Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 65 1 active sync /dev/sde1 2 8 177 2 active sync /dev/sdl1 3 8 113 3 active sync /dev/sdh1 4 8 129 4 active sync /dev/sdi1 5 8 161 5 active sync /dev/sdk1 6 8 145 6 active sync /dev/sdj1 7 8 49 7 active sync /dev/sdd1 8 8 33 8 active sync /dev/sdc1 9 8 17 9 active sync /dev/sdb1 10 8 97 10 active sync /dev/sdg1 11 8 81 11 active sync /dev/sdf1 12 8 225 12 active sync /dev/sdo1 13 8 209 13 active sync /dev/sdn1
$ sudo pvdisplay -m --- Physical volume --- PV Name /dev/md0 VG Name tank PV Size 16.37 TiB / not usable 1.81 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 4292389 Free PE 0 Allocated PE 4292389 PV UUID 0eRpCM-AJHL-3lSF-73gy-CFe4-g8hD-6xAvm1 --- Physical Segments --- Physical extent 0 to 22527: Logical volume /dev/tank/home Logical extents 0 to 22527 Physical extent 22528 to 23551: Logical volume /dev/tank/usr Logical extents 0 to 1023 Physical extent 23552 to 24575: Logical volume /dev/tank/var Logical extents 0 to 1023 Physical extent 24576 to 25599: Logical volume /dev/tank/swap_1 Logical extents 0 to 1023 Physical extent 25600 to 4292388: Logical volume /dev/tank/data Logical extents 0 to 4266788
Als ik nu echter een nieuwe partitie op de array wil aanmaken en mkfs-en, krijg ik deze waarschuwing:
$ sudo mkfs.ext4 /dev/tank/usr mke2fs 1.41.12 (17-May-2010) [b]/dev/tank/usr alignment is offset by 327680 bytes. This may result in very poor performance, (re)-partitioning suggested.[/b] Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=128 blocks, Stripe width=1536 blocks 262144 inodes, 1048576 blocks 52428 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1073741824 32 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 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 36 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
Stride en stripe width kloppen wel, maar hoe kan ik deze misalignment oplossen? Dit is de snelheid die ik op deze partitie krijg:
$ dd if=/dev/zero of=testfile bs=4096 count=800000 800000+0 records in 800000+0 records out 3276800000 bytes (3.3 GB) copied, 19.2158 s, 171 MB/s $ dd if=testfile of=/dev/null bs=4096 800000+0 records in 800000+0 records out 3276800000 bytes (3.3 GB) copied, 5.60768 s, 584 MB/s
Op de andere filesystems in de array krijg ik gelijkaardige resultaten.
Kan de performance nog verbeterd worden met een juiste alignment? Op Google vind ik enkel informatie over het alignen van SSD's of Advanced Sector Drives. Kan ik de alignment nog aanpassen zonder dat ik de hele array moet heraanmaken? Er staat momenteel een 14 TiB aan data op, die kan ik niet zomaar ergens tijdelijk plaatsen. (Ik weet dat raid geen backup is, van de echt onmisbare data heb ik ook wel een backup, maar de rest wil ik liever ook niet kwijt...)