Code Monkey home page Code Monkey logo

oneblox's Introduction

Oneblox Manager

Set of simple tools to control hardware in a rooted Exablox Oneblox 3308 storage appliance. Unfortunately, the company behind this hardware has completely abandoned the product. As typical with products that depend on some cloud component, the management interface for this device depends on Exablox servers and therefore this product has been rendered e-waste. I bought one on eBay thinking it'd look pretty nice sitting in my rack and might actually be usable for something. For a while, it ran fine in it's very default mode as a simple, not very fast SMB server. I was able to fill it with 600GB SAS drives, over time swapping in 4TB drives, and Exablox's scalable RAID worked fine, if not giving me any actual feedback of what it was doing in the background.

I could even swap 2 drives at a time and it maintained the files. Unfortunately, when I almost had the drive slots filled entirely with HGST 8TB drives, the filesystem disappeared. Oh well.

So I decided to pop the cover open and look inside. Surprisingly, there's a 500GB SSD. And woohoo, to my surprise it had a Linux root pawrtition on it. So, after cloning the drive, I very easily re-enabled root account and telnet so I could pop in and do a little exploration.

The system used is a very old version of Debian running kernel 3.10 (Linux version 3.10.49oneblox-rel-2.6.x-44) on a 6-core MIPS64 Cavium 6335 Octeon-II with 16GB of main memory. It's quite a bit more powerful than most dedicated NAS products and mine currently runs PostgreSQL, CouchDB, ProFTPD and several Node webapps. The processor was designed for network appliances so there is no hardware floating-point. Disk i/o is handled through an LSI SAS/SATA controller that offers no built-in RAID functionality. Spinning up drives makes them appear within /dev/sdX as one would expect. I've found some weird issue where a single drive appears under multiple devices but mounting drives by partition label makes this not an issue.

Exploration of the oneblox system files in /opt/exablox revealed a lot of hardware details. There is a bash script called oneblox-i2c which sets up the GPIO bus and is used to enable power to any of the 8 drive slots, as well as toggling green & red lights next to each drive slot, as well as several LEDs above the info screen. Several 8-bit registers map to each of these functions. For instance, poking 0x11 into the power register enabled the two drive slots on the left. Poking 0x0f turns on all 4 drive slots on the top row and 0xf0 does for the bottom row.

I'm hoping to explore more aspects of the hardware and write a small C daemon that makes hardware management simple. I still need to tackle the LCD info panel, temperature monitoring and fan controls, which fortunately looks pretty trivial.

All the tools are here to manage Exablox's SmashFS dynamic RAID system but I don't intend on using it.

I was able to get the old version of Debian linked to the online repo (deb http://archive.debian.org/debian wheezy main) so I could install apps. The bad news is that root is actually mounted to some main-board flash memory with very little space and corrupting this could render the system unbootable (unless there's UART on board I can find) and a little symlinking was able to clear up a few 100MBs. Used gparted to resize partitions on the SSD gave a lot more free system space.

I should note that the Oneblox 3308 does not make a very fast fileserver and I'm not sure why. Network i/o is not particularly great, and neither is disk i/o. The Cavium network processor has some really neat on-board packet processing, hardware data compression and hardware REGEX processing that can handle gigabytes per second, but using these features in your own software is a bit difficult without the proper version of the Octeon SDK that matches the kernel. I've tried.

oneblox's People

Contributors

njrabit avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.