Προς το περιεχόμενο

Filesystem χωρίς περιορισμούς ιεραρχίας


nske

Προτεινόμενες αναρτήσεις

Τα συστήματα αρχείων είναι από τα πιο σημαντικά μέρη ενός λειτουργικού: όλοι τα χρησιμοποιούμε γιατί όλοι έχουμε δεδομένα σε ψηφιακή μορφή τα οποία θέλουμε να μπορούμε να προσπελαύνουμε ανά πάσα στιγμή.

 

Για τον υπολογιστή τα δεδομένα μας στην τελική είναι μια σειρά από bits χωρίς κάποιο νόημα. Το filesystem είναι το σύστημα που αναλαμβάνει να εισάγει στον υπολογιστή "ανθρώπινες" έννοιες για αυτά τα δεδομένα, όπως: αρχείο, κατάλογος, δικαιώματα, ιδιοκτησία, κ.α.

 

Προφανώς ένα filesystem έχει και άλλες επιδιώξεις, εξίσου ή περισσότερο δύσκολες: να εξασφαλίσει όσο γίνεται αξιοπιστία στα δεδομένα και να εξασφαλίσει όσο γίνεται επιδόσεις στην ανάγνωση/εγγραφή/μεταβολή των δεδομένων, και όλες αυτές οι επιδιώξεις έχουν αρκετά σημεία μη-τομής που αναγκάζουν συνολική εξέταση των προβλημάτων με αμοιβαίες παραχωρήσεις σε κάθε μια, χάριν των άλλων.

 

Μία τέτοια παραχώρηση στον τομέα της ευελιξίας και της χρηστικότητας είναι και η υιοθέτηση ενός ενιαίου ιεαρχικού συστήματος δομής στη ραχοκοκαλιά όλων των filesystems μέχρι και σήμερα. Σε ένα σύστημα που πρέπει να καλύψει τόσο πολλά ζητούμενα και να εισάγει τόσες πολλές μεταβλητές, προφανώς η απλοϊκή ιεραρχική δομή είναι μια ανάσα απλότητας.

 

Όμως, αν θέλαμε να δωθεί απόλυτη προτεραιότητα στη λειτουργικότητα, σίγουρα η ιεραρχική δομή είναι μακριά από το ιδανικό (πιστεύω όποιος έχει χρησιμοποιήσει π.χ. SQL θα το έχει σκεφτεί πολλές φορές).

 

  • Όποιος έχει ιδέες που θα ήθελε να υπάρξουν σε ένα filesystem ας τις αναφέρει, δεν έχει συζητηθεί κάτι τέτοιο και θα ήταν ενδιαφέρον. Όσο πιο ριζοσπαστικές τόσο το καλύτερο -ας αμφισβητηθεί αν γίνεται ακόμη η ίδια η ιδέα των αρχείων! Προσωπικά με ενδιαφέρει ιδιαίτερα να εξαφανιστεί η ιδέα της ιεραρχίας, μιας και η δυσκαμψία αυτής ήταν η αφετηρία τούτου του προβληματισμού. Έχω βαρεθεί να παίρνω αποφάσεις χωρίς νόημα, ή να βρίσκομαι αντιμέτωπος με προβλήματα που δε θα έπρεπε να υπάρχουν (ή έστω να είναι του χρήστη) εξαιτίας της γηραιάς αντίληψης ότι κάθε αρχείο πρέπει να αποτελεί ένα και μόνο ένα σημείο σε μια ιεραρχία ή να έχει συσχετισμένο ένα και μόνο ένα, μοναδικό γι' αυτό το το επίπεδο της ιεραρχίας, "filename".
     
     
  • Επίσης, με ενδιαφέρει να ακούσω λύσεις που υπάρχουν τώρα για την υπέρβαση αυτών τον περιορισμών, ακόμη και αν δεν είναι ιδανικές από αρχιτεκτονικής άποψης.
     
    Αυτό που ψάχνω είναι ένα αξιόπιστο σύστημα αρχείων, χωρίς απόλυτη ιεραρχία, υλοποιήσιμο στο Linux. Προφανώς, αφού η έννοια ιεράρχησης των αρχείων υπάρχει έμφυτη στην έννοια "filesystem" του Linux, η συμβιβαστική λύση είναι κάθε κατάλογος ή αρχείο να μπορεί να εμφανίζεται σε πολλά σημεία αυτής της ιεραρχίας. Θα μου άρεσε επίσης να μπορεί να συσχετιστεί με κάθε αρχείο ένας απροσδιόριστος αριθμό πληροφοριών, σαν "tags", ο οποίος να είναι όσο το δυνατόν ευκολότερα προσβάσιμος από τα υπάρχοντα εργαλεία διαχείρισης αρχείων.
     
    Ιδανικά θα μου άρεσε να λειτουργεί σε χαμηλό επίπεδο, χωρίς να βασίζεται σε generic back-ends για την αποθήκευση δεδομένων και την παροχή interfaces, αλλά δε νομίζω κάτι τέτοιο να υπάρχει, έτσι;
     
    Δυστυχώς λύσεις που βρήκα δεν είναι ιδανικές γιατί:
     
    1. Tο (επεξεργαστικό) κόστος συγχρονισμού ανάμεσα σε ένα filesystem με δικό του περιορισμένο σύστημα semantics και ένα εξωτερικό σύστημα βάσης είναι αναπόφευκτα μεγάλο, ειδικά μάλιστα όταν αυτό στέκεται πάνω σε αυτό το ίδιο filesystem
    2. Η εγκυρότητα των meta-info δε μπορεί ποτέ να είναι εγγυημένη και η αξιοπιστία τους δε μπορεί να είναι ίδια με την αξιοπιστία των αρχείων.
    3. Υπάρχουν λειτουργικοί περιορισμοί και έλλειψη γενικά αποδεκτής τυποποίησης

     

    Σε ό,τι αφορά τη λειτουργικότητα, το πιο ενδιαφέρον project που έχω βρει είναι ένα proof-of-concept πτυχιακής, το NHFS. Αυτό κάθεται πάνω σε ένα υπάρχον filesystem, χρησιμοποιεί SQLite για τα "meta-info" και παρέχει τις λειτουργίες του μέσω του παραδοσιακού hierarhical filesystem interface (μέσω του FUSE). Γνωρίζει κανείς αν υπάρχει κάτι σε αυτό το στυλ αλλά πιο ώριμο;

 

Ευχαριστώ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τα συστήματα αρχείων (πρέπει να) είναι πάνω από όλα, τρόποι οργάνωσης δεδομένων. Η αποθήκευση που γίνεται σε non-volatile μέσα όπως π.χ. σκληροί δίσκοι έχει κατά βάση πολλές ομοιότητες με το πρώτο επίπεδο αφαίρεσης των δεδομένων στην φυσική μνήμη και βασίζεται στις αρχές των Δομών Δεδομένων. Από αυτήν την άποψη, δε μπορείς να έχεις ένα άπειρο επίπεδο «αφαίρεσης» στην αναπαράσταση της πληροφορίας, για να είσαι απείρως ευέλικτος. Τυποποίηση χωρίς συμβάσεις δε γίνεται.

 

Επειδή όμως το θέμα φαίνεται πολύ ενδιαφέρον (και δύσκολο), πάμε λίγο ανάποδα, απαντώντας με ερώτηση. Οι λύσεις που λες ότι βρήκες : Ποιες ήταν; Και πέρα από τις αδυναμίες τους, σε ποια σημεία θεωρείς ότι θα σε κάλυπταν καλύτερα από τα καθιερωμένα filesystems; Δώσε αν θέλεις μερικά πρακτικά παραδείγματα που σε οδήγησαν στο να γράψεις συγκεκριμένα τα εξής :

 

Έχω βαρεθεί να παίρνω αποφάσεις χωρίς νόημα, ή να βρίσκομαι αντιμέτωπος με προβλήματα που δε θα έπρεπε να υπάρχουν (ή έστω να είναι του χρήστη) εξαιτίας της γηραιάς αντίληψης ότι κάθε αρχείο πρέπει να αποτελεί ένα και μόνο ένα σημείο σε μια ιεραρχία ή να έχει συσχετισμένο ένα και μόνο ένα, μοναδικό γι' αυτό το το επίπεδο της ιεραρχίας, "filename".

 

 

P.S.: Υπάρχει σοβαρή περίπτωση να μην έχω συλλάβει στην ολότητά του το θέμα που θέτεις. Δε φημίζομαι για την αντικομφορμιστική μου σκέψη. Ίσως τελικά να έπρεπε να γίνω μηχανικός και όχι πληροφορικάριος. Ή και φούρναρης, τώρα που το σκέφτομαι...

 

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Υπάρχει επίσης η ακόμα πιο πιθανή περίπτωση να έχεις συλλάβει το θέμα στην ολότητα και να μην το έχω συλλάβει εγώ, αφού ούτε μηχανικός είμαι ούτε πληροφορικάριος :-)

 

Υπερβάλλω στο post, δεν υπάρχει κάποιο συγκεκριμένο πρόβλημα που να θέλω να λύσω ούτε κάποιο που να με ταλαιπώρησε ποτέ ιδιαίτερα. Απλά χρειάζεται συχνά να εκφράζω σχέσεις ανάμεσα σε αρχεία πέρα από μια ιεραρχία και θα με βόλευε μια τέτοια δυνατότητα να αποτελούσε μέρος του filesystem για λόγους ευκολίας, επιδόσεων, συμβατότητας και αξιοπιστίας. Θα σκεφτώ μερικά χαρακτηριστικά παραδείγματα αύριο, αλλά δεν είναι προβλήματα με την κυριολεκτική έννοια -απλά πραγματάκια που μου βρωμάνε (είτε γιατί οι συνήθεις λύσεις είναι management nightmare είτε γιατί.. έτσι) και με οδηγούν να γκρινιάζω ελλείψει πιο σημαντικών προβλημάτων. Το NHFS που αναφέρω μου αρέσει πολύ, αλλά δε μπορώ να το εμπιστευτώ γιατί δεν είναι ώριμο project και είμαι αρκετά σίγουρος ότι θα έχει προβλήματα συγχρονισμού/επιδόσεων σε πολλά αρχεία.

 

Το θέμα το άνοιξα περισσότερο ως θεωρητικό προβληματισμό από την οπτική του χρήστη: "γιατί τα filesystems να είναι πλέον ιεραρχικά;"

 

Βέβαια έχεις δίκιο σε αυτό που είπες, δεν περιμένω "άπειρο" abstraction των δεδομένων: με ενδιαφέρει συγκεκριμένο μοντέλο παρουσίασης των δεδομένων που παρέχεται σε υλοποιήσεις έξω από το filesystem αλλά έχει κάποια προβλήματα τα οποία νομίζω ότι θα αντιμετωπίζονταν αν υπήρχε σχεδιασμένο εξ' αρχής ως μέρος του. Φυσικά πολλοί γκρινιάζουν: "ένα filesystem πρέπει να είναι απλό", "τέτοιες λειτουργίες πρέπει να είναι δουλειά των εφαρμογών" κλπ, αλλά είναι συνήθως αυτοί που δεν ενδιαφέρονται για τη λειτουργικότητα ούτως ή άλλως -διαφορετικά θα ενοχλούνταν από το πόσο προβληματικές είναι οι υπάρχουσες "έξω-από-το-filesystem" λύσεις.

 

[edit] Συγγνώμη, είχα αντιληφθεί κάτι διαφορετικό από αυτό που είπες. Αναδιατύπωσα το τελευταίο.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Νομίζω ότι τα pc πια έχουν πόρους να φαν κι οι κότες, ο ανθρώπινος χρόνος είναι σε έλλειψη! Δηλαδή τι να το κάνουμε ότι ο υπολογιστής μπορεί να προσπελάσει ένα αρχείο σε κλάσματα δευτερολέπτου δικής του απασχόλησης, όταν για να εντοπίσουμε και να του πούμε ποιο χρειαζόμαστε 1 λεπτό ανθρώπινης απασχόλησης. Άλλωστε οι υπολογιστές όσο πάνε και αποκτούν περισσότερους πόρους, εμείς είμαστε που μένουμε στάσιμοι :-)

 

Ο Apoikos μου επισήμανε τη χρησιμότητα των Extended Attributes, μιας υπάρχουσας δυνατότητας των filesystems. Αυτά μπορούν να χρησιμοποιηθούν για την αντιστοίχιση πληροφοριών στα αρχεία, ως ζευγαριών ονόματος-τιμής. Υπάρχουν κάποια βασικά εργαλεία για την εμφάνιση / διαχείριση αυτών των πληροφοριών. Θα το δοκιμάσω αύριο -σε σχέση με άλλα συστήματα που χρησιμοποιούν σύστημα βάσης είναι σαφώς σωστότερο γιατί οι πρόσθετες πληροφορίες έχουν την εγγύηση του filesystem και είναι πάντα έγκυρες. Οι πληροφορίες είναι προσπελάσιμες μόνο με τα ίδια τα αρχεία, το οποίο σε καταστάσεις που ζητείται η εύρεση αρχείων με βάση το attribute είναι λιγότερο γρήγορο και αποδοτικό από ότι αν οι πληροφορίες ήταν συγκεντρωμένες σε ένα σύστημα βάσης, όμως κατά τη γνώμη μου είναι χίλιες φορές χειρότερο π.χ. να κάνεις μια μικρή ιεραρχική αλλαγή σε ένα κατάλογο και όλες οι πληροφορίες να γίνονται από την αρχή index!

 

Επίσης επισήμανε ότι η ιεραρχία δεν είναι και τόσο απόλυτη, με την ύπαρξη των hard/soft links και τη δυνατότητα να κάνεις "bind" καταλόγους σε άλλα σημεία της ιεραρχίας μέσω της mount(8). Αυτά είναι λύσεις σε πολλά πρακτικά προβλήματα αλλά δεν είναι "η ουτοπία" που έχω στο μυαλό μου. Φαντάζομαι ένα σύστημα αρχείων στο οποίο να μην υπάρχει εξ' ορισμού η ίδια η έννοια της ιεράρχησης: τα αρχεία να μπορούν να προσδιοριστούν αποκλειστικά ως άθροισμα attributes. Προκειμένου να λειτουργεί ένα τέτοιο σύστημα με τα τωρινά εργαλεία μπορεί να παρέχει ένα "πολυ-ιεραρχικό" interface, όπως κάνει το NHFS, αλλά σιγά-σιγά θα περίμενα να προσαρμοστούν στη νέα λογική όλες οι εφαρμογές ώστε το ερώτημα "που είναι το αρχείο;" μια μέρα να καταντήσει τελείως άσχετο στην εργασία μας με τους υπολογιστές. Φυσικά όποιοι επιθυμούν μια ιεραρχική απεικόνιση θα μπορούν πάντα να αντιστοιχίσουν ως attribute ένα εικονικό "path" και απλά να επιλέξουν να προσδιορίσουν όλα τα αρχεία σύμφωνα με αυτό, αλλά ο τυπικός τρόπος εργασίας με αρχεία θα ήταν με statements του στυλ:

χρήστης: rm τα αρχεία με attributes purpose:log, name:web

σύστημα: υπάρχουν τα εξής αρχεία με τα εξής attributes, να σβηστούν? (y/n):

>name:web, purpose:log, month:January, Access_date:31/01/2008, x:y, mplampla:mplampla
name:web, purpose:log, month:February, Access_date:19/02/2008, x:y, mplampla:mplampla

ή

echo το attribute Title όλων των αρχείων με attributes Director:kubrik, rls_date:>=1995, Type:video, LastAccessed:!{THIS_MONTH}

ή αντί να ορίζουμε εγγραφή στο "/var/log/postfix/error.log" να ορίζουμε εγγραφή στο "type:txt, name:error.log, owner:postfix, purpose:log"

 

Καταλαβαίνετε τι εννοώ.

 

Δε ξέρω αν ένα τέτοιο σύστημα θα προκαλούσε το χάος ή θα επέβαλλε την τάξη αλλά σε μένα φαίνεται το ιδανικό.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ένα file system για να μπορεί να αλληλεπιδράσει σε φουλ ρυθμό με τον άνθρωπο πρέπει να είναι οργανωμένο όπως ο εγκέφαλος. Στον ανθρώπινο εγκέφαλο η μνήμη και οι σκέψεις δεν υπάρχουν σε κάποιο συγκεκριμένο σημείο. Διατρέχουν όλον τον εγκέφαλο συνεχώς σε ένα grid. Σαν αυτό που δημιουργούνται από ένα τρισδιάστατο ολόγραμμα. Όταν ο εγκέφαλος θέλει να βρει κάτι το αρπάζει από το grid... Δεν ξέρω κατά πόσο θα ήταν ορθό ή εφικτό οι πληροφορίες ενός file system να βρίσκονται παντού ταυτόχρονα, προσπελάσιμα από παντού. Κάτι τέτοιο θα ήταν τουλάχιστον επαναστατικό. Δεν ξέρω αν θα έλυνε ή θα δημιουργούσε περισσότερα προβλήματα. Πιστεύω πάντως ότι μία μέρα θα υλοποιηθεί.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εγώ είμαι υπέρμαχος της ιεραρχικής δομής. Μακάρι να ήταν όλοι οι αποθηκευτικοί χώροι (όλου του Internet κτλ) σε μία και μόνη ιεραρχία, π.χ. /gr/google/pc1234/home/Desktop/file.

Μου είναι πολύ πιο εύκολο να την απομνημονεύσω από οτιδήποτε άλλο.

 

Αυτά που μου λείπουν είναι:

1) Σωστό indexing. Να μπορώ να ρωτήσω "ποια αρχεία βρίσκονται σε φάκελο με όνομα τάδε, έχουν μέγεθος τάδε, τα έφτιαξε η εταιρία ή ο καλλιτέχνης τάδε" κτλ κτλ.

Και να μην γίνεται παντού και αργεί, να μπορώ να ορίσω εγώ τι indexing θέλω και σε ποιους φακέλους.

 

2) Προσαρμοσμένες προβολές (π.χ. σαν τα views της sql). Π.χ. ο φάκελος /etc του Linux θα μπορούσε να μην υπάρχει (στο περίπου - απλά παράδειγμα δίνω), αλλά να είναι μια προβολή όλων των αρχείων .conf που υπάρχουν κάτω από τους φακέλους /bin, /usr κτλ.

Αντίστοιχα, τα προγράμματα στα Windows θα μπορούσαν να μην γράφουν τίποτα στο μητρώο και στο C:\Windows, αλλά να είχαν ειδικούς υποφακέλους π.χ. program\Settings και program\Registry που θα περιλαμβανόταν στις "προβολές" C:\Windows\InstalledPrograms και C:\Windows\Registry (πάλι στο περίπου, υπάρχουν κι άλλα τεχνικά ζητήματα).

Φυσικά για να γίνει αποδοτικά αυτό θα έπρεπε να υπάρχει hook σε κάθε δημιουργία, μετακίνηση ή μετονομασία αρχείου κάτω από τους συγκεκριμένους φακέλους.

 

3) Σωστά attributes, που να μην είναι file-system based αλλά να ενσωματώνονται στο ίδιο το αρχείο (περίπου σαν το RIFF format ή τα MP3 ID3 tags). Π.χ. μου ήρθε να σχολιάσω από που κατέβασα το αρχείο WinWord.exe, να μπορώ να το βάλω μέσα στο αρχείο και στη συνέχεια να το μετακινήσω όπου θέλω χωρίς να χαθεί η πληροφορία, και να κάνω και αναζητήσεις ή προσαρμοσμένες προβολές με βάση αυτήν.

 

4) "Προχωρημένο" unionfs. Δηλαδή να μπορώ π.χ. να κάνω merge ένα CD των Windows με ένα Ramdrive, να ξεκινάω τα Windows από το CD και ό,τι αλλαγές χρειαστεί να γίνουν στο filesystem να γίνονται στο ramdrive αυτόματα, χωρίς να εμπλέκονται symbolic links κτλ.

 

5) Reparse points της προκοπής. Να μπορώ να αντιγράψω ένα αρχείο στο /somepath/user/mail και να του στέλνεται το αρχείο με email (ή ότι άλλη ενέργεια θέλω). Ο φάκελος mail δηλαδή να είναι virtual, και να καλεί κάποιο πρόγραμμα για οποιαδήποτε ανάγνωση ή εγγραφή γίνεται σ' αυτόν.

 

6) Ασφάλεια της προκοπής. Θέλω π.χ. τα τάδε αρχεία να είναι προσβάσιμα μόνο από εμένα και την τάδε ομάδα, ε, ακόμα κι αν βγάλουν το δίσκο και τον πάνε σε άλλον Η/Υ με ίδιο όνομα χρήστη ή ομάδας να μην μπορούν να τα διαβάσουν.

 

Αυτά εκ του προχείρου, είμαι σίγουρος ότι αν το καλοσκεφτώ θα ζητήσω καμιά εκατοστή ακόμα! :)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εγώ είμαι υπέρμαχος της ιεραρχικής δομής. Μακάρι να ήταν όλοι οι αποθηκευτικοί χώροι (όλου του Internet κτλ) σε μία και μόνη ιεραρχία, π.χ. /gr/google/pc1234/home/Desktop/file.

Μου είναι πολύ πιο εύκολο να την απομνημονεύσω από οτιδήποτε άλλο.

Ναι αλλά το πρόβλημα είναι ότι θα είχες την ανάγκη να την απομνημονεύσεις, δε θα μπορούσες να μεταβείς στο file δηλώνοντας απευθείας ό,τι γνωρίζεις γι' αυτό με όποια σειρά θέλεις. Αν το filesystem (ή η όποια δομή) σου επέτρεπε να το προσδιορίσεις αποκλειστικά ως άθροισμα attributes (=πραγμάτων που γνωρίζεις γι' αυτό), γιατί θα χρειαζόταν καν κάποια ιεραρχία;

 

1) Σωστό indexing. Να μπορώ να ρωτήσω "ποια αρχεία βρίσκονται σε φάκελο με όνομα τάδε, έχουν μέγεθος τάδε, τα έφτιαξε η εταιρία ή ο καλλιτέχνης τάδε" κτλ κτλ.

Και να μην γίνεται παντού και αργεί, να μπορώ να ορίσω εγώ τι indexing θέλω και σε ποιους φακέλους.

Εγώ θα προτιμούσα το indexing να μπορεί να είναι μέρος του filesystem, έτσι ώστε να υπάρχει εγγύηση ότι τα δεδομένα του ανταποκρίνονται στην πραγματικότητα (τέλειος συγχρονισμός) και να γίνεται με λιγότερο κόστος από ότι μπορεί να γίνει τώρα π.χ., με λύσεις τύπου FAM/GAMIN και εξωτερικά συστήματα βάσεων.

 

3) Σωστά attributes, που να μην είναι file-system based αλλά να ενσωματώνονται στο ίδιο το αρχείο (περίπου σαν το RIFF format ή τα MP3 ID3 tags). Π.χ. μου ήρθε να σχολιάσω από που κατέβασα το αρχείο WinWord.exe, να μπορώ να το βάλω μέσα στο αρχείο και στη συνέχεια να το μετακινήσω όπου θέλω χωρίς να χαθεί η πληροφορία, και να κάνω και αναζητήσεις ή προσαρμοσμένες προβολές με βάση αυτήν.

 

Αυτή τη στιγμή αν χρησιμοποιείς filesystem με extended attributes με τα παραδοσιακά εργαλεία του linux (cp, mv, tar ..) μπορείς να χειριστείς τα attributes σα να ήταν μέρος του ίδιου αρχείου (π.χ. να το κάνεις tar και να συμπεριληφθούν, να τα κάνεις copy σε ένα άλλο filesystem που υποστηρίζει extended attributes και να αντιγραφούν, κλπ).

 

4) "Προχωρημένο" unionfs. Δηλαδή να μπορώ π.χ. να κάνω merge ένα CD των Windows με ένα Ramdrive, να ξεκινάω τα Windows από το CD και ό,τι αλλαγές χρειαστεί να γίνουν στο filesystem να γίνονται στο ramdrive αυτόματα, χωρίς να εμπλέκονται symbolic links κτλ.

Δεν κατάλαβα τι ακριβώς εννοείς, κάτι παραπάνω από αυτά που πετυχαίνει o ο συνδυασμός TMPFS/UnionFS στο Linux;

 

5) Reparse points της προκοπής. Να μπορώ να αντιγράψω ένα αρχείο στο /somepath/user/mail και να του στέλνεται το αρχείο με email (ή ότι άλλη ενέργεια θέλω). Ο φάκελος mail δηλαδή να είναι virtual, και να καλεί κάποιο πρόγραμμα για οποιαδήποτε ανάγνωση ή εγγραφή γίνεται σ' αυτόν.

Πολύ ωραία ιδέα! Μου θυμίζει πολύ έντονα κάτι, σα να την έχω δει κάπου να υπάρχει, αλλά δε μπορώ να θυμηθώ :fear:

 

6) Ασφάλεια της προκοπής. Θέλω π.χ. τα τάδε αρχεία να είναι προσβάσιμα μόνο από εμένα και την τάδε ομάδα, ε, ακόμα κι αν βγάλουν το δίσκο και τον πάνε σε άλλον Η/Υ με ίδιο όνομα χρήστη ή ομάδας να μην μπορούν να τα διαβάσουν.

 

Ναι, αλλά με πιο "token" θα πιστοποιούταν το authority του λογαριασμού στα αρχεία; Π.χ. με κάποιο random key που θα γινόταν generate με τη δημιουργία του filesystem; Tι πλεονεκτήματα θα είχε αυτό σε σχέση με τώρα που μπορεί κάποιος να φτιάξει ένα filesystem πάνω σε ένα encrypted block device και να μη μπορεί να το προσπελάσει καν αν δε γνωρίζει το κλειδί;

 

ΥΣ. Υπάρχουν μερικά τρελά από άποψη λειτουργιών ή concept "filesystems" βασισμένα στο FUSE. Ας πούμε το WikipediaFS ή ακόμα και το mysqlfs. Γενικά με την έλευση του FUSE το -fs suffix έχει γίνει πια σαν τη μπουγάτσα: πάει με τα πάντα (πολύ πιθανόν εκεί να βρήκα την ιδέα που διατύπωσες στο 5) ) :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν ένα file system δεν ήταν στατικό; Να μην υλοποιεί μόνο ένα είδος αρχιτεκτονικής. Να μπορεί να μεταβάλλεται αναλόγως με τις απαιτήσεις του χρήστη και του συστήματος. Βολεύει σε ένα σημείο η ιεραρχία; Οκ, αυτή. Θέλω κάπου αλλού κάτι άλλο; Οκ, κάτι άλλο.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πολύ ωραία ιδέα! Μου θυμίζει πολύ έντονα κάτι, σα να την έχω δει κάπου να υπάρχει, αλλά δε μπορώ να θυμηθώ :fear:

>
#!/bin/bash
exec 42 <> /dev/tcp/www.insomnia.gr/80
echo -en "HEAD / HTTP/1.0\n\n" >& 42
cat <& 42

;-) (δεν παίζει σε debian)

 

Ναι, αλλά με πιο "token" θα πιστοποιούταν το authority του λογαριασμού στα αρχεία; Π.χ. με κάποιο random key που θα γινόταν generate με τη δημιουργεία του filesystem; Tι πλεονεκτήματα θα είχε αυτό σε σχέση με τώρα που μπορεί κάποιος να φτιάξει ένα filesystem πάνω σε ένα encrypted block device και να μη μπορεί να το προσπελάσει καν αν δε γνωρίζει το κλειδί;

Θα έπρεπε αφενός να περάσουμε σε λύση τύπου UUID για τα user/group semantics, αφετέρου θα έπρεπε να υπάρχει ένας τρόπος εξαναγκασμού τον συστημάτων να σέβονται αυτά τα semantics -> Κρυπτογραφία.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι αλλά το πρόβλημα είναι ότι θα είχες την ανάγκη να την απομνημονεύσεις, δε θα μπορούσες να μεταβείς στο file δηλώνοντας απευθείας ό,τι γνωρίζεις γι' αυτό με όποια σειρά θέλεις. Αν το filesystem (ή η όποια δομή) σου επέτρεπε να το προσδιορίσεις αποκλειστικά ως άθροισμα attributes (=πραγμάτων που γνωρίζεις γι' αυτό), γιατί θα χρειαζόταν καν κάποια ιεραρχία;

Καταρχάς, είπα ότι θέλω και indexing/attributes. :) Αλλά αυτά δε φτάνουν, μπορεί π.χ. να δώσεις κάποιο predicate που να σου επιστρέψει πάνω από ένα αρχείο. Και καλά να το κάνεις εσύ με το χέρι, αν θέλει κάποιο πρόγραμμα να ανοίξει το αρχείο settings.ini και υπάρχουν 150 με το ίδιο attribute;

 

Εγώ θα προτιμούσα το indexing να μπορεί να είναι μέρος του filesystem...

Δε λέμε κάτι διαφορετικό. Το να μπορώ εγώ να ορίζω ποια indexes θέλω δε σημαίνει ότι δε θα είναι μέρος του file system. Αλλά ακόμα κι αν υλοποιούνταν "εξωτερικά" με access monitoring ή οτιδήποτε άλλο δε θα με χαλούσε, αρκεί να ήταν αποδοτικό και να μην χρειαζόταν να κάνει scan όλο το δίσκο κάθε τρεις και λίγο.

 

Αυτή τη στιγμή αν χρησιμοποιείς filesystem με extended attributes με τα παραδοσιακά εργαλεία του linux (cp, mv, tar ..) μπορείς να χειριστείς τα attributes σα να ήταν μέρος του ίδιου αρχείου...

ΟΚ, στα Windows υπάρχουν ήδη τα NTFS file attributes. Πόσοι τα χρησιμοποιούν; Ελάχιστοι, γιατί με το που θα τα γράψεις σε CD ή θα τα ανεβάσεις στο Internet χάνονται τα attributes... Μακάρι να συμφωνούσαν η M$, οι developers όλων των Λ.Σ., η SONY, η PHILIPS με τα CD/DVD/Bluray και δε συμμαζεύεται και να είχαμε κοινό file system παντού. Δυστυχώς δεν το βλέπω να γίνεται σύντομα! :)

 

Δεν κατάλαβα τι ακριβώς εννοείς, κάτι παραπάνω από αυτά που πετυχαίνει o ο συνδυασμός TMPFS/UnionFS στο Linux;

Νομίζω ναι, αλλά δεν είμαι και expert στο unionfs.

Π.χ. μπορείς να έχεις ένα φάκελο /path/fonts που να περιέχει όλα μαζί τα αρχεία του /cd/fonts, /anotherdisk/fonts, /home/fonts κτλ;

Ή, μπορείς με το unionfs να έχεις ένα φάκελο /folderfromcd, να τον ενώσεις με έναν /folderfromram, και στη συνέχεια μόλις αποφασίσεις να γράψεις στο αρχείο /folderfromcd/filefromcd να γράφει κανονικά και να κρατάει τις αλλαγές στη RAM; (φαντάσου κάτι σαν το deepfreeze δηλαδή).

 

Πολύ ωραία ιδέα! Μου θυμίζει πολύ έντονα κάτι, σα να την έχω δει κάπου να υπάρχει, αλλά δε μπορώ να θυμηθώ :fear:

Στα Windows υπάρχουν ήδη, αλλά είναι τελείως άχρηστα στους administrator, γιατί για να φτιάξεις reparse point handler σου βγαίνει η πίστη! Στο Linux τα είπε πολύ ωραία ο apoikos. :)

 

Ναι, αλλά με πιο "token" θα πιστοποιούταν το authority του λογαριασμού στα αρχεία; Π.χ. με κάποιο random key που θα γινόταν generate με τη δημιουργία του filesystem; Tι πλεονεκτήματα θα είχε αυτό σε σχέση με τώρα που μπορεί κάποιος να φτιάξει ένα filesystem πάνω σε ένα encrypted block device και να μη μπορεί να το προσπελάσει καν αν δε γνωρίζει το κλειδί;

Με κωδικούς το φαντάζομαι. Η διαφορά με το block device είναι ότι υπάρχει πιστοποίηση σε επίπεδο αρχείου. Π.χ. το αρχείο /folder/file έχω δικαίωμα να το προσπελάσω επειδή είμαι στο group insomniacs. Αν με βγάλουν από το group δεν πρέπει να έχω δικαίωμα να το προσπελάσω. Επίσης αν κόψουν το access όλων των insomniacs, ακόμα κι αν δεν με βγάλουν από το group, δεν θα πρέπει να μπορώ να το προσπελάσω.

Όλο αυτό προγραμματιστικά θα πρέπει να υλοποιηθεί με αλυσίδα πιστοποιήσεων, όπου στέλνοντας κάποιο hash του κωδικού μου θα μπορώ να πάρω ένα αντίστοιχο hash του κωδικού του group και να το "στείλω" στο αρχείο για να πιστοποιηθώ και να πάρω το key διαβάσματος του αρχείου. Anyway, ας μην μπλέξουμε με υλοποιήσεις! :)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Νομίζω ναι, αλλά δεν είμαι και expert στο unionfs.

Π.χ. μπορείς να έχεις ένα φάκελο /path/fonts που να περιέχει όλα μαζί τα αρχεία του /cd/fonts, /anotherdisk/fonts, /home/fonts κτλ;

Ή, μπορείς με το unionfs να έχεις ένα φάκελο /folderfromcd, να τον ενώσεις με έναν /folderfromram, και στη συνέχεια μόλις αποφασίσεις να γράψεις στο αρχείο /folderfromcd/filefromcd να γράφει κανονικά και να κρατάει τις αλλαγές στη RAM; (φαντάσου κάτι σαν το deepfreeze δηλαδή).

Ναι, γίνονται και τα δύο. Γενικά το unionfs κάνει αφενός overlay από διαφορετικά branches, αφετέρου COW (copy-on-write) όταν ένα από τα branches είναι read-write. Τα branches έχουν προτεραιότητες, οπότε αν ένα αρχείο με το ίδιο όνομα υπάρχει σε 2 branches, θα εμφανίζεται το αρχείο που ανήκει στο branch υψηλότερης προτεραιότητας.

 

Με unionfs είχα φτιάξει ένα ωραίο debian diskless root για κάποια pc στο ΕΜΠ, το οποίο μπούταρε με root-over-nfs, read-only και μπορούσες να κάνεις ό,τι αλλαγές ήθελες στο μηχάνημα, που αποθηκεύονταν προσωρινά σε ένα tmpfs (ram-based) και στην επανεκκίνηση χάνονταν. Προφανώς μπορείς να χρησιμοποιήσεις και persistent block devices ;-)

 

Όλο αυτό προγραμματιστικά θα πρέπει να υλοποιηθεί με αλυσίδα πιστοποιήσεων, όπου στέλνοντας κάποιο hash του κωδικού μου θα μπορώ να πάρω ένα αντίστοιχο hash του κωδικού του group και να το "στείλω" στο αρχείο για να πιστοποιηθώ και να πάρω το key διαβάσματος του αρχείου. Anyway, ας μην μπλέξουμε με υλοποιήσεις! :)

Άρα πρέπει η πιστοποίηση να γίνεται στα πλαίσια κάποιου realm. Γιατί να μη χρησιμοποιήσεις κατευθείαν κάποιο kerberos-based networked filesystem λοιπόν (OpenAFS ή NFSv4), με την έννοια ότι αν είναι να περνάς κάθε access check πάνω από το δίκτυο atomically, θα πρέπει να έχεις αρκετά γρήγορο δίκτυο με αρκετά χαμηλό latency (=LAN). Όσον αφορά το portablility των δεδομένων, προσωπικά θεωρώ ότι δεν πρέπει να στοχεύει τόσο πολύ στο να κουβαλάς τα δεδομένα μαζί σου, όσο στο να έχεις εύκολη, γρήγορη και ασφαλή πρόσβαση σε αυτά όπου κι αν βρίσκεσαι.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι, γίνονται και τα δύο.

Wow, μπράβο στους developers! Το είχα σκεφτεί όταν προσπαθούσα να εγκαταστήσω τα Windows 95 σε 40Mb σκληρό και να έχω τα Windows να βρίσκονται σε CD, overlapped με τις αλλαγές στο C:\! Άξιοι! Άντε μετά από καμιά 10ριά χρόνια να το δούμε και στα Windows... :P

 

Άρα πρέπει η πιστοποίηση να γίνεται στα πλαίσια κάποιου realm. Γιατί να μη χρησιμοποιήσεις κατευθείαν κάποιο kerberos-based networked filesystem λοιπόν...

Από kerberos είμαι σχετικά άσχετος... Εννοούσα όμως τοπικά, κυρίως για ευκολία (standalone pc) και ταχύτητα, αλλά ακόμα και επειδή αν π.χ. "μπουκάρουμε" στην τράπεζα και πάρουμε τους σκληρούς και του kerberos server και του client, να μην μπορούμε να διαβάσουμε τελικά το αρχείο (δεν ξέρω αν γίνεται, δεν ξέρω πόσο ασφαλής είναι ο kerberos όταν αποκτήσεις δικαιώματα administrator στον server).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σχετικά με το kerberos: οποιοδήποτε σύστημα προσφέρει πιστοποίηση μέσω μιας «τρίτης», εμπιστεύσιμης αρχής είναι ευάλωτο σε περίπτωση που κάποιος αποκτήσει πρόσβαση στην Αρχή Πιστοποίησης. Από την άλλη, για να μην έχεις τέτοιου είδους προβλήματα πρέπει να πας σε ισότιμη εμπιστοσύνη (peer trust, π.χ. OpenPGP/GPG), όπου όμως δεν μπορείς να απευθύνεσαι σε κάποιον "server".

 

Με λίγα λόγια, απ' τη στιγμή που ένας χρήστης είναι αντικείμενο συσχετισμένο με συγκεκριμένους υπολογιστές και ενδεχομένως με συγκεκριμένα δίκτυα (kerberos, active directory, OpenID, ...), δεν έχει νόημα να προσπαθείς να μεταφέρεις τα διαπιστευτήριά του σε υπολογιστές που είναι έξω από αυτά τα σύνολα, δίοτι οι υπολογιστές αυτοί μπορούν να λειτουργούν με τελείως διαφορετικούς κανόνες. Οι λύσεις που έχεις είναι δύο:

  • Κρυπτογράφηση των δεδομένων, η οποία επιτρέπει πρόσβαση μόνο σε όσους ξέρουν το συνθηματικό, δεν έχει όμως κανενός είδους access control πέρα από αυτό. Με τον τρόπο που λειτουργεί η κρυπτογραφία δε, δεν μπορείς να έχεις διαφορετικό read και διαφορετικό write key, χωρίς να βασίζεσαι στην υλοποίηση του πρωτοκόλλου που θα χρησιμοποιεί ο εκάστοτε υπολογιστής. Φυσικά μπορείς να χρησιμοποιήσεις ένα κομμάτι hardware ενσωματωμένο π.χ. στον εξωτερικό σκληρό δίσκο, που θα κάνει το access control και θα το κουβαλάς και αυτό μαζί σου.
  • Να κάνεις προσωρινά τους απομακρυσμένους υπολογιστές "τμήμα" των υποδομών για τις οποίες έχεις διαπιστευτήρια (π.χ. μέσω δικτυακών filesystems). Το μειονέκτημα αυτής της λύσης είναι ότι απαιτείται δίκτυο και on-line επικοινωνία με την πηγή των δεδομένων.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...