Date: Tue, 14 Nov 2006 18:12:07 +0100 From: Phil Regnauld <none@regnauld--x0.dk.lh.bsd-dk.dk> To: bsd-dk@bsd-dk.dk Subject: Re: BSD Trivia spørgsmål of the week - #1
On Tue, Nov 14, 2006 at 05:17:53PM +0100, Søren Hansen wrote:
> Glimrende initiativ!
:)
We have a winner:
> Løsning 3)
> Igen, hvis der er en enkelt inode ledig, kan du lave en virtuel
> partition, der er stor nok til at holde de nødvendige filer med med
> driveren md. Den kan lave det i memory eller i en fil, alt efter, hvad
> du vurderer der er behov for.
> Tag udgangspunkt i "man mdconfig":
> To create a 5MB file-backed disk:
>
> dd if=/dev/zero of=somebackingfile bs=1k count=5k
> mdconfig -a -t vnode -f somebackingfile -u 0
> bsdlabel -w md0 auto
> newfs md0c
> mount /dev/md0c /mnt
Det er i hvertfald den løsning som jeg havde fundet på dengang
jeg løbede tør for plads -- jeg flyttede midlertidigt 1 fil
for at kunne oprette "newdisk.img" ved at køre:
truncate +10G newdisk.img
(fordelen med trunate er at filen er "sparse", dvs. at den kun allokerer
disk blocks on demand. Til gengæld bliver filen temmelig fragmenteret --
så dd er også en god løsning).
Løsning 2 (tar) er også korrekt, hvis man ikke har brug for de
filer. Men hvis idéen er at alle filer er vigtige, så er det nok
smartest at lave som du beskriver, pånær et punkt:
> /mnt skal erstattes med et directory, der ligger på den disk, hvor der
> er plads men mangel på inoder. Hvis du ikke kan bruge et eksisterende
> directory, kræver denne løsning en inode mere fri.
> Nu kan du flytte filer over på "/mnt" og derefter bruge symlinks. Det
> kræver selvfølgelig, at du kan flytte filerne directory-vis, da en
> symlink også tager en inode.
Det er rigtigt at det ikke hjælper at lave 10 symlinks til 10 filer,
man skal helst vælge en directory hvor der er mange filer, rename
directory, og mounte den nye volum på:
truncate +10G newdisk.img # bruger 1 inode
mdconfig -a -t vnode -f newdisk.img -u 0
bsdlabel -w md0 auto
newfs -U /dev/md0c
mv .../bigfolder .../bigfolder.old
mkdir .../bigfolder # bruger 1 inode
mount /dev/md0c .../bigfolder
mv bigfolder.old/* .../bigfolder/ && \
rmdir bigfolder.old # frigør 1 inode
Man kan også kan være lidt evil og lave en sparse fil som
er samme størrelse som selve partitionen, bare med flere inodes / blocks
(newfs -i), og så flytte ALLE filer til den nye volum. Backing filens
diskforbrug vokser i takt med flytning af filer, indtil man har flyttet
alle filer over til den nye volum -- så er der til sidst kun 1 fil
på den oprindelig partitionen.
> Løsning 5)
> NFS. Hvis du ikke allerede har NFS oppe, så er det ikke lige oplagt
> som en nødløsning, medmindre du forventer nødløsningen skal køre i
> længere tid.
Good point. Det kan være en god løsning.
Du skriver bare en adresse til mig privat, og den ønskede størrelse,
og fallback size hvis ikke vi har det, så får du en NetBSD t-shirt :)
Tak til de andre for deres svar!
Phil
This archive was generated by hypermail 2b30 : Thu 30 Nov 2006 - 23:00:03 CET