dc.contributor.author |
Γερακάρης, Βασίλειος
|
el |
dc.contributor.author |
Gerakaris, Vasileios
|
en |
dc.date.accessioned |
2016-02-17T11:50:31Z |
|
dc.date.available |
2016-02-17T11:50:31Z |
|
dc.date.issued |
2016-02-17 |
|
dc.identifier.uri |
https://dspace.lib.ntua.gr/xmlui/handle/123456789/42021 |
|
dc.identifier.uri |
http://dx.doi.org/10.26240/heal.ntua.11909 |
|
dc.rights |
Default License |
|
dc.subject |
Αποθηκευτικό νέφος |
el |
dc.subject |
Συγχρονισμός αρχείων |
el |
dc.subject |
Υπηρεσίες νέφους |
el |
dc.subject |
Cloud storage |
en |
dc.subject |
File synchronisation |
en |
dc.subject |
Cloud services |
en |
dc.title |
Σχεδιασμός και υλοποίηση ενός φορητού μηχανισμού
συγχρονισμού αρχείων σε περιβάλλον αποθηκευτικού
νέφους |
el |
heal.type |
bachelorThesis |
|
heal.classification |
Computer science |
en |
heal.access |
free |
|
heal.recordProvider |
ntua |
el |
heal.publicationDate |
2015-09-02 |
|
heal.abstract |
Η αυξημένη χρήση των Εικονικών Μηχανών στις διάφορες υπηρεσίες νέφους οδήγησε στη δη-
μιουργία ενός μεγάλου αριθμού αρχείων εικόνων και στιγμιοτύπων εικονικών μηχανών. Γεννήθηκε
έτσι η ανάγκη για ένα αξιόπιστο και αποδοτικό τρόπο συγχρονισμού των αρχείων αυτών μεταξύ
διαφορετικών υπολογιστών. Υπάρχουν ήδη λογισμικά που υλοποιούν συγχρονισμό αρχείων, αλλά
κανένα δεν είναι φτιαγμένο ειδικά γι’ αυτό το σκοπό. Μελετώντας και κατανοώντας τα ιδιαίτερα
χαρακτηριστικά αυτής της μορφής αρχείων, δηλαδή το γεγονός πως είναι μεγάλα σε μέγεθος και
έχουν πολλά κοινά δεδομένα μεταξύ τους, μας επιτρέπει να βελτιστοποιήσουμε τη διαδικασία συγ-
χρονισμού τους.
Ο στόχος αυτής της διπλωματικής εργασίας είναι να παρουσιάσει τη σχεδίαση μίας βιβλιο-
θήκης στη γλώσσα Python, για το συγχρονισμό μεγάλων ομοιόμορφων αρχείων με χρήση υπη-
ρεσιών αποθηκευτικού νέφους. Μελετάμε τις υπάρχουσες υλοποιήσεις για συγχρονισμό αρχείων,
κατανοούμε τις σχεδιαστικές επιλογές πίσω από αυτά και τα επεκτείνουμε περαιτέρω, με νέες βελ-
τιστοποιήσεις. Προτείνουμε ένα αλγόριθμο συγχρονισμού που ανιχνεύει και χειρίζεται ενημερώ-
σεις σε αρχεία αποδοτικά και αξιόπιστα. Προτείνουμε επίσης τη χρήση αφαιρετικών κλάσεων για
την αναπαράσταση των αρχείων, των τοπικών καταλόγων αρχείων και των προγραμματιστικών
διεπαφών εφαρμογών (API) των υπηρεσιών αποθηκευτικού νέφους. Τα API που εκθέτουν οι πα-
ραπάνω αφαιρετικές κλάσεις επιτρέπουν μεγαλύτερη ευελιξία στη βιβλιοθήκη, δίνοντάς του τη
δυνατότητα να λειτουργήσει πάνω σε διαφορετικά λειτουργικά συστήμάτα και υπηρεσίες αποθη-
κευτικού νέφους.
Μετά την παρουσίαση της αρχικής σχεδίασης, προτείνουμε και υλοποιούμε διάφορες βελτι-
στοποιήσεις που βελτιώνουν περαιτέρω την απόδοση της διαδικασίας συγχρονισμού και πραγμα-
τοποιούμε συγκριτικές αξιολογήσεις ώστε να μετρήσουμε την επίδρασή τους στο χρόνο εκτέλεσης.
Η χρήση νημάτων για την ταυτόχρονη αποστολή αιτημάτων στον απομακρυσμένο εξυπηρετητή
μειώνει την επίδραση της καθυστέρησης του δικτύου, ενώ η χρήση μηχανισμών παρακολούθησης
του καταλόγου αρχείων (όπως το inotify) έχει ως αποτέλεσμα την ταχεία και αποδοτική ανίχνευση
των τροποποιημένων αρχείων. Εστιάζοντας περισσότερο στο σενάριο χρήσης των μεγάλων ομοιό-
μορφων αρχείων, προτείνουμε την τοπική αποθήκευση των block των αρχείων, ώστε να μεταφορ-
τώνονται μόνο τα κομμάτια που διαφέρουν από τον εξυπηρετητή, κατί που προσφέρει αξιοσημεί-
ωτη βελτίωση στο χρόνο μεταφόρτωσης των αρχείων. Τέλος, προκειμένου να αντιμετωπίσουμε τις
ανάγκες επιπλέον αποθηκευτικού χώρου που εισήγαγε η τελευταία βελτιστοποίηση, προτείνουμε
τη χρήση ενός μηχανισμού συστήματος αρχείων σε περιβάλλον χρήστη (FUSE) που θα επιτρέπει
την εικονική δημιουργία και πρόσβαση στα αρχεία, ενώ κάθε μοναδικό block αρχείου θα απόθη-
κεύεται μία φορά, και ας είναι κοινόχρηστο από περισσότερα αρχεία.
Στα τελευταία μέρη της διπλωματικής εργασίας, συγκρίνουμε τα προτεινόμενα στοιχεία και
την απόδοσή της βιβλιοθήκης με αυτά διαφόρων δημοφιλών λογισμικών και πακέτων συγχρονι-
σμού αρχείων και έπειτα κρίνουμε την καταλληλότητα του καθενός για το σενάριο χρήσης που
περιγράφηκε. Προτείνουμε μερικές επιπλέον βελτιστοποιήσεις στη διαδικασία συχρονισμού, οι
οποίες έχουν προγραμματιστεί για το μέλλον, αλλά δεν έχουν ακόμη υλοποιηθεί. |
el |
heal.abstract |
The increased use of Virtual Machines in cloud service infrastructures has resulted in a large volume
of disk image and snapshot files. As a result, a reliable and efficient way of synchronising those
files between different computers is needed. Software applications that achieve file synchronisation
already exist, but none is tailored specifically for this task. Understanding the special characteristics
of the files in question, the fact that they are large in size and have most of their data in commmon,
allows us optimise the synchronisation process for that use case.
The aim of this dissertation is to present the design of a synchronisation framework for large
similar files, using cloud storage services, written in Python. We study existing implementations of
file syncing, understand the underlying design choices and make further improvements on them.
We propose a synchronisation algorithm that reliably and efficiently detects and handles updates.
We also propose the use of abstract classes to represent files, local directories and cloud storage
service APIs. The APIs exposed by those classes allow more flexibility to the framework, so it can
operate over different OSs and cloud storage services.
After the presentation of the initial design, we propose and implement several optimisations
that further improve the performance of the synchronisation process and benchmark their effects
on the execution time. The use of threads to concurrently request resources from a remote server
reduces the effect of network latency and the use of directory monitoring mechanisms (such as
inotify) results in fast and efficient discovery of modified files. Further focusing on the use case of
large, similar files, we propose local storage of the files’ blocks so only the parts that differ can be
downloaded from the server, which boasts a significant improvement in download times. Finally, in
order to alleviate the storage space needs that the last improvement introduces, we propose the use
of a Filesystem in Userspace (FUSE) mechanism to virtually create and access files, while storing
each shared block only once.
In the final parts of this dissertation, we compare the proposed features and performance with
that of several synchronisation software and packages and discuss their suitability for the use case
described. We also propose further improvements in the synchronisation process that have been
planned but not yet thoroughly designed and implemented. |
en |
heal.advisorName |
Κοζύρης, Νεκτάριος |
el |
heal.committeeMemberName |
Κοζύρης, Νεκτάριος |
el |
heal.committeeMemberName |
Παπασπύρου, Νικόλαος |
el |
heal.committeeMemberName |
Γκούμας, Γεώργιος |
el |
heal.academicPublisher |
Εθνικό Μετσόβιο Πολυτεχνείο. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών. Εργαστήριο Υπολογιστικών Συστημάτων |
el |
heal.academicPublisherID |
ntua |
|
heal.numberOfPages |
54 σ. |
|
heal.fullTextAvailability |
true |
|