{"id":13508477,"url":"https://github.com/NetworkBlockDevice/nbd","last_synced_at":"2025-03-30T11:32:01.562Z","repository":{"id":470317,"uuid":"95248","full_name":"NetworkBlockDevice/nbd","owner":"NetworkBlockDevice","description":"Network Block Device","archived":false,"fork":false,"pushed_at":"2024-09-28T11:29:11.000Z","size":5587,"stargazers_count":463,"open_issues_count":23,"forks_count":120,"subscribers_count":32,"default_branch":"master","last_synced_at":"2024-12-18T05:42:31.503Z","etag":null,"topics":["c","nbd","network","storage"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NetworkBlockDevice.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support/genver.sh","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2008-12-22T10:17:20.000Z","updated_at":"2024-12-09T04:41:35.000Z","dependencies_parsed_at":"2024-01-17T10:32:42.326Z","dependency_job_id":"49a1faed-d808-4dbb-9286-a6412c3a3f61","html_url":"https://github.com/NetworkBlockDevice/nbd","commit_stats":{"total_commits":1380,"total_committers":74,"mean_commits":18.64864864864865,"dds":0.422463768115942,"last_synced_commit":"450bcb06fc43ddaade0dc40f4f1b78a7f4140aee"},"previous_names":["yoe/nbd"],"tags_count":214,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NetworkBlockDevice%2Fnbd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NetworkBlockDevice%2Fnbd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NetworkBlockDevice%2Fnbd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NetworkBlockDevice%2Fnbd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NetworkBlockDevice","download_url":"https://codeload.github.com/NetworkBlockDevice/nbd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246314011,"owners_count":20757450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","nbd","network","storage"],"created_at":"2024-08-01T02:00:53.590Z","updated_at":"2025-03-30T11:31:56.553Z","avatar_url":"https://github.com/NetworkBlockDevice.png","language":"C","funding_links":[],"categories":["C","c"],"sub_categories":[],"readme":"NBD README\n==========\n\nWelcome to the NBD userland support files!\n\nThis package contains nbd-server and nbd-client.\n\nTo install the package, download the source and do the normal\n`configure`/`make`/`make install` dance. You'll need to install it on both the\nclient and the server.\n\nFor compiling from git, do a checkout, install the SGML tools\n(docbook2man), and then run './autogen.sh' while inside your checkout.\nThen, see above.\n\nContributing\n------------\n\nIf you want to send a patch, please do not open a pull request; instead, send\nit to the\n[mailinglist](https://lists.debian.org/nbd)\n\nSecurity issues\n---------------\n\nIf you think you found a security problem in NBD, please contact the\nmailinglist. Do *not* just file an issue for this (although you may do\nso too if you prefer).\n\nFor embargoed issues, please contact Wouter Verhelst \u003cwouter@debian.org\u003e\n\nUsing NBD\n---------\n\nNBD is quite easy to use. First, on the client, you need to load the module\nand, if you're not using udev, to create the device nodes:\n\n    # modprobe nbd\n    # cd /dev\n    # ./MAKEDEV nbd0\n\n(if you need more than one NBD device, repeat the above command for nbd1,\nnbd2, ...)\n\nNext, write a configuration file for the server. An example looks like\nthis:\n\n    # This is a comment\n    [generic]\n        # The [generic] section is required, even if nothing is specified\n        # there.\n        # When either of these options are specified, nbd-server drops\n        # privileges to the given user and group after opening ports, but\n        # _before_ opening files.\n        user = nbd\n        group = nbd\n    [export1]\n        exportname = /export/nbd/export1-file\n        authfile = /export/nbd/export1-authfile\n        timeout = 30\n        filesize = 10000000\n        readonly = false\n        multifile = false\n        copyonwrite = false\n        prerun = dd if=/dev/zero of=%s bs=1k count=500\n        postrun = rm -f %s\n    [otherexport]\n        exportname = /export/nbd/experiment\n        # The other options are all optional\n\nThe configuration file is parsed with GLib's GKeyFile, which parses key\nfiles as they are specified in the Freedesktop.org Desktop Entry\nSpecification, as can be found at\n\u003chttp://freedesktop.org/Standards/desktop-entry-spec\u003e. While this format\nwas not intended to be used for configuration files, the glib API is\nflexible enough for it to be used as such.\n\nNow start the server:\n\n    nbd-server -C /path/to/configfile\n\nNote that the filename must be an absolute path; i.e., something like\n`/path/to/file`, not `../file`. See the nbd-server manpage for details\non any available options.\n\nFinally, you'll be able to start the client:\n\n    nbd-client \u003chostname\u003e -N \u003cexport name\u003e \u003cnbd device\u003e\n\ne.g.,\n\n    nbd-client 10.0.0.1 -N otherexport /dev/nbd0\n\nwill use the second export in the above example (the one that exports\n`/export/nbd/experiment`)\n\n`nbd-client` must be ran as root; the same is not true for nbd-server\n(but do make sure that /var/run is writeable by the server that\n`nbd-server` runs as; otherwise, you won't get a PID file, though the\nserver will keep running).\n\nThere are packages (or similar) available for most current operating\nsystems; see the \"Packaging status\" badge below for details.\n\nFor questions, please use the [nbd@other.debian.org](mailto:nbd@other.debian.org) mailinglist.\n\nAlternate implementations\n=========================\n\nBesides this project, the NBD protocol has been implemented by various\nother people. A (probably incomplete) list follows:\n\n* [nbdkit](https://gitlab.com/nbdkit/nbdkit) is a multithreaded NBD\n  server with a plugin architecture.\n* [libnbd](https://gitlab.com/nbdkit/libnbd) is a library to aid in\n  writing NBD clients\n* [qemu](https://www.qemu.org) contains an embedded NBD server, an\n  embedded NBD client, and a standalone NBD server (`qemu-nbd`). They\n  maintain a [status\n  document](https://gitlab.com/qemu-project/qemu/-/blob/master/docs/interop/nbd.txt)\n  of their NBD implementation.\n* A [GEOM gate-based client implementation for\n  FreeBSD](https://github.com/freqlabs/nbd-client) exists. It has not\n  seen any updates since 2018, and only implements the client side\n  (any server should run on FreeBSD unmodified, however).\n* A Windows client implementation exists as part of the [RBD\n  implementation](https://docs.ceph.com/en/latest/rbd/rbd-windows/) of\n  [Ceph for Windows](https://cloudbase.it/ceph-for-windows/).\n* [lwNBD](https://github.com/bignaux/lwNBD) is a NBD server library,\n  targetting bare metal or OS embedded system. It has a plugin architecture.\n\nAdditionally, these implementations once existed but are now no longer\nmaintained:\n\n* xnbd: This was an NBD implementation with a few extra protocol\n  messages that allowed for live migration. Its code repository has\n  disappeared.\n* enbd: This was an NBD implementation with a few extra protocol\n  messages that allowed extra ioctl calls to be passed on (e.g., the\n  \"eject\" message for a CD-ROM device that was being exported through\n  NBD). It appears to no longer be maintained.\n* Hurd translator: There was a [proof-of-concept\n  implementation](https://lists.debian.org/debian-hurd/2001/09/msg00174.html)\n  of the NBD protocol once as a translator for The Hurd. We do not know\n  what its current status is.\n* Christoph Lohmann once wrote a client implementation for Plan 9. The\n  link he provided us is now stale; we do not know what its current\n  status is.\n\nBadges\n======\n\n[![Download Network Block Device](https://img.shields.io/sourceforge/dm/nbd.svg)](https://sourceforge.net/projects/nbd/files/latest/download)\n[![Coverity Scan Build Status](https://scan.coverity.com/projects/1243/badge.svg)](https://scan.coverity.com/projects/1243)\n[![CII badge](https://bestpractices.coreinfrastructure.org/projects/281/badge)](https://bestpractices.coreinfrastructure.org/projects/281)\n[![Travis](https://img.shields.io/travis/NetworkBlockDevice/nbd.svg)](https://travis-ci.org/NetworkBlockDevice/nbd)\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/nbd.svg)](https://repology.org/metapackage/nbd)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNetworkBlockDevice%2Fnbd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNetworkBlockDevice%2Fnbd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNetworkBlockDevice%2Fnbd/lists"}