Greyhole

提供: ArchWiki
移動先: 案内検索

関連記事

GreyholeSamba を使用してハードドライブを全て集めたストレージプールを作成するアプリケーションです。保存したファイルの冗長コピーを作成することもでき、ハードドライブが故障したときにデータが消失するのを防げます。

インストール

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 という名前で付属しています。

設定

ノート: 以下の手順は Greyhole の USAGE ファイルを元にしています。

Samba の設定

/etc/samba/smb.conf を編集して以下の行を [global] セクションに追加:

unix extensions = no
wide links = yes

共有それぞれに、以下のように dfree commandvfs 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

その後 greyhole.service起動有効化してください。