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 .


Informatics-IFM


Dissertation, Academic

610