Take it easy!

Archive for 6月 21st, 2012

ファイルサーバー内の文書をnamazuで検索

by admin on Jun.21, 2012, under プログラム

 社内ファイルサーバーはFreeBSD4.7Rにて2003年頃に構築。当初は17GB+9GBの構成でスタートした。
 部署ごとに格納エリアを限定したが、共有モードでの開始であったため操作性が程よく、効率的な運用に見えて保存量が日増しに増加。
 2005年には容量不足を解消するために20GBを増設した。

 2010年にはディレクトリ構成の工夫も打つ手が無くなり根本的な容量不足となった。
 そこでOSのバージョンアップ(FreeBSD8.1R)と環境再構築を決意。筐体は同一だがメモリ容量を倍以上(168MB->384MB)にし、HDDも36GB+20GB+20GBとかなり余裕を持たせた。
 これにより安定運用が可能となったが、逆に保存されているファイルがあまりに多く、利用者が保存したファイルを見つけられない現象も発生するようになった。

 一時的にファイル一覧をリアルタイムで作成しファイル名を検索するcgiを用意したが利用頻度は低いと思われる。

 これらの事情からnamazuの導入を検討。
 namazuについては2000年頃にメールマガジンをDB化した実績があった。

 必要なモジュールやライブラリも含めて改めてインストールし、環境を整備した。稼働が可能な状況になったところで全文書のindex作成手順へ進む。
 しかしここで問題が発生。
 sambaによるファイルサーバーではクライアントが全てWindowsであることからCP932で統一している。ディレクトリ名やファイル名はほぼ自由に設定されていた。
 しかしnamazuはディレクトリ名やファイルを基本的にhtml化してwebでの扱いが可能な構成を前提としてデータを作成する。そうなるとCP932のディレクトリ名は環境依存文字が含まれた場合に正常な動作が期待できなくなる。この原因にたどり着くまで試行錯誤を繰り返した。
 ISO-2022JPでの検索が可能な環境でないとファイルはおろかディレクトリも掘り下げることが出来ない。namazuの制限もあって非常に苦しい状況であることがわかった。
 こうなるとサーバー内でnamazuのindex作成は不可能と言うことになる。

 そこでindex作成だけをWindowsのPCで実施出来ないか検討を始める。
 これはファイルサーバーの文書保存領域は基本的に共有であるため、アクセスが可能であることが前提となる。問題は共有エリアにある文書のindexをファイルサーバー内のどこかに格納できればいいだけとなる。

 まずはWindowsPCにnamazu環境を整える。幸いなことにMS-Officeのフィルター、PDFのフィルターが用意されていたことからPC-UNIXとそん色なく環境構築が可能になると判断。
 ファイルサーバー共有領域をnamazu作業用PCからアクセスできるよう共有設定を見直してマウント。同じくnamazuのindexを格納する領域もマウント。
 mknmzの設定でそれぞれのディレクトリへ接続して作業開始。この際の肝は–decode-base64 -Uのおまじないであった。

 ファイルサーバー内は実際には各部署を統括するエリアごとにディレクトリを配置し、その配下に各拠点のディレクトリが存在する。
 検索作業や結果表示をよりわかりやすくするため、indexもエリアごとに配置する事に決定。
 namazuのindexディレクトリをエリア単位に分けて配置する。indexはエリアを選択して検索できるように構成する。

 indexの作成が完了した段階でTopサイトの情報には更新日などの情報がないため、各indexディレクトリのlogから更新日情報だけを更新するcgiを用意。これによりいつの時点のファイルが検索対象かわかるようにした。

 ○WindowsPCでの作業
  ファイルサーバーの文書保存領域へ接続しドライブを割り当てる。
  ファイルサーバーnamazuのindex作成領域へ接続しドライブを割り当てる。
  文書保存領域内の文書を対象にmknmzを実行しindexを作成する。
 ○FreeBSDファイルサーバーでの作業
  全てのエリアのindex作成が完了次第、各エリアindexのlogから最終更新日を取得しTopページのheaderを書き換える。

 以上でファイルサーバー文書の検索サイト構築完了

 なお以降文書の追加や更新に対応するため、毎週一回mknmzを自動実行させる。
 mknmzはindexが既に存在すれば更新モードとして稼働し、index作成履歴を参照しながら差分を更新する。

Leave a Comment more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...

Archives

All entries, chronologically...