Greyhole
関連記事
Greyhole は Samba を使用してハードドライブを全て集めたストレージプールを作成するアプリケーションです。保存したファイルの冗長コピーを作成することもでき、ハードドライブが故障したときにデータが消失するのを防げます。
インストール
AUR
Arch User Repository から greyholeAUR パッケージをインストールしてください。
手動
1. 必要なパッケージをインストール: mysqlAUR, php, php-pearAUR, samba, base-devel, rsync, postfix。
2. こちら から最新のソースパッケージをダウンロード。
3. Greyhole のファイルを展開:
# tar zxvf greyhole-*.tar.gz # cd greyhole-* # GREYHOLE_INSTALL_DIR=`pwd`
4. Greyhole 用に作業ディレクトリを作成:
# mkdir -p /var/spool/greyhole # chmod 777 /var/spool/greyhole
5. Greyhole のファイルをインストール:
# install -m 0755 -D -p greyhole /usr/bin # install -m 0755 -D -p greyhole-dfree /usr/bin # install -m 0750 -D -p greyhole-config-update /usr/bin # install -m 0644 -D -p logrotate.greyhole /etc/logrotate.d/greyhole # install -m 0644 -D -p greyhole.cron.d /etc/cron.d/greyhole # install -m 0644 -D -p greyhole.example.conf /etc/greyhole.conf # install -m 0755 -D -p greyhole.cron.weekly /etc/cron.weekly/greyhole # install -m 0755 -D -p greyhole.cron.daily /etc/cron.daily/greyhole
6. php-pear に必要なファイルがアーカイブに入っていないので GitHub からダウンロードして適切な場所に移動:
# wget https://raw.github.com/gboudreau/Greyhole/master/includes/common.php # wget https://raw.github.com/gboudreau/Greyhole/master/includes/sql.php # include_path=`php -i | grep include_path | awk -F':' '{print $NF}'` # mkdir "$include_path/includes" # install -m 0644 -D -p includes/common.php "$include_path/includes" # install -m 0644 -D -p includes/sql.php "$include_path/includes"
include_path
を設定する際に PHP がタイムゾーンに関してエラーを吐く場合は /etc/php/php.ini
ファイルにタイムゾーンを設定してください。
7. Samba の VFS モジュールをインストール: まずは使用している Samba のバージョンを確認:
# smbd --version
Samba 3.4 の場合:
# if [ -x /usr/lib64/samba/vfs/ ]; then cp samba-module/bin/greyhole-x86_64.so /usr/lib64/samba/vfs/greyhole.so; else cp samba-module/bin/greyhole-i386.so /usr/lib/samba/vfs/greyhole.so; fi
Samba 3.5 の場合:
# if [ -x /usr/lib64/samba/vfs/ ]; then cp samba-module/bin/3.5/greyhole-x86_64.so /usr/lib64/samba/vfs/greyhole.so; else cp samba-module/bin/3.5/greyhole-i386.so /usr/lib/samba/vfs/greyhole.so; fi
Samba 3.6 の場合、手動でモジュールをコンパイルしてください:
# SAMBA_VERSION=`smbd --version | awk '{print $2}'` # wget http://samba.org/samba/ftp/stable/samba-${SAMBA_VERSION}.tar.gz # tar zxf samba-${SAMBA_VERSION}.tar.gz && rm samba-${SAMBA_VERSION}.tar.gz # cd samba-${SAMBA_VERSION}/source3 # ./configure
モジュールをビルドする前に Samba 3.6 で動作させるには修正する必要があるファイルが存在します。こちら のコードを Greyhole-Samba-3.6.patch
という名前で保存して以下のコマンドを実行:
# patch -p1 < Greyhole-Samba-3.6.patch
次に こちら のコードを vfs_greyhole.c
という名前で modules
ディレクトリに保存してください。
それから Samba をビルド:
# make
上記のコマンドにはしばらく時間がかかります。コンパイルが完了したら Greyhole モジュールを適切なディレクトリにコピーしてください:
# if [ -x /usr/lib64/samba/vfs/ ]; then cp bin/greyhole.so /usr/lib64/samba/vfs/greyhole.so; else cp bin/greyhole.so /usr/lib/samba/vfs/greyhole.so; fi
8. smbd.service
を再起動してください。
9. その後 Greyhole の初期化スクリプトをインストールする必要があります。汎用の Linux のサンプル init スクリプトは Greyhole のソースに initd_script.sh
という名前で付属しています。
設定
Samba の設定
/etc/samba/smb.conf
を編集して以下の行を [global]
セクションに追加:
unix extensions = no wide links = yes
共有それぞれに、以下のように dfree command
と vfs objects
行を追加してください:
[share_name] path = /path/to/share_name create mask = 0770 directory mask = 0770 read only = no available = yes browseable = yes writable = yes guest ok = no printable = no dfree command = /usr/bin/greyhole-dfree vfs objects = greyhole
その後 smbd.service
を再起動してください。
データベースの設定
MySQL をセットアップして以下のコマンドを実行してください:
# mysql -u root -p -e "create database greyhole; grant all on greyhole.* to greyhole_user@localhost identified by '89y63jdwe';" # mysql -u greyhole_user -p89y63jdwe greyhole < /usr/share/greyhole/schema-mysql.sql
PHP の設定
/etc/php/php.ini
を開いて、以下の行を:
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/
以下のようにしてください:
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/
date.timezone
にタイムゾーンを設定してください:
date.timezone = "Asia/Tokyo"
最後に、以下の行をアンコメント:
extension=pdo_mysql.so
Greyhole の設定
Greyhole の設定は /etc/greyhole.conf
でカスタマイズできます。
storage_pool_directories
と定義したディレクトリの数だけ、以下のコマンドを実行してください (パーティションのルートディレクトリに隠しファイルが作成されます):
# touch <dir>/.greyhole_uses_this
上記のファイルを使うことで Greyhole はマウントされているかどうか判断します。ファイルがルートディレクトリに存在しないと Greyhole は警告を出力します。
CIFS クライアントの問題を回避するために以下のコマンドを実行してください:
# modprobe cifs # echo 0 > /proc/fs/cifs/OplockEnabled