ITjes en datjes

Dingen uit dagelijks IT werk

Archive for the ‘hardware’ Category

Flexible fileserver on Debian Stretch

Finally getting around to reinstall my fileserver, I wanted to make it flexible with data integrity.
ZFS wasn’t flexible enough for my tastes, and LVM has no integrity check, so I had to create something with btrfs.

Early tests with using btrfs on LVM for root and /boot made the virtual machine unbootable, but using btrfs directly was no problem.
This meant I still had to use separate partitions for /boot, root, and swap (on mdraid10), and then use the rest for LVM.

It seems the installation of Stretch has trouble when adding raid or lvm afterwards, so I partitioned the installation this way:

vda1, 512M, bootable, btrfs, /boot
vda2, 4096M, btrfs, /
vda3, 512M, device for raid (to be made swap after creating raid10 after installation)
vda4, LVM
LVM:
vg0: vda4, vdb4, vdc4
lv’s:
tmp_0, 512M, btrfs, /tmp
home_0, 1024M, btrfs, /home
var_0, 1024M, btrfs, /var

After installation I created the same partitions for vdb and vdc, then created the mdraid10 for swap:
mdadm –create –run /dev/md99 –level=10 –layout=n2 raid-devices=3 /dev/vda3 /dev/vdb3 /dev/vdc3
mkswap /dev/md99

With that done I exchanged all /dev/mapper devices for the UUID’s of the btrfs devices in /etc/fstab and did a reboot as test.

With everything running I created logical volumes tmp_1, tmp_2, home_1, home_2, etc. by specifying the different physical devices to be put on:
lvcreate -L 512M -n tmp_1 vg0 /dev/vdb4
lvcreate -L 512M -n tmp_2 vg0 /dev/vdc4

Adding the LV’s to btrfs:
btrfs device add -f /dev/mapper/vg0-tmp_1 /dev/mapper/vg0-tmp_2 /tmp
btrfs device add -f /dev/mapper/vg0-home_1 /dev/mapper/vg0-home_2 /home

btrfs balance start -dconvert=raid1 -mconvert=raid1 /tmp
btrfs balance start -dconvert=raid1 -mconvert=raid1 /home

For unimportant data I made a logical volume striped across the three disks:
lvcreate -L xxG -n roraid -i 3 vg0
mkfs.ext4 /dev/mapper/vg0-noraid (could also be btrfs but the data integrity isn’t important here.
..and added its UUID to fstab with mountpoint /data/noraid

For the data protected with checksum integrity:
create three LV’s raid1_0, 1, 2 on the three PV’s like /tmp, /home, etc. above and make another btrfs raid of these.

Last, don’t forget to grub-install /dev/vdb and /dev/vdc.

The /data/raid1 mount point caused an error after first reboot, but later no more. Maybe a glitch in the matrix..

With this setup I can expand /tmp, /home, /var, /data/noraid and /data/raid1 as needed since I don’t know if I get more data for raid or not.
With two fileservers I can keep a backup of the raid1 data of one server on the noraid volume of the other. The btrfs volumes only protect from bit rot after all.

And if it really fills up I can start exchanging the disks for bigger ones.

 

Written by mnystrom

2016/04/04 at 22:20

Thoughts about file location and performance

MyDefrag system scripts put the MFT$ and directories at one third of the size of the disk for better access performance.
Creating a zone of frequently accessed files together also serves as a performance enhancer so the disk takes up less time to get from one file to the other.

Looking at recently accessed files on my laptop show mostly browser cache in /home and system logfiles in /var. The OS files would only be used once at startup, binaries only when starting a program. For a single user system it seems there’s no benefit to optimising the location of files on disk beyond keeping /var and /home close together on disk. (done by using separate partitions for these and using a separate partition for data to keep that out of /home)

On a file server it might benefit to create a data partition of about a third the size of the disk, then a partition for /var, then another partition for data (combining both data partitions through LVM). Then the disk arm would be closer to the files on average, reducing wear and tear.

On a multi user server create the /home partition after / and /var and link the user’s data directories in the profile to a separate data partition.
I’ve done this with Windows terminal servers where I used a separate profiles partition (can be done by modifying the system and moving files in save mode, then creating links of the original directories) after the OS, swap and program files partitions and using policies to link document directories to the the file server (had to be done anyway, otherwise it would have been a larger data partition).
One of the biggest benefits was preventing the OS partition of filling up by users (even local system accounts).
Too bad the Windows profiles directory can’t be linked to a network location like on a *nix machine, creating a NFS link to /home on another server.

Written by mnystrom

2015/06/06 at 18:10

Geplaatst in linux, storage

Revive old home server

After replacing the failing home server with a decent Synology NAS I got my hands on a HP Storageworks Data Vault X510.

HP_X510_2
Being curious I wanted to see if I could get it to run with Debian so I could do some tests with mdadm.

Turns out it’s not too difficult.

-place the harddisk to install it on in a standard PC and use that to install the i386 version of Debian (in this case it was Jessie)
-add a fixed IP address for eth0 in /etc/networking/interfaces (the Realtek r8168 (seen as r8169) couldn’t get a DHCP address for some reason)
-place the disk in the X510 and boot
-login with SSH (you did install it, didn’t you?)
-have fun with it

 

Written by mnystrom

2015/06/03 at 20:41

Geplaatst in Debian, EN, hardware, installation, linux, server, storage

Tagged with , ,

korte mdadm RAID test

Even een korte test gedaan na de Debian Jessie installatie op een HP Storageworks Data Vault X510 (voormalige Windows home server).

Ik wilde zelf eens testen wat het verschil in snelheid is in (random) read en write op mdadm RAID0, RAID5, en RAID10 met layout n2, o2, f2.

De 4 disks zijn een Seagate 250GB en 3 80GB Hitachi (IBM Deskstar) schijven die ik kon misbruiken voor de test. Geen hoogvliegers maar voldoende voor mijn test aangezien het niet om maximale snelheid gaat.
Debian is geïnstalleerd op de Seagate in een 64GB partitie met daarachter 3 4GB partities. De overige schijven heb ik ook 3 partities van 4GB gegeven.

Array md5 is een RAID5 van sda, b, c en d5, md0 is een RAID0 van sda, b, c en d7. Partities sda, b, c, d6 gebruikte ik om telkens een RAID10 met afwisseled layout n2, o2, f2 te maken.

Een snelle blik met hdparm -t /dev/sd[abcd] laat een snelheid van 95 MB/sec zien voor de Seagate en 73 MB/sec voor de Hitachi’s.
Met /dev/md0, 5 en 10 kwam het volgende (gemiddeld):
md0: 253 MB/sec
md5: 180 MB/sec
md10 (n2): 137 MB/sec
md10 (o2): 135 MB/sec
md10 (f2): 232 MB/sec

Uit de simpele test met iozone kwam het volgende:

RAID0;
Command line used: iozone -R -b raid0 -f 0/iodump -i 0 -i 2 -s 1024M
Output is in kBytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 kBytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
kB            reclen   write      rewrite    random read   random write
1048576   4          256342   261384   2105037        17029

RAID5;
Command line used: iozone -R -b raid5 -f 5/iodump -i 0 -i 2 -s 1024M
Output is in kBytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 kBytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
kB            reclen   write      rewrite    random read   random write
1048576   4          123690   125667   2080483         6000

RAID10 –layout=n2;
Command line used: iozone -R -b raid10-n2 -f 10/iodump -i 0 -i 2 -s 1024M
Output is in kBytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 kBytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
kB            reclen   write      rewrite    random read   random write
1048576   4          130257   131265   2085801        7990

RAID10 –layout=o2;
Command line used: iozone -R -b raid10-o2 -f 10/iodump -i 0 -i 2 -s 1024M
Output is in kBytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 kBytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
kB            reclen   write      rewrite    random read   random write
1048576   4          132550    132746  2077713        8075

RAID10 –layout=f2;
Command line used: iozone -R -b raid10-f2 -f 10/iodump -i 0 -i 2 -s 1024M
Output is in kBytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 kBytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
kB            reclen   write      rewrite    random read   random write
1048576   4         119730    116639   2110766         6574

De conclusie uit deze test is dat RAID0 het snelste is met sequential en random write, random read is ongeveer gelijk met RAID0, 5 en 10. RAID10 layout near en offset is ongeveer gelijk aan elkaar en iets sneller met write dan layout far.
Het verschil zal misschien groter worden met grotere partities.

Drie disks

Een hdparm -t test met RAID10, n2 op partities sdb,c, en d6 laat een snelheid van 101 MB/sec zien. De regel n/2 geldt dus ook voor een oneven aantal disks in RAID10.

Iozone laat hierbij het volgende zien:
kB            reclen   write      rewrite    random read   random write
1048576   4         97125       98339     2102168       12869

Opvallend is de hogere snelheid bij random write, waarschijnlijk omdat er nu minder keuze is waar een blok geschreven kan worden op een disk.

Wat bij een RAID10 op 2 disks ook opvalt is dat bij de hdparm test de snelheid gelijk is van een enkele disk terwijl via bwm-ng wel te zien is dat er van beide schijven gelezen wordt.

Iozone test:
kB            reclen   write      rewrite    random read   random write
1048576   4          66043      66612    2103323        8655

Random write zakt nu weer in maar is wel iets sneller dan met 4 disks in raid. Zou een oneven aantal disks in RAID10 effectiever zijn voor gebruik met databases of virtuele machines?

Test met de 3 Hitachi’s in RAID10

Dit is interessant genoeg om eens de drie layout opties te testen met partities van 37GB. De snelheid is drastisch minder vanaf de helft van de disk dus gebruik ik niet de volledige schijf. Dit laat nog eens duidelijk zien dat wanneer snelheid het belangrijkste is, het beter is om niet 100% van de disk te gebruiken. En anders gewoon het geld neerleggen voor SSD’s. :-)
(tijdens de sync ging de snelheid bij 92% ineens heel snel van 67 MB/s naar 37 MB/s, misschien omdat de disks al gedeeltelijk gewist waren?)

(wat ook opviel was dat bij de eerste keer mounten van de array na een ext4 formattering er eerst een hoop disk activiteit is, het lijkt alsof dan pas ext4 echt actief wordt)

Eerst layout n2: hdparm -t kwam met 115 MB/s

iozone:
kB            reclen   write      rewrite    random read   random write
1048576   4           95773     96159    2107576         12528

Met een 4GB testfile is het heel anders:
kB            reclen   write      rewrite    random read   random write
4194304   4            87656    87659     660                 3977

Met 2 threads en 1GB files:
Command line used: iozone -R -b raid10-n2-3x37G -w -t 2 -F 10/iodump1 10/iodump2 -i 0 -i 2 -s 1024M
Output is in kBytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 kBytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
Throughput test with 2 processes
Each process writes a 1048576 kByte file in 4 kByte records

Children see throughput for 2 initial writers = 88541.36 kB/sec
Parent sees throughput for 2 initial writers = 80553.47 kB/sec
Min throughput per process = 43050.47 kB/sec
Max throughput per process = 45490.89 kB/sec
Avg throughput per process = 44270.68 kB/sec
Min xfer = 992792.00 kB

Children see throughput for 2 rewriters = 88290.14 kB/sec
Parent sees throughput for 2 rewriters = 82255.72 kB/sec
Min throughput per process = 44094.47 kB/sec
Max throughput per process = 44195.67 kB/sec
Avg throughput per process = 44145.07 kB/sec
Min xfer = 1046688.00 kB

Children see throughput for 2 random readers = 3989.19 kB/sec
Parent sees throughput for 2 random readers = 3988.93 kB/sec
Min throughput per process = 1779.90 kB/sec
Max throughput per process = 2209.29 kB/sec
Avg throughput per process = 1994.60 kB/sec
Min xfer = 844788.00 kB

Children see throughput for 2 random writers = 6503.86 kB/sec
Parent sees throughput for 2 random writers = 6013.46 kB/sec
Min throughput per process = 3240.41 kB/sec
Max throughput per process = 3263.45 kB/sec
Avg throughput per process = 3251.93 kB/sec
Min xfer = 1041236.00 kB

“Throughput report Y-axis is type of test X-axis is number of processes”
“Record size = 4 kBytes ”
“Output is in kBytes/sec”

” Initial write ” 88541.36

” Rewrite ” 88290.14

” Random read ” 3989.19

” Random write ” 6503.86

Deze keer zat de dual core CPU de meeste tijd in wait state, dus daar zit een beperking, Had niet verwacht dat read langzamer was dan write.

 RAID10,o2

hdparm: 118 MB/sec

iozone 1GB:
kB            reclen   write      rewrite    random read   random write
1048576   4           97665      98451     2093890       12945

iozone 4GB:
kB            reclen   write      rewrite    random read   random write
4194304   4           88329      88755      667               3968

Command line used: iozone -R -b raid10-o2-3x37G -w -t 2 -F 10/iodump1 10/iodump2 -i 0 -i 2 -s 1024M

Output is in kBytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 kBytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
Throughput test with 2 processes
Each process writes a 1048576 kByte file in 4 kByte records

Children see throughput for 2 initial writers = 88701.92 kB/sec
Parent sees throughput for 2 initial writers = 81542.38 kB/sec
Min throughput per process = 44110.47 kB/sec
Max throughput per process = 44591.45 kB/sec
Avg throughput per process = 44350.96 kB/sec
Min xfer = 1037612.00 kB

Children see throughput for 2 rewriters = 87304.59 kB/sec
Parent sees throughput for 2 rewriters = 80649.30 kB/sec
Min throughput per process = 43106.23 kB/sec
Max throughput per process = 44198.36 kB/sec
Avg throughput per process = 43652.30 kB/sec
Min xfer = 1022844.00 kB

Children see throughput for 2 random readers = 3696.82 kB/sec
Parent sees throughput for 2 random readers = 3696.71 kB/sec
Min throughput per process = 1736.35 kB/sec
Max throughput per process = 1960.46 kB/sec
Avg throughput per process = 1848.41 kB/sec
Min xfer = 928756.00 kB

Children see throughput for 2 random writers = 6555.41 kB/sec
Parent sees throughput for 2 random writers = 6059.91 kB/sec
Min throughput per process = 3267.60 kB/sec
Max throughput per process = 3287.81 kB/sec
Avg throughput per process = 3277.71 kB/sec
Min xfer = 1042196.00 kB

“Throughput report Y-axis is type of test X-axis is number of processes”
“Record size = 4 kBytes ”
“Output is in kBytes/sec”

” Initial write ” 88701.92

” Rewrite ” 87304.59

” Random read ” 3696.82

” Random write ” 6555.41

RAID10, f2

De manier zoals far layout is opgezet is duidelijk tijdens de array sync, het duurt veel langer omdat de snelheid ongeveer de helft is van de n2 layout maar wel constant.

hdparm: verwachte 190 MB/sec

iozone:

Command line used: iozone -R -b raid10-f2-3x37G -w -t 2 -F 10/iodump1 10/iodump2 -i 0 -i 2 -s 1024M
Output is in kBytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 kBytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
Throughput test with 2 processes
Each process writes a 1048576 kByte file in 4 kByte records

Children see throughput for 2 initial writers = 82377.73 kB/sec
Parent sees throughput for 2 initial writers = 74056.00 kB/sec
Min throughput per process = 40392.30 kB/sec
Max throughput per process = 41985.43 kB/sec
Avg throughput per process = 41188.86 kB/sec
Min xfer = 1009096.00 kB

Children see throughput for 2 rewriters = 80018.49 kB/sec
Parent sees throughput for 2 rewriters = 74390.03 kB/sec
Min throughput per process = 39565.50 kB/sec
Max throughput per process = 40452.99 kB/sec
Avg throughput per process = 40009.24 kB/sec
Min xfer = 1025572.00 kB

Children see throughput for 2 random readers = 3905.55 kB/sec
Parent sees throughput for 2 random readers = 3905.45 kB/sec
Min throughput per process = 1834.01 kB/sec
Max throughput per process = 2071.54 kB/sec
Avg throughput per process = 1952.78 kB/sec
Min xfer = 928376.00 kB

Children see throughput for 2 random writers = 6103.49 kB/sec
Parent sees throughput for 2 random writers = 5581.33 kB/sec
Min throughput per process = 3007.28 kB/sec
Max throughput per process = 3096.21 kB/sec
Avg throughput per process = 3051.75 kB/sec
Min xfer = 1018532.00 kB

“Throughput report Y-axis is type of test X-axis is number of processes”
“Record size = 4 kBytes ”
“Output is in kBytes/sec”

” Initial write ” 82377.73

” Rewrite ” 80018.49

” Random read ” 3905.55

” Random write ” 6103.49

iozone met een enkele 1GB file:
kB            reclen   write      rewrite    random read   random write
1048576   4           85955     86858      2063179       11344

iozone met een enkele 4GB file:
kB            reclen   write      rewrite    random read   random write
4194304    4          78394     78492      716               4058

Vraag me af waardoor dat weer zo langzaam is.

Stukje conclusie

Write het snelste met n2, langzaamste met f2. Random read het snelste met n2, langzaamste met o2. Random write het snelste met o2, langzaamste met f2.
Het kleine verschil tussen n2 en o2 is omdat met 3 disks n2 al gedeeltelijk een offset krijgt zoals bij o2. 4 disks en meer haalt die gelijkenis dan alweer weg.

Een mooie test is te vinden bij ilsistemista.net over RAID10 met de layouts en meerdere threads. Daar is ook te zien dat in de meeste situaties de verschillende layouts elkaar niet veel ontlopen.

Welke RAID10 layout het beste toegepast kan worden is afhankelijk van de toepassing. Sequentieel lezen zoals een media server thuis, RAID10,f2. Sequentieel schrijven zoals een backup disk, RAID10,n2. Bij een random mix zoals databases en virtuele omgevingen ontlopen RAID10,n2 en o2 elkaar niet veel maar lijkt f2 dan weer beter met enkele grotere files in single thread om te kunnen gaan.

Wat ook een factor is, is de snelheid van resync van de array, zeker na vervanging van een disk. Hoe simpeler de layout, hoe sneller dat verloopt. Het verschil tussen 10,n2 en 10,o2 is al ongeveer 30%. Als prioriteit ligt bij zekerheid dan is het beste om de standaard 10,n2 aan te houden.

Hoe dan ook, er zijn veel opties met mdadm waardoor de ideale configuratie toch getest moet worden in de praktijk. RAID10,o2 lijkt een goed uitgangspunt om te starten.

RAID5

hdparm: 107 MB/sec

1048576   4           88924     88859      2097663        6485

Toch nog even met 4GB file getest:
kB            reclen   write      rewrite    random read   random write
4194304   4           79849     80263      567                2862

Command line used: iozone -R -b raid5-3x37G-t2-1G -w -t 2 -F 5/iodump1 5/iodump2 -i 0 -i 2 -s 1024M
Output is in kBytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 kBytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
Throughput test with 2 processes
Each process writes a 1048576 kByte file in 4 kByte records

Children see throughput for 2 initial writers = 81796.59 kB/sec
Parent sees throughput for 2 initial writers = 75337.88 kB/sec
Min throughput per process = 40671.98 kB/sec
Max throughput per process = 41124.61 kB/sec
Avg throughput per process = 40898.29 kB/sec
Min xfer = 1037352.00 kB

Children see throughput for 2 rewriters = 83058.53 kB/sec
Parent sees throughput for 2 rewriters = 77321.25 kB/sec
Min throughput per process = 41483.91 kB/sec
Max throughput per process = 41574.62 kB/sec
Avg throughput per process = 41529.27 kB/sec
Min xfer = 1046304.00 kB

Children see throughput for 2 random readers = 1301.06 kB/sec
Parent sees throughput for 2 random readers = 1301.06 kB/sec
Min throughput per process = 649.35 kB/sec
Max throughput per process = 651.71 kB/sec
Avg throughput per process = 650.53 kB/sec
Min xfer = 1044784.00 kB

Children see throughput for 2 random writers = 4279.91 kB/sec
Parent sees throughput for 2 random writers = 3856.96 kB/sec
Min throughput per process = 2138.85 kB/sec
Max throughput per process = 2141.06 kB/sec
Avg throughput per process = 2139.96 kB/sec
Min xfer = 1047600.00 kB

“Throughput report Y-axis is type of test X-axis is number of processes”
“Record size = 4 kBytes ”
“Output is in kBytes/sec”

” Initial write ” 81796.59

” Rewrite ” 83058.53

” Random read ” 1301.06

” Random write ” 4279.91

Dit laat het nadeel zien van RAID met parity, langzamere writes omdat er meer I/O voor nodig is. Ik had wel snellere reads verwacht.

Het voordeel is nog steeds meer diskruimte beschikbaar te hebben, maar met het nadeel van een langzamere sync na vervanging van een disk en het hogere risico van het falen van een andere disk wegens de hogere I/O belasting is het tegenwoordig niet echt meer waard.
De optie om RAID6 te gebruiken kan ook vervangen worden door RAID10 op te zetten met 3 kopieën voor extra redundancy als er toch een flinke hoeveelheid disks gebruikt gaan worden.

Disk groottes

Het is jammer dat de beste prijsverhouding bij 3 à 4TB disks ligt. In een ideale situatie krijgt het OS een eigen disk apart van de disks voor data (en virtuele machines).
Met bijvoorbeeld een OS van 1GB grootte is maar 0,025% van zo’n disk in gebruik. De rest is dan weggegooide ruimte. Alleen bij een kans op een goedkope partij kleine (gewoonlijk oudere modellen) disks kan het gevoel van verspilling verminderd worden. Gelukkig zijn de prijzen van kleine SSD’s nog te overzien en een goede optie.
Het andere alternatief is dan om het OS op een RAID te zetten van kleine partities op alle schijven in de machine. Dan is de belasting beter verdeeld en toch geen ruimte verspild.
Men zou nog een groep van disks kunnen verdelen in RAID10 sets van 2 disks, en telkens de eerste kleine partitie van 1 disk van de set gebruiken om een RAID10 set te maken voor het OS. Dan is het effect van het OS verminderd op elke data RAID set (die dus niet de tweede disk nodig heeft).
De overgebleven partities zouden een array voor swap kunnen worden, wat toch weinig gebruikt wordt met voldoende RAM in de machine.

Een betere machine maakt veel verschil, een test op de HP 8100 die ik op het werk gebruik (3x1TB RAID10,o2, 10GB RAM);

Command line used: iozone -R -b raid10-o2 -f iodump -i 0 -i 2 -s 1024M

iozone met een enkele 1GB file:
kB            reclen   write      rewrite    random read   random write
1048576   4          508577    556695    3419980        326604

Met 4GB file:
kB            reclen   write      rewrite    random read   random write
4194304    4          160385   178055    3432041       4320

Test bestanden van een paar gigabyte maken het zelfs snellere schijven net zo lastig in random write.

Ultimate server backbone(?);
cheap servers running RAID10, o3 with lots of RAM and 3 SSD’s/HD’s in 3-node clusters.
Unless reliability is very bad 3 times anything should be enough to cover redundancy.

Written by mnystrom

2015/06/03 at 16:25

Geplaatst in linux, NL, opslag, software

Tagged with ,

notities bij omzetting naar RAID

*losse notities terwijl ik nog bezig met met de omzetting, het is nog niet geverifieerd

De oorspronkelijke opzet van de PC:
disk 1: /boot, 512MB, /, 32GB, swap, 4GB, /data/local/disk01, *GB
disk 2: /data/local/disk02, *GB

Wat ik wilde maken:
/boot, RAID10 512MB, /, RAID10 32GB, swap RAID10 4GB, /data/local/disk02, RAID10 *GB, /data/local/disk01, *GB met /boot, / en swap verdeeld over 1 320GB en 2 1TB schijven, disk02 verdeeld over de rest van de 2 TBschijven voor belangrijke data en virtuele machines en disk01 voor onbelangrijke data.

Helaas kunnen er maar 3 schijven aangesloten worden ivm de 4e poort voor de CD speler, anders had ik er meteen 4 gebruikt.

Als eerste de 3e schijf plaatsen, raid partities maken (fdisk, mdadm), formatteren (mkfs.ext4), mounten en data overzetten. Na de kopie fstab wijzigen en de disk02 mount omzetten van /dev/sdb5 naar /dev/md3, swap naar /dev/md2.
(niet vergeten om de bootable flag te zetten op de nieuwe boot partities)

*aangezien mdadm nog geen grow optie heeft voor raid10 is het misschien slim om bij het maken de optie –raid-devices=3 (of hoger) toe te passen. al zal dan waarschijnlijk de array constant als degraded vermeld worden..

Overzetten van / en /boot;

mount /dev/md1 /mnt
mount /dev/md0 /mnt/boot
mount –rbind /dev /mnt/dev
mount –rbind /proc /mnt/proc

Alles in / en /boot kopieëren met cp -bpRx /[dir] /mnt/[dir] behalve /dev, /proc, /tmp, /lost+found, /sys, /run. Deze zelf aanmaken in /mnt (let op de permissies).

chroot /mnt

Eventuele oude RAID array vermelding in /etc/mdadm/mdadm.conf verwijderen (de ARRAY regels aan het einde) en de nieuwe toevoegen via mdadm –detail –scan >> /etc/mdadm/mdadm.conf.

grub-mkconfig
grub-install /dev/sdb1 /dev/sdc1
update-initramfs -u

Testen door PC uitzetten, oude disk loskoppelen en PC weer starten.
Als boot lukt, oude disk via USB connectie herpartitioneren, aan RAID arrays toevoegen en na geslaagde sync weer inbouwen in PC.

 *grub.cfg

In de config van grub2 wordt verwezen naar uuid’s van de raid arrays en file systemen. Deze zouden bij migratie naar grote schijven aangepast kunnen worden mits er naar de juiste verwezen worden (zie blkid en mdadm –detail –scan).

De eerste vermelding in grub.cfg is;
set root=’mduuid/…’ verwijst naar naar de array id van root (md1)
if search –hint= verwijst naar mduuid/ array id md1 en blkid md1
else naar blkid md1

in het 10_linux gedeelte;
set root=’mduuid/ array id /boot (md0)
if search –hint=’mduuid/ array id md0′ en blkid md0
else blkid /md1

Het eerste kijkt dus meteen naar de root partitie, daarna wordt in 10_linux telkens gekeken naar de /boot partitie en alleen root als dat niet werkt.

Dit alles moet het volgende opleveren;
-opstarten van systeem en programma’s met een factor tot 3 versnellen
-opstarten virtuele machines versnellen met factor tot 2
-lezen van data vanaf disk02 versnellen met factor tot 2
-verlies van 1 schijf is geen verlies van functionaliteit, ten hoogste van onbelangrijke data op disk01
-schrijf snelheid kan verhoogd zijn tot factor 2
-eventuele uitbreiding van diskruimte door vervanging disks kan zonder opnieuw installeren

Snelheid testen via simpele tests;

hdparm -tT /dev/mdxx voor het testen van leessnelheid.
sync;time bash -c “(dd if=/dev/zero of=bf bs=8k count=500000; sync)” voor de snelheid van schrijven. Let op op welke plek dit wordt gestart, het bf bestand wordt 4.1GB groot.

 

Uiteindelijke procedure

Configuratie:
sda: 320GB; sda1: 297.9GiB type dasdb: 1TB; sdb1: 297.9GiB type da, sdb2: 633.6GiB type da
sdc: 1TB; sdc1: 297.9GiB type da, sdb2: 633.6GiB type da

md11: raid-devices=3 level=10 layout=f2 /dev/sda1 /dev/sdb1 /dev/sdc1
md12: raid-devices=2 level=10 layout=f2 /dev/sdb2 /dev/sdc2

vg00: /dev/md11 /dev/md12
lv01: 512MB /boot
lv02: 32GB /
lv03: 4GB swap
lv04: 1.1TB /data/local/disk01

1 RAID10 set van de 320GB schijf en partities van de TB schijven en 1 set van de overgebleven ruimte leek me de beste prestaties en redundency te geven. De RAID sets worden vervolgens met LVM tot 1 grote schijf samengevoegd en daarna in gedeeltes voor /boot, /, swap en data ruimte verdeeld.
Hierdoor krijgt het OS en /home gedeelte de maximale prestaties met daarbij nog een gedeelte (zo’n 260GiB) van data.
Het is een optie om de 260GiB een eigen data locatie te geven maar dat was van minder belang omdat er een flink aantal virtuele testmachines komen te draaien.

Leessnelheid op md11 is ongeveer 280MB/s, op md12 190MB/s.
De schrijftest gaf in / ongeveer 185MB/s, in de data directory ongeveer 90MB/s.

sdb had nog de oorspronkelijke configuratie van het systeem nadat ik de rest van de devices sda en sdc had verwijderd van de RAID setup.

Het effect op het maken van virtuele machines was helaas erg. Het duurde een lange tijd voordat het uitpakken van de installatiebestanden van Windows 7 klaar was bij het maken van een nieuwe virtuele machine. De goede snelheid van 90Mb/s was helaas niet van toepassing in dit geval.

De volgende stap uitgevoerd, verplaatsen van de lvm physical volumes naar sdb en sdc, sda vervangen door een andere 1TB schijf, daarna alles verplaatst met lvm naar sda (gelukkig nog niet zoveel ruimte gebruikt) en van sdb en sdc een nieuwe raid10 met layout o2 gemaakt met 1 missing disk (/dev/md11).
Nadat dat gelukt is de nieuwe raidset toegevoegd aan de volume group en alles weer vehuisd naar de nieuwe md11, de oude sda1 verwijderd en weer als onderdeel van de nieuwe raidset toegevoegd.
Nu nog een installatie van een virtuele Windows machine testen..

 

Written by mnystrom

2015/02/21 at 21:17

Geplaatst in installatie, linux, NL, opslag

Tagged with ,

Over software RAID op Linux, FreeBSD, Windows

Vorige week voor een klant een kleine firewall opgezet. Er was weinig budget maar het was hard nodig om de boel daar (een stapel Windows PC’s voor de clïenten) beter te beveiligen. Tot nog toe was er alleen maar software gebruikt die de PC’s naar oorspronkelijke staat terugdraaide bij uitzetten of herstart. Met als gevolg dat de provider voor de zoveelste keer de verbinding blokkeerde i.v.m. infecties.

Eén van de maatregelen was een firewall met filtering en daarvoor hebben we op een oude PC PFSense gezet. Om in ieder geval op één punt wat redundancy te krijgen is de installatie op een GEOM mirror geplaatst.
Aangezien dat de installatie daar de optie voor heeft was het een fluitje van een cent. Nu kwam dat ook goed uit want na een paar dagen proefdraaien op de zaak kreeg een schijf kuren. Schijf eruit, andere schijf erin, de mirror de ontbrekende schijf laten vergeten en vervolgens de nieuwe toevoegen. Dat was alles.

Dat dat zo makkelijk kan was ik al gewend van de eerdere ervaringen met Linux software RAID.
De diverse Proxmox servers installeerde ik al bovenop een Debian installatie met specifieke RAID opzet. En de eigen PC had ik ook draaien met meerdere schijven met een combinatie van RAID 1 en 0 partities.

Na de installatie van de firewall was ik weer eens gaan kijken naar de diverse opties die mdadm biedt om te zien of er nog iets interessants te vinden was.
Daarbij kwam ik op diverse testen uit van de RAID 10 opties. Normale RAID 10 bestond altijd uit twee vaste paren schijven in RAID 0 die een RAID 1  vormden (of andersom). De RAID 10 optie van mdadm werkt al vanaf twee schijven, en werkt niet met vaste paren als er meer dan twee worden gebruikt. Er wordt (afhankelijk van de keuze hoeveel) alleen maar voor gezorgd dat er stukken data op minstens twee verschillende partities staan. Staan de partities op dezelfde fysieke schijf dan heeft het geen zin, maar dat is een eigen keuze.

Waar dan ook nog voor gekozen kan worden is de manier waarop de dubbele blokken verdeeld worden op de schijven. Standaard is “near”, dan staan de blokken zoveel mogelijk op dezelfde positie op de schijven. “Offset” verschuift het tweede blok een positie verder zodat het iets meer verspreid staat (mmaar niet veel). En “far” deelt de schijf min of meer in twee en begint bij één schijf vooraan en de ander in het midden zodat er maximale spreiding is van de datablokken.

Het grote voordeel van “far” is de snelheid van constant lezen van data (wat meestal bij een PC gebeurt), deze kan bijna net zo snel zijn als RAID 0. Schrijven is daarintegen langzamer, maar niet zo langzaam als men zou denken.
Diverse tests zijn uitgevoerd van de diverse mdadm RAID opties en over het algemeen komt RAID 10 met de “far layout” het beste uit de bus.

Software RAID is nooit een echte optie geweest in Windows. Om de systeemschijf in RAID te krijgen was altijd een hardware oplossing nodig, al was het maar de on-board semi-RAID controller.
Met server 2012 is er verandering in gekomen. Via de disk manager kan er een mirror gemaakt worden van de systeemschijf partities als er een lege, ongeformateerde schijf beschikbaar is.

Om de systeemschijf van Windows server 2012 in RAID1 te zetten;

Start diskmgmt.msc na een ongeformatteerde schijf beschikbaar te hebben.Windows_2012_RAID1_01

 

Klik met de rechtermuisknop op de eerste partitie en kies voor Add Mirror.Windows_2012_RAID1_02

 

Selecteer de juiste schijf.  Windows_2012_RAID1_03

 

Bevestig de conversie.

Windows_2012_RAID1_04

 

En de mirror verschijnt als volgt in de disk manager.Windows_2012_RAID1_05

 

Doe hetzelfde voor de partitie waar Windows op geïnstalleerd staat.Windows_2012_RAID1_06

Echter is het nog steeds niet hetzelfde als open source software RAID. Met een test van een virtuele machine bleek dat het aanmaken makkelijk was, echter als de originele schijf weg is blijft Windows tijdens de start vragen naar de schijf.
In plaats van automatisch omschakelen naar de kopie wordt geprobeerd om van de eerste schijf te starten en komt vervolgens een foutmelding en de vraag naar de installatieschijf voor opstartherstel.
Alleen als er tijdens het opstarten de tweede schijf gekozen wordt kan Windows verder gaan.
Het begin is er, maar helaas is de software RAID versie van Microsoft te beperkt om in te zetten voor de eigen systeemschijf.

Het goed aanmaken van een RAID set onder Linux is iets meer werk, maar dan werkt het wel zoals het hoort.

*Een aantal ideeën die ik nog kreeg tijdens het lezen van het materiaal;

-Hoe zou de snelheid zijn als i.p.v. een grote partitie meerdere kleinere partities gebruikt werden van RAID10,f2 met daarbovenop een LVM volume die deze weer combineert. Lezen iets langzamer en schrijven dan weer sneller?

-RAID10,2f emuleren door zelf de schijven in twee partities te verdelen en vervolgens elke eerste en tweede als RAID 1 te gebruiken. Dit zou een alternatief voor gebruik met Windows kunnen zijn.

 

Written by mnystrom

2015/02/17 at 22:56

Opslag met integriteit controle

Regelmatig is al de vraag over de beste manier van opslag langsgekomen. Er zijn veel opties zoals harde schijven, de bekende tapes, branden op CD/DVD/etc., etc. Een belangrijk aspect is ook de houdbaarheid van data; iets wat nu opgeslagen wordt moet na vele jaren nog altijd leesbaar zijn. Ook veiligheid is belangrijk, bij brand moet niet alles kwijt zijn bijvoorbeeld.

Om dit alles voor elkaar te krijgen worden er drie opslag servers ingezet, elk met een complete kopie van alle data op harde schijf. De schijven draaien in RAID, naar wens 1, 5, 6, of 10.
De synchronisatie kan naar wens continue of 1 of meerdere keren per dag draaien.
Integriteit wordt gecontroleerd door een database van hashes van de bestanden op elke server met elkaar te vergelijken. De hashes kunnen ook continue of om de zoveel tijd gemaakt worden. Als er bij vergelijk 1 server van de drie afwijkt, dan kan (eventueel automatisch) het foute bestand overschreven worden door 1 van de twee andere. Eventueel kan dit bestand voordat het overschreven wordt nog op backup gezet worden.

Het verwijderen van data kan gedaan worden door het te verplaatsen naar een aparte directory waarbij het systeem hetzelfde uitvoert op de overige servers. Daarna kan het na bepaalde tijd permanent (eventueel weer na een aparte backup) verwijderd worden.

Het geheel is niet het eenvoudigste, maar het zorgt er wel voor dat de data goed bewaard blijft in geval van calamiteiten maar ook beschermd is tegen zogenaamde bitrot.

Written by mnystrom

2012/08/20 at 13:20

Geplaatst in backup, opslag

Tagged with , ,

Schijfletter wijzigen onder Windows

Normaal gesproken onthoud Windows welke letter toegewezen wordt aan een USB schijf/stick.
Als deze echter regelmatig verwisseld wordt dan kan het zijn dat de letter niet meer overeenkomt met de oorspronkelijke toewijzing. Dit kan problemen opleveren als de schijf een vaste locatie moet zijn voor bijvoorbeeld een backupprogramma.

In dat geval kan op de volgende manier de schijfletter aangepast worden;

Klik met de rechtermuisknop op Deze computer, daarna op Beheren in het menu.

Klik in de linkerlijst van het beheervenster op Schijfbeheer, daarna met de rechtermuisknop op de schijf waar de letter van gewijzigd moet worden. Klik in het menu op Stationsletter en paden wijzigen.

Klik op de knop wijzigen om een andere letter toe te wijzen.

Selecteer in de lijst een ongebruikte letter en klik op OK.

Bevestig de wijziging bij de waarschuwing.

Hierna moet de wijziging zichtbaar zijn in het schijfbeheer en kan het beheervenster gesloten worden.

 

Waarschijnlijk is het mogelijk om schijven automatisch de juiste letter te geven door middel van een script en taakbeheer, voor die mogelijkheid kijk op www.mbitz.nl om contact met ons op te nemen.

 

Written by mnystrom

2012/06/28 at 18:05

Geplaatst in hardware, MBitZ, NL, Windows

Tagged with , ,

Draadloos voor motorcross evenement

Voor het Open Nederlands Kampioenschap Motorcross in Axel was er de vraag gekomen om een verbinding met internet mogelijk te maken in het juryhuis bij de start.

Aangezien het budget er niet voor is om een glaskabel te laten leggen (de afstand is te groot voor normale UTP) hebben we draadloze zenders toegepast voor verbinding centraal naar de kantine. Van daaruit hebben we dan weer een verbinding naar een huis met kabel internet aangezien de bestaande ADSL verbinding niet snel genoeg was, en ook niet verbeterd kon worden.

Wat ons verbaasde is de complimenten van de pers over de verbinding. Het blijkt dat de meeste motorcross banen geen of heel slechte verbindingen hebben. We hadden zelf niet het idee dat het zo moeilijk zou zijn om dit voor elkaar te krijgen. Maar dat verklaart niet waarom draadloos netwerk niet goedkoop is bij de zaken die dit verzorgen bij de diverse evenementen.

Misschien zijn we dan ook creatiever dan de gemiddelde computerzaak. :-)

(voor meer info kijk op www.mbitz.nl)

Written by mnystrom

2012/06/01 at 11:30

Geplaatst in draadloos, hardware, MBitZ, NL, Uncategorized

Tagged with ,

ff onthouden; diverse dingetjes

Telnet test mail;

telnet smtp.mailserver.nl 25
Trying ip adress…
Connected to mail.mailserver.nl.
Escape character is ‘^]’.
220 mailserver.nl ESMTP provider mailservice ready
helo
501 Syntax: HELO hostname
helo svmbitz01001.mbitz01.local
250 mail.mailserver.nl
mail from: user@svmbitz01001.mbitz01.local
250 2.1.0 Ok
rcpt to:user@mbitz.net
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject:test delivery mail
insert body text here
.
250 2.0.0 Ok: queued as 96582184093
quit
221 2.0.0 Bye
Connection closed by foreign host.

ATF software;

Fout xxxx.xx is not a floating point number: landinstellingen aanpassen en de punt als decimaal teken zetten.

Brother printers;

Drum reset als dit na vervanging niet gedaan is: druk 3 + 9 tegelijk in, bevestig in het menu de drum reset.

Drakon: visual programming language, flowchart programmeering, handig voor opzet van processen en basis voor software schrijven

Snapraid: semi raid en backup optie voor opslag (*nix, Windows, OSX)

 

Written by mnystrom

2012/05/22 at 20:18