#author("2021-03-13T19:46:59+09:00","default:dramsukohome","dramsukohome")
#author("2021-05-28T21:01:49+09:00","default:dramsukohome","dramsukohome")
[[Linux]]

* Moose File System , MooseFS , mfs [#y0121727]

(参考:日経Linux を参考にしました)

#contents

&imgr(./image/moosefs.png,50%);

Linux、Mac 向け、分散ファイルシステム、MooseFS。~
以下のような特徴があります。~
+ いろいろなハードウェアに付いているローカルHDDを利用可能
+ 何台のサーバーが壊れても大丈夫にするか、設定ができる
+ ブラウザを利用した管理コンソール
+ 削除ファイルに対するゴミ箱機能
+ 各ハードウェアに付いているHDDのフォーマットは~
一般的なフォーマット(EXT3 や EXT4)が利用可能。
+ 各ハードウェアに付いている HDD 内は、既存データとの混在もOK
+ システムの停止無しに HDD の追加、削除も容易。
+ mdadm などのソフトウェア RAID に比べ格段に安定
+ Google File System (GFS) に似ている

* 構成 [#s2ce52ed]
+ 管理サーバーが必要です。ここでは mfsmaster とします。
+ 管理サーバーのバックアップです。ここでは mfsmetalogger とします。
+ 各々の HDD が入っているPC、サーバーをここでは chunk server とします。




*最初に構築した時 [#a056269e]



** インストール手順 [#q9a5b6ea]
+ 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 のダウンロード:http://www.moosefs.org/download.html]]
++ 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:http://mfsmaster:9425]]
+ mfsmetalogger のセットアップ
++ インストール
 sudo yum -y install gcc zlib zlib-devel
++ MooseFS ユーザ、グループの作成
 sudo groupadd mfs
 sudo useradd -g mfs mfs
++ [[moosefs のダウンロード:http://www.moosefs.org/download.html]]
++ 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 のダウンロード:http://www.moosefs.org/download.html]]
++ 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 のマウント [#gff0ecee]
- 概要
-- 基本的には 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 のダウンロード:http://www.moosefs.org/download.html]]
++ 引き続き 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/:http://osxfuse.github.io/]]
++ MooseFS mfs ユーザ、mfs グループの作成
++ [[moosefs のダウンロード:http://www.moosefs.org/download.html]]
++ 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 数の設定) [#wa83d22e]
+ 現在の goal (冗長化)数の確認
 mfsgetgoal /mnt/mfs/
+ 現在の goal (冗長化)数のセット
 mfssetgoal -r 3 /mnt/mfs/



** Master Server の障害対策 [#dca4bbae]
+ 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 となった時のデータ削除(消去)方法 [#oefa9ca1]
+ 以下のコマンドを実行し、どのファイルが 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



** 間違えて削除してしまったファイルの復活 [#q91a5a2f]
- これがとても便利!
-- 例1
 sudo ls /mnt/mfsmeta/trash/
 sudo mv /mnt/mfsmeta/trash/00000014\movie.mov /mnt/mfsmeta/trash/undel
-- 例2
 sudo find /mnt/mfsmeta/trash/ -name "*|data|*" | xargs -i mv -v {} /mnt/mfsmeta/trash/undel/



** CentOS で mfsmount [#g44d9222]
 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:http://rpm.pbone.net/index.php3/stat/4/idpl/23565360/dir/centos_5/com/mfs-client-1.6.27-18.1.i386.rpm.html]]



** /etc/fstab [#w6d4898d]


*** version 2 [#lefb805d]
- sudo vi /etc/fstab
 mfsmount /mnt/mfs fuse mfsmaster=mfsmaster.hogehoge.com,_netdev 0 0


*** version 3 [#qe2fdfac]
-new
-- sudo vi /etc/fstab
 mfsmount     /mnt/mfs     fuse     defaults,mfsdelayedinit,mfsmaster=mfsmaster.tar3.net,mfsport=9421     0     0
-old
-- sudo vi /etc/fstab
 mfsmount /mnt/mfs fuse defaults,mfsmaster=mfsmaster.hogehoge.com,mfsport=9421 0 0



** quota の設定 [#fd36b267]
- quota の設定
 sudo mfssetquota -HS 500G dirName
-- S がハードクォータ
-- s がソフトクォータ
- quota の確認
 mfsgetquota dirName
- quota の削除
 sudo mfsdelquota -sS dirName



** エラーの対応 [#kc8a28b3]


*** chunkserver がサーバーサイドで認識しない対応 [#t54ea9ec]
このエラーにえんらい苦しめられました。~
調べてもなかなか情報が無いし。。。~
いろいろと試してようやくわかりました。~
- chunkserver 側のエラーメッセージ
 MATOCS_MASTER_ACK - wrong meta data id. Can't connect to master
- エラー対応
++ サーバー側の設定ファイルについて
--- サーバーサイドの関連ファイルは以下のディレクトリに有ります。
 /var/lib/mfs
--- この中で chunkserver からの metaid を管理しているのは
 chunkserverid.mfs
--- このファイルをリネームしてバックアップを取ります。
 sudo mv /var/lib/mfs chunkserverid.mfs chunkserverid.mfs.back
++ 以下は chunkserver 側
--- chunkserver を再起動します。
 sudo mfschunkserver restart
-- 多分これで大丈夫。。。なはず。。。




*2回目構築(少し簡単になりました) [#e08e12ef]



** debian / ubuntu [#kc744c42]
+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 のインポート
++ Ubuntu 20.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
--以下のどれかを追加
--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/bionic bionic main" > /etc/apt/sources.list.d/moosefs.list
--- 少し前
 deb http://ppa.moosefs.com/moosefs-3/apt/ubuntu/trusty trusty main
--- さらに前
 deb http://ppa.moosefs.com/stable/apt/ubuntu/trusty trusty main
--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 7.0 Wheezy:
--- 今
 deb http://ppa.moosefs.com/moosefs-3/apt/debian/wheezy wheezy main
--- 少し前
 deb http://ppa.moosefs.com/stable/apt/debian/wheezy wheezy main
--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


*** 必要なものをインストール [#s05d56df]
--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 [#a5131fd8]
+ DNS 名前解決出来ない時
 http://(IP):9425/
or~
+ DNS 名前解決できる時
 http://mfsmaster.hogehoge.com:9425/


** CentOS yum のインストール [#n09b41b2]
(以下の作業は全て root 権限が必要です)
+ key のインポート
 curl "http://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
+ repository の追加
++ 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



** mac [#f358c9bf]


*** download package of moose file system [#e16abe97]
-[[http://ppa.moosefs.com/moosefs-3/osx/]]


*** install fuse [#vf11204c]
-[[https://osxfuse.github.io/]]


*** mount [#s5da451c]
-sudo mfsmount ./mnt/mfs -H mfsmaster.tar3.net


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS