非針式靜電紡絲製程及 其奈米纖維薄膜之應用 · a. 電子 : 光電製程, IC半導體製程之特用化學品, 清洗段過濾, 廠務段純水, 氣體...等之專用
S3 を単純ストレージとして 利用する手段の比較
-
Upload
komeda-shinji -
Category
Software
-
view
1.483 -
download
0
Transcript of S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして利用する手段の比較株式会社サイタスマネジメント
米田 真治
1
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
自己紹介
•米田 真治 (こめだ しんじ)� 株式会社サイタスマネジメント CTO� 運用エンジニア
• 経歴
� 学生時代にUNIXに出会う
� Internetにつながる環境がきた
� いろんなプログラムをビルドしているうちに、開発・構築の楽しさに目覚める
� 学科のシステム管理を経験
� システム運用のおもしろさを覚える
� 就職してISPのサーバ構築・運用に携わる
� 2000年6月 サイタスマネジメント創業
2016
/5/1
4JAWS-U
G アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議論会
#5
2
バケットをファイルシステムとしてマウントするタイプ• バケット上のオブジェクト ⇔ファイスシステム上のファイル各オブジェクトがそれぞれ一つのファイルとして見えます。
• s3fs - FUSE-based file system backed by Amazon SS� POSIXにかなり近い
� rsync に対応するために、ファイル属性をサポートしている
→ aws cli で s3 sync ができるので、今となっては rsync の必要はないでしょう。
• riofs - userspace S3 filesystem� ファイルスステムとしては Leaky Abstraction� 開発は実質2年前で止まっている模様
• goofys – a faster s3fs written in Go� ファイルスステムとしては Leaky Abstraction� パフォーマンス重視
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
3
ファイルシステムのデータをバケット上に保存するタイプ
• s3ql� ファイルシステム上のファイル → バケット上に複数のチャンクとして保存します。
� ファイルシステムのサイズは動的に変化します。
• s3backer� 透過的に巨大なファイルをエミュレートします。
� ファイルサイズは初期化するときに決定しますがバケット上のオブジェクトはデータブロックを使用したときに割り当てられます。
� データブロック → バケット上のオブジェクト
� ファイルをブロックデバイスとしてマップして、任意のファイルシステムを構築することができます。
どちらも� ローカルキャッシュを利用すれば比較的高速にファイルアクセスが可能です。
� 透過的にファイル圧縮と暗号化をサポートしています。
� 複数箇所から同時にマウントすることはできません。
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
4
ストレージゲートウェイとの比較
• s3ql/s3backer� バケット上に構築したボリュームをローカルファイルシステムとして直接マウントします。
• ストレージゲートウェイ� ボリューム型はiSCSIターゲットとして動作します。
� ストレージゲートウェイ用に仮想アプライアンスが必要です。
� ネイティブサービスです。
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
5
S3QLについて• S3QL is a file system that stores all its data online using storage services
like Google Storage, Amazon S3, or OpenStack. S3QL effectively provides a hard disk of dynamic, infinite capacity that can be accessed from any computer with internet access.
• S3QL is a standard conforming, full featured UNIX file system that is conceptually indistinguishable from any local file system. Furthermore, S3QL has additional features like compression, encryption, data de-duplication, immutable trees and snapshotting which make it especially suitable for online backup and archival.
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
6
S3QLの利用例• オンプレミスからクラウドストレージをデータのバックアップ領域などに利用。
• “リフト・アップ”したのとき、EC2インスタンス上のデータのバックアップ領域などに利用。
� 直接マウントして書き出しができますが、十分なキャッシュ領域を確保しないと性能が出ないため、相応の作業領域が必要です。
� バケット上のオブジェクトとして参照する必要がなければ有効でしょう。
� ローカルキャッシュは書き込みでも使用されるため、s3fsよりは速いです。(write-back)
� たとえば、
� MySQLのInnoDB データをXtraBackupでインクリメンタルバックアップする。
→ それ RDS Restore to Point in Time で、できるよね。
“リフト・アンド・シフト”で、リファクタするときには、そのように変更するのが良いでしょう。
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
7
S3QLインストール• Ubuntu リポジトリのパッケージ Versions: 1.16-1• かなり古いのでソースからビルドしました。
参照 http://www.rath.org/s3ql-docs/installation.html
註) 最新は s3ql-2.18 になっています。
$ wget 'https://bitbucket.org/nikratio/s3ql/downloads/s3ql-‐2.17.1.tar.bz2’$ sudo apt-‐get install libsqlite3-‐0 libsqlite3-‐dev$ sudo apt-‐get install python3-‐setuptools python3-‐pip$ sudo apt-‐get install pkg-‐config$ sudo apt-‐get install libfuse-‐dev libattr1-‐dev$ sudo pip3 install llfuse$ sudo pip3 install pycrypto$ sudo pip3 install defusedxml$ sudo pip3 install requests$ sudo pip3 install apsw$ sudo pip3 install dugong$ sudo pip3 install pytest$ tar xfa s3ql-‐2.17.1.tar.bz2$ cd s3ql-‐2.17.1$ python3 setup.py build$ sudo python3 setup.py install
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
8
mkfs.s3ql# /usr/local/bin/mkfs.s3ql s3://s3ql-‐bucketEnter backend login:Enter backend passphrase:_do_request(): redirected to bucket.s3-‐region.amazonaws.comBefore using S3QL, make sure to read the user's guide, especiallythe 'Important Rules to Avoid Loosing Data' section._do_request(): redirected to bucket.s3-‐region.amazonaws.comEnter encryption password:Confirm encryption password:Generating random encryption key...Creating metadata tables...Dumping metadata...Dumping metadata.....objects....blocks....inodes....inode_blocks....symlink_targets....names....contents....ext_attributes..Compressing and uploading metadata...Wrote 150 bytes of compressed metadata.
Cycling metadata backups...Backing up old metadata...Please store the following master key in a safe location. It allowsdecryption of the S3QL file system in case the storage objects holdingthis information get corrupted:-‐-‐-‐BEGIN MASTER KEY-‐-‐-‐XXXXXXXXX-‐-‐-‐END MASTER KEY-‐-‐-‐
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
9
クレデンシャル$HOME/.s3ql/authinfo2
[bucket]storage-‐url: s3://s3ql-‐bucketbackend-‐login: Access Key IDbackend-‐password: Secret Access Keyfs-‐passphrase: passphrase
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
10
mount# mkdir -‐p /var/lib/s3ql/cache # mkdir -‐p /s3/s3ql-‐fs # /usr/local/bin/mount.s3ql -‐-‐cachedir /var/lib/s3ql/cache s3://s3ql-‐bucket /s3/s3ql-‐fs Using 2 upload threads. Autodetected 4058 file descriptors available for cache entries _do_request(): redirected to 3ql-‐bucket.s3-‐ap-‐northeast-‐1.amazonaws.com _do_request(): redirected to 3ql-‐bucket.s3-‐ap-‐northeast-‐1.amazonaws.com Using cached metadata. Setting cache size to 4503 MB Mounting s3://s3ql-‐bucket/ at /s3/s3ql-‐fs...
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
11
umountumount するとキャッシュがフラッシュされデータアップロードの分、時間がかかります。
# cd /# time /usr/local/bin/umount.s3ql /s3/s3ql-‐fs/usr/local/bin/umount.s3ql /s3/s3ql-‐fs 0.19s user 0.04s system 0% cpu1:15.81 total
変更がないときはすぐに umount が終了します。
# /usr/local/bin/mount.s3ql -‐-‐cachedir /var/cache/s3ql s3://s3ql-‐bucket /s3/s3ql-‐fs# cd /# time /usr/local/bin/umount.s3ql /s3/s3ql-‐fs/usr/local/bin/umount.s3ql /s3/s3ql-‐fs 0.16s user 0.04s system 8% cpu2.308 total
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
12
速度比較ローカル
% time dd if=/dev/urandom of=test bs=64k count=10001000+0 records in1000+0 records out65536000 bytes (66 MB) copied, 6.11013 s, 10.7 MB/sdd if=/dev/urandom of=test bs=64k count=1000 0.00s user 6.03s system 98% cpu 6.111 total% time dd if=/dev/urandom of=test bs=64k count=1000010000+0 records in10000+0 records out655360000 bytes (655 MB) copied, 62.6933 s, 10.5 MB/sdd if=/dev/urandom of=test bs=64k count=10000 0.01s user 60.09s system 95% cpu 1:02.70 totalS3QL# cd /s3/s3ql-‐fs# time dd if=/dev/urandom of=test bs=64k
count=10001000+0 records in1000+0 records out65536000 bytes (66 MB) copied, 7.31893 s, 9.0 MB/sdd if=/dev/urandom of=test bs=64k count=1000 0.00s user 6.10s system 83% cpu 7.336 total# time dd if=/dev/urandom of=test bs=64k count=1000010000+0 records in10000+0 records out655360000 bytes (655 MB) copied, 121.856 s, 5.4 MB/sdd if=/dev/urandom of=test bs=64k count=10000 0.01s user 61.25s system 42% cpu 2:25.42 total
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
13
ファイルツリーのコピー# /usr/local/bin/mount.s3ql -‐-‐cachedir /var/cache/s3ql s3://s3ql-‐bucket /s3/s3ql-‐fs# time mkdir /s3/s3ql-‐fs/test-‐dirmkdir /s3/s3ql-‐fs/test-‐dir 0.00s user 0.00s system 5% cpu 0.018 total# time cp -‐r /boot /lib/modules /s3/s3ql-‐fs/test-‐dir/cp -‐r /boot /lib/modules /s3/s3ql-‐fs/test-‐dir/ 0.01s user 0.18s system 2% cpu 7.180 total# time du -‐sk /s3/s3ql-‐fs/test-‐dir/53631 /s3/s3ql-‐fs/test-‐dir/du -‐sk /s3/s3ql-‐fs/test-‐dir/ 0.00s user 0.01s system 4% cpu 0.310 total
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
14
ツリーの削除やコピーrm -r ディレクトリ より s3qlrm ディレクトリ を使用しましょう。(効率がよい)
rm -r の場合
# time rm -‐r /s3/s3ql-‐fs/test-‐dir/rm -‐r /s3/s3ql-‐fs/test-‐dir/ 0.00s user 0.03s system 0% cpu 7.071 total# time /usr/local/bin/umount.s3ql /s3/s3ql-‐fs/usr/local/bin/umount.s3ql /s3/s3ql-‐fs 0.14s user 0.05s system 11% cpu1.701 total
s3qlrm の場合
# time s3qlrm /s3/s3ql-‐fs/test-‐dirs3qlrm /s3/s3ql-‐fs/test-‐dir 0.14s user 0.01s system 30% cpu 0.489 total# time /usr/local/bin/umount.s3ql /s3/s3ql-‐fs/usr/local/bin/umount.s3ql /s3/s3ql-‐fs 0.16s user 0.03s system 11% cpu1.698 total
ファルシステム内でのコピー
s3qlcp source targetを使えば効率的に処理が行われます。
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
15
cp –rとrm –r の 速度# time cp -‐r /boot /lib/modules /s3/s3ql-‐fs/test-‐dir/cp -‐r /boot /lib/modules /s3/s3ql-‐fs/test-‐dir/ 0.01s user 0.18s system 2% cpu 7.180 total# time rm -‐r /s3/s3ql-‐fs/test-‐dir/rm -‐r /s3/s3ql-‐fs/test-‐dir/ 0.00s user 0.03s system 0% cpu 7.071 total# time /usr/local/bin/umount.s3ql /s3/s3ql-‐fs/usr/local/bin/umount.s3ql /s3/s3ql-‐fs 0.14s user 0.05s system 11% cpu1.701 total
# /usr/local/bin/mount.s3ql -‐-‐cachedir /var/cache/s3ql s3://s3ql-‐bucket /s3/s3ql-‐fs# time cp -‐r /boot /lib/modules /s3/s3ql-‐fs/test-‐dir/cp -‐r /boot /lib/modules /s3/s3ql-‐fs/test-‐dir/ 0.03s user 0.13s system 3% cpu 4.611 total# time /usr/local/bin/umount.s3ql /s3/s3ql-‐fs/usr/local/bin/umount.s3ql /s3/s3ql-‐fs 0.14s user 0.06s system 0% cpu58.982 total
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
16
s3fs/riofs/goofys 比較EC2インスタンスから実施
テストデータサイズ# du -‐sk /boot /lib/modules25044 /boot30724 /lib/modules# find /boot /lib/modules -‐type f -‐print | wc -‐l995
事前に一度cp -‐r /boot /lib/modules /s3/test-‐bucket/test-‐dir/を実行してファイルをキャッシュに載せています。
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
17
s3fs# /usr/local/bin/s3fs test-‐bucket /s3/test-‐bucket -‐o rw,allow_other,use_cache=/var/cache/s3fs# mkdir /s3/test-‐bucket/test-‐dir# time cp -‐r /boot /lib/modules /s3/test-‐bucket/test-‐dir/ cp -‐r /boot /lib/modules /s3/test-‐bucket/test-‐dir 0.02s user 0.16s system 0% cpu 4:26.14 total# time rm -‐r /s3/test-‐bucket/test-‐dirrm -‐r /s3/test-‐bucket/test-‐dir 0.01s user 0.04s system 0% cpu 1:10.38 total# fusermount -‐u /s3/test-‐bucket
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド分科会
CD
P議論会
#5
18
s3fs cpioでコピー# time find boot lib/modules -‐print | cpio -‐pdm /s3/test-‐bucket/test-‐dir106782 blocksfind boot lib/modules -‐print 0.00s user 0.00s system 83% cpu 0.003 totalcpio -‐pdm /s3/test-‐bucket/test-‐dir 0.10s user 0.81s system 0% cpu 9:23.19 total# time rm -‐r /s3/test-‐bucket/test-‐dirrm -‐r /s3/test-‐bucket/test-‐dir 0.00s user 0.04s system 0% cpu 52.469 total
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド分科会
CD
P議論会
#5
19
riofs# /usr/local/bin/riofs test-‐bucket /s3/test-‐bucket# mkdir /s3/test-‐bucket/test-‐dir# time cp -‐r /boot /lib/modules /s3/test-‐bucket/test-‐dir/ cp: error writing ‘/s3/test-‐bucket/test-‐dir/modules/3.13.0-‐48-‐generic/kernel/arch/x86/kvm/kvm.ko’: No such file or directorycp: error writing ‘/s3/test-‐bucket/test-‐dir/modules/3.13.0-‐48-‐generic/kernel/arch/x86/kvm/kvm-‐amd.ko’: No such file or directory
: (以下略)コピーエラーがザクザク出るcp -‐r /boot /lib/modules /s3/test-‐bucket/test-‐dir/ 0.01s user 0.11s system 0% cpu 31.318 total# time rm -‐r /s3/test-‐bucket/test-‐dirrm: cannot remove ‘/s3/test-‐bucket/test-‐dir/boot/grub/i386-‐pc/cmdline_cat_test.mod’: No such file or directoryrm: cannot remove ‘/s3/test-‐bucket/test-‐dir/boot/grub/i386-‐pc/mda_text.mod’: No such file or directory
: (以下略)削除エラーがザクザク出るrm -‐r /s3/test-‐bucket/test-‐dir 0.03s user 0.03s system 0% cpu 47.312 total
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
20
riofs cpioでコピー# time find boot lib/modules -‐print | cpio -‐pdm /s3/test-‐bucket/test-‐dir106782 blocksfind boot lib/modules -‐print 0.00s user 0.00s system 6% cpu 0.046 totalcpio -‐pdm /s3/test-‐bucket/test-‐dir 0.08s user 0.69s system 2% cpu33.614 total# time rm -‐r /s3/test-‐bucket/test-‐dirrm: cannot remove ‘/s3/test-‐bucket/test-‐dir/boot/grub/i386-‐pc/cmdline_cat_test.mod’: No such file or directoryrm: cannot remove ‘/s3/test-‐bucket/test-‐dir/boot/grub/i386-‐pc/mda_text.mod’: No such file or directory
: (以下略)削除エラーがザクザク出るのは一緒
rm -‐r /s3/test-‐bucket/test-‐dir 0.02s user 0.04s system 0% cpu46.314 total
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
21
goofys# /usr/local/bin/goofys test-‐bucket /s3/test-‐bucket# mkdir /s3/test-‐bucket/test-‐dir# time cp -‐r /boot /lib/modules /s3/test-‐bucket/test-‐dircp: cannot create symbolic link ‘/s3/test-‐bucket/test-‐dir/modules/3.13.0-‐48-‐generic/build’: Function not implementedcp: error writing ‘/s3/test-‐bucket/test-‐dir/modules/3.13.0-‐48-‐generic/kernel/arch/x86/kvm/kvm.ko’: Invalid argumentcp: failed to close ‘/s3/test-‐bucket/test-‐dir/modules/3.13.0-‐48-‐generic/kernel/arch/x86/kvm/kvm.ko’: Invalid argument
: (以下略) コピーエラーがザクザク出る
cp -‐r /boot /lib/modules /s3/test-‐bucket/test-‐dir 0.03s user 0.12s system 0% cpu 1:24.36 total# time rm -‐r /s3/test-‐bucket/test-‐dirrm -‐r /s3/test-‐bucket/test-‐dir 0.00s user 0.05s system 0% cpu39.570 total# fusermount -‐u /s3/test-‐bucket
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
22
エラーメッセージ# grep goofys /var/log/syslog | grep fuse.ERROR | head -‐5May 10 18:45:50 ops-‐hub /usr/local/bin/goofys[2479]: fuse.ERRORWriteFile: only sequential writes supported 338 test-‐dir/modules/3.13.0-‐48-‐generic/kernel/arch/x86/kvm/kvm.ko [327680 331776]May 10 18:45:50 ops-‐hub /usr/local/bin/goofys[2479]: fuse.ERRORWriteFile: only sequential writes supported 339 test-‐dir/modules/3.13.0-‐48-‐generic/kernel/arch/x86/kvm/kvm-‐amd.ko [36864 40960]May 10 18:45:50 ops-‐hub /usr/local/bin/goofys[2479]: fuse.ERRORWriteFile: only sequential writes supported 340 test-‐dir/modules/3.13.0-‐48-‐generic/kernel/arch/x86/kvm/kvm-‐intel.ko [61440 69632]May 10 18:45:52 ops-‐hub /usr/local/bin/goofys[2479]: fuse.ERRORWriteFile: only sequential writes supported 368 test-‐dir/modules/3.13.0-‐48-‐generic/kernel/crypto/tcrypt.ko [20480 24576]May 10 18:46:06 ops-‐hub /usr/local/bin/goofys[2479]: fuse.ERRORWriteFile: only sequential writes supported 561 test-‐dir/modules/3.13.0-‐48-‐generic/kernel/drivers/md/bcache/bcache.ko[176128 180224]
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
23
goofys cpioでコピー# time find boot lib/modules -‐print | cpio -‐pdm /s3/test-‐bucket/test-‐dircpio: /usr/src/linux-‐headers-‐3.13.0-‐48-‐generic: Cannot create symlink to `/s3/test-‐bucket/test-‐dir/lib/modules/3.13.0-‐48-‐generic/build': Function not implemented106782 blocksfind boot lib/modules -‐print 0.00s user 0.00s system 14% cpu0.019 totalcpio -‐pdm /s3/test-‐bucket/test-‐dir 0.07s user 0.55s system 0% cpu2:03.93 total# time rm -‐r /s3/test-‐bucket/test-‐dirrm -‐r /s3/test-‐bucket/test-‐dir 0.02s user 0.03s system 0% cpu46.708 total# fusermount -‐u /s3/test-‐bucket
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
24
AWS CLIコピー
# time aws s3 cp /boot s3://test-‐bucket/test-‐dir -‐-‐recursiveaws s3 cp /boot s3://test-‐bucket/test-‐dir -‐-‐recursive 0.97s user 0.07s system 30% cpu 3.431 total# time aws s3 cp /lib/modules s3://test-‐bucket/test-‐dir -‐-‐recursiveaws s3 cp /lib/modules s3://test-‐bucket/test-‐dir -‐-‐recursive 37.73s user 3.00s system 39% cpu 1:43.51 total
削除
# time aws s3 rm s3://test-‐bucket/test-‐dir -‐-‐recursiveaws s3 rm s3://test-‐bucket/test-‐dir -‐-‐recursive 36.13s user 1.43s system 58% cpu 1:04.68 total
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
25
実行時間
cp -r rm -r find+cpio rm -rs3fs 4:26.14 秒 1:10.38 秒 9:23.10 秒 52.47 秒riofs × 32.89 秒 × 47.31 秒 33.61 秒 ×46.31 秒goofys ×1:24.36 秒 39.57 秒 2:03.93 秒 46.71 秒aws cli 1:46.94 秒 1:04.68 秒s3ql 7.18 秒 7.07 秒
2016
/5/1
4JA
WS-
UG
アーキテクチャ専門支部
ハイブリッドクラウド
分科会
CDP議
論会
#5
26
普通のファイルシステムのつもりで使ってはいけません。ファイルアクセスのパターンによってはエラーが起きます。
cpコマンドは効率を上げるため、mmapしているはず。
aws cli の使い勝手がよくなっており、意外と悪くない結果
× は実行時にエラーが発生したものそれぞれ1回だけの実行時間であり、定量的な測定値ではありません
umount時 58.98 秒