Create a USB device that, when configured and connected, exposes one or more Ceph RBD images for use as USB storage, allowing for:
- Ceph storage consumption by almost any system with a USB port
- Including dumb devices such as TVs, MP3 players and mobile phones
- Boot from RBD image
- By any system capable of booting from a USB mass storage device
- Minimal configuration
- Network, ceph.conf, Ceph access key and image pool should be all that's needed for configuration
- Might be worth looking at SaltStack or WebYaST/Cockpit for configuration
The USB device will run an embedded Linux kernel, utilising the USB gadget stack and Ceph RBD client module. I plan on writing a minimal rbd-image-map helper, that allows for kernel RBD image mapping without requiring the user space Ceph libraries.
The USB device hardware should offer the following characteristics:
- Small and portable
- Sufficient CPU, RAM and storage resources to run Linux
- Preferably multi-core, 1Ghz+, 1GB+ RAM, SD card or eMMC
- Reasonable network and USB throughput
- 802.11n and micro USB2 at a minimum
- Ideally 802.11ac/GbE and micro USB3+
- Powered via USB, ideally the same port as for data transfer
- Preferably less than $50USD
I plan on using my Cubietruck board as a hackweek prototype, which has a dual-core Allwinner A20 chip, with 2GB RAM, GbE and USB2. This should however also be achievable using C.H.I.P ($9 single-core board), NanoPi2 (quad-core $32 board), or UP (Intel Atom board with GbE and USB3).
This project is part of:
Hack Week 13
This project is one of its kind!