#author("2024-06-23T06:45:36+09:00","default:dramsukohome","dramsukohome") #author("2024-10-01T11:49:03+09:00","default:dramsukohome","dramsukohome") [[Linux]] * Moose File System , MooseFS , mfs [#y0121727] (参考:日経Linux を参考にしました) #contents &imgr(./image/moosefs.png,50%); Linux、Mac 向け、分散ファイルシステム、MooseFS。~ 以下のような特徴があります。~ + いろいろなハードウェアに付いているローカルHDDを利用可能 + 何台のサーバー、何十台のHDDであろうと1つのドライブとして認識する。 + 何台のサーバーが壊れても大丈夫にするか、設定ができる + ブラウザを利用した管理コンソール + 削除ファイルに対するゴミ箱機能 + 各ハードウェアに付いているHDDのフォーマットは~ 一般的なフォーマット(EXT3 や EXT4)が利用可能。 + 各ハードウェアに付いている HDD 内は、既存データとの混在もOK + システムの停止無しに HDD の追加、削除も容易。 + mdadm などのソフトウェア RAID に比べ格段に安定 + Google File System (GFS) に似ている + Linux, Macは無料(Windowsは有料) + データがサーバー毎に分散されるため高速 * 構成 [#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 mfsmount /mnt/mfsmeta fuse defaults,mfsdelayedinit,mfsmaster=mfsmaster.tar3.net,mfsport=9421,mfsmeta 0 0 *** version 3 [#qe2fdfac] -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 -- 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 のインポート ++ 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 --- 少し前 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 12 Bookworm echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/moosefs.gpg] http://repository.moosefs.com/moosefs-3/apt/debian/bookworm bookworm main" > /etc/apt/sources.list.d/moosefs.list --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: --- 今 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 の追加 ++ 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 [#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 *** [#l2d08683] -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 * 自動起動 [#l0e9a3d8] ** CentOS(RHEL, Alma, Rocky) [#ec5ad83e] *** CentOS 6 [#q020e66f] + mfsmaster sudo chkconfig moosefs-master + cgiserv sudo chkconfig moosefs-cgiserv on + chunkserver sudo chkconfig moosefs-chunkserver on + metalogger sudo chkconfig moosefs-metalogger *** AlamaLinux 8 [#e9f61d27] + 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 [#e4bd725e] *** 20.04 [#n17dbe85] + 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 * 停止手順 [#k77d9bd1] ** mfs client のアンマウント [#d21060a1] + umount -l /mnt/mfs ** chunk server のストップ [#e10dd6ce] *** RHEL, CentOS, AlmaLinux, RockyLinux, [#l3a68f86] + 6 sudo service moosefs-chunkserver stop + 7以降 sudo systemctl stop moosefs-chunkserver *** Ubuntu 20.04 [#g06b4852] sudo systemctl stop moosefs-chunkserver ** Master server のストップ [#z1ff4959] *** RHEL, CentOS, AlmaLinux, RockyLinux, [#h7b4657c] + 6 sudo service moosefs-master stop + 7以降 sudo systemctl stop moosefs-master *** Ubuntu 20.04 [#m61cf92a] sudo systemctl stop moosefs-master ** metalogger サーバーのストップ [#g126d9ad] *** RHEL, CentOS, AlmaLinux, RockyLinux, [#l84e0f32] + 6 sudo service moosefs-metalogger stop + 7以降 sudo systemctl stop moosefs-metalogger *** Ubuntu 20.04 [#f9665a4e] sudo systemctl stop moosefs-metalogger * その他 [#q5bed99b] ** 名前解決の問題でmfsmasterへ接続できない。(chunk, cgi) [#ed220573] - IP address を直接入力する。 -- vim /etc/mfs/mfschunkserver.cfg ** Trashの消去 [#l86cd09f] - 以下のコマンドで mfsmetaを再マウント mfsmount -o mfsmeta,mfsflattrash /mnt/mfsmeta - cd /mnt/mfsmeta/trash - rm * -- Directory は消さない - ファイル数が多すぎる場合は以下 echo ./* | xargs rm -fv - 引数行が流すぎる場合 find ./ -name "*.*" -print0 | xargs -0 rm -fv ** metadataの場所 [#jd5b5dcc] - [[参考(公式マニュアル,PDF):https://moosefs.com/Content/Downloads/moosefs-3-0-users-manual.pdf]] - /var/lib/mfs