2019/11/20(水) 10:28:45
2019年11月
     12
3456789
10111213141516
17181920212223
24252627282930


CentOSでs3fs 1.78を使えるようにする

初回投稿:2015/05/04 12:41:44 最終更新:2015/11/23 22:02:04

仕事でAWSを使うことになり、その際に使ったs3fsに色々振り回されたので共有したい思います。
 
 
 
 
s3fsとは

AWSのストレージサービスであるs3はファイルのアクセスにaws cliが必須で、nfsマウントのような仕組みはサポートされていません。
ただ、複数のEC2サーバーから同時アクセス出来るストレージサービスはs3しかない(※)為、マウントできるようにしちゃおうと作られたものがs3fsです。
ちなみにAmazon御謹製ではありません。

※2015.4.9にAmazonからAWSの新ストレージサービス『Amazon EFS』が発表されました。
 秋口辺りにリリースのようですがnfs接続出来るそうです!1年早ければ…
 
利用にあたっての注意点
  • 元々はGoogle Code(https://code.google.com/p/s3fs/)で開発され、ver 1.74が最終版として公開されていますがGitHub(https://github.com/s3fs-fuse/s3fs-fuse)で継続開発されており、最終版はver 1.78(2015.5.4現在)です。
  • ver 1.74は同時に4〜5多重でGBクラスのファイルコピー等を動かすとプロセスがSegmentation Faultで落ちるという致命的なバグを持っている為お勧めしません。これで泣かされました…
  • とはいえ転送スピードはnfs等に比べると遅いです。
  • s3fsマウント先へのファイル更新量により、メモリ上にキャッシュ?が蓄積されます。
    これが減らず増えるばかりの為、メモリ搭載量/アクセス量にもよりますが1〜2日に一回はs3fsプロセスの再起動が必要です
ver1.78をCentOSで使う

ver1.78ですが、単純にソースコンパイルしただけでは起動時に落ちます。
この為、ソースを修正して対応しました。
※curl周りでエラーになっていた&今回の環境では使ってなさそうだったのでロジックに入らないように
 逃しています。万人に効くとは限りませんので御注意下さい。
# diff curl.cpp curl.cpp.bup
333c333
<   if(!S3fsCurl::is_dns_cache){
---
>   if(S3fsCurl::is_dns_cache){
339c339
<   if(!S3fsCurl::is_ssl_session_cache){
---
>   if(S3fsCurl::is_ssl_session_cache){
あと、s3fsが要求するfuseのバージョンがAmazon Linux標準では古すぎる為、以下より2.9.3をインストールしました。
http://sourceforge.net/projects/fuse/files/fuse-2.X/
 
自動マウントさせる

/etc/fstabへの登録ではマウントが出来なかった為、/etc/rc.d/rc.localに以下を追記して自動マウントさせました。
# s3fs設定
mkdir /mnt/s3
chmod 777 /mnt/s3
s3fs バケット名 /mnt/s3 -o rw,allow_other,nomultipart,url=https://s3.amazonaws.com
※EC2の使用で/mnt配下がOS起動時に初期化される為、マウント前にディレクトリを作成しています
※GBクラスのファイル配置ではマルチパート転送をoff(nomultipart)にしないとダメでした
 



コメント
お名前
コメント
 
画像の文字を入力し、チェックボックスをチェックした上で送信ボタンを押して下さい。
見辛い場合は横のリロードボタンで変更出来ます。
コメントは登録されていません。

このページのトラックバックURL : https://e-tune-mt.net/hcms/index.php/tb/_/1631

トラックバック
トラックバックは登録されていません。

このページは0.137secで生成/表示されました
Ver.20160813