Erinevus lehekülje "Vahendid kettatestiks" redaktsioonide vahel
(→dd) |
(→Ketaste kloonimine) |
||
(ei näidata 3 kasutaja 34 vahepealset redaktsiooni) | |||
1. rida: | 1. rida: | ||
− | ===dd=== | + | {{Täienda}} |
+ | ===dd programmi kasutamine=== | ||
Alustuseks kõige lihtsam lugemise ja kirjutuskiiruse testimise utiliit | Alustuseks kõige lihtsam lugemise ja kirjutuskiiruse testimise utiliit | ||
− | # dd if=/dev/sda of=/dev/null bs=1024k count= | + | # dd if=/dev/sdb of=/dev/sdb bs=1M skip=102400 seek=524288 count=1024 |
+ | |||
+ | kus | ||
+ | |||
+ | * if ja of näitavad, et kopeeritakse samalt plokkseadmelt samale plokkseadmele | ||
+ | * bs - lugemisel ja kirjutamisel kasutatakse 1 megabait suurusi tükke | ||
+ | * skip - lugemist alustatakse 102400'se 1M bait kauguselt plokkseadme algusest | ||
+ | * seek - kirutama hakatatase 524288 1M bait kaugusel plokkseadme algusest | ||
+ | * count - loetakse ja kirjutatakse 1024 1M bait suurusi tükke | ||
+ | |||
+ | Loeme kettaseadmelt /dev/sda ühe Gb jagu infot | ||
+ | |||
+ | # dd if=/dev/sda of=/dev/null bs=1024k count=1024 | ||
1000+0 records in | 1000+0 records in | ||
11. rida: | 24. rida: | ||
dd käsku võib peal juurutada ntx nii: | dd käsku võib peal juurutada ntx nii: | ||
− | + | kirjutamine, ketta algusse ja lõppu | |
dd bs=1024K count=1024 if=/dev/zero of=/dev/hdc | dd bs=1024K count=1024 if=/dev/zero of=/dev/hdc | ||
dd bs=1024K count=1024 if=/dev/zero of=/dev/hdc seek=75000 | dd bs=1024K count=1024 if=/dev/zero of=/dev/hdc seek=75000 | ||
− | + | lugemine, ketta algusest ja lõpust | |
dd bs=1024K count=1024 if=/dev/hdc of=/dev/null | dd bs=1024K count=1024 if=/dev/hdc of=/dev/null | ||
dd bs=1024K count=1024 if=/dev/hdc of=/dev/null skip=75000 | dd bs=1024K count=1024 if=/dev/hdc of=/dev/null skip=75000 | ||
− | Kui blocksize suurus anda rohkem kui operatsioonisüsteemil on kasutada mälu, õigemini vaba mälu, siis ta hakkab tõenäoliselt swappima või ei tööta üldse. Selles osas tasub jälgida vmstat väljundit. | + | Kui blocksize suurus anda rohkem kui operatsioonisüsteemil on kasutada mälu, õigemini vaba mälu, siis ta hakkab tõenäoliselt swappima ja tulemus moondub või ei tööta üldse. Selles osas tasub jälgida vmstat väljundit. |
+ | |||
+ | Kui kirjutatakse faili nö vahele ja ei soovita, et seal edasi olev ära ei kustuks, sobib kasutada lisak suvandit | ||
+ | |||
+ | conv=notrunc | ||
+ | |||
+ | dd-ga testides lülita täpsemate tulemuste saamiskes failisüsteemi käsn välja. Linuxi all ntx | ||
+ | |||
+ | # dd oflag=direct if=/dev/zero of=/dev/rbd0 ... | ||
===<font color=red>Linux</font> hdparm=== | ===<font color=red>Linux</font> hdparm=== | ||
29. rida: | 50. rida: | ||
===Bonnie=== | ===Bonnie=== | ||
+ | |||
+ | Bonnie abil on mõeldud teha kahte tüüpi kettaseadet ja failisüsteemi iseloomustavaid teste, vt /usr/share/doc/bonnie++/readme.html | ||
+ | |||
+ | * IO läbilase - emuleerib nt andmebaaside käitumist, mis seisneb suhteliselt suurte failide kirjutamises ja lugemises | ||
+ | * failide tekitamine/kustutamine - emuleerib nt Squid programmi käitumist, mis seisneb paljude pisikeste failide tekitamises ja kustutamises | ||
Kirjutus ja lugemistestid | Kirjutus ja lugemistestid | ||
45. rida: | 71. rida: | ||
100 163734 81.9 280862 22.1 384488 57.6 127538 97.3 2539304 98.2 214041.1 253.4 | 100 163734 81.9 280862 22.1 384488 57.6 127538 97.3 2539304 98.2 214041.1 253.4 | ||
− | === | + | Failisüsteemi ja plokkseadme testiks sobib öelda nt |
+ | |||
+ | $ bonnie -s 1g -d /srv/gfs2/bonnie1 -u priit -n 128:8192:1024 -q > /tmp/gfs2-iscsi-1g-1.log | ||
+ | |||
+ | kus | ||
+ | |||
+ | * -s - testis kasutatav andmemaht, peab olema vähemalt kaks korda enam kui arvuti RAM | ||
+ | * -d - millist kataloogi kasutatakse testil, peab asuna huvipakkuval plokkseadmel | ||
+ | * -u - millise kasutajana testitakse, sama kasutaja omanduses peab olema kataloog | ||
+ | * -q - esitada väljund mitte terminalil lugemist hõlbustavate kommentaaridega, vaid arvestusega, et seda teisendatakse bon_csv2html utiliidiga html kujule | ||
+ | * -n - failide tekistamise/kustutamise testi tehakse 128*1024 failiga, mille suurused on vahemikus 1kB - 8kB | ||
+ | |||
+ | ====Bonnie väljundi HTML kujule teisendamine==== | ||
+ | |||
+ | $ bon_csv2html < /tmp/gfs2-iscsi-1g-1.log > /tmp/gfs2-iscsi-1g-1.html | ||
+ | |||
+ | Kui test võtab aega vähem kui 500ms, siis tulemus esitatakse + märkidena. | ||
+ | |||
+ | [[Pilt:Bonnie-1.gif]] | ||
+ | |||
+ | ===Raidist ja selle töökiirusest=== | ||
+ | |||
+ | raid1 on mirror, ehk paarisarv kettaid on pandud üksteist mirrordama | ||
+ | |||
+ | raid0 on stripe ehk siis hulk kettaid on järjestikku ühendatud üheks kettaks, failisüsteem on venitatud üle kõigi ketaste, plussiks on, et see virtuaalne suur ketas töötab kõigi lisatud ketaste kiiruse summana (tegelikult natuke vähem sest kaod on) miinuseks on see, et kui 1 ketas rikneb läheb kogu failisüsteem päästmatult puruks. Kiiremaks muutub raid0 andmed on jaotatud mööda mitut ketast, arvuti lugeda ühe fali blokke korraga nii ühelt kui teiselt kettalt liites nii erinevate ketaste kiirused. Kirjutades kettale jagatakse aga juba automaatselt baidid laiali. | ||
+ | |||
+ | raid10 on kombineeritud 1 ja 0, võetud näiteks neli ketast...jagatud kaheks paariks, need omavahel mirrordatud ja saadud kaks virtuaalset ketast omakord ühendatud kokku stripeks. tulemuseks üks virtuaalne seade mis esiteks on kiire ja teiseks võib sealt korraga 2 ketast hapneda | ||
+ | |||
+ | raid5 on ka veel olemas | ||
+ | |||
+ | Ketaste raidi lisamiseks on olemas kaks võimalust nn softwareline raid ja tarkvaraline. Esimesel juhul teeb töö ära tarkvara teisel juhul eraldi arvutisse pistetud kaart enda kiipidega. | ||
Ei maksa täielikult tõepähe võtta, aga umbkaudu sellised katsetulemused | Ei maksa täielikult tõepähe võtta, aga umbkaudu sellised katsetulemused | ||
54. rida: | 110. rida: | ||
* RAID1(2) on ~5% aeglasem ühest kettast | * RAID1(2) on ~5% aeglasem ühest kettast | ||
* RAID5(5) lugemine on kiire, umbes nagu RAID0(4), kuid kirjutamine aeglane, midagi nagu RAID1(2) | * RAID5(5) lugemine on kiire, umbes nagu RAID0(4), kuid kirjutamine aeglane, midagi nagu RAID1(2) | ||
+ | |||
+ | ===Ketaste aktiivne jälgimine iostatiga=== | ||
+ | |||
+ | iostat tuleb pakist sysstat | ||
+ | |||
+ | # iostat -c -d -x -t -m sdb 1 | ||
+ | |||
+ | Mis annab iga sekundi järel sdb nimelisest seadmest järgneva väljundi | ||
+ | |||
+ | 19.10.2015 16:43:05 | ||
+ | avg-cpu: %user %nice %system %iowait %steal %idle | ||
+ | 4,13 0,00 0,93 14,17 0,00 80,78 | ||
+ | |||
+ | Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util | ||
+ | sdb 0,00 8352,00 0,00 306,00 0,00 35,86 240,00 143,16 469,02 0,00 469,02 3,27 100,00 | ||
+ | |||
+ | http://www.admin-magazine.com/HPC/Articles/Monitoring-Storage-with-iostat | ||
+ | |||
+ | ===Ketaste kloonimine=== | ||
+ | |||
+ | Kui kettad mida kloonitakse on ühe suurusega siis kõige lihtsam on võtta kaks ketast ja panna need ühe füüsilise arvuti külge ning anda seejärel käsklus | ||
+ | |||
+ | # dd if=/dev/ketas1 of=/dev/ketas2 | ||
+ | |||
+ | Kui aga seda mingil põhjusel teha ei saa ning on vaja kloonida üle võrgu, võib talileda järgnevalt | ||
+ | |||
+ | Esiteks oleks vaja mõlemad arvutid mida soovime kloonida bootida üles mingi unixilaadse opsüsteemiga. Sobib hästi mõni Linuxi livecd näiteks sysrescsd http://www.sysresccd.org/Screenshots | ||
+ | |||
+ | dd puhul tasub ära määrata block size (võti bs=value), kuna siis on kiirus suurem. Bloki suurust mitte määrates on kiirus u 300-500kb/s. Parameetriga bs=1M saime kiiruse 16-20M. Mõningate allikate puhul pole mõtet üle 1M suurusel väärtusel. | ||
+ | |||
+ | 1. Arvutis kus tühi ketas | ||
+ | |||
+ | # netcat -p 2222 -l | dd bs=1M of=/dev/sdb | ||
+ | |||
+ | 2. arvutis, kus ketas mida soovime kloonida ümber, anname käsud | ||
+ | |||
+ | # dd bs=1M if=/dev/sda | netcat 192.168.1.1 2222 | ||
+ | |||
+ | Eelnevalt peab olema loomulikult paigaldatud netcat tarkvara. | ||
+ | |||
+ | Kui kloonitava ketta puhul on kahtlustada, et see on osaliselt katki siis tasub anda järgnevad võtmed | ||
+ | |||
+ | conv=noerror - jätka tööd ka vigade esinemise puhil | ||
+ | sync - kirjuta mitte välja loetud kohtade puhul sihtpunkti nullid. | ||
+ | |||
+ | ===I/O plaanuri optimeerimine=== | ||
+ | |||
+ | Uuemad kernelid sisaldavad võimalust valida I/O plaanurit (scheduleri), mis teeb otsuse, kuidas lugemis-kirjutamis | ||
+ | puhvrid on järjestatud alloleval seadmel. Nendekohta saab lugeda rohkem informatsiooni Linuxi kerneli algkoodi dokumentatsioonist: | ||
+ | linux/Documentation/block/*iosched.txt. Paljud veebisaidid soovitavad testimiste tulemusena kõrgeimate i/o tulemuste saavutamiseks kasutada deadline scheduleri. Seda saab seadistada kas siis kerneli kompileerimise käigus või echodes sobiva plaanuri enda kõvaketta seadetesse lisaks. | ||
+ | |||
+ | Parasjagu kasutuses olevat plaanurit näeb käsuga: | ||
+ | |||
+ | $ cat /sys/block/sda/queue/scheduler | ||
+ | noop anticipatory [deadline] cfq | ||
+ | |||
+ | Ja ümber seadistada saab seda käsuga: | ||
+ | |||
+ | $ echo deadline > /sys/block/sda/queue/scheduler | ||
+ | |||
+ | ===MHDD=== | ||
+ | |||
+ | Väärt utiliit nii SMART info vaatamiseks kui kettale süvaskaneeringu tegemiseks. | ||
+ | |||
+ | [[Pilt:20090426213721332.jpg]] | ||
===Lingid=== | ===Lingid=== | ||
http://www.iozone.org/ | http://www.iozone.org/ |
Viimane redaktsioon: 18. august 2016, kell 17:11
Toores. Ehk seda pala võib täiendada.
Sisukord
dd programmi kasutamine
Alustuseks kõige lihtsam lugemise ja kirjutuskiiruse testimise utiliit
# dd if=/dev/sdb of=/dev/sdb bs=1M skip=102400 seek=524288 count=1024
kus
- if ja of näitavad, et kopeeritakse samalt plokkseadmelt samale plokkseadmele
- bs - lugemisel ja kirjutamisel kasutatakse 1 megabait suurusi tükke
- skip - lugemist alustatakse 102400'se 1M bait kauguselt plokkseadme algusest
- seek - kirutama hakatatase 524288 1M bait kaugusel plokkseadme algusest
- count - loetakse ja kirjutatakse 1024 1M bait suurusi tükke
Loeme kettaseadmelt /dev/sda ühe Gb jagu infot
# dd if=/dev/sda of=/dev/null bs=1024k count=1024 1000+0 records in 1000+0 records out 1048576000 bytes (1.0 GB) copied, 17.0656 s, 61.4 MB/s
dd käsku võib peal juurutada ntx nii:
kirjutamine, ketta algusse ja lõppu
dd bs=1024K count=1024 if=/dev/zero of=/dev/hdc dd bs=1024K count=1024 if=/dev/zero of=/dev/hdc seek=75000
lugemine, ketta algusest ja lõpust
dd bs=1024K count=1024 if=/dev/hdc of=/dev/null dd bs=1024K count=1024 if=/dev/hdc of=/dev/null skip=75000
Kui blocksize suurus anda rohkem kui operatsioonisüsteemil on kasutada mälu, õigemini vaba mälu, siis ta hakkab tõenäoliselt swappima ja tulemus moondub või ei tööta üldse. Selles osas tasub jälgida vmstat väljundit.
Kui kirjutatakse faili nö vahele ja ei soovita, et seal edasi olev ära ei kustuks, sobib kasutada lisak suvandit
conv=notrunc
dd-ga testides lülita täpsemate tulemuste saamiskes failisüsteemi käsn välja. Linuxi all ntx
# dd oflag=direct if=/dev/zero of=/dev/rbd0 ...
Linux hdparm
# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 8688 MB in 2.00 seconds = 4349.14 MB/sec Timing buffered disk reads: 174 MB in 3.00 seconds = 57.91 MB/sec
Bonnie
Bonnie abil on mõeldud teha kahte tüüpi kettaseadet ja failisüsteemi iseloomustavaid teste, vt /usr/share/doc/bonnie++/readme.html
- IO läbilase - emuleerib nt andmebaaside käitumist, mis seisneb suhteliselt suurte failide kirjutamises ja lugemises
- failide tekitamine/kustutamine - emuleerib nt Squid programmi käitumist, mis seisneb paljude pisikeste failide tekitamises ja kustutamises
Kirjutus ja lugemistestid
# /usr/local/bin/bonnie File './Bonnie.81484', size: 104857600 Writing with putc()...done Rewriting...done Writing intelligently...done Reading with getc()...done Reading intelligently...done Seeker 1...Seeker 2...Seeker 3...start 'em...done...done...done... -------Sequential Output-------- ---Sequential Input-- --Random-- -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks--- Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU 100 163734 81.9 280862 22.1 384488 57.6 127538 97.3 2539304 98.2 214041.1 253.4
Failisüsteemi ja plokkseadme testiks sobib öelda nt
$ bonnie -s 1g -d /srv/gfs2/bonnie1 -u priit -n 128:8192:1024 -q > /tmp/gfs2-iscsi-1g-1.log
kus
- -s - testis kasutatav andmemaht, peab olema vähemalt kaks korda enam kui arvuti RAM
- -d - millist kataloogi kasutatakse testil, peab asuna huvipakkuval plokkseadmel
- -u - millise kasutajana testitakse, sama kasutaja omanduses peab olema kataloog
- -q - esitada väljund mitte terminalil lugemist hõlbustavate kommentaaridega, vaid arvestusega, et seda teisendatakse bon_csv2html utiliidiga html kujule
- -n - failide tekistamise/kustutamise testi tehakse 128*1024 failiga, mille suurused on vahemikus 1kB - 8kB
Bonnie väljundi HTML kujule teisendamine
$ bon_csv2html < /tmp/gfs2-iscsi-1g-1.log > /tmp/gfs2-iscsi-1g-1.html
Kui test võtab aega vähem kui 500ms, siis tulemus esitatakse + märkidena.
Raidist ja selle töökiirusest
raid1 on mirror, ehk paarisarv kettaid on pandud üksteist mirrordama
raid0 on stripe ehk siis hulk kettaid on järjestikku ühendatud üheks kettaks, failisüsteem on venitatud üle kõigi ketaste, plussiks on, et see virtuaalne suur ketas töötab kõigi lisatud ketaste kiiruse summana (tegelikult natuke vähem sest kaod on) miinuseks on see, et kui 1 ketas rikneb läheb kogu failisüsteem päästmatult puruks. Kiiremaks muutub raid0 andmed on jaotatud mööda mitut ketast, arvuti lugeda ühe fali blokke korraga nii ühelt kui teiselt kettalt liites nii erinevate ketaste kiirused. Kirjutades kettale jagatakse aga juba automaatselt baidid laiali.
raid10 on kombineeritud 1 ja 0, võetud näiteks neli ketast...jagatud kaheks paariks, need omavahel mirrordatud ja saadud kaks virtuaalset ketast omakord ühendatud kokku stripeks. tulemuseks üks virtuaalne seade mis esiteks on kiire ja teiseks võib sealt korraga 2 ketast hapneda
raid5 on ka veel olemas
Ketaste raidi lisamiseks on olemas kaks võimalust nn softwareline raid ja tarkvaraline. Esimesel juhul teeb töö ära tarkvara teisel juhul eraldi arvutisse pistetud kaart enda kiipidega.
Ei maksa täielikult tõepähe võtta, aga umbkaudu sellised katsetulemused Sulgudes toodud ketaste arv
- RAID10(4) on kiiruse poolest sama mis RAID0(2).
- RAID0 iga lisandunud ketas annab kiirust juurde 0,9 - 0,7
- RAID1(2) on ~5% aeglasem ühest kettast
- RAID5(5) lugemine on kiire, umbes nagu RAID0(4), kuid kirjutamine aeglane, midagi nagu RAID1(2)
Ketaste aktiivne jälgimine iostatiga
iostat tuleb pakist sysstat
# iostat -c -d -x -t -m sdb 1
Mis annab iga sekundi järel sdb nimelisest seadmest järgneva väljundi
19.10.2015 16:43:05 avg-cpu: %user %nice %system %iowait %steal %idle 4,13 0,00 0,93 14,17 0,00 80,78 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb 0,00 8352,00 0,00 306,00 0,00 35,86 240,00 143,16 469,02 0,00 469,02 3,27 100,00
http://www.admin-magazine.com/HPC/Articles/Monitoring-Storage-with-iostat
Ketaste kloonimine
Kui kettad mida kloonitakse on ühe suurusega siis kõige lihtsam on võtta kaks ketast ja panna need ühe füüsilise arvuti külge ning anda seejärel käsklus
# dd if=/dev/ketas1 of=/dev/ketas2
Kui aga seda mingil põhjusel teha ei saa ning on vaja kloonida üle võrgu, võib talileda järgnevalt
Esiteks oleks vaja mõlemad arvutid mida soovime kloonida bootida üles mingi unixilaadse opsüsteemiga. Sobib hästi mõni Linuxi livecd näiteks sysrescsd http://www.sysresccd.org/Screenshots
dd puhul tasub ära määrata block size (võti bs=value), kuna siis on kiirus suurem. Bloki suurust mitte määrates on kiirus u 300-500kb/s. Parameetriga bs=1M saime kiiruse 16-20M. Mõningate allikate puhul pole mõtet üle 1M suurusel väärtusel.
1. Arvutis kus tühi ketas
# netcat -p 2222 -l | dd bs=1M of=/dev/sdb
2. arvutis, kus ketas mida soovime kloonida ümber, anname käsud
# dd bs=1M if=/dev/sda | netcat 192.168.1.1 2222
Eelnevalt peab olema loomulikult paigaldatud netcat tarkvara.
Kui kloonitava ketta puhul on kahtlustada, et see on osaliselt katki siis tasub anda järgnevad võtmed
conv=noerror - jätka tööd ka vigade esinemise puhil sync - kirjuta mitte välja loetud kohtade puhul sihtpunkti nullid.
I/O plaanuri optimeerimine
Uuemad kernelid sisaldavad võimalust valida I/O plaanurit (scheduleri), mis teeb otsuse, kuidas lugemis-kirjutamis puhvrid on järjestatud alloleval seadmel. Nendekohta saab lugeda rohkem informatsiooni Linuxi kerneli algkoodi dokumentatsioonist: linux/Documentation/block/*iosched.txt. Paljud veebisaidid soovitavad testimiste tulemusena kõrgeimate i/o tulemuste saavutamiseks kasutada deadline scheduleri. Seda saab seadistada kas siis kerneli kompileerimise käigus või echodes sobiva plaanuri enda kõvaketta seadetesse lisaks.
Parasjagu kasutuses olevat plaanurit näeb käsuga:
$ cat /sys/block/sda/queue/scheduler noop anticipatory [deadline] cfq
Ja ümber seadistada saab seda käsuga:
$ echo deadline > /sys/block/sda/queue/scheduler
MHDD
Väärt utiliit nii SMART info vaatamiseks kui kettale süvaskaneeringu tegemiseks.