网络块设备是通过NBD Server将虚拟块设备通过TCP/IP export出来,可以远程访问。

NBD Server通常是qemu-nbd

可以提供unix socket

qemu-nbd -t -k /home/cliu8/images/ubuntutest-nbd ubuntutest.img

打开另一个窗口,可以连接这个unix socket

qemu-system-x86_64 -enable-kvm -name ubuntutest  -m 2048 -hda nbd:unix:/home/cliu8/images/ubuntutest-nbd -vnc :19 -net nic,model=virtio -net tap,ifname=tap0,script=no,downscript=n

可以提供普通的socket连接

qemu-nbd -t -p 1088 ubuntutest.img

打开另一个窗口,可以连接这个port

qemu-system-x86_64 -enable-kvm -name ubuntutest  -m 2048 -hda nbd:localhost:1088 -vnc :19 -net nic,model=virtio -net tap,ifname=tap0,script=no,downscript=n

参数--share=num,可以多个客户端同时访问这个server

参数--snapshot,说明任何修改都放在临时文件中

参数—read-only,则只读模式export这个设备

如果有参数—connect = dev,则可以直接将image付给一个network block device,并且可以mount它

qemu-nbd -c /dev/nbd0 ubuntutest.img

这时候我们ls,发现

# ls /dev/nbd0*
/dev/nbd0  /dev/nbd0p1  /dev/nbd0p2  /dev/nbd0p5

其实ubuntutest.img中有至少三个partition

# fdisk -l /dev/nbd0

Disk /dev/nbd0: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders, total 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00077a7b

Device Boot      Start         End      Blocks   Id  System
/dev/nbd0p1   *        2048     6291455     3144704   83  Linux
/dev/nbd0p2         6293502    10483711     2095105    5  Extended
/dev/nbd0p5         6293504    10483711     2095104   82  Linux swap / Solaris

通过fdisk验证,的确是这样的

我们可以mount其中的一个

mkdir ubuntutestp1

mount /dev/nbd0p1 ubuntutestp1/

# cd ubuntutestp1/
# ls
bin   dev  home        lib    lost+found  mnt  proc  run   srv  tmp  var
boot  etc  initrd.img  lib64  media       opt  root  sbin  sys  usr  vmlinuz

这个时候我们可以对里面的文件修改,就修改了image了。

修改完毕后,我们umount

# umount ubuntutestp1
# qemu-nbd -d /dev/nbd0
/dev/nbd0 disconnected

其实并不是所有的都这么简单

# qemu-nbd -c /dev/nbd0 centos-5.8.new.qcow2
# fdisk -l /dev/nbd0

Disk /dev/nbd0: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f117e

Device Boot      Start         End      Blocks   Id  System
/dev/nbd0p1   *          63      208844      104391   83  Linux
/dev/nbd0p2          208845    20964824    10377990   8e  Linux LVM

我们发现里面有LVM,当然LVM不能作为整体访问,因为里面有Logic volume,都是单独成文件系统的

# lvscan
  inactive          '/dev/VolGroup00/LogVol00' [5.97 GiB] inherit
  inactive          '/dev/VolGroup00/LogVol01' [3.91 GiB] inherit
# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "VolGroup00" using metadata type lvm2
# pvscan
  PV /dev/nbd0p2   VG VolGroup00            lvm2 [9.88 GiB / 0    free]

由于logical volume处于inactive的状态

# vgimport VolGroup00
  Volume group "VolGroup00" is not exported

# vgchange -ay VolGroup00
  2 logical volume(s) in volume group "VolGroup00" now active

这下可以分别mount两个LV了

# mount  /dev/VolGroup00/LogVol00 ubuntutestp1/      
# cd ubuntutestp1/
# ls
bin  boot  dev  etc  home  lib  lib64  lost+found  media  misc  mnt  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var

完毕后

umount ubuntutestp1

# vgchange -an VolGroup00
  0 logical volume(s) in volume group "VolGroup00" now active

# vgexport VolGroup00
  Volume group "VolGroup00" successfully exported

# qemu-nbd -d /dev/nbd0
/dev/nbd0 disconnected

在linux下,一个更高效的network block device是nbd-server,另有nbd-client连接server,形成一个/dev/ndb0

QEMU KVM Libvirt手册(6) – Network Block Device的更多相关文章

  1. QEMU KVM Libvirt手册(9): network

    虚拟网卡由-net nic定义 # qemu-system-x86_64 -enable-kvm -name ubuntutest  -m 2048 -hda ubuntutest.img -vnc ...

  2. QEMU KVM Libvirt手册(11): Managing Storage

    When managing a VM Guest on the VM Host Server itself, it is possible to access the complete file sy ...

  3. QEMU KVM Libvirt手册(10):Managing Virtual Machines with libvirt

    libvirt is a library that provides a common API for managing popular virtualization solutions, among ...

  4. QEMU KVM Libvirt手册(7): 硬件虚拟化

    在openstack中,如果我们启动一个虚拟机,我们会看到非常复杂的参数 qemu-system-x86_64 -enable-kvm -name instance-00000024 -S -mach ...

  5. QEMU KVM libvirt 手册(3) - Storage Media

    访问Hard Drive 使用-hda –hdb qemu-system-x86_64 -enable-kvm -name ubuntutest  -m 2048 -hda ubuntutest.im ...

  6. QEMU KVM libvirt手册(2): monitor

    Administrating Virtual Machines with QEMU Monitor When QEMU is running, a monitor console is provide ...

  7. QEMU KVM Libvirt手册(5) – snapshots

    前面讲了QEMU的qcow2格式的internal snapshot和external snapshot,这都是虚拟机文件格式的功能. 这是文件级别的. 还可以是文件系统级别的,比如很多文件系统支持s ...

  8. QEMU KVM Libvirt手册(8): 半虚拟化设备virtio

    KVM本身并不提供半虚拟化功能,是通过virtio来实现的 The benefits of virtio drivers are of lower overhead and higher perfor ...

  9. QEMU KVM libvirt手册(4) – images

    RAW raw是默认的格式,格式简单,容易转换为其他的格式.需要文件系统的支持才能支持sparse file 创建image # qemu-img create -f raw flat.img 10G ...

随机推荐

  1. mysql tp5 find_in_set写法

    [['','exp',"FIND_IN_SET(".$data['type'].",place_category)"]]

  2. java基础知识三 流

    Java 流(Stream).文件(File)和IOJava.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类型 ...

  3. 高可用Redis(九):Redis Sentinel

    1.主从复制高可用的问题 主从复制高可用的作用 1.为master提供备份,当master宕机时,slave有完整的备份数据 2.对master实现分流,实现读写分离 但是主从架构有一个问题 1.如果 ...

  4. C语言中return 0和return 1和return -1

    转载声明:本文系转载文章 原文作者:十一月zz 原文地址:https://blog.csdn.net/baidu_35679960/article/details/77542787 1.返回值int  ...

  5. 在SOUI中使用布局模板

    概要 注意:布局模板是SOUI 2.8.0.4 新增加的功能.之前版本不支持. SOUI的listview等一系统控件支持通过模板来创建列表项,这里要说的模板不是指listview中的使用的列表项模板 ...

  6. 打包ideaUI本地项目,以供本地使用

    #首先我们要在本机进行一些配置 在本机配置环境变量(控制面板->高级系统设置->环境变量->) #用cmd检测是否配置成功 如果你在ideaUI里,配置好了之后.我们现在来打架包 # ...

  7. Kali Linux安装字典StarDict

     Kali Linux安装字典StarDictStartDict是国外知名的字典框架,也可以加入国内翻译工具的字典.Kali Linux软件源提供该字典框架.用户需要安装qstardict软件包和词库 ...

  8. C语言柔性数组讲解

    #include<stdio.h> typedef struct _SoftArray{ int len; int array[]; }SoftArray; int main() { ; ...

  9. 蓝桥杯刷题,第四界省赛B组

    题头,本内容的题目和部分内容均来自博客:https://blog.csdn.net/ryo_218/article/details/79704030 ,在此感谢. 1. 题目标题:高斯日记大数学家高斯 ...

  10. UOJ.311.[UNR#2]积劳成疾(DP)

    UOJ 序列中的每个位置是等价的.直接令\(f[i][j]\)表示,\(i\)个数的序列,最大值不超过\(j\)的所有序列每个长为\(k\)的子区间最大值的乘积的和. 由\(j-1\)转移到\(j\) ...