Tag: freebsd

  • 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!