Eigen filesysteem maken

Pagina: 1
Acties:
  • 120 views sinds 30-01-2008
  • Reageer

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Topicstarter
Hoi, ik wil een eigen filesysteem gaan maken. Dat zal een hele klus zijn. Daarom wou ik eerst maar eens beginnen met een klein projectje om een .zip-bestand readonly als Z:-schijf te mounten in Windows. Uiteindelijk is het natuurlijk de bedoeling dat het op alle platforms gaat werken.

De laatste weken ben ik al fiks aan het rondgooglen. De Apache Commont hebben bijvoorbeeld VFS. Verder is er een Flickfs en natuurlijk het GoogleFS

Met name de laatste twee linkjes bevatten in principe alle informatie die ik nodig heb, maar volgens mij werken die alleen op linux-achtige systemen. Bovendien is het in Python gemaakt, terwijl ik 't liefste met Java werk.

Het werken met een zip-bestand is nog niet zo spannend, maar ik zit meer met de vraag hoe ik Windows (of linux) kan vertellen dat er een extra (virtuele) disk is. En dan het liefste dmv Java. Heeft iemand goede ideeen? Of andere projectjes waarvan ik de kunst af zou kunnen kijken?

Siditamentis astuentis pactum.


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 18:52

Gé Brander

MS SQL Server

Een filesysteem maak ja naar mijn idee niet in Java. Het aansturen daarvan zou misschien wel kunnen, maar daar lijken mij andere opties beter voor. (C, C++ etc.)

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Topicstarter
c70070540 schreef op donderdag 09 februari 2006 @ 18:12:
Een filesysteem maak ja naar mijn idee niet in Java. Het aansturen daarvan zou misschien wel kunnen, maar daar lijken mij andere opties beter voor. (C, C++ etc.)
Het gaat mij niet zo om de programmeertaal. Het belangrijkste voor nu is: hoe ik een extra schijfletter krijg.

Siditamentis astuentis pactum.


  • _Erikje_
  • Registratie: Januari 2005
  • Laatst online: 07-04 15:14

_Erikje_

Tweaker in Spanje

Ga eerst maar eens kijken hoe de andere filesystems werken.

Je zult zien dat een oud bestandsysteem als FAT al ontzettend ingewikkeld is.
Daarnaast wil je zoiets niet in Java maken. Daar zijn programeertalen als C voor.

Verder, hoe "goed" denk je zelf dat je bent. Op bit niveau werken is erg lastig.

Ook het ontwerpen van filesystem is een enorm karwei om te doen. Je moet om zoveel dingen nadenken.

Andere vraag is wat je er precies mee wilt doen.

Je zit hoogstwaarschijnlijk wel aan linux vast omdat windows zelf te veel in handen wilt houden en voor linux het makkelijker is om ondersteuning te maken.

Denk er nog eens een keer goed over na.

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Topicstarter
_Erikje_ schreef op donderdag 09 februari 2006 @ 18:22:
Ga eerst maar eens kijken hoe de andere filesystems werken.

Je zult zien dat een oud bestandsysteem als FAT al ontzettend ingewikkeld is.
Daarnaast wil je zoiets niet in Java maken. Daar zijn programeertalen als C voor.
GoogleFS en FlickrFS zijn Python-sciptjes van amper 50kb. Lijkt me allemaal niet zo spannend.
Andere vraag is wat je er precies mee wilt doen.
Zoals ik zei, een .zip-bestand mounten alsof het een aparte harde schijf was.
Je zit hoogstwaarschijnlijk wel aan linux vast omdat windows zelf te veel in handen wilt houden en voor linux het makkelijker is om ondersteuning te maken.
Als ik het voor Linux wil doen, hoef ik alleen de 2 python-voorbeeldjes maar uit te pluizen. Het enige waar ik mee zit, is wat je moet doen om in Windows een nieuwe disk te krijgen. Of een share zoals \\computer\zipfile\ zou ook al prima zijn.

Siditamentis astuentis pactum.


  • Wim Leers
  • Registratie: Januari 2004
  • Laatst online: 12-04 13:04
Varienaja schreef op donderdag 09 februari 2006 @ 18:31:
GoogleFS en FlickrFS zijn Python-sciptjes van amper 50kb. Lijkt me allemaal niet zo spannend.
GmailFS zeker? ;) 8)7

Verwijderd

Als je echt serieus bent, heb ik nog wel wat leerstof voor je (niet dat ik mezelf er zo in verdiep, maar heb wel eens het eea gelezen):

* Operating Systems; Design and Implementation, door Tanenbaum en Woodhull.
Dit boek gaat over het design van een operating system (minix), en daar worden natuurlijk ook filesystems in behandeld (source code van minix bijgeleverd).
ISBN: 0136301959

* File Systems: Structures and Algorithms, door Thomas R. Harbron
De naam zegt het al genoeg denk ik, design en implementatie van een filesystem.
ISBN: 0133147096

Ik zou zeggen veel succes, taaie kost lijkt me :)

  • qless
  • Registratie: Maart 2000
  • Laatst online: 20:29

qless

...vraag maar...

Ik denk wat jij wil doen (ala deamon tools e.d.) niet goed te doen is met java. Je kan nl. niet vanuit java rechtstreeks bij het os komen.

Website|Air 3s|Mini 4 Pro|Avata 2|Canon R6|Canon 5d2|8 fisheye|14f2.8|24f2.8|50f1.8|135f2|10-22|17-40|24-105|70-300|150-600


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 18:52

Gé Brander

MS SQL Server

Definieer nou eerst maar eens in je startpost wat je bedoelt met een eigen filesysteem maken.

Een nieuw filesysteem is een opslagmethode verzinnen voor data opslag op een opslagmedium, en driver schrijven voor het OS waarvandaan je het wilt lezen.

Dat is niet hetzelfde als GoogleFS...

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • corl
  • Registratie: Februari 2006
  • Laatst online: 08-01 15:23
Als je hier echt zin in hebt kun je kijken naar open source ram drive implementaties zoals bv op:

Verder is het maken van een file system niet echt moeilijk het hangt er maar van af wat voor functionaliteit je het wilt geven.

http://www.codeguru.com/C...opment/article.php/c5789/

De source files staan onder aan de pagina en is gebaseerd op de microsoft ram drive.
Als het goed is vindt je in de sources alles wat je wilt weten. Source is echter wel in C

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 11-04 03:15
Verschillende besturingssystemen verschillen enorm in de manier waarop ze filesystem drivers laden en hoe die werken. Er is dus geen portable oplossing.

Voor Windows kun je beginnen met de Installable File System Kit. Andere besturingssystemen werken weer volstrekt anders.

Verder zul je voor Windows vrijwel zeker in C aan de slag moeten (of een library gebruiken die dat voor je oplost) dus een puur-Java-oplossing is volstrekt onmogelijk. Ik denk dat je Java beter helemaal uit je hoofd kan zetten.

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

GoogleFS is dat wat Google gebruikt voor zijn eigen servers, een enorm distributed FS. Waar jij naar verwijst is GMailFS, wat het slechts mogelijk maakt bestanden transparant op te slaan in je GMail-account.

Voor Linux zou je eens kunnen kijken naar FUSE, waarmee je wel in veel talen gemakkelijk een simpel virtueel FSje kunt bouwen volgens mij.

[ Voor 4% gewijzigd door djc op 09-02-2006 20:43 ]

Rustacean


  • D-Raven
  • Registratie: November 2001
  • Laatst online: 16-10-2025
Het verbaast me dat je nu al bedacht heb in welke taal je het wilt gaan doen ?
Het is veel verstandiger om eerst eens na te denken welke problemen, concepten en technologieen je tegen gaat komen. Deze op een abstract niveau te onderzoeken / uit te werken. Om vervolgens aan de hand daarvan te bepalen welke taal het meest geschikt zou zijn.

Ik kan je alvast verraden dat je Java kunt vergeten. Even heel kort door de bocht: Met java heb je gewoon niet de controle die je nodig hebt. C/C++ is veel beter geschikt voor dit soort dingen.

Maar nogmaals, praten over in welke taal je dit gaat doen is nog LANG niet aan de orde als ik dit allemaal zo gelezen heb. Ga jezelf eerst maar eens goed inlezen in de stof zodat je een goed idee hebt waar je jezelf instort voordat uberhaupt gaat nadenken over in welke taal je dit wilt doen.
No offense meant maar uit de voorgaande posts kan ik niet echt opmaken dat je je eigen goed heb ingelezen en dergelijke. Die laatste Google link uit de start post behandeld wel wat concepten maar laat veel te wensen over als je die info wilt gebruiken om je eigen FS te bouwen.

Ik ga er hier even vanuit dat je je eigen FS wilt bouwen waar zegmaar een OS op zou kunnen draaien. Maar nu ik zo nog eens wat dingen doorlees begin ik te twijfelen.. Specificeer je start post eens wat meer, voeg wat meer achtergrond informatie toe zodat wij weten wat het precies is waar je mee bezig bent en hoe ver je eventueel al bent.

[ Voor 14% gewijzigd door D-Raven op 09-02-2006 22:01 ]


  • D-Raven
  • Registratie: November 2001
  • Laatst online: 16-10-2025
corl schreef op donderdag 09 februari 2006 @ 18:52:
Verder is het maken van een file system niet echt moeilijk het hangt er maar van af wat voor functionaliteit je het wilt geven.
Zelfs met basic functionaliteit komt er al een hoop bij kijken. Je laat het klinken alsof het allemaal maar niks voorstelt :P

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 01:40
Varienaja schreef op donderdag 09 februari 2006 @ 18:09:
De laatste weken ben ik al fiks aan het rondgooglen. De Apache Commont hebben bijvoorbeeld VFS. Verder is er een Flickfs en natuurlijk het GoogleFS
Dat flickr ding is volgens mij geen filesysteem maar een programmaatje wat doet alsof je flickr account een schijf op je computer is.

Een echt filesysteem is een van de meest basic, lowlevel dingen op je computer. Dat maak je niet zo ff.

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 21:03
We hebben het hier ook niet echt over een FS als ik het goed begrijp. Een ZIP file mounten als drive lijkt me iets compleet anders dan een FS maken.

Zijn hier niet gewoon al tooltjes voor? Kan me niet voorstellen dat jij de eerste bent die dit bedenkt ;)

Aan de andere kant, het is allemaal niet zo simpel als je denkt, je zou hier waarschijnlijk zelf wel een 'tooltje' voor moeten schrijven.

[ Voor 22% gewijzigd door sorted.bits op 10-02-2006 10:10 ]


  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
In windows heb je subst

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
C:\>subst /?
Een pad aan een stationsletter koppelen.

SUBST [station1: [station2:]pad]
SUBST station1: /D

  station1:       Bepaalt het virtuele station waaraan u een pad
                  wilt toewijzen.
  [station2:]pad  Bepaalt het fysieke station en pad waaraan u een
                  virtueel station wilt toewijzen.
  /D              Verwijdert een gekoppeld (virtueel) station.

Als u een lijst met huidige virtuele stations wilt weergeven,
typt u SUBST zonder parameters.

  • igmar
  • Registratie: April 2000
  • Laatst online: 27-03 10:55

igmar

ISO20022

Varienaja schreef op donderdag 09 februari 2006 @ 18:09:
De laatste weken ben ik al fiks aan het rondgooglen. De Apache Commont hebben bijvoorbeeld VFS. Verder is er een
Dit is geen FS. Dit is gewoon een wrapper om een aantal methoden heen, maar nee FS vanuit het oogpunt van het OS.
Flickfs en natuurlijk het
En wederom een layer, en geen echt FS.
Dit is een FUSE fs. Geen on-disk layouts ed, maar wel een goed begin. Voor Windows is het echter niet bruikbaar, en je moet C gebruiken als programmeertaal. D'r is echer wel JAVA binding voor : FUSE-J

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Ook interessant voor de achtergrondinformatie:

nFS - File System Within a File
A portable library for emulating a file system within a file

Developer Accused Of Unreadable Code Refuses To Comment


  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Volgens mij loopt deze topic een beetje uit de hand. Hij wil uiteindelijk een FS bouwen. Hij maakt hem daarbij waarschijnlijk niet uit hoeveel werk het dat hem kost. Waarschijnlijk wil hij niet een serieus FS bouwen, maar wil gewoon eens kijken hoe je zoiets bouwd. Nu begint hij het begin en wil eerst eens weten hoe een OS communiceerd met een FS. Daarvoor moet je een driver hebben. Hij wil een driver bouwen. Dit is z'n 1e stap. Hij neemt daarbij als doel, dat hij een zip bestand wil mounten een een driveletter (readonly). De structuur van een zip bestand is waarschijnlijk wel bekend, dus een zip bestand uitlezen zou niet zo moeilijk moeten zijn. Nu wil hij kijken hoe hij dus een driver bouwd om zip bestanden in het OS te intergreren als bestandssysteem.

Als eerste zou ik hiervoor geen JAVA nemen. Met JAVA heb je niet genoeg controlle over het OS. Ik zou hiervoor dus C/C++ gebruiken. Dit is ook al eerder gezegd in dit topic.

Je kunt deze links eens bekijken:
http://www.acc.umu.se/~bosse/
http://msdn.microsoft.com.../wce50conFileSystems3.asp
http://www.cswl.com/whiteppr/white/Guaranteed.html
http://www.chips.chalmers...tations/ahltorp.et.al.pdf
http://ffsdrv.sourceforge.net/
http://www.linuxlinks.com/Kernel/File_Systems/index.shtml

  • T-Junkie
  • Registratie: Juni 2001
  • Laatst online: 18:27

T-Junkie

user brain not connected...

TrueCrypt - Open-Source Disk Encryption for Windows and Linux
TrueCrypt is a software system for establishing and maintaining an on-the-fly-encrypted volume (data storage device). On-the-fly encryption means that data are automatically encrypted or decrypted right before they are loaded or saved, without any user intervention. No data stored on an encrypted volume can be read (decrypted) without using the correct password or correct encryption key. Until decrypted, a TrueCrypt volume appears to be nothing more than a series of random numbers. Entire file system is encrypted (i.e., file names, folder names, contents of every file, and free space). TrueCrypt never writes decrypted data to any storage device (it only temporarily writes data being decrypted to RAM).
Dit programma doet wat jij wil (en meer: encryptie) en is open-source. Misschien kan je daar een kijk nemen. De source in C is te vinden onder downloads.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Ik denk dat jullie allemaal op het verkeerde spoor zitten. Een file systeem is uitstekend in Java te bouwen. Het eerste probleem waar je tegenaan zult lopen is dat de API een niet-standaard Java API wordt. De enige gebruikers van die APIs zullen dus je eigen programma's zijn. Evengoed is het een echt filesystem.

Het voordeel van C en C++ is dat je met beiden een standaard OS API kunt implementeren, waardoor ook andere programma's je file system kunnen gebruiken. In Java is het beste wat je kunt bereiken een Copy applet die van en naar je filesystem kopieert.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • shnazzle
  • Registratie: September 2004
  • Laatst online: 21-01-2025
Ik wil WortelTaart even corrigeren. Het is namelijk MiNix, en niet MiMix. Tanenbaum zelf heb ik als docent, en ik heb gezien hoe hij tewerk gaat. Een filesysteem 'eventjes' bouwen zit er niet in, ik heb die boeken namelijk :) Even geleend van de heer Andy zelf.

Maar anyway, punt was.... voor iets zo belangrijks als de Adam van linux, mag het wel goed geschreven worden :)


...en ja je mag me wegmodden

[ Voor 7% gewijzigd door shnazzle op 11-02-2006 00:42 ]

Pagina: 1