000 09252nam a22002537a 4500
008 210830s2011 |||||||f mb|| 00| 0 eng d
040 _aEG-CaNU
_cEG-CaNU
041 0 _aeng
_beng
082 _a610
100 0 _aMahmoud Ahmed Ismail Ahmed
_9557
245 1 _aNileStore :
_bSecure and Fault-Tolerant Distributed Storage System /
_cMahmoud Ahmed Ismail Ahmed
260 _c2011
300 _a87 p.
_bill.
_c21 cm.
500 _3Supervisor: Sameh Elansary
502 _aThesis (M.A.)—Nile University, Egypt, 2011 .
504 _a"Includes bibliographical references"
505 0 _aContents: Acknowledgements v Table of Contents viii List of Figures xi List of Tables xiii Abstract xv 1 Introduction 1 1.1 Why do we need distributed storage systems? . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Distributed Storage System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2.1 Classication of Distributed Storage Systems . . . . . . . . . . . . . . . . . . . . . 2 1.2.2 Cloud Storage Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.3 P2P Storage Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.4 Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.5 Key Aspects in designing a Distributed storage system . . . . . . . . . . . . . . . . 9 1.3 Nilestore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.1 Thesis Goal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.2 Nilestore as a Validation of Tahoe . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.3 Results Obtained . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.4 Thesis Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2 Tahoe: Least Authority File System (LAFS) 13 2.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.1 System Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2 Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.1 File Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.2 Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3.3 Tahoe Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3.4 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.4 Immutable File Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.4.1 Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.4.2 Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.4.3 Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4.4 Peer Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4.5 Servers of Happiness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4.6 Uploading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.4.7 Share File Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.4.8 Downloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.4.9 Checking and Repairing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.5 Mutable File Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.5.1 Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 vii viii TABLE OF CONTENTS 2.5.2 Types of Mutable les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.5.3 Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.5.4 Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.5.5 Publishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.5.6 Share File Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.5.7 Retrieving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.6 Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.7 Garbage Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.8 Front Ends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.8.1 WebApi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.8.2 CLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3 Nilestore Design 39 3.1 Kompics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.1.1 Concepts in Kompics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.1.2 Component life-cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.1.3 Advanced . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.2 Nilestore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.2.1 Common Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.2.2 NilestorePeer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.2.3 Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.2.4 Introducer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.2.5 Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.3 Tahoe vs. Nilestore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4 Performance Evaluation 61 4.1 Methodology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.2 Performance of 3rd-party Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.2.1 Hashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.2.2 Encryption/Decryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.2.3 Erasure Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.2.4 Networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.3 Entire System Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.3.1 Uploading Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.3.2 Downloading Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.3.3 Entire System Perforamance Summary . . . . . . . . . . . . . . . . . . . . . . . . . 77 5 Conclusion and Future Work 79 A Implementation Details 81 A.1 Hashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 A.1.1 SHA256d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 A.1.2 Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 A.2 Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 A.3 Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 A.3.1 AES Cipher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 A.4 Benchmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 A.4.1 Benchmark Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Bibliography 84
520 3 _aAbstract: In this thesis we present Nilestore. Nilestore is a secure and fault tolerant distributed storage system that allows users to save their data remotely while security and privacy are preserved. Under the hood Nilestore save users' data on multiple machines to increase the availability of the data and to limit the probability of data loss due to hardware failures. Nilestore is a redesign and reimplementation of an open source decentralized lesystem called Tahoe-LAFS using a component model framework called Kompics. Finally, we evaluate the Nilestore implementation against Tahoe implementation where we were able to show that Nilestore outperforms Tahoe during the dierent operations such as uploading and downloading.
546 _aText in English, abstracts in English .
650 4 _aInformatics-IFM
_9266
655 7 _2NULIB
_aDissertation, Academic
_9187
690 _aInformatics-IFM
_9266
942 _2ddc
_cTH
999 _c9063
_d9063