Newsgroup: it.comp.os.linux.sys
Titolo: Il contrario di losetup

Ciao,
 
il comando losetup permette di far vedere al sistema un file come se fosse un device, ad esempio per montare una iso di un cd.
 
Io ho bisogno di fare esattamente il contrario, cioè far vedere al sistema un device come se fosse un semplice file.
 
Voi mi direte "accidenti ma è già così !!! Qualsiasi device in Linux è visto
come un file !!"
 
Questo è vero ma non sempre, ad esempio i comandi tar e cpio si accorgono che
un device non è un semplice file e non salvano il contenuto del device ma semplicemente ciò che occorre per ricrearlo in caso di restore.
 
A me servirebbe invece, durante un tar, poter salvare il contenuto di un device
(è un volume LVM).
 
No, non posso usare dd o simili, ho bisogno di salvarlo con il tar.
 
Qualche idea ?

 Qualche idea ?
 
Devi montarlo.
 
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 Devi montarlo.
 
Non posso, non lo gestisco io, sopra ci hanno creato dei volumi con LVM e vari filesystem

 No, non posso usare dd o simili, ho bisogno di salvarlo con il tar.
 
Ok , ma puoi stampare sto device sullo stdin e darlo in pasto al tar ?
 
o non puoi creare nemmeno una pipe di comandi ?
 
Giulia
 
 

 Qualche idea ?
 
Si, stai sbagliando qualcosa... :-)
 
bye,
 
-- 
 
piergiorgio

 No, non posso usare dd o simili, ho bisogno di salvarlo con il tar.
 
Anche io ho bisogno di 100 milioni in banca, però non posto qui.
 
-- 
Cio' che si vede, e'.
 

 o non puoi creare nemmeno una pipe di comandi ?
 
Mi pare di no, tu come faresti ?
Tieni presente che insieme a quello, il tar dovrebbe salvare altre cose.
 
Stefano

 Si, stai sbagliando qualcosa... :-)
 
Può darsi.
So che in un mondo perfetto non dovrei trovarmi con questa necessità,
e so anche come potrei evitarla, ma le soluzioni implicano ad esempio,
reinstallazioni o altri lunghi passaggi che per vari motivi preferirei
evitare.
 
Quello che cerco sarebbe per me la soluzione più semplice anche se,
mi rendo conto, non troppo elegante tecnicamente.
 
Stefano

 Anche io ho bisogno di 100 milioni in banca, però non posto qui.
 
A me basterebbe mooolto meno, ma nemmeno io lo posto qui perché sarebbe OT.
 
Posto qui in cerca di idee, consigli o soluzioni, per  problemi relativi al
sistema operativo Linux.
 
Se le trovo bene, altrimenti mi arrangio senza fare battute.
 
Stefano

 Ok, ci ho pensato, non mi viene in mente nulla di bloccante.
 
Intendo dire che so perché il tar si comporta come si comporta,
ma che non vedo nessun impedimento a cercare, in casi particolari,
di comportarsi diversamente.
 
Stefano

 No, non posso usare dd o simili, ho bisogno di salvarlo con il tar.
 
Domanda sciocca: perché non puoi usare dd?
 
Comunque, dump potrebbe essere quello che cerchi
 
Enrico

 Se le trovo bene, altrimenti mi arrangio senza fare battute.
 
Guarda, risposta seria: anche se tar facesse quello che vuoi tu, sarebbe un
"backup" (non bisognerebbe nemmeno chiamarlo così) inconsistente, sia a
livello di filesystem che di applicazione. Anche se potessi fare uno
snapshot dei volumi LVM che ci sono sopra non avresti risolto nulla, in
quanto avresti un filesystem in uno stato corrispondente a uno a cui hanno
tolto la corrente brutalmente. E fin qui, ancora con un po' di fortuna
quado monti lo snapshot il fs potrebbe autoripararsi (stiamo sempre
parlando del caso in cui tu possa fare uno snapshot, cosa che se capisco
bene non puoi fare).
Ma anche così, basta che quel filesystem fosse in uso da qualche database o
app che scrive spesso ed avresti un'altra inconsistenza.
 
Quindi dovresti:  
 
- fermare app/db (o almeno metterla in uno stato in cui fa il flush di
  tutto a disco e non scrive niente di nuovo)
- fare snapshot LVM
- sbloccare app/db
- fare backup dello snapshot
- cancellare snapshot
 
Se non puoi fare tutto questo, avrai una copia che ti darà problemi.


 Domanda sciocca: perché non puoi usare dd?
 
Perché devo salvare quello, in aggiunta ad un sacco di altra roba, che sto
già salvando su nastro con un tar.
 
Stefano

 Se non puoi fare tutto questo, avrai una copia che ti darà problemi.
 
Posso farlo, e già lo faccio.
 
Stefano


E allora qual è il problema?


 E allora qual è il problema?
 
Fare il backup dello snapshot tramite tar.
 
In pratica ho varie macchine virtuali (gestite da varie persone).
 
Su tutte, tranne una, ho un certo controllo.
 
Su una di queste no, l'unica cosa che posso fare è uno shutdown, snapshot, reboot.
 
Poi devo salvare su nastro lo snapshot del volume LVM.
 
Tutti i volumi virtuali delle varie macchine sono creati con LVM dall'host di virtualizzazione.
 
Tutte le altre macchine hanno formattato semplicemente i loro volumi in ext4 e quindi posso montare gli snapshot dal virtualizzatore e salvare con il tar.
 
Ma quella no, chi la gestisce ha gestito il volume virtuale a sua disposizione come ho detto.
 
So che se il volume della macchina virtuale non fosse stato creato come volume LVM dal virtualizzatore ma ad esempio come file raw o qcow non avrei il problema, ma ormai è stato fatto così e non mi è facile cambiare.
 
Stefano

 mi rendo conto, non troppo elegante tecnicamente.
 
Cosa cerchi di fare?
E` un backup?
Perche` non puoi usare "dd" prima?
Perche` *devi* usare tar?
 
Tra l'altro, se e` un backup, forse servirebbe
fare uno snapshot prima...
 
bye,
 
-- 
 
piergiorgio

 So che se il volume della macchina virtuale non fosse stato creato come volume LVM dal virtualizzatore ma ad esempio come file raw o qcow non avrei il problema, ma ormai è stato fatto così e non mi è facile cambiare.
 
Avresti lo stesso problema.
 
bye,
 
-- 
 
piergiorgio


Il 90% delle domande su usenet  sono mezze soluzioni (che non funzionano) senza spiegare il problema,
e' un classico.
 
Giulia
 

 app che scrive spesso ed avresti un'altra inconsistenza.
 
Dai questa no, sono 20 anni ormai che i motori DBMS piu scarsi fanno operazioni atomiche sui FS , solo
i pst(leggi access) fa questi numeri, ovvio che anche l'applicazione deve usare transazioni e quant altro ed essere scritta come dio 
comanda, ma i motori DBMS non ti daranno mai un inconsistenza se non la programmi tu.
 
Giulia
 
 
 

 Fare il backup dello snapshot tramite tar.
 
Sei puoi fare lo snapshot, allora
puoi anche montarlo da qualche
parte e fare il backup dei file.
 
Oppure non e` _permesso_ montarlo?
Cioe` e` vietato vedere cosa vi
sia dentro? E` crittografato?
 
bye,
 
-- 
 
piergiorgio

 e' un classico.
 
Ma veramente! :-)
 
bye,
 
-- 
 
piergiorgio

 fare uno snapshot prima...
 
Lo faccio.
 
Stefano

 Avresti lo stesso problema.
 
No, perchè per il virtualizzatore il volume sarebbe un semplice file.
 
Stefano

 e' un classico.
 
Hai ragione.
 
Purtroppo questo porta spesso la gente a pensare soltanto che chi ha posto la
domanda non sappia cosa sta dicendo invece di considerare il fatto che forse
ha le sue ragioni, per bizzarre che possano essere. 
 
Stefano


wrote:

Non mi riferisco a quello. COn MySQL, per esempio, se hai delle tabelle
MyISAM e fai uno snapshot brutale senza prima fare "flush tables with read
lock", è molto probabile che si perdano dati. Con InnoDB, se al momento
dello snapshot hai molte dirty pages, ti becchi un crash recorvery quando
cerchi di usare quelle tabelle, e probabilmente avrai problemi con il
binlog se fai replicazione. Questo almeno da quello che mi ricordo, adesso
per fortuna non ci lavoro più; se è migliorato, meglio così.
 
Poi ovviamente ci sono i casi in cui il db usa partizioni senza fs, come mi
pare facesse o potesse fare oracle, anche lì non mi stupirei se uno
snapshot brutale desse problemi (mai provato comuque).


 già salvando su nastro con un tar.
 
E allora sei fregato, tar non permette di prendere in standard input un file e
buttarlo in un archivio. Usa dump o, ancora meglio, qualche sistema di backup
più avanzato
 
Enrico

 più avanzato
 
Implica troppi cambiamenti, ci penserò se non trovo altre soluzioni.
 
Stefano

 No, perchè per il virtualizzatore il volume sarebbe un semplice file.
 
Cos'è "il virtualizzatore"? Possiamo fare nomi?


 Cos'è "il virtualizzatore"? Possiamo fare nomi?
 
qemu-kvm
 
Stefano


E come fa a fare backup? Hai detto che "il backup lo fa il virtualizzatore".


 E come fa a fare backup? Hai detto che "il backup lo fa il virtualizzatore".
 
"virtualizzatore" nel senso del computer host.
 
Uno shell bash nel crontab spegne le macchine virtuali, fa gli snapshot dei volumi, riaccende le macchine virtuali, monta gli snapshot dei volumi e fa il tar, infine cancella gli snapshot.
 
Stefano


Scusa, allora sarò duro ma non capisco cos'è esattamente che ti impedisce
di includere anche la macchina incriminata nel processo. Il fatto che il
volume sia partizionato? Con kpartx puoi trovare tutte le partizioni
dell'immagine ed usarle e montarle come qualunque altro device (ovviamente
se sono a loro volta volumi LVM devi stare attento a non fare casino coi
nomi). 
 
Esempio (qui VG0-LV0 ha due partizioni con fs ext4):
 
# lvcreate --snapshot --size 1GB --name mysnapshot /dev/mapper/VG0-LV0
  Logical volume "mysnapshot" created.
# kpartx -l /dev/VG0/mysnapshot  
VG0-mysnapshot1 : 0 1024000 /dev/VG0/mysnapshot 2048
VG0-mysnapshot2 : 0 1062912 /dev/VG0/mysnapshot 1026048
# kpartx -a /dev/VG0/mysnapshot 
# mount /dev/mapper/VG0-mysnapshot1 /mnt/vol1
# mount /dev/mapper/VG0-mysnapshot2 /mnt/vol2
 
# faccio backup...
 
# umount /mnt/vol1 /mnt/vol2
# kpartx -d /dev/VG0/mysnapshot 
# lvremove /dev/VG0/mysnapshot 
Do you really want to remove and DISCARD active logical volume VG0/mysnapshot? [y/n]: y
  Logical volume "mysnapshot" successfully removed
 
 
Un'altra opzione per accedere al disco della VM è libguestfs.
 
 
-- 
Ciò che si vede, è.
 

 
 
Esempio se dentro al volume ci sono PV di LVM (non sono sicuro che servano
tutti e tre i comandi pvscan, vgscan e lvscan, ma farli tutti non fa male):
 
# lvcreate --snapshot --size 1GB --name mysnapshot /dev/mapper/VG0-LV0
  Logical volume "mysnapshot" created. 
# kpartx -a /dev/mapper/VG0-mysnapshot
# pvscan 
  PV /dev/mapper/VG0-mysnapshot1   VG GUESTVG         lvm2 [484.00 MiB / 0 free] 
  PV /dev/mapper/VG0-mysnapshot2   VG GUESTVG         lvm2 [532.00 MiB / 0 free]
  ... 
# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "GUESTVG" using metadata type lvm2
  ...
# lvscan
  ACTIVE            '/dev/GUESTVG/GUESTLV' [1016.00 MiB] inherit
  ...
# mount /dev/GUESTVG/GUESTLV /mnt/vol1
 
# faccio backup...
 
# umount /mnt/vol1
# lvremove /dev/GUESTVG/GUESTLV 
  Do you really want to remove active logical volume GUESTVG/GUESTLV? [y/n]: y 
  Logical volume "GUESTLV" successfully removed
# vgremove GUESTVG 
  Volume group "GUESTVG" successfully removed
# pvremove /dev/mapper/VG0-mysnapshot1
  Labels on physical volume "/dev/mapper/VG0-mysnapshot1" successfully wiped.
# pvremove /dev/mapper/VG0-mysnapshot2 
  Labels on physical volume "/dev/mapper/VG0-mysnapshot2" successfully wiped. 
# kpartx -d /dev/mapper/VG0-mysnapshot
# lvremove /dev/mapper/VG0-mysnapshot 
  Do you really want to remove active logical volume VG0/mysnapshot? [y/n]: y 
  Logical volume "mysnapshot" successfully removed
 
 


Ecco !
 
Queste sono le idee di cui andavo in cerca!
 
Ai vari kpartx ..scan eccetera non avevo pensato anche
perché non mi era mai capitato di usarli.
 
Dovrei riuscire a cavarmela.
 
GRAZIE.
 
P.S. Giulia, avevi ragione, mi cospargo il capo di cenere,
 
Stefano
 

Io ho bisogno di fare esattamente il contrario
 
Vedo che hai gia' risolto nel modo corretto.
 
Comunque, per farlo nel modo non corretto, "il contrario di losetup" è
squashfs.
 
https://github.com/plougher/squashfs-tools/blob/master/RELEASE-READMEs/pseudo-file.example
 
 
Leonardo
-- 
 
"You all presumably know why" :-) :-(