prikaz dd a pametove/seekove problemy

Dalibor Straka dast na panelnet.cz
Sobota Říjen 6 01:44:57 CEST 2007


Ahoj,

On Sat, Oct 06, 2007 at 12:25:42AM +0200, Jaroslav Lukesh wrote:
> Některé filesystémy umí tzv. díry. Ext2, ext3, XFS,...
> 
> ----- Original Message ----- 
> From: "Karel Karel" <bigkarel na seznam.cz>
> 
> 
> dobry den vsem,
> pouzivam server s XENem na gentoo a kdyz vyrabim jedotlive image na ext2 
> partions pres prikaz dd if=/dev/zero of=/virtual/neco.img bs=1000 
> count=10000000 (vysledek 10gb file) tak mi obcas spadne cely system na 
> nedostatku pameti ... kdyz vyrabim loop pres dd s pouzitim seek, tak je 
> vyrobeny hned, velikost vypada spravne, da se se souborem pracovat 
> (formatovat loop atd...) nicmene v df se vubec neprojevi odber mb/gb ... a 
> muzu zalozit klidne i ( v ls viditelne) soubor nekolikrat vetsi nez samotny 
> system ... nasel by se tu nekdo kdo by  mi poradil co delam blbe v obou 
> variantach ? podotykam ze jsem to zkousel i na puvodnim non-xen jadru a na 
> jinych fs nez ext2 (vychazim z toho ze ext2 je na loop nejrychlejsi, ... v 
> oracle tomu tak alespon bylo...)
> dekuji za radu k 
> 

Pozor, dira znamena problem!

Napriklad kdyz udelam
f=open("zmetek") -> lseek(+10GB) -> write(1B) -> close(f)
Soubor zabira pouze par (k)byte. Prazdne misto se cte jako nuly. Jenze pri 
vytvoreni takovychto zmetku muzete privodit spravci tezke casy pri
zalohovani. Protoze pri cteni po blocich treba pres "gzip zmetek", se
samozrejme vyrobi zazipovany soubor velikosti odpovidajici zazipovani
prazdneho 10GB souboru. Stejne tak i mnohe jine kopirovaci techniky typu
	a=open("vzor"), b=open("obraz"),
	while ((rd=read(a,buf,size))>0)
		write(b,buf,rd)
vyrobi obraz, ktery bude fyzicky zabirat 10GB. Jedna se o vlastnost.
Dalsi neplecha je fragmentace. Kdyz soubor na zacatku poctive vyplnite
nulama, a pak do nej teprve nahodne pisete, bude fragmentace mnohem lepsi,
nezli se seekovat v "prazdnem/deravem" souboru a zapisovat na spravna
mista. (*)

Pro vase pouziti si zvolte vhodnejsi variantu.

(*) Jednotlive bloky budou na disku za sebou tak, jak se zapisovaly
a nikoliv serazene podle pozice. Nevim jestli tak funguji vsechny fs.

-- Dalibor Straka



Další informace o konferenci Linux