Linux

Moose File System , MooseFS , mfs

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

moosefs.png

Linux、Mac 向け、分散ファイルシステム、MooseFS。
以下のような特徴があります。

  1. いろいろなハードウェアに付いているローカルHDDを利用可能
  2. 何台のサーバーが壊れても大丈夫にするか、設定ができる
  3. ブラウザを利用した管理コンソール
  4. 削除ファイルに対するゴミ箱機能
  5. 各ハードウェアに付いているHDDのフォーマットは
    一般的なフォーマット(EXT3 や EXT4)が利用可能。
  6. 各ハードウェアに付いている HDD 内は、既存データとの混在もOK
  7. システムの停止無しに HDD の追加、削除も容易。
  8. mdadm などのソフトウェア RAID に比べ格段に安定
  9. Google File System (GFS) に似ている

構成

  1. 管理サーバーが必要です。ここでは mfsmaster とします。
  2. 管理サーバーのバックアップです。ここでは mfsmetalogger とします。
  3. 各々の HDD が入っているPC、サーバーをここでは chunk server とします。

最初に構築した時

インストール手順

  1. DNS に mfsmaster を追加しましょう。
    • DNS サーバーが無い場合は、/etc/hosts ファイルに書きましょう。
    • hosts に追加するときは、127.0.0.1 で無くIPアドレスを記入しましょう。
  2. ./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)
  3. mfsmaster のセットアップ
    1. インストール
      sudo yum -y install gcc zlib zlib-devel
    2. MooseFS ユーザ、グループの作成
      sudo groupadd mfs
      sudo useradd -g mfs mfs
    3. moosefs のダウンロード
    4. MooseFS の解凍
      tar xzfv mfs-1.6.27.tar.gz
    5. 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
    6. サーバー設定ファイルのセットアップ(というか、コピー)
      cd /etc/mfs/
      sudo cp mfsmaster.cfg.dist mfsmaster.cfg
      sudo cp mfsexports.cfg.dist mfsexports.cfg
    7. metadata ファイルの準備
      cd /var/lib/mfs/
      sudo cp metadata.mfs.empty metadata.mfs
    8. master server の起動
      sudo /usr/sbin/mfsmaster start
      sudo /usr/sbin/mfscgiserv
    9. server コンソールの確認 http://mfsmaster:9425
  4. mfsmetalogger のセットアップ
    1. インストール
      sudo yum -y install gcc zlib zlib-devel
    2. MooseFS ユーザ、グループの作成
      sudo groupadd mfs
      sudo useradd -g mfs mfs
    3. moosefs のダウンロード
    4. MooseFS の解凍
      tar xzfv mfs-1.6.27-1.tar.gz
    5. 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
    6. サーバー設定ファイルのセットアップ(というか、コピー)
      cd /etc/mfs/
      sudo cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
    7. metalogger server の起動
      sudo /usr/sbin/mfsmetalogger start
    8. 別のサーバで metalogger をマウント
      sudo /usr/sbin/mfsmetalogger start
      sudo mfsmount /mnt/mfsmeta -o mfsmeta,nonempty -H mfsmaster
  5. chunk server のセットアップ
    1. インストール
      sudo yum -y install gcc zlib zlib-devel
    2. MooseFS ユーザ、グループの作成
      sudo groupadd mfs
      sudo useradd -g mfs mfs
    3. moosefs のダウンロード
    4. MooseFS の解凍
      tar xzfv mfs-1.6.27-1.tar.gz
    5. 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
    6. サーバー設定ファイルのセットアップ(というか、コピー)
      1. cd /etc/mfs/
        sudo cp mfshdd.cfg.sample mfshdd.cfg
        sudo cp mfschunkserver.cfg.sample mfschunkserver.cfg
      2. cd /etc/mfs/
        sudo cp mfshdd.cfg.dist mfshdd.cfg
        sudo cp mfschunkserver.cfg.dist mfschunkserver.cfg
    7. mfshdd.cfg の編集
      例)
      # mount points of HDD drives
      #
      #/mnt/hd1
      #/mnt/hd2
      #etc.
      
      /mnt/f-dra
    8. chunk server の起動
      sudo /usr/sbin/mfschunkserver start
    9. 複数サーバー、PCを chunk server にする場合は、
      上記の手順を繰り返して実行
  6. Web 画面で設定結果の確認

クライアントで MooseFS のマウント

  • 概要
    • 基本的には fuse が必要です。
      そのあと、--enable-mfsmount を指定して MooseFS を ./configure すると確実に mfsmount できます。
      fuse がうまく使えないときは ./configure 中にエラーが出ます。
      注意して見ましょう。
  • mfsmaster の dns の登録をしておきましょうね。
    dns が無かったり使えない場合は /etc/hosts に書きましょう
  • on Linux Ubuntu
    1. 必要なサービスのインストール
      sudo apt-get install gcc zlib1g zlib1g-dev fuse libfuse-dev
    2. MooseFS ユーザ、グループの作成
      sudo groupadd mfs
      sudo useradd -g mfs mfs
    3. moosefs のダウンロード
    4. 引き続き 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
    5. マウントポイントの作成
      sudo mkdir /mnt/mfs
    6. MooseFS のファイルシステムをマウント
      sudo mfsmount /mnt/mfs -H mfsmaster
  • on Mac
    1. FUSE for Mac をダウンロード http://osxfuse.github.io/
    2. MooseFS mfs ユーザ、mfs グループの作成
    3. moosefs のダウンロード
    4. 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
    5. マウントポイントの作成
      sudo mkdir /mnt/mfs
    6. MooseFS のファイルシステムをマウント
      sudo mfsmount /mnt/mfs -H mfsmaster

ファイル冗長化の設定(goal 数の設定)

  1. 現在の goal (冗長化)数の確認
    mfsgetgoal /mnt/mfs/
  2. 現在の goal (冗長化)数のセット
    mfssetgoal -r 3 /mnt/mfs/

Master Server の障害対策

  1. mfsmetalogger サーバーを昇格
    sudo /usr/sbin/mfsmetalogger stop
    sudo mfsmetarestore -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 となった時のデータ削除(消去)方法

  1. 以下のコマンドを実行し、どのファイルが missing かを探す
     sudo find /mnt/mfs/ -type f -print0 | xargs -0 mfscheckfile | grep -b1 "chunks with 0 copies:" | grep :$ | sed 's/:$//g'
  2. さらにデリート処理をするために、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
  3. 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);
    ?>
  4. 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
  5. 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"
  6. sudo find /mnt/mfsmeta/trash/ -name "*|data|*" -print0 | xargs -0 rm -fv

間違えて削除してしまったファイルの復活

  • これがとても便利!
    • 例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

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

version 3

  • 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 の設定

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

エラーの対応

chunkserver がサーバーサイドで認識しない対応

このエラーにえんらい苦しめられました。
調べてもなかなか情報が無いし。。。
いろいろと試してようやくわかりました。

  • chunkserver 側のエラーメッセージ
    MATOCS_MASTER_ACK - wrong meta data id. Can't connect to master
  • エラー対応
    1. サーバー側の設定ファイルについて
      • サーバーサイドの関連ファイルは以下のディレクトリに有ります。
        /var/lib/mfs
      • この中で chunkserver からの metaid を管理しているのは
        chunkserverid.mfs
      • このファイルをリネームしてバックアップを取ります。
        sudo mv /var/lib/mfs chunkserverid.mfs chunkserverid.mfs.back
    2. 以下は chunkserver 側
      • chunkserver を再起動します。
        sudo mfschunkserver restart
    • 多分これで大丈夫。。。なはず。。。

2回目構築(少し簡単になりました)

debian / ubuntu

  1. dns や hosts の設定は先に書きましょう
    • DNS サーバーが無い場合は、/etc/hosts ファイルに書きましょう。
    • hosts に追加するときは、127.0.0.1 で無くIPアドレスを記入しましょう。
  2. ユーザーとグループを作ります
    sudo groupadd -g 1001 mfs
    sudo useradd -u 1001 -g 1001 mfs
  3. apt-get へ key のインポート
    1. sudo wget -O - http://ppa.moosefs.com/moosefs.key | sudo apt-key add -
    2. 少し前
      sudo wget -O - http://ppa.moosefs.com/stable/apt/moosefs.key > key
      sudo apt-key add key
  4. apt-get の souce list へソースを追加
    sudo vi /etc/apt/sources.list
    • 以下のどれかを追加
    • For Ubuntu 14.04 Trusty:
      • 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
  5. 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

  1. DNS 名前解決出来ない時
    http://(IP):9425/
    or
  2. DNS 名前解決できる時
    http://mfsmaster.hogehoge.com:9425/

CentOS yum のインストール

(以下の作業は全て root 権限が必要です)

  1. key のインポート
    curl "http://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
  2. repository の追加
    1. Ver7
      curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo/MooseFS.repo
    2. Ver6
      curl "http://ppa.moosefs.com/MooseFS-3-el6.repo" > /etc/yum.repos.d/MooseFS.repo
  3. moose file system のインストール
    1. Master Server
      yum install moosefs-master moosefs-cli moosefs-cgi moosefs-cgiserv
    2. Chunkservers:
      yum install moosefs-chunkserver
    3. Metaloggers:
      yum install moosefs-metalogger
    4. Clients:
      yum install moosefs-client

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-01-28 (日) 14:04:22 (21d)