29
LEVERAGING BTRFS, LINUX AND OPEN SOURCE Suman Chakravartula / rockstor.com @rockstorinc SDC 2015

LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

Embed Size (px)

Citation preview

Page 1: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

LEVERAGING BTRFS, LINUX AND OPENSOURCE

Suman Chakravartula / rockstor.com @rockstorinc

SDC 2015

Page 2: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

PROJECT BRIEF

Page 3: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

PROJECT PRINCIPLESOpen SourceCommunity focusedHardware agnosticLinux/BTRFS basedSimple to install and manageUse boring technology whenever possibleContributor friendly

Page 4: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

OVERVIEWDeveloping with BTRFSServer side API's with Django and DRFZMQ for data replicationDjango and ZMQ for asynchronous APIsBackbone.jsGevents, SocketIO and websocketsDocker

Page 5: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

HIGH LEVEL ARCHITECTURE

Page 6: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

BTRFSVolume Management features

mix and match drivesadd and remove driveschange raid profies

Page 7: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

BTRFSCopy on Write features

SubvolumesSnapshotsClonesSend/Receive Snapshots

Page 8: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

BTRFSOther cool features

Quota groupsCompressionDeduplicationSSD awareness

Page 9: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

DEVELOPING WITH BTRFSbtrfs-progs user space utilitiesCutting edgeNot developer friendly yet.

Page 10: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

BTRFS LAYOUT

Page 11: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

OTHER OS LEVEL TOOLSNetworkManagersmartmontoolsudevadmSystemTapinotifyand more...

Page 12: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

APPLICATION ARCHITECTURE

Page 13: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

DJANGO AND FRIENDSDjango MVCPostgresqlDjango Rest Framework

Page 14: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

STATE SYNCHRONIZATIONSystem state is the factApplication state is the truthMinimal application stateEventual consistency

Page 15: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

BACKBONE AND FRIENDSBackbone MVCJQueryD3

Page 16: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

ZMQJob schedulingAsynchronous replication of SharesSystemTap probes (On hold)

Page 17: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

DJANGO + ZMQ = ASYNCHRONOUSLong running tasks: btrfs balance, scrub etc..Task manager uses the RESTful API

Page 18: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

DJANGO + ZMQ

Page 19: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

DOCKER + ZMQHosting Docker based applicationsZMQ for app installs and updates.

Page 20: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

ROCK-ON PLAY STORE

Page 21: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

SYSTEMTAP AND ANALYTICSZMQ for scheduling stap scriptsProbe management from the UIReports using D3

Page 22: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

ASYNCHRONOUS REPLICATIONBTRFS send/receiveLAN or WANReplicate to multiple destinations (planned)Encryption (planned)

Page 23: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

PUB-SUB FOR DATA TRANSFER

Page 24: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

PUSH-PULL FOR META DATA

Page 25: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

RESPONSIVE UI AND EVENT DRIVENBACKEND

Subscribe, not pollEvent driven message passingPush notifications

Page 26: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

GEVENT-SOCKETIO + WEBSOCKETS

Page 27: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

SUMMARYdeveloping with BTRFSserver side API's with Django and DRFZMQ for data replicationDjango and ZMQ for asynchronous APIsBackbone.jsGevents, SocketIO and websocketsDocker

Page 28: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

OPEN SOURCE SOFTWARE ANDCOMMUNITY FEEDBACK LOOP

Community focused developmentVision versus community wants

Page 29: LEVERAGING BTRFS, LINUX AND OPEN SOURCE - SNIA · OVERVIEW Developing with BTRFS Server side API's with Django and DRF ZMQ for data replication Django and ZMQ for asynchronous APIs

QUESTIONS OR COMMENTS?Important links

Website: Community: Code: Docs:

rockstor.comforum.rockstor.com

github.com/rockstor/rockstor-corerockstor.com/docs