Può capitare che per un qualsiasi motivo una macchina virtuale non porta più, e vi è la necessità di montare
il filesystem sul server fisico(proxmox).
Visto che in fase d’installazione della macchina virtuale il singolo Logical Volume viene partizionato per
ex. la swap e la root purtroppo non possiamo montare x come faremmo di solito:
root@nilox ~ # lvdisplay
— Logical volume —
LV Name /dev/vg0-nilox/vm-102-disk-1
VG Name vg0-nilox
LV UUID C4bcBz-dx46-CxWj-5s9F-AIYO-aVYk-43veWf
LV Write Access read/write
LV Status available
# open 1
LV Size 50,00 GB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
root@nilox ~ # mount /dev/vg0-nilox/vm-102-disk-1 /mnt/prova/
mount: you must specify the filesystem type
root@nilox ~ # mount -t xfs /dev/vg0-nilox/vm-102-disk-1 /mnt/prova/
mount: wrong fs type, bad option, bad superblock on /dev/mapper/vg0–nilox-vm–102–disk–1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog – try
dmesg | tail or so
Perche il sistema non riesce a capire quale filesystem vogliamo montare,
se facciamo i seguenti comandi capirete perchè.
root@nilox ~ # fdisk -l /dev/vg0-nilox/vm-102-disk-1
Disk /dev/vg0-nilox/vm-102-disk-1: 21.4 GB, 21479030784 bytes
255 heads, 63 sectors/track, 2611 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00040fdc
Device Boot Start End Blocks Id System
/dev/vg0-nilox/vm-102-disk-1p1 1 122 975872 82 Linux swap / Solaris
Partition 1 does not end on cylinder boundary.
/dev/vg0-nilox/vm-102-disk-1p2 122 2611 19993600 83 Linux
root@nilox ~ # kpartx /dev/vg0-nilox/vm-102-disk-1
vg0–nilox-vm–102–disk–1p1 : 0 1951744 /dev/vg0-nilox/vm-102-disk-1 2048
vg0–nilox-vm–102–disk–1p2 : 0 39987200 /dev/vg0-nilox/vm-102-disk-1 1953792
Come potete vedere sono due partizioni, quindi per poter montare il filesystem di root bisogna specificare
quale byte del disco montare:
root@nilox ~ # parted /dev/vg0-nilox/vm-102-disk-1
GNU Parted 1.8.8
Using /dev/mapper/vg0–nilox-vm–102–disk–1
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) unit b
(parted) print
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/vg0–nilox-vm–102–disk–1: 21479030784B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1048576B 1000341503B 999292928B primary linux-swap
2 1000341504B 21473787903B 20473446400B primary xfs
root@nilox ~ # mount -o offset=1000341504B /dev/vg0-nilox/vm-102-disk-1 /mnt/prova/
root@nilox ~ # df -h
Filesystem Dimens. Usati Disp. Uso% Montato su
/dev/md0 19G 2,2G 16G 13% /
tmpfs 3,9G 0 3,9G 0% /lib/init/rw
udev 10M 708K 9,4M 7% /dev
tmpfs 3,9G 0 3,9G 0% /dev/shm
/dev/mapper/vg0–nilox-vm–102–disk–1
20G 959M 19G 5% /mnt/prova
Come potete vedere siamo riusciti a montare la partizione specificato i byte della partizione interessata.
Spero possa essere utile a molti
Frank
Puoi anche fare questo:
modprobe nbd
qemu-nbd -c /dev/nbd0 /dev/vg0-nilox/vm-102-disk-1
……………….
poi trovi le due partizioni come nbd0p1 e nbd0p2
le monti e fai quello che devi fare
poi rimuovi l’nbd con
qemu-nbd -d /dev/nbd0
Ciao, Diaolin
Grazie non lo conoscevo
p.s è un onore averti sul mio Blog
Ho appena scoperto che per permettere a nbd di rilevare le partizioni, e creare per ognuna un device specifico, occorre attivarlo con il parametro max_part=N, dove N è il numero massimo di partizioni da identificare. Es:
modprobe nbd max_part=63
Senza max_part, nbd supporta solo l’intero device (lvm o altro) ma non mappa le singole partizioni (http://lwn.net/Articles/276044/)
Comunque grazie per il post… mi è stato utile.
Marco
m.ardito Grazie non conoscevo questa opzione