diff --git a/Makefile.am b/Makefile.am
index 34f8d8a0dd27d99de0077a476ac6eb11d37d73c1..8f979c73ad44507377aa7acaf32e6ae22c57f7a2 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -41,6 +41,7 @@ SHELL_ENV_INIT = autotools/shell-env-init
 # the directory + 'dir' suffix
 clientdir = $(pkgpythondir)/client
 hypervisordir = $(pkgpythondir)/hypervisor
+blockdir = $(pkgpythondir)/block
 httpdir = $(pkgpythondir)/http
 masterddir = $(pkgpythondir)/masterd
 confddir = $(pkgpythondir)/confd
@@ -108,6 +109,7 @@ DIRS = \
 	lib/confd \
 	lib/http \
 	lib/hypervisor \
+	lib/block \
 	lib/impexpd \
 	lib/masterd \
 	lib/rapi \
@@ -257,7 +259,6 @@ pkgpython_PYTHON = \
 	lib/__init__.py \
 	lib/asyncnotifier.py \
 	lib/backend.py \
-	lib/bdev.py \
 	lib/bootstrap.py \
 	lib/cli.py \
 	lib/cmdlib.py \
@@ -314,6 +315,10 @@ hypervisor_PYTHON = \
 	lib/hypervisor/hv_lxc.py \
 	lib/hypervisor/hv_xen.py
 
+block_PYTHON = \
+	lib/block/__init__.py \
+	lib/block/bdev.py
+
 rapi_PYTHON = \
 	lib/rapi/__init__.py \
 	lib/rapi/baserlib.py \
@@ -1112,7 +1117,7 @@ python_tests = \
 	test/py/ganeti.asyncnotifier_unittest.py \
 	test/py/ganeti.backend_unittest-runasroot.py \
 	test/py/ganeti.backend_unittest.py \
-	test/py/ganeti.bdev_unittest.py \
+	test/py/ganeti.block.bdev_unittest.py \
 	test/py/ganeti.cli_unittest.py \
 	test/py/ganeti.client.gnt_cluster_unittest.py \
 	test/py/ganeti.client.gnt_instance_unittest.py \
@@ -1232,6 +1237,7 @@ all_python_code = \
 	$(pkgpython_PYTHON) \
 	$(client_PYTHON) \
 	$(hypervisor_PYTHON) \
+	$(block_PYTHON) \
 	$(rapi_PYTHON) \
 	$(server_PYTHON) \
 	$(pytools_PYTHON) \
diff --git a/lib/backend.py b/lib/backend.py
index 7d8315d6bbf4675563adc914455fe51d91e95ddd..c4f8d82f5f8d8219453553f6cc1b2b5a8bec096f 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -54,7 +54,7 @@ from ganeti import utils
 from ganeti import ssh
 from ganeti import hypervisor
 from ganeti import constants
-from ganeti import bdev
+from ganeti.block import bdev
 from ganeti import objects
 from ganeti import ssconf
 from ganeti import serializer
diff --git a/lib/block/__init__.py b/lib/block/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..9b9e38c39644b200db66390cdc8b5023e0fc3bf4
--- /dev/null
+++ b/lib/block/__init__.py
@@ -0,0 +1,24 @@
+#
+#
+
+# Copyright (C) 2006, 2007, 2008 Google Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+
+"""Block device abstraction
+
+"""
diff --git a/lib/bdev.py b/lib/block/bdev.py
similarity index 100%
rename from lib/bdev.py
rename to lib/block/bdev.py
diff --git a/lib/bootstrap.py b/lib/bootstrap.py
index 40da336adc380d5fd4172b1ac60f170e8dd59ad2..2183d6b084c22715090c153af25689c1ab4ed179 100644
--- a/lib/bootstrap.py
+++ b/lib/bootstrap.py
@@ -40,7 +40,7 @@ from ganeti import objects
 from ganeti import ssconf
 from ganeti import serializer
 from ganeti import hypervisor
-from ganeti import bdev
+from ganeti.block import bdev
 from ganeti import netutils
 from ganeti import luxi
 from ganeti import jstore
diff --git a/lib/hypervisor/hv_xen.py b/lib/hypervisor/hv_xen.py
index 8789571bc35e8d33189f5247846f4b96954ad92a..77d323f10c02f18f2625acffcfe70909702b8926 100644
--- a/lib/hypervisor/hv_xen.py
+++ b/lib/hypervisor/hv_xen.py
@@ -270,7 +270,7 @@ def _GetConfigFileDiskData(block_devices, blockdev_prefix,
 
   @param block_devices: list of tuples (cfdev, rldev):
       - cfdev: dict containing ganeti config disk part
-      - rldev: ganeti.bdev.BlockDev object
+      - rldev: ganeti.block.bdev.BlockDev object
   @param blockdev_prefix: a string containing blockdevice prefix,
                           e.g. "sd" for /dev/sda
 
diff --git a/lib/watcher/nodemaint.py b/lib/watcher/nodemaint.py
index 6cb2a48ded8bd8c72792f346a09ebda5d9a2ccd5..a0a8300647e0d5a19d0b561d107d8db9e79336f6 100644
--- a/lib/watcher/nodemaint.py
+++ b/lib/watcher/nodemaint.py
@@ -25,7 +25,6 @@
 
 import logging
 
-from ganeti import bdev
 from ganeti import constants
 from ganeti import errors
 from ganeti import hypervisor
@@ -33,6 +32,7 @@ from ganeti import netutils
 from ganeti import ssconf
 from ganeti import utils
 from ganeti import confd
+from ganeti.block import bdev
 
 import ganeti.confd.client # pylint: disable=W0611
 
diff --git a/test/py/ganeti.bdev_unittest.py b/test/py/ganeti.block.bdev_unittest.py
similarity index 99%
rename from test/py/ganeti.bdev_unittest.py
rename to test/py/ganeti.block.bdev_unittest.py
index 8243375c5bf85b4c3b5584c3f803714ac5980432..1610582281dfd665b0c9698291940f0835a25dcd 100755
--- a/test/py/ganeti.bdev_unittest.py
+++ b/test/py/ganeti.block.bdev_unittest.py
@@ -26,12 +26,12 @@ import os
 import random
 import unittest
 
-from ganeti import bdev
 from ganeti import compat
 from ganeti import constants
 from ganeti import errors
 from ganeti import objects
 from ganeti import utils
+from ganeti.block import bdev
 
 import testutils