客户端配置

  • 加载nbd模块

    [root@centos sm]# rmmod nbd
    [root@centos sm]# modprobe nbd max_part=8
  • 映射服务器的块设备到本地nbd设备

    [root@centos data]# nbd-client 192.168.100.25 8888 /dev/nbd0
  • 挂载本地nbd设备到文件系统

    [root@centos sm]# mount /dev/nbd0 ./data/
    [root@centos sm]# cd data
    [root@centos sm]# touch mytest.txt
  • 使用完成后断开设备

    [root@centos data]# cd ..
    [root@centos sm]# umount ./data/
    [root@centos sm]# nbd-client -d /dev/nbd0
    Disconnecting: que, disconnect, sock, done

本地使用qemu-nbd访问qcow2文件

  • 加载nbd模块

    [root@centos sm]# rmmod nbd
    [root@centos sm]# modprobe nbd max_part=8
  • 映射qcow2文件到本地nbd设备上

    root@ubuntu-virtual-machine:~# qemu-nbd --connect=/dev/nbd0 /home/ubuntu/laboratory/data.qcow2
    root@ubuntu-virtual-machine:~# mount /dev/nbd0 ./data/
    root@ubuntu-virtual-machine:~# cd data/
    root@ubuntu-virtual-machine:~/data# ls
    mytest.txt
  • 卸载设备并断开链接

    root@ubuntu-virtual-machine:~/data# cd
    root@ubuntu-virtual-machine:~# umount /home/ubuntu/data
    root@ubuntu-virtual-machine:~# qemu-nbd -d /dev/nbd0
    /dev/nbd0 disconnected

qemu-nbd在有的系统上叫kvm-nbd,qemu-nbd-xen等。基本上都一样啦。
用qemu-nbd实现mount虚拟硬盘到Host上的功能,需要这么做:
rmmod nbd
modprobe nbd max_part=8 
因为默认,nbd的增加分区的功能是关闭的,需要指定max_part这个参数。这个参数指定了一个nbd设备可以有多少个分区。
qemu-nbd --connect=/dev/nbd0 ./testxp.img
现在已经在localhost的1024端口上安装上该设备了。
ls /dev/ | grep nbd 
nbd0 
nbd0p1 
上面这样显示就对了。因为我的那个虚拟磁盘只有一个分区。如果你的虚拟磁盘有多个分区,应该显示更多。
fdisk -l /dev/nbd0   查看虚拟磁盘和分区状况:
Disk /dev/nbd0: 10.7 GB, 10737418240 bytes 
255 heads, 63 sectors/track, 1305 cylinders 
Units = cylinders of 16065 * 512 = 8225280 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disk identifier: 0x6f106f10 
Device Boot Start End Blocks Id System 
/dev/nbd0p1 * 1 1304 10474348+ 7 HPFS/NTFS
我们可以把/dev/nbd0p1这个ntfs格式的设备mount到我们的Host上。

fdisk /dev/nbd0 可以进入交互式命令行。
Command (m for help): m 
Command action 
a toggle a bootable flag 
b edit bsd disklabel 
c toggle the dos compatibility flag 
d delete a partition 
l list known partition types 
m print this menu 
n add a new partition 
o create a new empty DOS partition table 
p print the partition table 
q quit without saving changes 
s create a new empty Sun disklabel 
t change a partition's system id 
u change display/entry units 
v verify the partition table 
w write table to disk and exit 
x extra functionality (experts only) 
可以列出,增加,删除分区。

-----------------------------------------------------
SYNOPSIS
       usage: qemu-nbd [OPTION]...  filename
OPTIONS
  filename <-- is a disk image filename
  -p, --port=PORT      port to listen on (default `1024')
  -o, --offset=OFFSET  offset into the image
  -b, --bind=IFACE     interface to bind to (default `0.0.0.0')
  -k, --socket=PATH    path to the unix socket (default '/var/lock/qemu-nbd-DEVICE')
  -r, --read-only      export read-only -----------> 只读访问
  -P, --partition=NUM  only expose partition NUM -----------> 建立磁盘分区到NBD设备的连接
  -s, --snapshot       use snapshot file -----------> 挂目标磁盘的snapshot文件。
  -n, --nocache        disable host cache -----------> ?
  -c, --connect=DEV    connect FILE to the local NBD device DEV -----------> 建立磁盘文件到NBD设备的连接
  -d, --disconnect     disconnect the specified device ------------------> 断开磁盘文件到NBD设备的连接
  -e, --shared=NUM     device can be shared by NUM clients (default '1')
  -t, --persistent     don't exit on the last connection -----------> ?
  -v, --verbose        display extra debugging information
  -h, --help           display this help and exit
  -V, --version        output version information and exit

-------------------------------------------------------------------------------------------

$ qemu-nbd --read-only --partition=1  --snapshot  winxp.img &
$ sudo nbd-client localhost 1024 /dev/nbd0
$ sudo mount /dev/nbd0 -oloop  ~/empty/
$ ls -l /home/muelli/empty/

qemu-nbd方式挂载qcow2镜像的更多相关文章

  1. 利用Jenkins打包ISO和QCOW2镜像文件

    现在的云虚拟化环境越来越多,经常会碰到需要修改并重新打包新的ISO或QCOW2镜像文件.通过手工的方式会比较麻烦,所以在镜像发布的生产环境中可以利用Jenkins来进行定期打包发布,以下介绍Jenki ...

  2. 磁盘管理,磁盘挂在mount,挂载光盘镜像文件,挂在U盘,umount 卸载命令, dd

    1 mount 命令格式: mount[-t vfstype] -o options device dir 其中: *-t vfstype 指定文件系统的类型,通常不必指定.mount会自动选择正确的 ...

  3. linux下创建且挂载光盘镜像

    在linux下可以很方便的将多个文件,或多个文件夹下的内容打包进光盘镜像中,我们可以用: mkisofs -r -v -o xxx.iso /root /home 命令将/root以及/home目录下 ...

  4. 如何挂载一个镜像文件(how to mount an image file)

    如何挂载一个镜像文件(how to mount an image file) 08/16/2012master 4 Comments 在使用KVM或Xen虚拟化的情况下,经常需要使用镜像文件(imag ...

  5. 【转载】深入理解OpenStack-手动制作qcow2镜像

    深入理解OpenStack-手动制作qcow2镜像 2018-01-18 手动制作镜像 1 官方虽提供qcow2系统镜像,但对于有需求的企业来说,还是定制镜像比较靠谱,下面就手动定制一个镜像 给虚拟机 ...

  6. 『现学现忘』Docker基础 — 32、通过DockerFile的方式挂载数据卷

    目录 1.简单了解一下DockerFile 2.通过DockerFile的方式挂载数据卷 (1)创建DockerFile文件 (2)编辑Dockerfile文件 (3)构建Dokcer镜像 (4)启动 ...

  7. 攻城狮在路上(叁)Linux(二十四)--- linux设置开机挂载及镜像文件挂载

    虽然可以手动进行文件系统的挂载,但是每次都手动挂载就会很麻烦,开机挂载的目的就是实现文件系统的自动挂载. 一.开机挂载:/etc/fstab及/etc/mtab 主要是通过修改/etc/fstab文件 ...

  8. 自动以读写方式挂载ntfs-黑苹果之路

    在mac下ntfs分区总是以只读方式挂载,双操作系统,尤其有些时候需要用u盘,需要手工umount再mount,很麻烦,找了一些资料,通过修改/etc/fstab文件无效,要么就是使用第三方软件,不合 ...

  9. linux下挂载iso镜像的方法

    新建目录/mnt/cdrom 执行命令 mount /dev/cdrom /mnt/cdrom [root@ocdp1 cdrom]# mount /dev/cdrom /mnt/cdrom moun ...

随机推荐

  1. OpenSSL学习笔记

    SSL缺省只进行server端的认证,客户端的认证是可选的.以下是其流程图(摘自TLS协议). 加密算法介绍: 对称加密: DES:date encrption standard,56bit 3DES ...

  2. oracle数据库查询时间sql

    select * from cc_picture_info where PICTURE_SOURCE = 3 AND UPLOAD_TIME > to_date('2017-03-29 16:5 ...

  3. 三、Gradle初级教程——Gradle除了签名打包还能配置jar包

    1.gradle概念 构建工具,Groovy,Java. 2.gradle配置jar包,和libs文件夹导入jar包的区别 到此,还是这种方法导入JAR包比较方便.每次更新JAR包,只需要修改版本号就 ...

  4. 关于PostgreSQL的SQL注入必知必会

    一.postgresql简介 postgresql是一款关系型数据库,广泛应用在web编程当中,由于其语法与MySQL不尽相同,所以其SQL注入又自成一派. 二.postgresql的SQL注入:(注 ...

  5. 【黑金原创教程】【TimeQuest】【第四章】内部延迟与其他

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  6. python基础之2

    1.模块 sys模块注意:python文件的文件名一定不能和下面的要导入的模块同名,如:sys_mokuai.py windows下的python3里直接运行: import sys    ----- ...

  7. Assembly中Load, LoadFrom, LoadFile以及AppDomain, Activator类中相应函数的区别

    Assembly和AppDomain的一些关于动态加载程序集的函数有些令人头疼,但细细研究后还是可以将他们区分的. 这些函数大致可以分为四类: 第一类:加载到Load Context内 Load Co ...

  8. Date 日期格式化

    <span id="time"></span> <script> //名称:日期加法函数 //参数:part(year.month.day.ho ...

  9. 利用脚手架vue cli搭建vue项目

    vue.js https://vuejs.org/ 基础: http://cn.vuejs.org/v2/guide/installation.html 1.安装需要利用npm包管理器,所以首先安装n ...

  10. 元素隐藏 css

    参考:http://www.zhangxinxu.com/wordpress/2011/03/css-%E7%9B%B8%E5%AF%B9%E7%BB%9D%E5%AF%B9relativeabsol ...