Soy nuevo en LVM y particionamiento en general, y entonces, estoy en una situación aquí.
La situación:
Accidentalmente sobrescribí MBR de un disco LVM creado por Fedora 16.
Ahora, todo lo demás en este disco está intacto; solo el MBR ha sido dañado (y eso también, solo los primeros 446 de sus 512 bytes). Había corrompido el MBR al emitir accidentalmente:
$ dd if=/the/wrong/446-byte-file.txt of=/dev/sda
Este disco (con MBR corrupto), que inicialmente era / dev / sda en el Sistema A, ahora está conectado a mi sistema actual, el Sistema B, como un disco secundario /dev/sdb
, con el propósito de recuperar el sistema de archivos / datos. Actualmente no se puede montar en el Sistema B.
Aquí está la fdisk -l
salida en el Sistema B:
$ fdisk -l
Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x8e678e67
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 475813887 237905920 83 Linux
/dev/sda2 475813888 488396799 6291456 82 Linux swap / Solaris
Disk /dev/sdb: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders, total 156301488 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: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 1026047 512000 83 Linux
/dev/sdb2 1026048 156301311 77637632 8e Linux LVM
Pregunta: Con / dev / sda ejecutando una configuración saludable y no LVM de Fedora 16, ¿cómo puedo montar / dev / sdb (con MBR corrupto) en algún lugar dentro del Sistema B para poder recuperar todos los datos? (Los datos, por cierto, se almacenan en un sistema de archivos ext4 dentro).
Lo que he probado hasta ahora:
a) Emití pvs
y obtuve esto:
(¡Observe cómo la columna VG está vacía!)
$ pvs
PV VG Fmt Attr PSize PFree
/dev/sdb2 lvm2 a-- 74.04g 74.04g
b) emití pvscan
, obtuve esto:
$ pvscan
PV /dev/sdb2 lvm2 [74.04 GiB]
Total: 1 [74.04 GiB] / in use: 0 [0 ] / in no VG: 1 [74.04 GiB]
c) Tengo el contenido /etc/lvm/backup/vg_XYZ
disponible de una copia de seguridad anterior. Pero no sé cómo inferir / construir el Nombre del Volumen y las Rutas del Volumen a partir de este archivo (Tenga en cuenta que, en este archivo, / dev / sda2 es la partición de interés que ahora se ha convertido en / dev / sdb2 en el sistema actual, Sistema B ):
# Generated by LVM2 version 2.02.84(2) (2011-02-09): Tue Oct 25 22:10:55 2011
contents = "Text Format Volume Group"
version = 1
description = "Created *after* executing 'vgchange -a y --sysinit'"
creation_host = "XYZ" # Linux XYZ 2.6.38.6-26.rc1.fc15.i686.PAE #1 SMP Mon May 9 20:36:50 UTC 2011 i686
creation_time = 1319560855 # Tue Oct 25 22:10:55 2011
vg_XYZ {
id = "WN8593-xRnx-dn29-rcpb-tRAm-Bs5R-93DGWw"
seqno = 3
status = ["RESIZEABLE", "READ", "WRITE"]
flags = []
extent_size = 65536 # 32 Megabytes
max_lv = 0
max_pv = 0
metadata_copies = 0
physical_volumes {
pv0 {
id = "voQHGq-9m5t-u39a-UBWP-1qKM-sS4M-t3EPYG"
device = "/dev/sda2" # Hint only
status = ["ALLOCATABLE"]
flags = []
dev_size = 155275264 # 74.041 Gigabytes
pe_start = 2048
pe_count = 2369 # 74.0312 Gigabytes
}
}
logical_volumes {
lv_swap {
id = "Osi18q-409G-iG1s-Mdb2-00Lt-wtQV-WpF2mN"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
segment_count = 1
segment1 {
start_extent = 0
extent_count = 126 # 3.9375 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 0
]
}
}
lv_root {
id = "Wc8qdx-sYKi-qFeM-Bv48-YvZC-ClGU-VrYl4W"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
segment_count = 1
segment1 {
start_extent = 0
extent_count = 2243 # 70.0938 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 126
]
}
}
}
}
Su pronta ayuda sería muy apreciada, de lo contrario, estoy en un verdadero problema.
Muchas gracias de antemano...
/ HS
fuente
dd if=/the/right/446bytefile of=/dev/sdb
, o está perdido en / dev / sdb y no puede acceder a él?Respuestas:
Pruebe los siguientes pasos en orden.
EDITAR (por Harry)
Tuve que hacer un
vgcfgrestore
para que el resto de los comandos enumerados a continuación (comenzando convgscan
) tuvieran efecto.vgcfgrestore vg_XYZ
También tuve que an
e2fsck -y /dev/vg_XYZ/lv_root
para que la montura tuviera éxito.Detalles descritos en esta publicación comp.os.linux.setup aquí .
Como ya ha hecho un
pvscan
, proceda avgscan
:Con suerte, que debe descubrir el grupo de volúmenes
vg_XYZ
en/dev/sdb2
, y crear los nodos de dispositivos necesarios en/dev
.A continuación, haga que el grupo de volúmenes esté disponible:
Sigue eso con un
lvscan
:Y finalmente, haga que el volumen lógico esté disponible:
Ahora debería poder montar en
lv_root
algún lugar para acceder a sus datos, p. Ej.¡Buena suerte!
fuente
vgscan --partial --mknodes --verbose
dio un 'No hay grupos de volúmenes encontrados'.vgimport --verbose vg_XYZ
algo?la Parted Magic LiveCD / USB tiene todo tipo de herramientas que podrían ser capaces de recuperar el MBR desde ese disco.
testdisk
es uno , y sé que hay otros. Me ha salvado la piel varias veces de comandos mal escritos, hay una razón por la cualdd
es apodadodisk destroyer
.fuente
Es posible que pueda crear el dispositivo manualmente utilizando los números que se encuentran en el archivo de copia de seguridad.
Los números se calculan como:
Esto no se ha probado. Si la copia de seguridad no proporciona una imagen precisa de la configuración actual (o si me equivoqué en los cálculos, los he reproducido por analogía con la configuración local en lugar de una comprensión suficientemente profunda de LVM), entonces no funcionará .
fuente
dmsetup
comando falla diciendo "Número incorrecto de argumentos". Estoy usando Fedora 16. Probé la versión del comando table_file (colocando '0 146997248 linear / dev / sdb2 8259584'table.txt
y especificandodmsetup create foo --table table.txt
), y obtuve "Formato no válido en la línea 1 de la tabla. El comando falló".mount
comando da "monte: debe especificar el tipo de sistema de archivos".