← Back to team overview

sslug-teknik team mailing list archive

Re: VFAT og store filer

 

Husk nu lige på at Int og Long (og de andre) har forskellige størelse på
forskellige CPU'er

f.eks. er en int på x86 CPU 32 bit, mens den på andre kan hav een anden
størrelse...

Så så nemt er det ikke...

Fil størrelse har mere med filsystemet at gøre da det skal kunne adressere
filen..

FAT32 kan IKKE tage filer større end 2.somthing GB

NTFS kan tage filer op til 64 GB

ext2 kan vel tage indtil der ikke er flere inode eller diskplads..

SÅ er det et andet spørgsmål om et program kan håndtere så store filer...

Det er en anden sag. Ikke sikkert programmøren har tænkt på det, da
programmet blev skrevet.

Thomas




Mads Bondo Dydensborg <madsdyd@xxxxxxxxxxxx> wrote in message
news:Pine.LNX.4.21.0005021202110.3299-100000@xxxxxxxxxxxx...
On Tue, 2 May 2000, Thomas Larsen wrote:

> Ihh, jamen det virker altså i Windows. Jeg kan ikke forstå det!

Jamen! Windows er designet til at have filer der overskrider
ordbredden. Det er Linux ikke. Til gengæld kan du køre Linux på platforme
med 64 bit ordbredder. Windows er vist ikke længere officielt understøttet
på 64 bit platforme.

Det er noget med hvordan man vil gøre det.

Som nævnt findes der også et hack der gør at "noget" vil virke, men jeg
tror ikke du får alle dine applikationer til at virke med >
2^(ordbredde-1) filer.

F.eks. hvis et program under Windows er erklæret sådan ca sådan her
(antag at FileSize returnerer størrelsen på en fil under både Windows og
Linux, men er erklæret som "unsigned long long int" under Windows og
"int" under Linux):

int filesize = FileSize("fil.txt");

det virker fint fint, indtil 2 GB. Derefter duer det nok ikke længere. Her
fejler programmet, selvom FileSize sikkert er OK.

så hvis man prøver (under Linux):

int filesize = FileSize("fil.txt");

Her fejler Linux over 2 GB.

Så indfører du et nyt Linux kald:

unsigned long long int lFileSize

Så virker Linux med

int filesize = lFileSize("fil.txt");

men applikationen fejler. Løsningen er at bruge den oprindelige
definition, men gøre det på en maskine, hvor en int er 64 bit. (Eller at
skrive alle applikationer om til at håndtere filer > 2GB - det kommer du
ikke til hverken under Windows eller Linux).

Windows kan sagtens håndtere filer > 2 GB, men jeg vil skyde på at et
fåtal af applikationerne kan det.

Linux på 32 bit platforme kan ikke (uden patches) håndtere filer over
2GB. Linux (og applikationer) på 64 bit platforme har ikke den slags
problemer.

Jeg håber det klargjorde det lidt. Jeg tager måske fuldkommen fejl i hvor
vanskeligt det er at få Linux til at bruge store filer på 32 bit
platforme, men jeg tror det ikke.

Mads

--
Mads Bondo Dydensborg.                               madsdyd@xxxxxxxxxxxx
'Open Systems' means no fences. And no fences means no use for Gates.
                                                       - Sun Microsystems





Follow ups

References