前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >kvm-案例(找回数据)

kvm-案例(找回数据)

作者头像
运维小路
发布2024-11-18 20:41:11
发布2024-11-18 20:41:11
7900
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。

对于kvm,在我们日常运维中,其实只要经常做备份或者说快照,对于虚拟机的绝大部分问题都可以恢复,这里列举一个可能会遇到的磁盘问题然后提供2种方法来修复。

故障情况

虚拟机A故障,故障情况是无法启动,短时间无法修复,但是这个时候需要里面的数据,我们的目的是尽快把故障主机数据取出来。

代码语言:javascript
代码运行次数:0
复制
#模拟故障机器
[root@localhost ~]# virsh list --all |grep kvm31.202
 -    kvm31.202          shut off

方法1

把磁盘挂载到到其他主机

1.确认当前主机磁盘位置

代码语言:javascript
代码运行次数:0
复制
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/data/image/kvm31.202.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </disk>

2.把当前磁盘挂载到其他主机

这里注意盘符和pci编号要修改,避免冲突。

代码语言:javascript
代码运行次数:0
复制
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/data/image/kvm31.205'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/data/image/kvm31.202.qcow2'/>
      <!--vda改成vdb -->
      <target dev='vdb' bus='virtio'/> 
      <!-- 修正了slot的值到'0x01',并且function的值到'0x1' -->
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x1'/>
    </disk>

3.重新定义挂载磁盘的主机

代码语言:javascript
代码运行次数:0
复制
#具体以现场为准
virsh define /etc/libvirt/qemu/kvm31.205.xml
virsh start kvm31.205

4.进入系统

代码语言:javascript
代码运行次数:0
复制
#根据具体需求挂载,使用完毕记得还原。
mkdir /xxx
mount /dev/vdb2 /xxx

使用我们前面学习的磁盘挂载就可以找回数据,链接参考:Linux磁盘-格式化&挂载

win也是类似的,只是需要对应的win系统。

方法2

使用nbd方式

1.加载nbd内核

代码语言:javascript
代码运行次数:0
复制
#加载nbd内核
[root@localhost ]# lsmod | grep nbd
[root@localhost ]# sudo modprobe nbd
[root@localhost ]# lsmod | grep nbd
nbd                    73728  0

2.使用nbd挂载磁盘

代码语言:javascript
代码运行次数:0
复制
#具体路径和名字以现场为准
[root@localhost ]# qemu-nbd -c /dev/nbd0 /data/image/kvm31.202.qcow2
[root@localhost nbd]# ll /dev/nbd0*
brw-rw---- 1 root disk 43, 0 Nov 12 23:43 /dev/nbd0
brw-rw---- 1 root disk 43, 1 Nov 12 23:43 /dev/nbd0p1
brw-rw---- 1 root disk 43, 2 Nov 12 23:43 /dev/nbd0p2

有了设备路径,参考上面的步骤挂载即可,但是只适合标准分区,如果是lvm则参考下面的步骤。

3.扫描pv

代码语言:javascript
代码运行次数:0
复制
[root@localhost nbd]# pvscan 
  PV /dev/nbd0p2   VG centos   lvm2 [<19.00 GiB / 0    free]
  Total: 1 [<19.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 0 [0   

4.激活vg

代码语言:javascript
代码运行次数:0
复制
#名字来源于pv扫描
[root@localhost nbd]# vgchange -ay centos
  1 logical volume(s) in volume group "centos" now active

5.查看lv

代码语言:javascript
代码运行次数:0
复制
[root@localhost nbd]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/root

剩下的挂载参考上面部分,处理完毕以后,记得卸载。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档