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
GoogleマップやMaps APIが韓国地図に対応(GOGA - 毎日走る社長のブログ)
韓国の地図が世界のGoogle Mapsで見られるようになってた
韓国の地図が世界のGoogle Mapsで見られるようになってた(ここギコ!)
韓国に行ってきました(出来事編・2日目)
京都外国人排斥カウンターデモの「反日上等」「日の丸ウンコ」とかについて(ここギコ!)
フリーチベットデモ参加してきました
ワンコリアフェスティバルDay2009行ってきました(ここギコ!)
トゥルソリ追加写真
ワンコリアフェスティバルDay2009行ってきました(ここギコ!)
入院しまつた
目的と手段の取り違えが、お役所仕事/お役所体質を生む(ここギコ!)
嫡出推定の意義は判ったがそれにより切り捨てられる部分を救うことにも意義を認めないとな
39サーチ/掃除機/「掃除機」:最新情報(39サーチ)
掃除機ホースに詰まったハンカチの取り出し方
京都通り名ジオコーダー「ジオどす」(ぱらめでぃうす)
京都の通り名に対応したジオコーディングサービス「ジオどす」
アイヌ 叙事詩(最新ブログニュース)
Google未オルソ衛星画像にぶった切られた我が母校
有象無象系ケータイ公式サイトの世界は、恐ろしい虚業の世界かもしれない(ここギコ!)
思った以上にマスはでかい、だからマーケッターが強くなる
Hatena bookmarked
My Hatebu

Banners

Syndication
Powered by
Get it!!