Amazon S3をLinuxファイルシステムにする


Windowsでのオフラインファイル、Linuxでのstub fileについて調査していたら、Amazon S3を使ったストレージの話を見つけた。
本題には関係なかったんだけど、興味深かったのでメモ書き。

s3fs
Linux FUSEを使ったファイルシステム。
1ファイルの最大サイズは64GBまで。
ローカルディスクにキャッシュフォルダを指定できる(use_cache)
Amazon Reduced Redundancy Storage に対応

S3QL
Amazon S3以外にも、Google StorageやOpenStackに対応しているファイルシステム。
Linux, FreeBSD, MacOS Xに対応している。
1ファイルの最大サイズは2TBまで。
内部でPython APSWを利用しているため、別途インストールが必要。

ローカルディスクにキャッシュフォルダを指定できる(–cachedir)
Amazon Reduced Redundancy Storage は非対応

S3QL User’s Guideを見る限り、必要な情報はちゃんと揃っている感じ

Opendedupという重複排除機能搭載のLinux/Windows向けファイルシステム


2024/04/23追記

2024年4月現在、Opendedupのサイト自体は存続している。

githubでの開発状況を見ると2022年8月の修正が最後で、またまとめた形でのリリースは2016年8月のver 3.2.1が最後となっているようだが、メインサイトの”Changes“には「ver 3.5.7」、”Download“では「The most current version is 3.10.8.0」という記述があるので、開発は続いている模様。

とはいえ、サイト上の対応OS記述がUbuntu 14.04やWindows Server 2012だったりするあたりでちょっと怪しい・・・


Opendedupという重複排除機能搭載のファイルシステムを発見した。

ファイルシステム層はCで作られているが、そこより下層の重複排除処理やデータ書き込み処理部分についてはJavaで作られているとのこと。

重複排除以外にも、レプリケーション機能もあるようだ。
(SDFS Volume Replication)

Cloud Based Deduplication Quick Start Guideを見ると、Amazon S3や、Windows Azureのストレージを、Opendedupeで直接利用できるようだ。

Linux環境では、FUSEを使ってマウントする。

Windows環境では、Dokan(以前は http://dokan-dev.net/ だったが2021年時点では消滅)というWindows版FUSEみたいなのを使うが、Opendedup配布パッケージに組み込み済みなので別途インストールする必要はない。
なお、Dokanは「土管」が語源のようです。(Dokanライブラリの説明 http://dokan-dev.net/about/ )

OpenDedup Deduplication NAS ApplianceというOVFテンプレートの仮想マシンも用意されている。

こっちにはSDFS Manager というWeb GUIプログラムが同梱されているようなのだが、スクリーンショットを見る限りでは、かなりちゃんとしている雰囲気が・・・

SSD+SATAのハイブリッドストレージ Nimble Storageについて調べてみた



Nimble Storageというストレージプロダクトがあるらしい。
それについて調べたことを書いてみる。
うたい文句をみるとTintri VMstoreと似てる感じがするなぁ・・・と思いつつ内容を調査した。

なお、これは以前書いた「Nimble Storage」という記事についてのアップデートです。
簡単に言えば、書いた記事には誤りがあったための更新ついでに、競合との比較です。

Tintri VMstoreと大きく違う点

・Nimble StorageはiSCSIストレージ
 汎用的に使えるiSCSIストレージ
 VMware/Hyper-V/通常のWindows/Citrixで使える
 TintriはNFSストレージで、さらにVMware以外は公式にサポートしない

・SSDはRead Cacheとして使用
 実体は全てSATA HDD上に置かれている
 Tintriは、SSDとSATA HDDのどちらかに置かれており、必要に応じて自動的に移動する

・Web GUI以外の管理手法が完備されている
 SNMP MIB、CLI操作が使える
 Tintriは、Web GUI以外に無い

・vSphere関連のプラグインが一通り揃っている
 VAAI, vSphere Client plugin, SRM pluginがある。
 2013年5月現在TintriはVAAIのみ

・VSS連携も可
 WindowsのVolume Shadowcopy Serviceとの連携も可能

・レプリケーション機能を初期リリースからサポート
 Tintriは、最新のver2.0でサポートのはずだが、2013年5月現在入手できず。

・容量拡張手法がいくつかある
 容量が足らない→Shelf増加(パフォーマンス低下は無い)
 パフォーマンスが足らない1→SSDの容量アップ(オンラインで実施可能)
 パフォーマンスが足らない2→システム追加+クラスタ化
 Tintriの場合、「システム追加」しかない

・複数システムをクラスタ化できる
 複数のNimble Storageを1システムの様に取り扱うことができる
 ユーザはNimbleを使い分ける、ということを意識する必要は無い
 Tintriの場合、明示的に使い分ける必要がある。

・Web GUIからシステムアップデートができる
 Web GUIからシステムアップデートができる、というのは良くあるが
 アップデートするバージョンを複数から選択できる、というのは珍しい。
 最新は嫌、とか、導入済みのものと合わせたい、という場合に便利。
 Tintriは、本体にキーボードとUSBメモリを取り付けて、コンソール操作でのアップデート。

細かな話

・実データをHDDに書くけど遅いんじゃないの?
もちろん、まともに書くと遅いので、うまくごまかしています。

書き込まれたデータはある一定サイズになるまで、メモリ(NVRAM)上にため込まれます。
既定サイズを超えたら、データ圧縮をおこない、HDDに書き込みます。
ここで既定されているサイズは、SATA HDD 11本で構成されたRAID6に書き込む際に、最速シーケンシャルwriteになるように設定されている。(以降「writing block」と呼びます。なおこの表記はオフィシャルではありません)
つまり、速度が落ちるランダムwriteを排除している、ということになる。

・データ書き換え時ってどうしてるの?
データが書き換えられた時は、書き換え後のデータは通常のwriteデータと共にメモリ上にため込まれます。
そして、通常の書き込みプロセスと同様にwriting block単位で圧縮書き込みされます。
書き換え前のデータは不要になりますが、これはひとまず、メタデータ上のみで無効化されます。
その後、システム負荷を見計らいつつ、データ再配置処理がおこなわれ、空き領域が回収されます。

・え?データは圧縮されてるのに、再配置ってどうやるの?
はい、データが圧縮書き込みされているので、単純な再配置処理ではありません。
再配置は、不要になったデータが含まれているwriting block単位でおこなわれます。
まず、writing block内にある有効なデータをメモリ上に読み込みます。
この読み込んだデータと、通常のwriteデータを合わせて、新規のwriting blockとして、ディスクに書き込みをおこないます。
その後に、元々のwriting blockを無効化し、再利用可能状態にします。

・SSDを冗長化してないけどいいの?
キャッシュでしかないので問題ない。
壊れたらそのSSDを使わなくなるだけで、他のSSDを使って改めてキャッシュされる。
SSDを交換したら、改めて使用される。

・いろいろモデルがあるけどどういう違い?
CS2xxとCS4xxは、CPUの違い
CS220/240/260およびCS420/440/460は、それぞれSATA HDDの容量の違い。
Baseモデルとx2 Flashモデル、x4 Flashモデルの違いは、4本入っているSSDの容量の違い。
例えば、CS220のBaseモデルだったら80GB SSDが4本で320GB、という感じ。

・複数Shelfとかクラスタを組んだ時とかってデータ配置どうなるの?
初期配置としては、均等になるようばらばらに割り振る。
使っていくうちにデータ使用量の偏りが出てくる。
そのような場合は、Re-balance処理が実施され、均等になるように再配置される。
Re-balance処理は低プライオリティで実行されるためパフォーマンス影響は少ない。

・いい資料が見付からないんだけど
Nimble storage Communityを探すといろいろ出てくるよ。

IBM版LTFSをRHEL5で使ってみた



IBMのLTOチェンジャーを使ってLTFSを構築することになったので、やってみた。

用意するもの
・Linux用LTOドライバ lin_tape
 配布はlin_tape-バージョン.src.rpmという形のsource rpmなので、rpmbuildでコンパイルする
・IBM版LTFS LE(Library Edition)
 IBMページを起点に入手・・・と行きたいところだが、実際には気軽に入手できないので注意。
 IBM LTOチェンジャーを買うと、IBM営業経由でSoftware CDを入手することができる。
 Webで入手できるのはCDに対するアップデータで、ベースがないと動作しない。

手順

1. lin_tapeをインストール
 インストール後、/dev/st0、/dev/nst0という形だったLTOドライブは
 /dev/IBMTape0という名前になる。
2. 現状のデバイス名確認
 # ls -l /dev/IBM*
 「IBMChanger0」はLTOチェンジャー部分のデバイス
 「IBMtape0」はLTOテープドライブ分のデバイス
3. LTFS LEをインストール
 まぁ、普通にRPMをインストール

・LTFS LEの起動
チェンジャーデバイスが「/dev/IBMchanger0」
LTFSのマウントポイントを「/ltfs」とする場合、以下の様に起動する。

[root@ltfs ~]# ltfs /ltfs -o changer_devname=/dev/IBMchanger0
LTFS14000I LTFS starting, LTFS version 2.1.2.0 (2501), log level 2
LTFS14058I LTFS Format Specification version 2.1.0
LTFS14104I Launched by "ltfs /ltfs -o changer_devname=/dev/IBMchanger0"
LTFS14105I This binary is built for Linux (x86_64)
LTFS14106I GCC version is 4.1.2 20080704 (Red Hat 4.1.2-52)
LTFS17087I Kernel version: Linux version 2.6.18-194.el5 (mockbuild@x86-005.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64
LTFS17089I Distribution: Red Hat Enterprise Linux Server release 5.5 (Tikanga)
LTFS14063I Sync type is "time", Sync time is 300 sec
LTFS17085I Plugin: Loading "ibmtape" driver
LTFS17085I Plugin: Loading "unified" iosched
LTFS17085I Plugin: Loading "ibmtape" changer
LTFS17085I Plugin: Loading "ondemand" dcache
LTFS11593I LTFS starts with a product license version (20120712_1200)
LTFS12165I lin_tape version is 1.74.0
LTFS12118I Changer identification is '3572-TL         '
LTFS12162I Vendor ID is IBM
LTFS12159I Firmware revision is 0021
LTFS12160I Changer serial is 00000XXXXXXXXXXX
LTFS12196E IOCTL: INQUIRY PAGE -1056947426 failed -20501 (err 22) 00000XXXXXXXXXXX
LTFS12165I lin_tape version is 1.74.0
LTFS12158I Opening a device through ibmtape driver (/dev/IBMtape0)
LTFS12118I Drive identification is 'ULT3580-HH5     '
LTFS12162I Vendor ID is IBM
LTFS12159I Firmware revision is BBNF
LTFS12160I Drive serial is 1068082305
LTFS17160I Maximum device block size is 1048576
LTFS13500I On-demand dentry cache is initialized
LTFS11545I Rebuilding the cartridge inventory
LTFS14506I LTFS admin server is listening on port 2112
LTFS14111I Initial setup completed successfully
LTFS14112I Invoke 'mount' command to check the result of final setup
LTFS14113I Specified mount point is listed if succeeded
[root@ltfs ~]# 

注意:自動起動してくれないので、サーバを起動するたびに実行する必要がある。

・LTFSでのデバイス認識状況を確認

[root@ltfs ~]# ltfsadmintool -I
1068082305 -> Device: /dev/IBMtape0 [ULT3580-HH5] , Library address: 257, Status: Available
[root@ltfs ~]# 

ドライブが1台であるばあい、こんな風に表示される。

・LTFS上のテープメディア認識状況を確認
「ltfsadmintool -i」で確認します。

[root@ltfs ~]# ltfsadmintool -i
BMV157L5 -> Location: Medium storage element,    Address: 4095, Capacity:   0GB, Remaining:      0GB, Status: Unknown
BMV156L5 -> Location: Medium storage element,   Address: 4097, Capacity:   0GB, Remaining:      0GB, Status: Unknown
BMV158L5 -> Location: Medium storage element,   Address: 4099, Capacity:      0GB, Remaining:      0GB, Status: Unknown
[root@ltfs ~]# 

「Status: Unknown」となっている場合は、まだフォーマットされていないか、一度の読み込まれたことがないテープです。

・LTFSで利用するLTOテープをフォーマットする

[root@ltfs ~]# ltfsadmintool -t BMV157L5 -f 
LTFS15000I Starting mkltfs, LTFS version 2.1.2.0 (2501), log level 2
LTFS15041I Launched by "/opt/IBM/ltfs/bin/mkltfs -d /dev/IBMtape0 -s BMV157"
LTFS15042I This binary is built for Linux (x86_64)
LTFS15043I GCC version is 4.1.2 20080704 (Red Hat 4.1.2-52)
LTFS17087I Kernel version: Linux version 2.6.18-194.el5 (mockbuild@x86-005.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64
LTFS17089I Distribution: Red Hat Enterprise Linux Server release 5.5 (Tikanga)
LTFS15003I Formatting device '/dev/IBMtape0'
LTFS15004I LTFS volume blocksize: 524288
LTFS15005I Index partition placement policy: None
LTFS17085I Plugin: Loading "ibmtape" driver
LTFS12165I lin_tape version is 1.74.0
LTFS12158I Opening a device through ibmtape driver (/dev/IBMtape0)
LTFS12118I Drive identification is 'ULT3580-HH5     '
LTFS12162I Vendor ID is IBM
LTFS12159I Firmware revision is BBNF
LTFS12160I Drive serial is XXXXXXXXXX
LTFS17160I Maximum device block size is 1048576
LTFS17157I Changing the drive setting to write-anywhere mode
LTFS15010I Creating data partition b on SCSI partition 1
LTFS15011I Creating index partition a on SCSI partition 0
LTFS12207I Logical block protection is disabled
LTFS17165I Resetting the medium's capacity proportion
LTFS11097I Partitioning the medium
LTFS11100I Writing label to partition b
LTFS11278I Writing index to partition b
LTFS11100I Writing label to partition a
LTFS11278I Writing index to partition a
LTFS15013I Volume UUID is: ae724b01-e9ce-40b8-8786-573eab051801
LTFS15019I Volume capacity is 1425 GB
LTFS12207I Logical block protection is disabled
LTFS15024I Medium formatted successfully
Tape BMV157L5 successfully formatted or unformatted.
[root@ltfs ~]# 

なお、一度、LTFSでフォーマットしたことがあるメディアは、上記のコマンドではフォーマットできない。
「ltfsadmintool -t BMV157L5 -f — -f」というふうに「– -f」というオプションをつける必要がある。

・LTFSでフォーマットされ、認識されたことを確認
下記は、BMV157L5 とBMV156L5をフォーマットした後の表示です。

[root@ltfs ~]# ltfsadmintool -i
BMV157L5 -> Location: Data transfer element,    Address:  257, Capacity:   1327GB, Remaining:   1296GB, Status: Valid LTFS
BMV156L5 -> Location: Medium storage element,   Address: 4097, Capacity:   1327GB, Remaining:   1296GB, Status: Valid LTFS
BMV158L5 -> Location: Medium storage element,   Address: 4099, Capacity:      0GB, Remaining:      0GB, Status: Unknown
[root@ltfs ~]# 

・テープへの書き込み

/ltfs/の下を覗くと、バーコードラベルのディレクトリが表示されます。
そこにcdコマンドで移動したり、cpのコピー先として指定したりすることで
通常のファイルシステムと、ほぼ同等に使うことができます。

ネットワークストレージ業界の標準ハードウェアSupermicro 6036ST-6LR



ここ2年ぐらいの間に、いろんな形でのSSD/FlashとHDDを組み合わせた形で高速化を図っているネットワークストレージ(NFS/iSCSI)の製品が出ています。

以前、うちのblogでも紹介したTintri VMstoreNimbleStorageがそんな感じの製品です。

で・・・Tintri VMstoreは特徴がそのままだったので、すぐにわかったのですが、
NimbleStorageも、よくよく調べてみれば情報があり、正体がわかってきました・・・

どっちも、Supermicro社のSuper Storage Bridge Bay (SBB)シリーズSYS-6036ST-6LRでした。(日本の代理店ページ)

まぁ、マザーボードを2枚積んで、両方のシステムからストレージベイにアクセス出来るようなサーバ筐体で、汎用的な製品が他にないので、こうならざるおえないですけどね。

1筐体にマザーボードが2枚積まれていますが、マザーボード間は10GbpsのNIC 2組でクロス接続されており、そこを使ってアクティブ/スタンバイ監視をおこなったり、キャッシュ情報のやりとりなどをおこなったりします。
(まぁ、そこらへんは、ソフトウェア実装に依存しますが)

また、マザーボードには拡張スロットが3つ(PCIe x8が1,PCIe x4が2)と、SASポートが1つあるので、拡張性という面でもまずまずなところです。

Tintri VMstore T540の方は、拡張筐体をサポートしていませんが、
NimbleStorage CS2xxシリーズの方は、拡張筐体をサポートしています。

まぁ、肝心なのは上に載せるソフトウェアの問題なので、ハードウェアが一緒であったとしても、違いが出せれば問題ないですけどね