2008年01月09日

SQLiteはNFS上に置けない

Posted by nene2001 at 00:00 / Tag(Edit): sqlite nfs / 2 Comments: Post / View / 0 TrackBack / Google Maps このエントリーを含むはてなブックマーク

もしかしたら常識かもだけど、知らなかった。
正確には、環境によっては動く場合もあるようだけど、推奨はされないし、動かない環境ではデータベースを開くことすらできなくなる。
情報としてはこの辺

今動かしてるサービスをSolaris上のSQLiteで組んでるんだけど、DBはNFS上に置いてても普通に動いてた。
で、SolarisをLinuxにリプレースすることになったので、LinuxからNFS上のSQLiteファイルアクセスしてみたら、データベースが全く開けない。
いろいろ調べてみると、別にDBD::SQLiteのインストールに失敗したというわけではなさそうで、ローカルディスク上のSQLiteファイルならいくらでもアクセスできる。
なもんでNFS上に置いてるのが原因かと思って調べてみたら、案の定だった。

これで現行サービスの、Linuxリプレースは無理になった...現行の範囲では全然問題ないのだけど、次期サービスは流石にSQLiteじゃなくちゃんとMySQLなり使いたい。
で、Solaris上でMySQL動かそうとすると、クライアント周りにバグがあるみたいで、うまくDBD::mysqlのテストが通らない。
パッチも報告されてるんだけど、適用してもうまくいかない。
それで、次期サービスのMySQLのためにLinuxにリプレースして、サーバの台数も余裕ないので現行と次期を同じサーバで動かそうと思ってたんだけど...。
現行のNFS上SQLiteはLinuxで動かないし、次期のMySQLはSolaris上で動かない。

こりゃ、現行と次期サーバ分けるしかありまへんな。
うううう、予算が...。

Related query words in Google & Yahoo
Related Books from Amazon
Trackback to this entry
TrackBack URL :
Trackbacks
トラックバックはありません。
Comments

> SQLiteはNFS上に置けない
> 情報としてはこの辺。

より正確に言うと「ファイルのロックができない場所には置けない」ですね。
SQLite を普通に使うと、同じファイルに対して各クライアントがそれぞれ直接読み書きすることになるので、ファイルのロックができない環境では排他制御ができないので使えません。
以前は「NFS ではロックはできない」のが常識だったので、NFS 上ではそもそも無理でした。
今時は NFS でもロックができる実装が増えていますが、ロックが信用できない実装もあるので、その情報のようなことになっています。

逆に言うと、きちんとファイルのロックができるシステムであれば、NFS 上に SQLite のデータベースを置いても問題ありません。
(きちんとロックができるかどうかは、NFS サーバ/クライアントの実装依存です。Linux や Solaris の実装がきちんとしているのかどうかは、私は知りません ← じゃあ役に立たないじゃねーか)

> LinuxからNFS上のSQLiteファイルアクセスしてみたら、データベースが全く開けない。

どのような Linux の環境でしょうか?
NFS サーバ/クライアント共に、Vine Linux 4.1, カーネル 2.6.16-0vl76.3, nfs-utils-1.0.9-0vl3, DBD-SQLite-1.13 の環境で rpc.statd (init スクリプトの名前は nfslock) が動いている状態であれば、NFS 経由で SQLite の読み書きができました。
# 正しく排他制御できるのかどうかまでは不明。
(rpc.statd が動いていない状態の場合、マウントしてファイルの読み書きはできますが、ロックができないため SQLite は使えないので注意。)

あと、Solaris と Linux の NFS のロックの違いとしては、Solaris ではサーバ側だけのデーモンを使ってロックを管理していたような気がしますが、Linux の rpc.statd はサーバ/クライアント双方で動いている必要があるようです。

Posted by: at 2008年01月09日 21:27

> あさん

> 以前は「NFS ではロックはできない」のが常識だったので、NFS 上ではそもそも無理でした。
> 今時は NFS でもロックができる実装が増えていますが、ロックが信用できない実装もあるので、その情報のようなことになっています。

ご指摘の通りで、後で補足書こうと思ってたのですが、結論としては使えるようになりました。
恥ずかしい話、DBとかロジック以下のレイヤのサーバ構成は運用部門におんぶに抱っこ状態なのですが、本日運用部門担当者と原因調査したところ、nfslockというデーモンが走っていませんでした。
これを走らせたところ、NFS上でも正常にSQLiteが動かせるようになりました。

基礎知識が不足していて恥ずかしい限りです。

Posted by: kokogiko at 2008年01月09日 23:04
Post a comment












Remember personal info? 
2008年01月
Su Mo Tu We Th Fr Sa
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

About Me

Navigation

Search
Google
Web
kokogiko.net
Archives
Recent Entries
Recent Comments
Recent Trackbacks
コロプラが位置ゲープラットフォームを検討中?iPhone対応も?(ここギコ!)
位置ゲーの歴史をまとめてみた
すこし先のARに必要な方向性3つ(ここギコ!)
GPS高度、ジオイド高、標高の関係
すこし先のARに必要な方向性3つ(ここギコ!)
可視光通信って自位置特定にも使えるんじゃないか
考えるべきは沖縄米軍基地問題の本質!(ようこそイサオプロダクトワールドへisao-pw)
普天間基地移設が軍事的に見て県外移設はあり得ないとかの議論について
馬鹿信者の言動は確かにJSF氏に責任はないのだけれど、良識に訴えたい(ここギコ!)
京都外国人排斥カウンターデモの「反日上等」「日の丸ウンコ」とかについて
馬鹿信者の言動は確かにJSF氏に責任はないのだけれど、良識に訴えたい(ここギコ!)
三度、在特会カウンターデモについて
馬鹿信者の言動は確かにJSF氏に責任はないのだけれど、良識に訴えたい(ここギコ!)
普天間基地移設が軍事的に見て県外移設はあり得ないとかの議論について
馬鹿信者の言動は確かにJSF氏に責任はないのだけれど、良識に訴えたい(ここギコ!)
今回のデモで「反日」「日の丸XXX」が拙いことは判りました が、であってもまだいくつか
ここは酷い誰得教育ですね(障害報告@webry)
普天間基地移設が軍事的に見て県外移設はあり得ないとかの議論について
ここは酷いポトシ銀山ですね(障害報告@webry)
GPS高度、ジオイド高、標高の関係
Hatena bookmarked
My Hatebu

Banners

Syndication
Powered by
Get it!!