Release Feed

Oct 18, 2010

Vmbkp: An Online Backup Tool for VMware vSphere

The software is a tool to backup virtual machines in VMware vSphere environment.

        - Online backup
        - Multi-generation management
        - Fast archive access
        - Command-line Interface

Supported platform:
        - VMware vSphere 4
          Single ESX(i) is not tested. Free ESXi is not supported.
        - Linux on x86_64 host as backup server. CentOS 5.5 64bit is tested.

Source code repository:


        - The software uses VI-Java library by Steve Jin and
          Virtual Disk Development Kit by VMware, Inc.
          I thank them for publishing these libraries.
        - I thanks members in Cybozu Labs, Inc. for reviewing source code to improve it.

        Takashi HOSHINO / Cybozu Labs, Inc.

VMware and VMware vSphere are registered trademarks and/or trademarks of VMware, Inc.

Sep 07, 2010

Released ordered KVS Mio 0.0.1alpha

We have released Mio - a distributed Skip Graph based orderd KVS 0.0.1alpha.(mio-0.0.1-alpha.tar.gz)

What is Mio?

In short, Mio is memcached + "range search".

Mio suports range search queries like "get 10 datum which key are between key1 and key2". N.B. At present, it is in alpha quality.

Building and Installing

  • Install a recent version of Erlang.
  • make
  • make install with Environment variables for configuration. TARGET_DIR: Installation target directory. SBIN_DIR: sbin direcotry.
    sudo TARGET_DIR=/user/local/mio SBIN_DIR=/usr/sbin/ make install

Running Mio

# Run first node named mio1 with verbose mode on host FQDN_of_your_host (default port 11211)
% mio -v -n mio1@FQDN_of_your_host

# Run second node named mio2 on host FQDN_of_your_host2.
# With -i option, indidate the introducer node.
% mio -v -n mio2@FQDN_of_your_host2 -i mio1@FQDN_of_your_host

# Run third node named mio3 on host FQDN_of_your_host (port 11411).
% mio -v -n mio3@FQDN_of_your_host -i mio1@FQDN_of_your_host -p 11411


You can access to Mio using memcached protocol.

Currently the following commands are supported.

  • get
  • set
  • delete
  • quit
  • stats
  • range_search
    get_multi("mio:range-search", Key1, Key2, Limit, desc/asc)

Access to mio

Use memcached client libraries to access mio.


# Example: Access to Mio.
use strict;
use warnings;
use Cache::Memcached;
use Data::Dumper;

my $m = Cache::Memcached->new( { servers => ['']} );
$m->set( "hello" => "world" );
$m->set( "intel" => "cpu" );
$m->set( "japan" => "Tokyo" );

warn $m->get("hello");
warn $m->get("intel");
warn $m->get("japan");

my $href = $m->get_multi("mio:range-search", "he", "j", "10", "asc");

# Should print
# $VAR1 = {
# 'hello' => 'world',
# 'intel' => 'cpu'
# };
warn Dumper $href;


$mem = new Memcached;
$mem->addServer('', 11211);
$mem->set("hello", "world");
$mem->set("intel", "cpu");
$mem->set("japan", "Tokyo");
printf("%s\n", $mem->get("hello"));
printf("%s\n", $mem->get("intel"));
printf("%s\n", $mem->get("japan"));
var_dump($mem->getMulti(array("mio:range-search", "he", "j", "10", "asc")));


import com.danga.MemCached.*;
import java.util.*;

public class JavaMemcachedClient
public static void main(String[] args)
String[] serverlist = { "" };
SockIOPool pool = SockIOPool.getInstance();

MemCachedClient mc = new MemCachedClient();
mc.set("hello", "world");
mc.set("intel", "cpu");
mc.set("japan", "Tokyo");
System.out.printf("hello => %s intel => %s japan => %s\n", mc.get("hello"), mc.get("intel"), mc.get("japan"));

String[] keys = { "mio:range-search", "he", "j", "10", "asc" };
Map ret = mc.getMulti(keys);

for (Map.Entry e : ret.entrySet()) {
System.out.println(e.getKey() + " : " + e.getValue());


Mio using "Skip Graph" algorithm. See following articles


Written by Taro Minowa(Higepon)


New BSD License