Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote...

24
Introduction rfsd librfs grfs Evaluation Conclusion and Future Work Remote File System Suite Softwarepraktikum f¨ ur Fortgeschrittene Michael Kuhn Parallele und Verteilte Systeme Institut f¨ ur Informatik Ruprecht-Karls-Universit¨ at Heidelberg 2009-02-05 1 / 24

Transcript of Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote...

Page 1: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Remote File System SuiteSoftwarepraktikum fur Fortgeschrittene

Michael Kuhn

Parallele und Verteilte SystemeInstitut fur Informatik

Ruprecht-Karls-Universitat Heidelberg

2009-02-05

1 / 24

Page 2: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

1 IntroductionIntroduction

2 Remote File System Daemon

3 Remote File System Library

4 Global Remote File System

5 Evaluation

6 Conclusion and Future Work

2 / 24

Page 3: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Introduction

FUSE

Goal was to implement a global network file system

Needed to implement the underlying network file system first

Should be implemented as a FUSE file system

Runs in user spaceRelatively easy to implementRelatively easy to maintain

3 / 24

Page 4: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Introduction

Overview

rfsd – Remote File System Daemon

Low-level network file system

librfs – Remote File System Library

Abstracts protocol implementation

rfsc – Remote File System Client

Basically a simple throughput and metadata benchmark

grfs – Global Remote File System

High-level global network file system

4 / 24

Page 5: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

1 Introduction

2 Remote File System DaemonMotivationOverviewImplementation

3 Remote File System Library

4 Global Remote File System

5 Evaluation

6 Conclusion and Future Work

5 / 24

Page 6: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Motivation

A separate protocol was designed

Existing protocols did not meet the requirements

SSH

Does not support separate control and data channelsData encryption makes transfers too slow

Not possible to deactivate the encryption

FTP

Only possible to write a complete file or append data to itFile listings are hard to parse, because their format is notwell-defined

6 / 24

Page 7: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Overview

Implement our own protocol

Separate control and data channels

No encryptionControl channel can be encrypted via SSH forwarding

Should be as fast as possible

Microscope pumps out 1 GB/s6 · 2 servers⇒ 100-200 MB/s

Should be as transparent as possible

Use underlying local file systemDo not stripe files across servers

Should be as safe as possible

Support replication

7 / 24

Page 8: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Implementation

Basically provide remote access to the local file system

Protocol very similar to POSIX

pread(), pwrite(), . . .

Plus some fancy features, of course :-)

Fully multi-threaded

Each connection handled in its own threadLong-running operations do not block other connections

Background replication

Master-slave conceptOne master, multiple slavesAll operations are replicated in a background threadWrite operations are barriers

We do not need to allocate additional memory for backgroundreplicationWe do not need to read from the file to preserve memory(race conditions)

8 / 24

Page 9: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

1 Introduction

2 Remote File System Daemon

3 Remote File System LibraryMotivation

4 Global Remote File System

5 Evaluation

6 Conclusion and Future Work

9 / 24

Page 10: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Motivation

Hide all the “ugly” implementation details :-)

Good error reporting via GError

Part of GLib

Some operations require multiple steps

For example: rfs read(), rfs read do(), rfs read end()

10 / 24

Page 11: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

1 Introduction

2 Remote File System Daemon

3 Remote File System Library

4 Global Remote File SystemOverview

5 Evaluation

6 Conclusion and Future Work

11 / 24

Page 12: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Overview

Merge multiple file systems into one global namespace

Example:

serv1 has directory /foo, serv2 has directory /bar

$ grfs serv1:6666 serv2:6666 /grfs

$ ls /grfs

> foo bar

12 / 24

Page 13: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

1 Introduction

2 Remote File System Daemon

3 Remote File System Library

4 Global Remote File System

5 EvaluationEvaluation

6 Conclusion and Future Work

13 / 24

Page 14: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Evaluation

The next benchmark is local

That is, client and server were started on the same machine

14 / 24

Page 15: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Evaluation

/dev/shm XFS RFS (/dev/shm) RFS (XFS)0

200

400

600

800

1000

1200

1400

File System Performance

Write Read

File Systems

MB

/s

Read: Quite slow — Write: RFS (XFS) > XFS – dd vs. rfsc?15 / 24

Page 16: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Evaluation

The next two benchmarks are remote

Client and server were started on two separate machines

We have a GBit network

About 119 MB/s maximum throughput

16 / 24

Page 17: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Evaluation

Write Read0

20

40

60

80

100

120

Remote File System Performance

Speed

Operations

MB

/s

Write: Almost network maximum – Read: Slight overhead17 / 24

Page 18: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Evaluation

RFS (/dev/shm) RFS (XFS)0

1000

2000

3000

4000

5000

6000

Remote File System Metadata Performance

create stat access unlink

File Systems

Ope

ratio

ns/s

stat and access: Same on /dev/shm and XFS (no writes)18 / 24

Page 19: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Evaluation

The next two benchmarks are remote

Clients and servers were started on separate machinesAll clients were started on the same machine

We have a GBit network

About 119 MB/s maximum throughput

19 / 24

Page 20: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Evaluation

1 Server/Client 1 Server/Client (Direct I/O) 9 Servers/Clients 9 Servers/Clients (Direct I/O)0

20

40

60

80

100

120

140

Global Remote File System Performance

Write Read

Configurations

MB

/s

Read: 2 GB/s from kernel cache (screws up diagram)20 / 24

Page 21: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Evaluation

These numbers are quite bad . . .

New performance hack improvement in grfs

No new diagrams, it was too late :-)

1 server/client

Normal: 56 MB/s (Write) – 2 GB/s (Read)Direct I/O: 112 MB/s – 19 MB/s (Read)

Remaining problems

Normal: Fix writeDirect I/O: Fix readIncreasing FUSE’s buffer size would suffice

Too much overhead for 4 or 16 KB buffers128 KB work well

Does not work – FUSE bug?

21 / 24

Page 22: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Evaluation

1 Server/Client 1 Server/Client (Direct I/O) 9 Servers/Clients 9 Servers/Clients (Direct I/O)0

500

1000

1500

2000

2500

3000

Global Remote File System Metadata Performance

create unlink

Configurations

Ope

ratio

ns/s

22 / 24

Page 23: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

1 Introduction

2 Remote File System Daemon

3 Remote File System Library

4 Global Remote File System

5 Evaluation

6 Conclusion and Future WorkFuture Work

23 / 24

Page 24: Remote File System Suite - hps.vi4io.org · 1 Introduction 2 Remote File System Daemon 3 Remote File System Library 4 Global Remote File System 5 Evaluation Evaluation 6 Conclusion

Introduction rfsd librfs grfs Evaluation Conclusion and Future Work

Future Work

Server-side replication X

The client – that is, the Global Remote File System – used todo this

Support for High Availability X

Global Remote File System should continue working if serversgo offlineSimply use remaining servers, providing a partial view of theglobal file systemReconnect on SIGHUP

Synchronize multiple Remote File System Daemons

Unique IDs for all modifying operations

Make grfs usable for all users

Check FUSE’s allow other and default permissions

Optimize the Global Remote File System/FUSE

Container support (?)

24 / 24