[bglug] lvm

Dario Bertini berdario@gmail.com
Mer 19 Maggio 2010 18:24:53 CEST


ho un problemino che non so bene da cosa possa essere causato:

innanzitutto, questo è l'output di fdisk -l :

Disk /dev/mmcblk0: 1021 MB, 1021837312 bytes
4 heads, 16 sectors/track, 31184 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Disk identifier: 0x000b04f6

         Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *          33        7808      248832   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/mmcblk0p2            7809       31168      747520   8e  Linux LVM
Partition 2 does not end on cylinder boundary.

Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b19f2

    Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       20713   166377141   8e  Linux LVM
/dev/sda4           20714       30402    77814765   af  HFS / HFS+


ho sul disco interno (in realtà una microsd) una partizione di /boot e 
un volume lvm che contiene / e swap (creato direttamente dall'installer 
di debian)

e poi ho un disco esterno usb decisamente più capiente, con un altro 
volume lvm (e una partizione hfs, ignoratela pure... la toglierò non 
appena risolvo questo problema :P )

se faccio login e lancio

vgchange -a y

entrambi i gruppi vengono rilevati per bene e dentro /dev vengono 
popolati i device adeguati

il problema è che vorrei evitare di doverlo attivare manualmente...

purtroppo però, quando /etc/init.d/lvm2 viene lanciato, evidentemente il 
disco esterno (che tengo sempre collegato) non è ancora pronto e non 
viene rilevato

allora ho deciso di realizzarmi una regoletta udev... se v'interessa qui 
c'è il contenuto:

KERNEL=="sd?" SUBSYSTEM=="block" ATTRS{idProduct}=="0702" 
ATTRS{idVendor}=="1058" RUN+="/home/dario/montalvm.sh &"

all'inizio, al posto di montalvm.sh avevo inserito direttamente 
"vgchange -a y" ma vedendolo non funzionare ho deciso di crearmi questo 
scriptino...

che altro non fa se non:

#!/bin/sh
sleep 10 && vgchange -a y > /home/dario/dummy

ho aggiunto lo sleep appunto pensando che magari non funzionava a causa 
del fatto che magari gli id del disco vengono rilevati prima che il 
disco abbia finito il suo spin-up...

ho poi provato per un motivo analogo a spostare il nome della regola (da 
80, numero consigliato per regole che fanno partire script/programmi 
esterni a 94)... ma direi che non è questo il problema:

ho provato, a sistema avviato a smontare e ricollegare il disco, e lo 
script viene lanciato con successo (il timestamp del file dummy viene 
aggiornato), ma dal contenuto (e anche dal contenuto di /dev) mi accorgo 
come continui a venir rilevato solo il volume presente sul "disco interno"

ho anche pensato che magari lanciando vgchange -a y con sudo dal mio 
utente la cosa funzioni, ma che per un qualche strano motivo non 
funzioni quando lanciato da udev... ma la cosa non mi torna...

ricapitolando:

lvm funziona: / è su lvm, e questo viene rilevato e montato senza problemi
il volume lvm incriminato funziona: se faccio vgchange -a y loggandomi 
col mio utente i device vengono creati per bene
la regola udev funziona: scollegando e ricollegando il disco lo 
scriptino viene lanciato di nuovo

dev'essere qualcosa di estremamente banale, ma non riesco proprio a 
raccapacitarmi di quale possa esserne la causa... avete qualche idea?





Maggiori informazioni sulla lista bglug