はじめに
SoftLayer object storageはOpenStack Swiftベースで構成されているのですが、現在色々な制約があります。簡単にまとめてみましょう、というのがこの記事の目的です。
20MB問題(SoftLayerのCustomer Portalの制約)
SoftLayerのCustomer Portal経由では、実は20MB以上のファイルをupload/downloadできません。この制約はKnowledgeLayerにも記載があります。
http://knowledgelayer.softlayer.com/procedure/add-object-file
http://knowledgelayer.softlayer.com/procedure/add-file-folder-or-container
5GB問題(OpenStack Swiftの制約)
REST APIを使えば20MB以上のファイルを送ることはできるのですが、OpenStack Swiftは5GB以上のファイルを扱えないため、5GB以下に分割して送付するなどの仕組みが別途必要になります。一番簡単なのは、python-swiftやCyberduckのような専用ツールを使用することです。
その他の制約
以下は、python-swiftを使って取得した東京DCのSoftLayer OpenStack swiftの設定情報になります。
例えば、
- OpenStack swiftのバージョンが2.7.0.post10. https://github.com/openstack/swift/blob/master/CHANGELOG によると、Mitakaのようです。
- max_file_sizeで上記の1ファイルサイズあたり5GBの制約が設定されている。
- SLO(Static Large Object)使用時に、max_manifest_segmentsで1000分割までに制限されている。
などを確認することができます。
# swift capabilities
Core: swift
Options:
account_autocreate: True
account_listing_limit: 10000
allow_account_management: True
container_listing_limit: 10000
extra_header_count: 0
max_account_name_length: 256
max_container_name_length: 256
max_file_size: 5368709122
max_header_size: 8192
max_meta_count: 90
max_meta_name_length: 128
max_meta_overall_size: 4096
max_meta_value_length: 256
max_object_name_length: 1024
policies: [{'default': True, 'name': 'standard', 'aliases': 'standard'}]
strict_cors_mode: True
valid_api_versions: ['v1', 'v1.0']
version: 2.7.0.post10
Additional middleware: account_quotas
Additional middleware: bulk_delete
Options:
max_deletes_per_request: 10000
max_failed_deletes: 1000
Additional middleware: bulk_upload
Options:
max_containers_per_extraction: 10000
max_failed_extractions: 1000
Additional middleware: container_quotas
Additional middleware: formpost
Additional middleware: slo
Options:
max_manifest_segments: 1000
max_manifest_size: 2097152
min_segment_size: 1
Additional middleware: staticweb
Additional middleware: tempurl
Options:
incoming_allow_headers: []
incoming_remove_headers: ['x-timestamp']
methods: ['GET', 'HEAD', 'PUT', 'POST', 'DELETE']
outgoing_allow_headers: ['x-object-meta-public-*']
outgoing_remove_headers: ['x-object-meta-*']
Additional middleware: versioned_writes