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...)