Linux

LVM2:帶有偏移量的 pvscan?

  • January 26, 2015

我使用 mdadm 有點太用力之後,我現在正在嘗試恢復位於原始 RAID1 陣列中的 lvm2 卷。pvscan 什麼也沒找到,但這並不奇怪:因為 mdadm 無法重建陣列,所以 pvscan 沒有 /dev/md1 可供查看。

但是我知道(呃……我希望)我的 lvm2 卷仍然存在,我想我只刪除了 raid 元數據。

我的想法是使用實時 sysresccd 在 /dev/loop1 下使用偏移量來失去 /dev/sdc2,這樣我就可以跳過 /dev/sdc2 中損壞的 RAID 元數據並到達 PV 本身。我計劃類似:

losetup -o xxxxxx /dev/loop1 /dev/sdc2
pvscan

然後 pvscan 可以在 /dev/loop1 中找到卷。問題是我不知道偏移量(但這可以通過適配或反複試驗來克服),最重要的是,losetup 不適用於物理設備。如何創建一個指向另一個具有偏移量的設備的設備?或者,如何使 pvscan 使用偏移量查找物理卷?

在@lsd 評論後編輯:

當我嘗試時:

losetup -o 32256 /dev/loop1 /dev/sdc2 

我有:

losetup: /dev/sdc2: warning: file smaller than 512 bytes, the loop device maybe be useless or invisible for system tools. 

我認為警告告訴我出了點問題,因為 /dev/sdc2 僅當您將其視為普通文件時才小於 512 字節,但如果 losttup 支持塊設備,它應該知道它的實際大小……我應該忽略然而警告?

losetup在設備文件上工作得很好。至少在 Ubuntu 14.04 上。Linux 3.13.0-43-generic 和 util-linux 2.20.1-5.1ubuntu20。並使用來自 git 的 2.26-rc1。

sudo losetup -o 32256 /dev/loop5 /dev/sdb3
sudo tail -c 32257 /dev/sdb3 | sudo cmp - /dev/loop5 

(由於某種原因,程序替換不起作用:sudo cmp <(sudo tail -c 32257 /dev/sdb3) /dev/loop5.“cmp: /dev/fd/63: No such file or directory”)

我不再在這個系統上使用 lvm 了。我不記得 LVM 破壞了正常的環回設備。除非它對普通塊設備進行某種形式的鎖定,否則它們不能直接使用。

引用自:https://serverfault.com/questions/659484