{ "info": { "author": "Juan J. Martinez", "author_email": "jjm@usebox.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Environment :: No Input/Output (Daemon)", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only" ], "description": "================\nSwift NBD Server\n================\n\nThis is a Network Block Device (NBD) server for OpenStack Object Storage (Swift).\n\nVery often users want to run tools like rsync on top of Swift, but this is not\npossible because the object storage HTTP API can't provide a file system alike\nfunctionality. This project aims to support a block interface for the object\nstorage via NBD.\n\n\nHow it Works\n============\n\n**swiftnbd** translates the NBD requests (read/write with offset and length) to Swift object\noperations, as displayed in the following picture:\n\n.. image:: https://github.com/reidrac/swift-nbd-server/raw/master/block2object.png\n\nAlthough this strategy may work with any block interface, NBD was chosen because of its simplicity.\nThe NBD server can serve the blocks over the network, but is recommended that it is used locally.\nBecause the communication with Swift will be the bottleneck, the possible overhead of NBD on localhost\nis expected to not be significant.\n\nThe block device can be used only by one location at once. When a client is connected to the server,\nthe container used as storage is marked as *locked* by adding metadata information to the container\nuntil the client disconnects and the container can be unlocked.\n\nThe server implements the new version of the NBD protocol and nbd-client 3.1 or later is highly\nrecommended. For older versions of the protocol (nbd-client <= 2.9.16), please use swiftnbd 0.9.4.\n\nLast version supporting Python 2 and gevent was 0.9.8.\n\nReferences:\n\n- OpenStack Object Storage: http://www.openstack.org/software/openstack-storage/\n- NBD: http://nbd.sourceforge.net/\n- NBD protocol: https://github.com/yoe/nbd/blob/master/doc/proto.txt\n- NBD server example in Python: http://lists.canonical.org/pipermail/kragen-hacks/2004-May/000397.html\n\n\nInstall\n=======\n\nRequirements:\n\n- Linux (or any platform with NBD client; nbd-client 3.1+ recommended)\n- Python 3.3 (or later; asyncio required with Python 3.3)\n- python-swiftclient\n- python-keystoneclient, optional: required for Auth 2.0 (keystone)\n\nTo install the software, run the following command::\n\n python setup.py install\n\nAlternatively you can install it with pip::\n\n pip install swiftnbd\n\n\nQuickstart\n==========\n\nA container needs to be setup with swiftnbd-ctl to be used by the server. First create\na *secrets.conf* file::\n\n [container-name]\n username = user\n password = pass\n\nA container can be exported write protected with *read-only* token set to 1 (by default all\ncontainers are exported read-write).\n\nPlease see *secrets.conf.example* for a commented example.\n\nThe default location for the *secrets* is */etc/swiftnbd/secrets.conf*, and an alternative\nlocation can be provided using *--secrets* flag.\n\nThen run the control tool with *setup* command using the container name as first parameter\nand the maximum number of objects you want to allocate as second parameter::\n\n swiftnbd-ctl setup container-name number-of-objects\n\nFor example, to setup a 1GB storage in myndb0 container::\n\n swiftnbd-ctl setup mynbd0 16384\n\nBy default the objects stored by the server are 64KB, so 16384 * 65536 is 1GB.\n\nAfter the container is setup, it can be served with swiftnbd-server::\n\n swiftnbd-server\n\nFor debugging purposes the *-vf* flag is recommended (verbose and foreground).\n\nThe server implements a local cache that by default is limited to 64 MB per container.\nThat value can be configured using the *-c* flag indicating the max amount of memory to\nbe used (in MB).\n\nOnce the server is running, nbd-client can be used to create the block device (as root)::\n\n modprobe nbd\n nbd-client -N container-name 127.0.0.1 /dev/nbd0\n\nThen */dev/nbd0* can be used as a regular block device, ie::\n\n mkfs.ext3 /dev/nbd0\n mount /dev/nbd0 /mnt\n\nBefore stopping the server, be sure you unmount the device and stop the NBD client::\n\n umount /mnt\n nbd-client -d /dev/nbd0\n\nThe server will export *all* the containers listed in the *secrets* file. The list of\nexported container can be verified with the NBD client *-list* option (version >= 3.1)::\n\n nbd-client -list 127.0.0.1\n\nPlease check *--help* for further details.\n\n\nThe control tool\n----------------\n\nsiwftnbd-ctl is used to perform different maintenance operations on the containers. It\ncommunicates directly with the object storage (the NBD server is not used).\n\nTo obtain the details of the containers listed in the *secrets* file::\n\n swiftnbd-ctl list -s\n\nTo setup a container::\n\n swiftnbd-ctl setup container-name number-of-objects\n\nA custom object size can be indicated with the *--object-size* flag (default is 65536).\n\nTo unlock a locked container::\n\n swiftnbd-ctl unlock container-name\n\nTo lock a container preventing it to be used by any client::\n\n swiftnbd-ctl lock container-name\n\nTo download a container into a local disk image (the resulting disk image can be\nmounted using a loop device)::\n\n swiftnbd-ctl download container-name image-file.raw\n\nTo delete a container (all the objects in the container will be deleted before deleting\nthe container)::\n\n swiftnbd-ctl delete container-name\n\n\nKnown issues and limitations\n============================\n\n- The default 64KB object size is a wild/random guess, other values could be better.\n- It can be used over the Internet but the performance is dependant on the bandwidth, so\n it's recommended that the storage is accessible via LAN (or same data center with 100 mbps\n or better).\n- Currently one instance of the server can't connect to more than one authentication\n service, and either using Auth 1.0 or AUth 2.0 (keystone).\n\n\nLicense\n=======\n\nThis is free software under the terms of MIT license (check COPYING file\nincluded in this package).\n\n\nContact and support\n===================\n\nThe project website is at: https://github.com/reidrac/swift-nbd-server\n\nThere you can file bug reports, ask for help or contribute patches.\n\n\nAuthor\n======\n\n- Juan J. Martinez ", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/reidrac/swift-nbd-server", "keywords": "openstack object storage swift nbd", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "swiftnbd", "package_url": "https://pypi.org/project/swiftnbd/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/swiftnbd/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/reidrac/swift-nbd-server" }, "release_url": "https://pypi.org/project/swiftnbd/0.11/", "requires_dist": null, "requires_python": null, "summary": "This is a NBD server for OpenStack Object Storage (Swift).", "version": "0.11" }, "last_serial": 2036782, "releases": { "0.10": [ { "comment_text": "", "digests": { "md5": "98dc0a77e22d44dc1f88f2e9b5940898", "sha256": "d70cb9a5d3a24558a22b46c9a4c0f1d84d2d23823564c741922756636247d796" }, "downloads": -1, "filename": "swiftnbd-0.10.tar.gz", "has_sig": false, "md5_digest": "98dc0a77e22d44dc1f88f2e9b5940898", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15597, "upload_time": "2015-04-29T20:18:07", "url": "https://files.pythonhosted.org/packages/0f/5c/605f59f33c026724eb125035e4c9a58f0a19a5019f693be506dccb997d6d/swiftnbd-0.10.tar.gz" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "f5f4d3116183a469f7ae014f0d840096", "sha256": "ca628242eba69e3b7ffe546ecb669b1e28433260e0628c1566b91bf9e9c58255" }, "downloads": -1, "filename": "swiftnbd-0.10.1.tar.gz", "has_sig": false, "md5_digest": "f5f4d3116183a469f7ae014f0d840096", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15611, "upload_time": "2015-04-29T20:28:47", "url": "https://files.pythonhosted.org/packages/de/68/eb74f6f9388d2822ea0d3950522d9755b30b8094ec8a379abed3419c1741/swiftnbd-0.10.1.tar.gz" } ], "0.10.2": [ { "comment_text": "", "digests": { "md5": "491e8f5a58e62338abc2442d59ef51c9", "sha256": "88de2282c43a89131824bffdd59404a17af66a1a81708e444554591dc00bfef6" }, "downloads": -1, "filename": "swiftnbd-0.10.2.tar.gz", "has_sig": false, "md5_digest": "491e8f5a58e62338abc2442d59ef51c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15741, "upload_time": "2015-04-30T17:50:20", "url": "https://files.pythonhosted.org/packages/83/7d/32baca13ed0ce5214d294cdf7e05515794fed43f201d7a002fa9ae154def/swiftnbd-0.10.2.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "768eaa7129329e0ead4a4654f64af032", "sha256": "badff00698570d67ada9b5e1cbbe68c2c37a8989e8316873c3b2472b3080c822" }, "downloads": -1, "filename": "swiftnbd-0.11.tar.gz", "has_sig": false, "md5_digest": "768eaa7129329e0ead4a4654f64af032", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15971, "upload_time": "2016-03-30T20:52:12", "url": "https://files.pythonhosted.org/packages/8e/aa/7ea79955b50c96959b6b4e74bb14ed29bbb574a629c606a729aba52a0c17/swiftnbd-0.11.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "13f3cbd30474aeb15a663af7a9107cb0", "sha256": "fd51f382872f8a1a74d6e5ebeec222358da50761eda43f24ac87dbbd57978413" }, "downloads": -1, "filename": "swiftnbd-0.9.0.tar.gz", "has_sig": false, "md5_digest": "13f3cbd30474aeb15a663af7a9107cb0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11752, "upload_time": "2012-12-31T13:08:19", "url": "https://files.pythonhosted.org/packages/75/a1/fda01960dd1999b86a191b381fc7e2a957689b17ee1e3f03c42bb302e8fd/swiftnbd-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "0279b88a7d254708a605e68770822db4", "sha256": "c415711bd5cf4adcd9d78ee82d9d7def7b13323787e096b43e0e8c866b1ef31b" }, "downloads": -1, "filename": "swiftnbd-0.9.1.tar.gz", "has_sig": false, "md5_digest": "0279b88a7d254708a605e68770822db4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13024, "upload_time": "2013-01-05T21:34:06", "url": "https://files.pythonhosted.org/packages/b6/c7/9471c30a7f3bfa8cd9e70e965d8a80d6d0ef85a9a4abcdcfd683add87bf2/swiftnbd-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "af00782a346add76c9b26c2df2bd16f7", "sha256": "cbe6e791594ad89a20c256ab99449c0951ee7c1890531044ca1bccd27f073bce" }, "downloads": -1, "filename": "swiftnbd-0.9.2.tar.gz", "has_sig": false, "md5_digest": "af00782a346add76c9b26c2df2bd16f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13197, "upload_time": "2013-01-13T17:33:43", "url": "https://files.pythonhosted.org/packages/37/cc/fb83a3e3646dc8ffc89d89a4244cc2a6d86fcc86555ac3f77e325fe5dc3d/swiftnbd-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "96404289ddef7189a1e77142b83d9be9", "sha256": "eab2581f8977f836d49a8108997d9a3cf824a678140c80d6c3d769462999201a" }, "downloads": -1, "filename": "swiftnbd-0.9.3.tar.gz", "has_sig": false, "md5_digest": "96404289ddef7189a1e77142b83d9be9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14862, "upload_time": "2013-01-21T20:10:38", "url": "https://files.pythonhosted.org/packages/09/85/3a1d11fe2dd68a239769b63f6170a6e4b7e76021094982bdded5a46925e8/swiftnbd-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "ce3c4a21d336533bcb5fb62db2e81e87", "sha256": "e58f6203276993bd7c43fc94ce389d63e3c937e75f290b3a1c27560db7ee657e" }, "downloads": -1, "filename": "swiftnbd-0.9.4.tar.gz", "has_sig": false, "md5_digest": "ce3c4a21d336533bcb5fb62db2e81e87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14970, "upload_time": "2013-01-22T20:17:25", "url": "https://files.pythonhosted.org/packages/3c/d2/fdc15295d9618608290a3ead2b58110ee23a4c342b55cb2f3e037010a447/swiftnbd-0.9.4.tar.gz" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "b7cdad8d6325e7221bf6c177f28550c7", "sha256": "fa2e73bcad296e4b9057caf80d7f5b47b246a9cb8c287b5f2cbbdee165dff798" }, "downloads": -1, "filename": "swiftnbd-0.9.5.tar.gz", "has_sig": false, "md5_digest": "b7cdad8d6325e7221bf6c177f28550c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16583, "upload_time": "2013-01-26T17:31:41", "url": "https://files.pythonhosted.org/packages/a9/85/c0875e5fe7228854b6605a7e92856dab126b5548df6842b31e7b6092eb43/swiftnbd-0.9.5.tar.gz" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "daf7c0c49c6ba7d2aeaa7e233316635f", "sha256": "091e3b8e83a158e17aa2e499153da1bce7ed4f5da98522049a71b52fd10b1ed5" }, "downloads": -1, "filename": "swiftnbd-0.9.6.tar.gz", "has_sig": true, "md5_digest": "daf7c0c49c6ba7d2aeaa7e233316635f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17107, "upload_time": "2013-02-12T22:13:18", "url": "https://files.pythonhosted.org/packages/42/54/e18e3e16b16722173015b70ae07ef840bf939e3f84df49c5c954fedaf6ac/swiftnbd-0.9.6.tar.gz" } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "904fef1a67955da940b22ab3417e65f5", "sha256": "e16a79c15978008094f46eddc1b4bb6a2e68dfb5bf5af7cd74320fed032cb8f2" }, "downloads": -1, "filename": "swiftnbd-0.9.7-py27-none-any.whl", "has_sig": true, "md5_digest": "904fef1a67955da940b22ab3417e65f5", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 25232, "upload_time": "2013-11-14T06:53:30", "url": "https://files.pythonhosted.org/packages/b2/90/75db8f90c6a9319a8ab6c11b8616935d765245905a92358ae5ca29b51854/swiftnbd-0.9.7-py27-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0021371f8a649225fce70ee2b257be99", "sha256": "f6af6b95266c38b0c732538e4e3e4d7c9df96230ce089fbd9b2a44fa8a4df5b8" }, "downloads": -1, "filename": "swiftnbd-0.9.7.tar.gz", "has_sig": true, "md5_digest": "0021371f8a649225fce70ee2b257be99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17156, "upload_time": "2013-06-29T19:42:23", "url": "https://files.pythonhosted.org/packages/ae/0b/6ceb11a074d36e85947948e10c5660013bd8e66af6fa30ddff96d92b6473/swiftnbd-0.9.7.tar.gz" } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "aacb45075c1a199ac1f5b6cfdf4fdbe6", "sha256": "03bb4f3bc9104f68c82ddedfce49e16613ba34ff5589c13bf3924ec843eb50e0" }, "downloads": -1, "filename": "swiftnbd-0.9.8.tar.gz", "has_sig": false, "md5_digest": "aacb45075c1a199ac1f5b6cfdf4fdbe6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15342, "upload_time": "2014-10-29T19:30:41", "url": "https://files.pythonhosted.org/packages/47/2e/e161e9718ac3a642dd7ccd2c7459d7471dddb21aef165acaaaeea9134cd2/swiftnbd-0.9.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "768eaa7129329e0ead4a4654f64af032", "sha256": "badff00698570d67ada9b5e1cbbe68c2c37a8989e8316873c3b2472b3080c822" }, "downloads": -1, "filename": "swiftnbd-0.11.tar.gz", "has_sig": false, "md5_digest": "768eaa7129329e0ead4a4654f64af032", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15971, "upload_time": "2016-03-30T20:52:12", "url": "https://files.pythonhosted.org/packages/8e/aa/7ea79955b50c96959b6b4e74bb14ed29bbb574a629c606a729aba52a0c17/swiftnbd-0.11.tar.gz" } ] }