Mahmoud Ahmed Ismail Ahmed
NileStore : Secure and Fault-Tolerant Distributed Storage System /
Mahmoud Ahmed Ismail Ahmed
- 2011
- 87 p. ill. 21 cm.
Supervisor: Sameh Elansary
Thesis (M.A.)—Nile University, Egypt, 2011 .
"Includes bibliographical references"
Contents: 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
Abstract: 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.
Text in English, abstracts in English .
Subjects--Topical Terms: Informatics-IFM
Index Terms--Genre/Form: Dissertation, Academic
Dewey Class. No.: 610