Linux
Moose File System , MooseFS , mfs †
(参考:日経Linux を参考にしました)
Linux、Mac 向け、分散ファイルシステム、MooseFS。
以下のような特徴があります。
- いろいろなハードウェアに付いているローカルHDDを利用可能
- 何台のサーバー、何十台のHDDであろうと1つのドライブとして認識する。
- 何台のサーバーが壊れても大丈夫にするか、設定ができる
- ブラウザを利用した管理コンソール
- 削除ファイルに対するゴミ箱機能
- 各ハードウェアに付いているHDDのフォーマットは
一般的なフォーマット(EXT3 や EXT4)が利用可能。
- 各ハードウェアに付いている HDD 内は、既存データとの混在もOK
- システムの停止無しに HDD の追加、削除も容易。
- mdadm などのソフトウェア RAID に比べ格段に安定
- Google File System (GFS) に似ている
- Linux, Macは無料(Windowsは有料)
- データがサーバー毎に分散されるため高速
構成 †
- 管理サーバーが必要です。ここでは mfsmaster とします。
- 管理サーバーのバックアップです。ここでは mfsmetalogger とします。
- 各々の HDD が入っているPC、サーバーをここでは chunk server とします。
最初に構築した時 †
インストール手順 †
- DNS に mfsmaster を追加しましょう。
- DNS サーバーが無い場合は、/etc/hosts ファイルに書きましょう。
- hosts に追加するときは、127.0.0.1 で無くIPアドレスを記入しましょう。
- ./configure のオプションまとめ
- --disable-mfsmaster
- --disable-mfschunkserver
- --disable-mfsmount
- --enable-mfsmount
- --prefix=DIRECTORY - install to given prefix (default is /usr/local)
- --sysconfdir=DIRECTORY - select configuration files directory (default is ${prefix}/etc)
- --localstatedir=DIRECTORY - select top variable data directory (default is ${prefix}/var; MFS metadata are stored in mfs subdirectory, i.e. ${prefix}/var/mfs by default)
- --with-default-user=USER - user to run daemons as if not set in configuration files (default is nobody)
- --with-default-group=GROUP - group to run daemons as if not set in configuration files (default is nogroup)
- mfsmaster のセットアップ
- インストール
sudo yum -y install gcc zlib zlib-devel
- MooseFS ユーザ、グループの作成
sudo groupadd mfs
sudo useradd -g mfs mfs
- moosefs のダウンロード
- MooseFS の解凍
tar xzfv mfs-1.6.27.tar.gz
- 3種類のサーバー機能のインストール(mfsmaster,metalogger,chunk server)
cd mfs-1.6.27
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs
make
sudo make install
- サーバー設定ファイルのセットアップ(というか、コピー)
cd /etc/mfs/
sudo cp mfsmaster.cfg.dist mfsmaster.cfg
sudo cp mfsexports.cfg.dist mfsexports.cfg
- metadata ファイルの準備
cd /var/lib/mfs/
sudo cp metadata.mfs.empty metadata.mfs
- master server の起動
sudo /usr/sbin/mfsmaster start
sudo /usr/sbin/mfscgiserv
- server コンソールの確認 http://mfsmaster:9425
- mfsmetalogger のセットアップ
- インストール
sudo yum -y install gcc zlib zlib-devel
- MooseFS ユーザ、グループの作成
sudo groupadd mfs
sudo useradd -g mfs mfs
- moosefs のダウンロード
- MooseFS の解凍
tar xzfv mfs-1.6.27-1.tar.gz
- 3種類のサーバー機能のインストール(mfsmaster,metalogger,chunk server)
cd mfs-1.6.27
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs
make
sudo make install
- サーバー設定ファイルのセットアップ(というか、コピー)
cd /etc/mfs/
sudo cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
- metalogger server の起動
sudo /usr/sbin/mfsmetalogger start
- 別のサーバで metalogger をマウント
sudo /usr/sbin/mfsmetalogger start
sudo mfsmount /mnt/mfsmeta -o mfsmeta,nonempty -H mfsmaster
- chunk server のセットアップ
- インストール
sudo yum -y install gcc zlib zlib-devel
- MooseFS ユーザ、グループの作成
sudo groupadd mfs
sudo useradd -g mfs mfs
- moosefs のダウンロード
- MooseFS の解凍
tar xzfv mfs-1.6.27-1.tar.gz
- 3種類のサーバー機能のインストール(mfsmaster,metalogger,chunk server)
cd mfs-1.6.27
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs
make
sudo make install
- サーバー設定ファイルのセットアップ(というか、コピー)
- 新
cd /etc/mfs/
sudo cp mfshdd.cfg.sample mfshdd.cfg
sudo cp mfschunkserver.cfg.sample mfschunkserver.cfg
- 旧
cd /etc/mfs/
sudo cp mfshdd.cfg.dist mfshdd.cfg
sudo cp mfschunkserver.cfg.dist mfschunkserver.cfg
- mfshdd.cfg の編集
例)
# mount points of HDD drives
#
#/mnt/hd1
#/mnt/hd2
#etc.
/mnt/f-dra
- chunk server の起動
sudo /usr/sbin/mfschunkserver start
- 複数サーバー、PCを chunk server にする場合は、
上記の手順を繰り返して実行
- Web 画面で設定結果の確認
クライアントで MooseFS のマウント †
- 概要
- 基本的には fuse が必要です。
そのあと、--enable-mfsmount を指定して MooseFS を ./configure すると確実に mfsmount できます。
fuse がうまく使えないときは ./configure 中にエラーが出ます。
注意して見ましょう。
- mfsmaster の dns の登録をしておきましょうね。
dns が無かったり使えない場合は /etc/hosts に書きましょう
- on Linux Ubuntu
- 必要なサービスのインストール
sudo apt-get install gcc zlib1g zlib1g-dev fuse libfuse-dev
- MooseFS ユーザ、グループの作成
sudo groupadd mfs
sudo useradd -g mfs mfs
- moosefs のダウンロード
- 引き続き MooseFS のインストール作業
tar xzfv mfs-1.6.27-1.tar.gz
cd mfs-1.6.27
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
make
sudo make install
- マウントポイントの作成
sudo mkdir /mnt/mfs
- MooseFS のファイルシステムをマウント
sudo mfsmount /mnt/mfs -H mfsmaster
- on Mac
- FUSE for Mac をダウンロード http://osxfuse.github.io/
- MooseFS mfs ユーザ、mfs グループの作成
- moosefs のダウンロード
- MooseFS のインストール作業
tar xzfv mfs-1.6.27-1.tar.gz
cd mfs-1.6.27
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
make
sudo make install
- マウントポイントの作成
sudo mkdir /mnt/mfs
- MooseFS のファイルシステムをマウント
sudo mfsmount /mnt/mfs -H mfsmaster
ファイル冗長化の設定(goal 数の設定) †
- 現在の goal (冗長化)数の確認
mfsgetgoal /mnt/mfs/
- 現在の goal (冗長化)数のセット
mfssetgoal -r 3 /mnt/mfs/
Master Server の障害対策 †
- mfsmetalogger サーバーを昇格
sudo /usr/sbin/mfsmetalogger stop
sudo mfsmaster -a
cd /etc/mfs/
sudo cp mfsmaster.cfg.dist mfsmaster.cfg
sudo cp mfsexports.cfg.dist mfsexports.cfg
sudo /usr/sbin/mfsmaster start
sudo /usr/sbin/mfscgiserv &
missing となった時のデータ削除(消去)方法 †
- 以下のコマンドを実行し、どのファイルが missing かを探す
sudo find /mnt/mfs/ -type f -print0 | xargs -0 mfscheckfile | grep -b1 "chunks with 0 copies:" | grep :$ | sed 's/:$//g'
- さらにデリート処理をするために、mfs_missing.log に書き出す。
sudo find /mnt/mfs/ -type f -print0 | xargs -0 mfscheckfile | grep -b1 "chunks with 0 copies:" | grep :$ | sed 's/:$//g' > mfs_missing.log
- missing file を消すための script を作成する PHP プログラム
<?php
$fp = fopen("mfs_missing.log", "r");
$sh_detail="";
while ($line = fgets($fp)) {
$fileName=substr($line,8,strlen($line)-9);
$sh_detail=$sh_detail."mfssettrashtime 1 \"".trim($fileName)."\"\n";
$sh_detail=$sh_detail."rm \"".trim($fileName)."\"\n";
}
fclose($fp);
$fp = fopen("mfs_delete_log.sh", "w");
fwrite($fp, $sh_detail);
fclose($fp);
?>
- mfs_missing.log 例
151342-/mnt/mfs/backup/ozubuntu1204_rsync/var/var/www/index.html
151437-/mnt/mfs/backup/ozubuntu1204_rsync/var/var/tmp/kdecache-dramsuko/ksycoca4stamp
- mfs_delete_log.sh 例
mfssettrashtime 1 "/mnt/mfs/backup/ozubuntu1204_rsync/var/var/lib/dpkg/info/libnss-mdns.md5sums"
rm "/mnt/mfs/backup/ozubuntu1204_rsync/var/var/lib/dpkg/info/libnss-mdns.md5sums"
- 例
sudo find /mnt/mfsmeta/trash/ -name "*|data|*" -print0 | xargs -0 rm -fv
間違えて削除してしまったファイルの復活 †
CentOS で mfsmount †
sudo yum install fuse-libs
sudo rpm -ivh mfs-client-1.6.27-18.1.i386.rpm
mfs-client-1.6.27-18.1.i386.rpm
/etc/fstab †
version 2 †
- sudo vi /etc/fstab
mfsmount /mnt/mfs fuse mfsmaster=mfsmaster.hogehoge.com,_netdev 0 0
mfsmount /mnt/mfsmeta fuse defaults,mfsdelayedinit,mfsmaster=mfsmaster.tar3.net,mfsport=9421,mfsmeta 0 0
version 3 †
- new
- sudo vi /etc/fstab
mfsmount /mnt/mfs fuse defaults,mfsdelayedinit,mfsmaster=mfsmaster.tar3.net,mfsport=9421 0 0
mfsmount /mnt/mfsmeta fuse defaults,mfsdelayedinit,mfsmaster=mfsmaster.tar3.net,mfsport=9421,mfsmeta 0 0
- old
quota の設定 †
エラーの対応 †
chunkserver がサーバーサイドで認識しない対応 †
このエラーにえんらい苦しめられました。
調べてもなかなか情報が無いし。。。
いろいろと試してようやくわかりました。
2回目構築(少し簡単になりました) †
debian / ubuntu †
- dns や hosts の設定は先に書きましょう
- DNS サーバーが無い場合は、/etc/hosts ファイルに書きましょう。
- hosts に追加するときは、127.0.0.1 で無くIPアドレスを記入しましょう。
- ユーザーとグループを作ります
sudo groupadd -g 1001 mfs
sudo useradd -u 1001 -g 1001 mfs
- apt-get へ key のインポート
- debian
sudo wget -O - https://ppa.moosefs.com/moosefs.key | sudo apt-key add -
- Ubuntu 22.04
sudo wget -O - https://ppa.moosefs.com/moosefs.key | sudo apt-key add -
- 少し前
sudo wget -O - http://ppa.moosefs.com/moosefs.key | sudo apt-key add -
- さらに前
sudo wget -O - http://ppa.moosefs.com/stable/apt/moosefs.key > key
sudo apt-key add key
- apt-get の souce list へソースを追加
sudo vi /etc/apt/sources.list
- 以下のどれかを追加
- Ubuntu 22.04
sudo su -
echo "deb [arch=amd64] http://repository.moosefs.com/moosefs-3/apt/ubuntu/jammy jammy main" > /etc/apt/sources.list.d/moosefs.list
- For Ubuntu 20.04
echo "deb [arch=amd64] http://ppa.moosefs.com/moosefs-3/apt/ubuntu/focal focal main" > /etc/apt/sources.list.d/moosefs.list
- For Ubuntu 18.04
echo "deb http://ppa.moosefs.com/moosefs-3/apt/ubuntu/bionic bionic main" > /etc/apt/sources.list.d/moosefs.list
- For Ubuntu 14.04 Trusty:
sudo echo "deb http://ppa.moosefs.com/moosefs-3/apt/ubuntu/trusty trusty main" > /etc/apt/sources.list.d/moosefs.list
- For Ubuntu 12.04 Precise:
deb http://ppa.moosefs.com/stable/apt/ubuntu/precise precise main
- For Ubuntu 10.10 Maverick:
deb http://ppa.moosefs.com/stable/apt/ubuntu/maverick maverick main
- For Debian 11 Bullseye:
echo "deb [arch=amd64] http://ppa.moosefs.com/moosefs-3/apt/debian/bullseye bullseye main" > /etc/apt/sources.list.d/moosefs.list
- For Debian 7.0 Wheezy:
- For Debian 6.0 Squeeze:
deb http://ppa.moosefs.com/stable/apt/debian/squeeze squeeze main
- For Debian 5.0 Lenny:
deb http://ppa.moosefs.com/stable/apt/debian/lenny lenny main
- apt-get の更新
sudo apt-get update
必要なものをインストール †
- master
sudo apt-get install moosefs-master
- web console
sudo apt-get install moosefs-cgiserv
- metaloger
sudo apt-get install moosefs-metalogger
- chunkServer
sudo apt-get install moosefs-chunkserver
- client
sudo apt-get install moosefs-cli moosefs-client
Web Console URL †
- DNS 名前解決出来ない時
http://(IP):9425/
or
- DNS 名前解決できる時
http://mfsmaster.hogehoge.com:9425/
CentOS yum のインストール †
(以下の作業は全て root 権限が必要です)
- key のインポート
curl "http://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
- repository の追加
- Ver8
curl "http://ppa.moosefs.com/MooseFS-3-el8.repo" > /etc/yum.repos.d/MooseFS.repo
- Ver7
curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
- Ver6
curl "http://ppa.moosefs.com/MooseFS-3-el6.repo" > /etc/yum.repos.d/MooseFS.repo
- moose file system のインストール
- Master Server
yum install moosefs-master moosefs-cli moosefs-cgi moosefs-cgiserv
- Chunkservers:
yum install moosefs-chunkserver
- Metaloggers:
yum install moosefs-metalogger
- Clients:
yum install moosefs-client fuse
- fstabの例
mfsmount /mnt/mfs fuse defaults,mfsdelayedinit,mfsmaster=mfsmaster.tar3.net,mfsport=9421 0 0
mfsmount /mnt/mfsmeta fuse defaults,mfsdelayedinit,mfsmaster=mfsmaster.tar3.net,mfsport=9421,mfsmeta 0 0
mac †
download package of moose file system †
install fuse †
mount †
- sudo mfsmount ./mnt/mfs -H mfsmaster.tar3.net
- found metadata file with different id number - cleanup your working directory or use '-i' flag (might be dangerous without cleaning)
- betsu de tukatteita ryouiki ga betsu no mfs de jissou dekinai
自動起動 †
CentOS(RHEL, Alma, Rocky) †
CentOS 6 †
- mfsmaster
sudo chkconfig moosefs-master
- cgiserv
sudo chkconfig moosefs-cgiserv on
- chunkserver
sudo chkconfig moosefs-chunkserver on
- metalogger
sudo chkconfig moosefs-metalogger
AlamaLinux? 8 †
- mfsmaster
sudo systemctl enable moosefs-master
- cgiserv
sudo systemctl enable moosefs-cgiserv.service
- chunkserver
sudo systemctl enable moosefs-chunkserver
- metalogger
sudo systemctl enable moosefs-metalogger
Ubuntu †
20.04 †
- mfsmaster
sudo systemctl enable moosefs-master
- cgiserv
sudo systemctl enable moosefs-cgiserv.service
- chunkserver
sudo systemctl enable moosefs-chunkserver
- metalogger
sudo systemctl enable moosefs-metalogger
停止手順 †
mfs client のアンマウント †
- umount -l /mnt/mfs
chunk server のストップ †
RHEL, CentOS, AlmaLinux?, RockyLinux?, †
- 6
sudo service moosefs-chunkserver stop
- 7以降
sudo systemctl stop moosefs-chunkserver
Ubuntu 20.04 †
sudo systemctl stop moosefs-chunkserver
Master server のストップ †
RHEL, CentOS, AlmaLinux?, RockyLinux?, †
- 6
sudo service moosefs-master stop
- 7以降
sudo systemctl stop moosefs-master
Ubuntu 20.04 †
sudo systemctl stop moosefs-master
metalogger サーバーのストップ †
RHEL, CentOS, AlmaLinux?, RockyLinux?, †
- 6
sudo service moosefs-metalogger stop
- 7以降
sudo systemctl stop moosefs-metalogger
Ubuntu 20.04 †
sudo systemctl stop moosefs-metalogger
その他 †
名前解決の問題でmfsmasterへ接続できない。(chunk, cgi) †
- IP address を直接入力する。
- vim /etc/mfs/mfschunkserver.cfg
Trashの消去 †
|