/vdisc

VDisc is a tool for creating and mounting virtual CD-ROM images backed by object storage

Primary LanguageGoApache License 2.0Apache-2.0

VDisc

VDisc Logo

VDisc is a tool for creating and mounting virtual CD-ROM images backed by object storage.

Building the VDisc CLI

If you wish to work on VDisc itself or any of its libraries, you'll first need Bazel installed on your machine (version 1.0.0+ is required).

To build the vdisc CLI, you'll need to clone this git repository and build the vdisc command with Bazel.

$ git clone https://github.com/NVIDIA/vdisc.git
$ cd vdisc
$ bazel build --stamp //cmd/vdisc

Getting Started

Burning a vdisc using the CLI is simple. First you need to generate a manifest of your objects, where they should appear in the disc image, and their size.

$ cat << EOF > mnist.csv
"/train-images-idx3-ubyte.gz","https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz",9912422
"/train-labels-idx1-ubyte.gz","https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz",28881
"/t10k-images-idx3-ubyte.gz","https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz",1648877
"/t10k-labels-idx1-ubyte.gz","https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz",4542
EOF
$ vdisc burn -i mnist.csv -o mnist.vdsc

Once you've burned a vdisc, you can mount it

$ mkdir mnist
$ vdisc mount --url=mnist.vdsc --mountpoint=mnist
1.570744835687179e+09	info	maxprocs/maxprocs.go:47	maxprocs: Leaving GOMAXPROCS=8: CPU quota undefined
1.570744835729569e+09	info	isofuse/isofuse.go:68	mounted iso	{"mountpoint": "/home/joeuser/mnist"}

And in another terminal you can examine the files

sh
$ md5 mnist/*
MD5 (mnist/t10k-images-idx3-ubyte.gz) = 074392edd37ac2bd4904c0df2a31c38e
MD5 (mnist/t10k-labels-idx1-ubyte.gz) = dbb5c5e00e8b64dfe161442e122f1c8b
MD5 (mnist/train-images-idx3-ubyte.gz) = b1c2f15e5ea102012fa9da59cd0d6d7c
MD5 (mnist/train-labels-idx1-ubyte.gz) = e538dc41040b558f796a632c4604bbeb

By default, vdisc mount uses fuse, but on linux you can TCMU by specifying --mode=tcmu.

Architecture

To learn more about how vdisc works, read through the detailed design.