zoukankan      html  css  js  c++  java
  • QEMU KVM Libvirt手册(6) – Network Block Device

    网络块设备是通过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

  • 相关阅读:
    Django之Form、CSRF、cookie和session
    Django之路由、模板和模型系统
    简约而不简单的Django
    剑指offer(10)矩形覆盖
    剑指offer(9)变态跳台阶
    剑指offer(8)跳台阶
    剑指offer(7)斐波那契数列
    剑指offer(6)旋转数组中的最小数字
    剑指offer(5)用两个栈实现队列
    剑指offer(4)重建二叉树
  • 原文地址:https://www.cnblogs.com/popsuper1982/p/3830600.html
Copyright © 2011-2022 走看看