Tag: lock

  • SQLite3, NFS e FreeBSD: risolviamo il problema di locking dell’I/O error

    Ho recentemente risolto un problema con FreeBSD, SQLite3  e un file-system montato via NFS.

    Veniamo ai dettagli: FreeBSD 9.2-RELEASE (“xray“) monta un file-system condiviso via NFS da un server Linux (“zulu“), già condiviso con altre macchine, e con cui non si presentano problemi particolari.

    Il comportamento particolare di FreeBSD si manifesta quando tento di aprire un database SQLite3 direttamente sul file-system condiviso:

    xray # mount -t nfs -o udp, nfsv3 zulu:/exportnfs /nfs
    xray /nfs % sqlite3 test.sqlite3
    SQLite version 3.8.2 2013-12-06 14:53:30
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    sqlite> .schema
    Error: disk I/O error

    Dopo varie prove, e constatando che il problema si verifica solo con FreeBSD, mi imbatto nell’interessante articolo sullo strato più basso di SQLite, quello a contatto con il sistema operativo, ovvero il VFS.
    Scopro che, passando l’opzione -vfs unix-dotfiles riesco ad evitare il problema di I/O error.

    Capisco quindi che il problema è tra le opzioni di locking del client NFS di FreeBSD. Soluzione? Leggo il man di mount_nfs e trovo l’opzione nolockd. Faccio un remount ed il problema è risolto!

  • VMware: come risolvere il problema “this machine appears to be in use”

    Se VMware non vi permette di avviare una macchina virtuale che è stata spenta brutalmente (= senza un opportuno shutdown o suspend)  lamentandosi che “this machine appears to be in use” procedete in questo modo:image

    1. Chiudete VMware
    2. Localizzate la directory dove avete i file fisici della virtual machine che non si avvia (di default stanno nella cartella Documents/ del disco locale o nella vostra home – ad esempio, nel mio caso in /home/michele/vmware/Ubuntu)
    3. Andate nella directory del punto 2 e, creando una copia di backup, spostate i files con estensione *.lck in una directory temporanea [C:\Windows\Temp (Windows) o /tmp (Mac/Linux)]
    4. Riavviate la macchina virtuale: questa volta si avvierà senza problemi.

    Nota: cosa sono i file *.lck? Sono file di locking che VMware crea ogni volta che la virtual machine è in uso: se accidentalmente questa viene “spenta” in modo errato, questi files non vengono rimossi da VMware; ecco perché bisogna farlo manualmente.