以前は、Ubuntu 12.04サーバーでの起動時にGlusterFSをマウントすることについて質問しました と答えは、これは12.04ではバグがあり、14.04では機能するというものでした。奇妙なことに、自分のラップトップで実行されている仮想マシンで試してみたところ、14.04で動作しました。これは私にとって重要だったので、実行中のサーバーを14.04にアップグレードして、GlusterFSがローカルホストボリュームを自動的にマウントしていないことを確認することにしました。
これはLinodeサーバーであり、fstabは次のようになります。
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/xvda / ext4 noatime,errors=remount-ro 0 1
/dev/xvdb none swap sw 0 0
/dev/xvdc /var/lib/glusterfs/brick01 ext4 defaults 1 2
koraga.int.example.com:/public_uploads /var/www/shared/public/uploads glusterfs defaults,_netdev 0 0
起動プロセスは次のようになります(唯一の失敗であるネットワークマウント部分の周り):
* Stopping Mount network filesystems [ OK ]
* Starting set sysctls from /etc/sysctl.conf [ OK ]
* Stopping set sysctls from /etc/sysctl.conf [ OK ]
* Starting configure virtual network devices [ OK ]
* Starting Bridge socket events into upstart [ OK ]
* Starting Waiting for state [fail]
* Stopping Waiting for state [ OK ]
* Starting Block the mounting event for glusterfs filesystems until the [fail]k interfaces are running
* Starting Waiting for state [fail]
* Starting Block the mounting event for glusterfs filesystems until the [fail]k interfaces are running
* Stopping Waiting for state [ OK ]
* Starting Signal sysvinit that remote filesystems are mounted [ OK ]
* Starting GNU Screen Cleanup [ OK ]
ログファイル/var/log/glusterfs/var-www-shared-public-uploads.log
には、問題の主な手がかりが含まれています。これは、マウントが機能していないこのサーバーと、次の場所にあるローカル仮想サーバーとの間で本当に異なる唯一の問題です。
[2014-07-10 05:51:49.762162] I [glusterfsd.c:1959:main] 0-/usr/sbin/glusterfs: Started running /usr/sbin/glusterfs version 3.5.1 (/usr/sbin/glusterfs --volfile-server=koraga.int.example.com --volfile-id=/public_uploads /var/www/shared/public/uploads)
[2014-07-10 05:51:49.774248] I [socket.c:3561:socket_init] 0-glusterfs: SSL support is NOT enabled
[2014-07-10 05:51:49.774278] I [socket.c:3576:socket_init] 0-glusterfs: using system polling thread
[2014-07-10 05:51:49.775573] E [socket.c:2161:socket_connect_finish] 0-glusterfs: connection to 192.168.134.227:24007 failed (Connection refused)
[2014-07-10 05:51:49.775634] E [glusterfsd-mgmt.c:1601:mgmt_rpc_notify] 0-glusterfsd-mgmt: failed to connect with remote-Host: koraga.int.example.com (No data available)
[2014-07-10 05:51:49.775649] I [glusterfsd-mgmt.c:1607:mgmt_rpc_notify] 0-glusterfsd-mgmt: Exhausted all volfile servers
[2014-07-10 05:51:49.776284] W [glusterfsd.c:1095:cleanup_and_exit] (-->/usr/lib/x86_64-linux-gnu/libgfrpc.so.0(rpc_transport_notify+0x23) [0x7f6718bf3f83] (-->/usr/lib/x86_64-linux-gnu/libgfrpc.so.0(rpc_clnt_notify+0x90) [0x7f6718bf7da0] (-->/usr/sbin/glusterfs(+0xcf13) [0x7f67192bbf13]))) 0-: received signum (1), shutting down
[2014-07-10 05:51:49.776314] I [Fuse-bridge.c:5475:fini] 0-Fuse: Unmounting '/var/www/shared/public/uploads'.
ボリュームのステータスは次のとおりです。
Volume Name: public_uploads
Type: Distribute
Volume ID: 52aa6d85-f4ea-4c39-a2b3-d20d34ab5916
Status: Started
Number of Bricks: 1
Transport-type: tcp
Bricks:
Brick1: koraga.int.example.com:/var/lib/glusterfs/brick01/public_uploads
Options Reconfigured:
auth.allow: 127.0.0.1,192.168.134.227
client.ssl: off
server.ssl: off
nfs.disable: on
mount -a
起動後、ボリュームは正しくマウントされています。
koraga.int.example.com:/public_uploads on /var/www/shared/public/uploads type Fuse.glusterfs (rw,default_permissions,allow_other,max_read=131072)
いくつかの関連するログファイルがこれを示しています。
/var/log/upstart/mounting-glusterfs-_var_www_shared_public_uploads.log
:
start: Job failed to start
/var/log/upstart/wait-for-state-mounting-glusterfs-_var_www_shared_public_uploadsstatic-network-up.log
:
status: Unknown job: static-network-up
start: Unknown job: static-network-up
しかし、私のテストサーバーではまったく同じように表示されるので、これは関係ないと思います。
今何か問題があるアイデアはありますか?
Update:WAIT_FORをstatic-network-upからnetworkingに変更しようとしましたが、機能しませんでしたが、起動時にすべての[fail]メッセージが表示されました姿を消す。これらは、以下の状況でのログファイルの内容です。
/var/log/glusterfs/var-www-shared-public-uploads.log
に含まれるもの:
wait-for-state stop/waiting
/var/log/upstart/wait-for-state-mounting-glusterfs-_var_www_shared_public_uploadsstatic-network-up.log
に含まれるもの:
start: Job is already running: networking
/var/log/glusterfs/var-www-shared-public-uploads.log
に含まれるもの:
[2014-07-11 17:19:38.000207] I [glusterfsd.c:1959:main] 0-/usr/sbin/glusterfs: Started running /usr/sbin/glusterfs version 3.5.1 (/usr/sbin/glusterfs --volfile-server=koraga.int.example.com --volfile-id=/public_uploads /var/www/shared/public/uploads)
[2014-07-11 17:19:38.029421] I [socket.c:3561:socket_init] 0-glusterfs: SSL support is NOT enabled
[2014-07-11 17:19:38.029450] I [socket.c:3576:socket_init] 0-glusterfs: using system polling thread
[2014-07-11 17:19:38.030288] E [socket.c:2161:socket_connect_finish] 0-glusterfs: connection to 192.168.134.227:24007 failed (Connection refused)
[2014-07-11 17:19:38.030331] E [glusterfsd-mgmt.c:1601:mgmt_rpc_notify] 0-glusterfsd-mgmt: failed to connect with remote-Host: koraga.int.example.com (No data available)
[2014-07-11 17:19:38.030345] I [glusterfsd-mgmt.c:1607:mgmt_rpc_notify] 0-glusterfsd-mgmt: Exhausted all volfile servers
[2014-07-11 17:19:38.030984] W [glusterfsd.c:1095:cleanup_and_exit] (-->/usr/lib/x86_64-linux-gnu/libgfrpc.so.0(rpc_transport_notify+0x23) [0x7fd9495b7f83] (-->/usr/lib/x86_64-linux-gnu/libgfrpc.so.0(rpc_clnt_notify+0x90) [0x7fd9495bbda0] (-->/usr/sbin/glusterfs(+0xcf13) [0x7fd949c7ff13]))) 0-: received signum (1), shutting down
[2014-07-11 17:19:38.031013] I [Fuse-bridge.c:5475:fini] 0-Fuse: Unmounting '/var/www/shared/public/uploads'.
Update 2:アップスタートファイルでもこれを試しました:
start on (started glusterfs-server and mounting TYPE=glusterfs)
しかし、コンピュータは起動に失敗しました(まだ理由がわかりません)。
私はこのスレッドとこのスレッドでの答えの組み合わせによってこれをうまく機能させることができました: GlusterFSはブート時にマウントできません
@Dan Pisarskiによる編集/etc/init/mounting-glusterfs.conf
読む:
exec start wait-for-state WAIT_FOR=networking WAITER=mounting-glusterfs-$MOUNTPOINT
@ dialt0neの変更に従って/etc/fstab
読む:
[serverip]:[vol] [mountpoint] glusterfs defaults,nobootwait,_netdev,backupvolfile-server=[backupserverip],direct-io-mode=disable 0 0
Ubuntu 14.04.2 LTSで動作するMe(tm)
私はubuntu 12.04のAWSで同じ問題に遭遇しました。ここで、あなたのためにできることがいくつかあります。
これにより、ネットワークが使用できないときにvolfileサーバーを再試行できます。
これにより、なんらかの理由でプライマリがダウンした場合に、別のglusterサーバーメンバーからファイルシステムをマウントできます。
nobootwait
を追加しますこれにより、このファイルシステムがマウントされていない間、インスタンスは起動を継続できます。
現在のfstabのサンプルエントリは次のとおりです。
10.20.30.40:/fs1 /example glusterfs defaults,nobootwait,_netdev,backupvolfile-server=10.20.30.41,fetch-attempts=10 0 2
14.04ではテストしていませんが、12.04インスタンスでは問題なく動作します。
これは実際にはバグです(static-network-upは仕事ではなく、イベント信号です)。
さらに、他の回答で提案されているようにネットワークジョブを使用することは、最も正しい解決策ではありません。
それで、私はこれを作成しました バグレポート とこの問題へのパッチを提出しました。
回避策として、(この回答の最後に)提案されたソリューションを適用し、fstabで__netdev
_オプションを使用できます。
より良い説明も上に示されていますが、必要に応じてこの説明をスキップできます。
これは_mounting-glusterfs.conf
_のバグです。 Ubuntu Serverでの起動時に30秒の不必要な時間を増加させたり、起動プロセスをハングさせることさえあります。
このバグのため、mountallプロセスはマウントが失敗したと見なします(_/var/log/boot.log
_に「Mount failed」エラーが表示されます)。そのため、_/etc/fstab
_でnobootwait
/nofail
フラグを使用しない場合、バグによりマウントプロセス(およびブートプロセス)がハングする可能性があります。 nobootwait
/nofail
フラグを使用すると、バグにより起動時間が約30秒増加します。
このバグは次のエラーが原因で発生します。
_netdev
_マウントフラグがあります。wait-for-state
_ upstartタスクを使用してシグナルを待つのは間違っています。それは仕事を待つために使用されます。 _static-network-up
_はイベントシグナルであり、ジョブではありません; WAIT_STATE=running
_のデフォルトではないため、_wait-for-state
_ env varを渡さないでジョブが開始されるのを待機しているときは間違っています。_/etc/init/mounting-glusterfs.conf
_:
_author "Louis Zuckerman <[email protected]>"
description "Block the mounting event for glusterfs filesystems until the glusterfs-server is running"
instance $MOUNTPOINT
start on mounting TYPE=glusterfs
task
script
if status glusterfs-server; then
start wait-for-state WAIT_FOR=glusterfs-server WAIT_STATE=running \
WAITER=mounting-glusterfs-$MOUNTPOINT
fi
end script
_
PS:fstabで__netdev
_オプションも使用します。
細かい説明をありがとうございます。これまで以上に理解が深まったと思います。最新のソリューションはほぼ機能しています。問題(最初の問題は2番目の問題であるため、実際には1つ):
127.0.0.1:/share
)まだマウントされていませんmounted TYPE=glusterfs
満足することはないため、マウントされたサービスに依存するサービスTYPE=glusterfs
状態/etc/fstab
:
127.0.0.1:/control-share /mnt/glu-control-share glusterfs defaults,_netdev 0 0
/etc/init/mounting-glusterfs.conf
:上からコピー
/etc/init/salt-master.conf
:
description "Salt Master"
start on (mounted TYPE=glusterfs
and runlevel [2345])
stop on runlevel [!2345]
limit nofile 100000 100000
...
ローカル共有は手動でマウントする必要があります。または、何らかの自動化によって、すべてのリブート後にsalt-masterを手動で開始する必要があります。
後で気付く:Mounting-glusterfsの上記のWAITスクリプトは、ブートプロシージャ全体をブロックします。glusterfs-serverの状態が実行に到達しないようです。
私もこれに遭遇しましたが、この回答の前に、私はこの分野の専門家ではないので、より良い解決策がある可能性があるという声明を出したいと思います。
しかし、問題はstatic-network-upがイベントであり、アップスタートジョブの名前ではないようです。ただし、wait-for-stateスクリプトは、ジョブ名がWAIT_FOR値として渡されることを想定しています。したがって、上記で発見した「不明なジョブ」のエラー。
この問題を解決するには、/ etc/init/mounting-glusterfs.confを変更して、次のように変更します。
exec start wait-for-state WAIT_FOR=static-network-up WAITER=mounting-glusterfs-$MOUNTPOINT
に:
exec start wait-for-state WAIT_FOR=networking WAITER=mounting-glusterfs-$MOUNTPOINT
networkingは実際のジョブの名前(/etc/init/networking.conf)であり、通常はstatic-network-upを発行するジョブだと思います。
この変更は、Ubuntu 14.04では機能しました。
私はこれを本当にシンプルなソリューションで管理しました:
/ etc/fstabにマウントポイントを追加する
gluster:/VOLUME_NAME/local/mount/point glusterfs defaults,_netdev 0 0
/ etc/rc.localに1行追加すると、次のようになります。
mount -a
exit 0
これで、すべてのglusterfsボリュームが起動時にマウントされます。