Vygenerovanie fake S.M.A.R.T dáta na virtuálnom disku
Dobrý deň,
potreboval by som poradiť akým spôsobom sa dajú vygenerovať fake S.M.A.R.T dáta na virtuálnom disku (mám vytvorený disk ".img" aj pričlenený do systému a nastavený vo fstab, ale ďalej sa pohnúť neviem), resp. simulovať disk poskytujúci S.M.A.R.T dáta. Potrebujem aby pri bežnom behu systém (Linux) a smartctl tento simulovaný disk a jeho S.M.A.R.T dáta detegoval.
Vopred ďakujem za rady.
Nulové alebo náhodné smart data by stačili?
Náhodné dáta budú stačiť.
Nad týmto som sa zamýšlal už pred 15 rokmi, ale opustil som tú myšlienku, pretože som nenašiel nič čím by sa tie data dali do smart programu načítať. Vygenerovať náhodné data nieje problém. Zaujímalo by ma čím tie data načítaš aby to smart zobrazil, pretože smart to čita priamo z registrov disku.
Dáta načitávam cez smartctl. Ono rozumiem že normálne to načitáva z registrov disku, ale potrebujem pre testovacie účely virtuálny disk so S.M.A.R.T dátami, keďže môj disk tieto dáta neposkytuje a teda neviem vôbec otestovať svoju aplikáciu v ktorej práve smartctl využívam.
To bude asi niečo nové. Môžeš uviesť konkrétne ako sa externé data načítajú do smart cez smartctl?
Nerozumiem úplne otázke, mám virtuálny disk .img, ktorý mountujem v fstab, takže systém to vidí ako disk, nie? Prípadne ak to tak nefunguje, potom netuším ako inak dostať fake dáta do smartctl, ale myslím že nejaký spôsob musí byť. Inak netuším ako by som otestoval svoju aplikáciu.
Ved to ti Viktor pise cely cas, data nie su problem, problem je, ze ich nemas cim nacitat.
Smartctl pristupuje priamo na fw disku a cita data odtial. Virtualny disk (pokial viem) nic take nema.
Musel by si spolu s virtualnym diskom nasimulovat aj virtualny fw.
Aha, hmm, nepoznáte nejaké hotové riešenie na simuláciu firmwaru disku,... ja keď hľadal našiel som len nejaký hardware-in-the-loop simulation system ale to asi nie je to. Nič iné sa mi nepodarilo nájsť na simuláciu firmwaru disku.
asi jsem nechápavý, ale to je problém si obstarat disk, který je poskytuje?
On mysli jeho virtualny disk.
Aspon myslim;o).
V mojom prípade to je problematickejšie, takže som sa tomuto chcel vyhnúť. Ak to ale inak nie je možné, tak si "vypožičiam" disk z NASu .
Btw. mám notebook s len jedným slotom, takže ak tam dám tento disk, pôvodný budem musieť dať preč, a teda budem musieť na ten z NASu nainštalovať systém, a to sa mi fakt neche.
btw. vedeli by ste mi povedať na akom princípe funguje smartctl? Od čítania dát z registrov, ako to prejde jednotlivými vrstvami aplikácie, až po výsledné dáta ktoré poskytuje cez API?
Trocha som hľadal na Internete, ale čo som našiel, som z toho trocha zmätený a nerozumiem tomu.
Docela bych si tipnul, ze smartctl to bud cte primo prez volani nejake systemove funkce, a nebo ze to cte z nejakeho virtualniho filesystemu hluboko v /sys nebo tak nejak
Spis jde o to, jak to chces cist ty - pokud bys prote ve svem programu spustil "smartctl" s nejakyma parametrama a pak parsoval vystup, tak pro testovani proste staci napsat stejnojmenny skript, dat do do cesty driv, nez je binarka a nechat ho proste vypsat cokoliv (pomoci echo "Parametr: 1 0 255; neco cosi ...") a pak si to testovat v tom svem programu
Prvotni vypis udelas jednoduse tim skutecnym smartctl, ktery pomoci ">soubor" presmerujes do souboru a tam uz si to snadno v editoru obalis tema echama, pripadne zfalsujes po libosti.
áno, vo svojom procese len volám príkaz v bash/terminály, ktorý spawnem ako child process a následne výsledok z stdout si vrátim do pôvodného procesu. Takže áno, toto by fungovalo.
Ok, skúsil som to a podarilo sa,... troška bol problém napasovať aby ten výpis bol úplne presne rovnaký ale dalo sa.
Stejne tak jako u SCSI . Pres sbernici cte hodnoty (reg.firmwarereg,atd) S.M.A.R.T. primo z HDD.
K cemu ti regularni vyrazi a operatory budou, uz jsi nekdy programoval firmware ? Znas alespon zaklad C, jinak nevim k cemu ti by princip bez znalosti s nim byl.
Kod na nahodne hodnoty udelat jde, ale k cemu ti budou kdyz je nebudes moct pouzit ?
Radeji bych te navedl na cestu pouzit nejaky jiz hotovy "fuck_firmware" nebo nejaky "SATA/IO emulatror" na generaci S.M.A.R.T. (to je jak delat nahodny symetricky-klic pro zadny text, ktery je urcen nikomu a ktery chces poslat nikam).
Áno základy C viem. Síce už 4 roky som v ňom neprogramoval, ale pred 4 rokmi som v tom zvládal naprogramovať rôzne veci celkom v pohode. Viem pracovať aj s pointermi, spojkovými zoznamami a signálmi a podobne (resp. s tým čo sme sa v škole učili).
Nakoniec myslím že možno to spravím ako navrhol gilhad, že spravím vlastný bash script, kde vypíšem cez echo falošné hodnoty, a nastavím alias aby sa tento script zavolal keď zadám príkaz smartctl, teda sa nebude volať skutočný smartctl.
Tak nahledni na SOC smartmontools - smartctl/smartd
Jestli virtualni HDD implantuji i FW S.M.A.R.T nevim IMHO ne, neni proc kontrolovat fyzicky stav neceho virtualniho nebo co je v nejakem kontejneru, ale take jsem mozna spatne pochopil podstatu otazky.