{"id":772,"date":"2011-01-18T12:01:03","date_gmt":"2011-01-18T03:01:03","guid":{"rendered":"http:\/\/www.creationline.com\/?p=772"},"modified":"2014-02-07T16:20:03","modified_gmt":"2014-02-07T07:20:03","slug":"openstack-storageswift-%e8%aa%bf%e6%9f%bb%e5%a0%b1%e5%91%8a%e6%9b%b8","status":"publish","type":"post","link":"https:\/\/www.creationline.com\/tech-blog\/uncategorized\/772","title":{"rendered":"OpenStack Storage(Swift) \u8abf\u67fb\u5831\u544a\u66f8"},"content":{"rendered":"<p>2011\u5e741\u670818\u65e5<\/p>\n<p>1. \u6982\u8981<br \/>\nSwift \u306f OpenStack \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u958b\u767a\u3057\u3066\u3044\u308b\u5206\u6563\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u3067\u3042\u308b\u3002OpenStack \u306f\u3001\u30af\u30e9\u30a6\u30c9\u74b0\u5883\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3042\u308a\u3001\u4eee\u60f3\u30de\u30b7\u30f3\u306e\u7ba1\u7406\u3092\u884c\u3046 Nova \u3068\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u306e Swift \u304c\u3042\u308b\u3002Swift \u306e\u4f4d\u7f6e\u3065\u3051\u3068\u3057\u3066\u306f\u3001Nova \u306e\u4eee\u60f3\u30de\u30b7\u30f3 \u306e\u30a4\u30e1\u30fc\u30b8\u306e\u4fdd\u5b58\u306a\u3069\u304c\u6319\u3052\u3089\u308c\u308b\u3002\u3057\u304b\u3057\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u6a5f\u80fd\u306f\u72ec\u7acb\u3057\u3066\u304a\u308a\u3001Nova  \u3068 \u95a2\u4fc2\u306a\u304f\u5229\u7528\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3042\u308b\u3002\u73fe\u884c\u306e\u4ed5\u69d8\u3067\u306f\u3001Nova  \u3068\u9023\u643a\u3059\u308b\u3088\u3046\u306b\u306f\u306a\u3063\u3066\u3044\u306a\u3044\u305f\u3081\u3001 \u672c\u5831\u544a\u66f8\u3067\u306f Swift \u306e\u307f\u306e\u5229\u7528\u3092\u4e2d\u5fc3\u306b\u8ff0\u3079\u308b\u3002<br \/>\nSwift \u306e\u5143\u306b\u306a\u3063\u305f\u306e\u306f\u3001Rackspace \u793e\u306e\u904b\u7528\u3059\u308b CloudFiles \u3068\u3044\u3046\u30b5\u30fc\u30d3\u30b9\u3067\u3042\u3063\u305f\u3002\u73fe\u5728 \u306f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3068\u3057\u3066\u516c\u958b\u3055\u308c\u3066\u304a\u308a\u3001\u958b\u767a\u8a00\u8a9e\u306b\u306f Python \u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u3002\u901a \u4fe1\u306b\u306f CloudFiles \u3068\u540c\u69d8\u306e\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001CyberDuck \u306a\u3069\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2 \u304b\u3089\u5229\u7528\u304c\u53ef\u80fd\u3067\u3042\u308b\u3002\u5229\u7528\u5f62\u614b\u3068\u3057\u3066\u306f\u3001Amazon  S3 \u306e\u3088\u3046\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u3084\u3001 \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u5f62\u306b\u306a\u308b\u3002Swift  \u306f\u8907\u6570\u306e\u30b5\u30fc\u30d0\u304b\u3089\u69cb\u6210\u3055\u308c\u3066\u3044\u308b\u305f \u3081\u3001\u969c\u5bb3\u306a\u3069\u3067 1 \u53f0\u306e\u30b5\u30fc\u30d0\u304c\u5229\u7528\u4e0d\u80fd\u306b\u306a\u3063\u3066\u3082\u3001\u4ed6\u306e\u30b5\u30fc\u30d0\u306b\u3088\u3063\u3066\u30b5\u30fc\u30d3\u30b9\u3092\u7d99\u7d9a\u3059\u308b\u3053\u3068 \u304c\u3067\u304d\u308b\u3002\u307e\u305f\u305d\u306e\u305f\u3081\u306e\u5197\u9577\u5316\u306e\u8a2d\u5b9a\u53ca\u3073\u3001\u5897\u8a2d\u306a\u3069\u306b\u3088\u308b\u69cb\u6210\u5909\u66f4\u306b\u4f34\u3046\u8a2d\u5b9a\u3082\u5bb9\u6613\u3067\u3042\u308b\u3002<\/p>\n<p>2. Swift \u306e\u6a5f\u80fd<br \/>\n2.1. \u60f3\u5b9a\u3059\u308b\u7528\u9014<br \/>\nSwift \u304c\u60f3\u5b9a\u3057\u3066\u3044\u308b\u7528\u9014\u3068\u3057\u3066\u306f\u3001\u5927\u5bb9\u91cf\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u53d6\u308a\u6271\u3044\u304c\u6319\u3052\u3089\u308c\u308b\u3002\u4f8b\u3048\u3070\u3001\u30d0\u30c3\u30af \u30a2\u30c3\u30d7\u30c7\u30fc\u30bf\u3084\u3001\u9759\u753b\u3084\u52d5\u753b\u7b49\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3001\u4eee\u60f3\u30de\u30b7\u30f3\u306e\u30a4\u30e1\u30fc\u30b8\u7b49\u3067\u3042\u308b\u3002\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u306e\u4e0a \u9650\u306f 5GB \u3068\u306a\u3063\u3066\u3044\u308b\u3002<\/p>\n<p>2.2. \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u30b3\u30f3\u30c6\u30ca<br \/>\nSwift \u3067\u306e\u7528\u8a9e\u3068\u3057\u3066\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u30b3\u30f3\u30c6\u30ca\u304c\u3042\u308b\u3002\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3044\u308f\u3086\u308b\u30d5\u30a1\u30a4\u30eb\u3067\u3042\u308a\u3001\u30a2 \u30c3\u30d7\u30ed\u30fc\u30c9\u3084\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306e\u5bfe\u8c61\u306b\u306a\u308b\u3002\u30b3\u30f3\u30c6\u30ca\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ea\u30b9\u30c8\u3068\u5b9a\u7fa9\u3055\u308c\u3066\u304a\u308a\u3001\u3044\u308f\u3086\u308b \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u3088\u3046\u306b\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u4e00\u89a7\u3092\u63d0\u4f9b\u3059\u308b\u3002\u305f\u3060\u3057\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3068\u9055\u3044\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u4e2d\u306b\u30b3\u30f3\u30c6\u30ca \u3092\u4f5c\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u3002\u30b3\u30f3\u30c6\u30ca\u306f\u3042\u304f\u307e\u3067\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ea\u30b9\u30c8\u3092\u6271\u3046\u305f\u3081\u3067\u3042\u308b\u3002\u305f\u3060\u3057\u30b3\u30f3\u30c6\u30ca\u306e \u4e2d\u3067\u3042\u308c\u3070\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3082\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u3057\u3066\u4f5c\u6210\u53ef\u80fd\u3067\u3042\u308b\u3002<\/p>\n<p>2.3. \u30e6\u30fc\u30b6\u8a8d\u8a3c<br \/>\nSwift \u3067\u306f\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u5229\u7528\u3059\u308b\u969b\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\u8a8d\u8a3c\u306e\u624b\u9806\u304c\u5fc5\u8981\u3068\u306a\u308b\u3002Swift \u3067\u306f\u30a2\u30ab\u30a6\u30f3 \u30c8\u306b\u95a2\u3059\u308b\u60c5\u5831\u306f 3  \u3064\u3042\u308a\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\u540d\u3001\u30e6\u30fc\u30b6\u540d\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u3068\u306a\u3063\u3066\u3044\u308b\u3002\u8a8d\u8a3c\u304c\u6210\u529f\u3059\u308b\u3068\u3001 Token \u3068 URL \u304c\u767a\u884c\u3055\u308c\u308b\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u8a8d\u8a3c\u5f8c\u3001\u767a\u884c\u3055\u308c\u305f Token \u3092\u7528\u3044\u3066\u3001URL \u306b\u5bfe\u3057\u3066 \u901a\u4fe1\u3092\u884c\u3046\u3002<\/p>\n<p>2.4. \u5197\u9577\u5316\u3068\u8907\u88fd<br \/>\nSwift \u3067\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u53ca\u3073\u30b3\u30f3\u30c6\u30ca\u3092\u8907\u6570\u306e\u30b5\u30fc\u30d0\u306b\u4fdd\u5b58\u3059\u308b\u3053\u3068\u3067\u5197\u9577\u5316\u3057\u3001\u969c\u5bb3\u7b49\u3067\u7279 \u5b9a\u306e\u30b5\u30fc\u30d0\u304c\u5229\u7528\u3067\u304d\u306a\u304f\u306a\u3063\u305f\u5834\u5408\u3067\u3082\u3001\u30b5\u30fc\u30d3\u30b9\u306e\u7d99\u7d9a\u3092\u53ef\u80fd\u306b\u3057\u3066\u3044\u308b\u3002<br \/>\n\u30aa \u30d6 \u30b8 \u30a7 \u30af \u30c8 \u306a \u3069\u306e \u30c7 \u30fc \u30bf\u3092 \u3001 \u8907 \u6570 \u306e \u30b5\u30fc \u30d0\u306b \u4fdd \u5b58\u3059 \u308b \u3053 \u3068 \u3067 \u5197\u9577 \u5316 \u3057 \u3066 \u3044\u308b \u3002 \u5f8c \u8ff0 \u3059\u308b Replicator \u306b\u3088\u3063\u3066\u3001\u30b5\u30fc\u30d0\u306e\u9593\u3067\u5b9a\u671f\u7684\u306b\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3057\u3066\u3044\u308b\u3002\u307e\u305f\u3001\u524a\u9664\u306b\u95a2\u3057\u3066\u3082\u30010 \u30d0\u30a4\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3059\u308b\u3053\u3068\u3067\u3001\u5168\u3066\u306e\u30b5\u30fc\u30d0\u4e0a\u304b\u3089\u306e\u524a\u9664\u3092\u5b9f\u73fe\u3057\u3066\u3044\u308b\u3002<\/p>\n<p>3. \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3<\/p>\n<p>Swift \u306e\u5168\u4f53\u69cb\u6210\u56f3\u3092\u4ee5\u4e0b\u306b\u793a\u3059\u3002<br \/>\n<a href=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image002.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-773\" title=\"image002\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image002.jpg\" alt=\"\" width=\"435\" height=\"291\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image002.jpg 568w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image002-360x241.jpg 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image002-300x200.jpg 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><\/a><\/p>\n<p>\u56f3 1  \u5168\u4f53\u69cb\u6210\u56f3<\/p>\n<p>Swift \u3092\u69cb\u6210\u3059\u308b\u30b5\u30fc\u30d0\u3068\u3057\u3066\u306f\u4ee5\u4e0b\u306e\u3082\u306e\u304c\u3042\u308b\u3002<br \/>\n\u30fb\tAuth Server<br \/>\n\u30fb\tProxy Server<br \/>\n\u30fb\tObject Server<br \/>\n\u30fb\tContainer Server<br \/>\n\u30fb\tAccount Server<\/p>\n<p>\u307e \u305f \u56f3\u4e2d\u306b \u306f \u306a \u3044\u304c \u3001 \u30c7\u30fc \u30bf \u3092 \u4fdd \u5b58 \u3059\u308b \u30b5 \u30fc\u30d0 \u306b \u95a2 \u3057 \u3066 \u306f \u3001 \u305d \u306e \u30b5 \u30fc\u30d0 \u5411\u3051 \u306b Auditor \u3001<br \/>\nReplicator\u3001Updater\u3001Reaper \u3068\u3044\u3046\u6a5f\u69cb\u304c\u5b58\u5728\u3059\u308b\u3002<\/p>\n<p>3.1. Auth Server<\/p>\n<p>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u5229\u7528\u3059\u308b\u969b\u306b\u3001\u8a8d\u8a3c\u3092\u884c\u3046\u3002\u307e\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u4f5c\u6210\u306b\u95a2\u3057\u3066\u3082\u3001Auth \u30b5 \u30fc\u30d0\u4e0a\u3067\u884c\u3046\u3002\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\u3057\u305f\u969b\u3001Account Server \u306b\u305d\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u305f\u3081\u306e URL \u306e\u60c5\u5831\u304c\u4fdd\u5b58\u3055\u308c\u308b\u304c\u3001\u30e6\u30fc\u30b6\u540d\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\u3068\u3044\u3063\u305f\u8a8d\u8a3c\u306b\u95a2\u3059\u308b\u60c5\u5831\u306f Auth Server \u4e0a\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u3057\u3066\u4fdd\u5b58\u3057\u3066\u3044\u308b\u3002<\/p>\n<p>3.2. Proxy Server<\/p>\n<p>\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u4ef2\u4ecb\u3092\u884c\u3046\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u8a8d\u8a3c\u5f8c\u3001Proxy  Server \u3092\u7d4c\u7531\u3057\u3066\u30b5\u30fc\u30d3\u30b9\u3092 \u53d7\u3051\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u306f Proxy Server \u3068\u306e\u307f\u901a\u4fe1\u3092\u884c\u3063\u3066\u3044\u308b\u3088\u3046\u306b\u898b\u3048\u308b\u3002\u3057\u304b\u3057\u5b9f \u969b\u306f Proxy Server \u304c\u4ed6\u306e\u30b5\u30fc\u30d0\u3068\u901a\u4fe1\u3092\u884c\u3044\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u7b49\u306e\u63d0\u4f9b\u3092\u3057\u3066\u3044\u308b\u3002\u307e\u305f\u4e00 \u822c\u7684\u306a HTTP  \u306e Proxy \u3068\u306f\u7570\u306a\u308a\u3001\u30d5\u30a1\u30a4\u30eb\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u306a\u3069\u306f\u884c\u308f\u306a\u3044\u3002<\/p>\n<p>3.3. Object Server<\/p>\n<p>Object  Server \u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u6271 \u3046\u30b5\u30fc\u30d0\u3067\u3042\u308a\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4fdd \u5b58 \u30fb\u53d6 \u5f97 \u30fb\u524a \u9664 \u3068\u3044\u3063 \u305f\u64cd \u4f5c \u304c\u884c \u3048\u308b\u3002\u524d \u8ff0 \u306e\u3068\u304a\u308a\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u30d5\u30a1\u30a4\u30eb\u3068\u8003 \u3048\u3066\u826f \u3044\u304c\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3082\u30aa\u30d6\u30b8 \u30a7\u30af\u30c8\u306e\uff11\u3064\u3068\u3057\u3066\u6271 \u308f\u308c\u308b\u3002\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u4ed8 \u968f\u3059\u308b\u30e1\u30bf\u30c7\u30fc\u30bf\u3082\u4fdd \u5b58 \u3057\u3066\u3044\u308b\u3002<\/p>\n<p>3.4. Container Server<\/p>\n<p>Container Server \u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ea\u30b9\u30c8\u3092\u6271\u3044\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u3088\u3046\u306b\u4f5c\u7528\u3059\u308b\u3002\u30c7\u30a3 \u30ec\u30af\u30c8\u30ea\u3068\u306e\u9055\u3044\u3068\u3057\u3066\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u4e2d\u306b\u30b3\u30f3\u30c6\u30ca\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u3002\u30b3\u30f3\u30c6\u30ca \u306f\u3042\u304f\u307e\u3067\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ea\u30b9\u30c8\u3067\u3042\u308a\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u30ea\u30b9\u30c8\u3067\u306f\u306a\u3044\u305f\u3081\u3067\u3042\u308b\u3002\u524d\u8ff0\u306e \u3068\u304a\u308a\u3001\u30b3\u30f3\u30c6\u30ca\u306e\u4e2d\u306b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3059\u308b\u5834\u5408\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u3057\u3066\u4f5c\u6210\u3055\u308c\u308b\u3002<\/p>\n<p>3.5. Account Server<\/p>\n<p>Container  Server \u304c\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ea\u30b9\u30c8\u3092\u6271\u3046\u3088\u3046\u306b\u3001Account Server \u306f\u305d\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u4fdd\u6301 \u3057\u3066\u3044\u308b\u30b3\u30f3\u30c6\u30ca\u306e\u30ea\u30b9\u30c8\u3092\u6271\u3046\u3002<\/p>\n<p>3.6. Auditor<\/p>\n<p>Auditor \u306f\u30b7\u30b9\u30c6\u30e0\u3092\u76e3\u8996\u3059\u308b\u3002\u30c7\u30fc\u30bf\u306e\u7570\u5e38\u3092\u691c\u77e5\u3057\u305f\u5834\u5408\u3001\u4ed6\u306e\u30b5\u30fc\u30d0\u306b\u3042\u308b\u30ec\u30d7\u30ea\u30ab\u3092\u7528 \u3044\u3066\u4e0a\u66f8\u304d\u3055\u308c\u308b\u3002\u30a8\u30e9\u30fc\u306b\u3064\u3044\u3066\u306f\u30ed\u30ae\u30f3\u30b0\u3055\u308c\u308b\u3002<\/p>\n<p>3.7. Replicator<\/p>\n<p>Replicator \u306f\u30c7\u30fc\u30bf\u306e\u8907\u88fd\u3092\u884c\u3046\u3002\u30cf\u30c3\u30b7\u30e5\u3092\u4f7f\u7528\u3057\u3066\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30c7\u30fc\u30bf\u3092\u6bd4\u8f03\u3057\u3001\u7570\u306a\u3063\u3066 \u3044\u305f\u5834\u5408\u306b\u8907\u88fd\u3092\u884c\u3046\u3002\u8907\u88fd\u306b\u306f rsync \u3092\u7528\u3044\u3066\u3044\u308b\u3002\u307e\u305f\u524a\u9664\u306b\u95a2\u3057\u3066\u306f\u30010 \u30d0\u30a4\u30c8\u306e\u30d5\u30a1\u30a4\u30eb\u3092 \u30b3\u30d4\u30fc\u3059\u308b\u3053\u3068\u3067\u524a\u9664\u3092\u884c\u3063\u3066\u3044\u308b\u3002\u524a\u9664\u6e08\u307f\u306e\u30d5\u30a1\u30a4\u30eb\u306f.ts \u306e\u62e1\u5f35\u5b50\u304c\u4ed8\u3051\u3089\u308c\u308b\u3002<\/p>\n<p>3.8. Updater<\/p>\n<p>\u8ca0\u8377\u3084\u969c\u5bb3\u306a\u3069\u3067\u3001\u30c7\u30fc\u30bf\u306e\u4fdd\u5b58\u306b\u5931\u6557\u3057\u305f\u6642\u306e\u305f\u3081\u306e\u4ed5\u7d44\u307f\u304c Updater \u3067\u3042\u308b\u3002\u5931\u6557\u3059\u308b\u3068\u3001 \u30ed\u30fc\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u30ad\u30e5\u30fc\u306b\u5165\u308c\u3089\u308c\u308b\u3002<\/p>\n<p>3.9. Reaper<\/p>\n<p>Reaper \u306f Account  Server \u306b\u306e\u307f\u5b58\u5728\u3059\u308b\u3002\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u4f5c\u308a\u76f4\u3055\u308c\u305f\u969b\u306b\u3001\u53e4\u3044\u30a2\u30ab\u30a6\u30f3\u30c8\u306e \u30c7\u30fc\u30bf\u3092\u524a\u9664\u3059\u308b\u305f\u3081\u306e\u4ed5\u7d44\u307f\u304c Reaper \u3067\u3042\u308b\u3002\u5177\u4f53\u7684\u306b\u306f\u3001\u53e4\u3044\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u305f \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3084\u30b3\u30f3\u30c6\u30ca\u3092\u524a\u9664\u3059\u308b\u3002<\/p>\n<p>3.10.\tRing<\/p>\n<p>Proxy Server \u3084 Replicator \u304c\u3001\u4ed6\u306e\u30b5\u30fc\u30d0\u3092\u53c2\u7167\u3059\u308b\u969b\u306b Ring \u304c\u4f7f\u308f\u308c\u308b\u3002Ring \u30d5\u30a1\u30a4\u30eb \u3067\u306f\u3001\u5404\u30b5\u30fc\u30d0\u306e\u60c5\u5831\u53ca\u3073\u3001\u8907\u88fd\u3059\u308b\u6570\u3084\u5404\u30b5\u30fc\u30d0\u306e\u512a\u5148\u5ea6\u306a\u3069\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3002Ring \u306e\u4f5c\u6210 \u3084\u7de8\u96c6\u306b\u3064\u3044\u3066\u306f swift-ring-builder \u30b3\u30de\u30f3\u30c9\u3092\u4ecb\u3057\u3066\u884c\u3046\u3002Ring \u306e\u66f8\u5f0f\u3084 swift-ring-builder \u30b3\u30de\u30f3\u30c9\u306e\u4f7f\u3044\u65b9\u306b\u3064\u3044\u3066\u306f 4.5 \u7bc0\u3067\u8ff0\u3079\u308b\u3002<\/p>\n<p>4. Cloud Files \u30d7\u30ed\u30c8\u30b3\u30eb<\/p>\n<p>Swift \u3067\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30fb\u30b3\u30f3\u30c6\u30ca\u306b\u5bfe\u3057\u3066\u53d6\u5f97\u30fb\u4fdd\u5b58\u30fb\u524a\u9664\u3068\u3044\u3063\u305f\u64cd\u4f5c\u304c\u884c\u3048\u308b\u3002\u3053\u308c\u3089\u306e\u64cd\u4f5c \u306e\u305f\u3081\u306b\u3001CloudFiles \u30d7\u30ed\u30c8\u30b3\u30eb\u3068\u3044\u3046 HTTP  \u3092\u5143\u306b\u3057\u305f\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u3002<\/p>\n<p>4.1. Cloud Files \u30d7\u30ed\u30c8\u30b3\u30eb\u306e\u30e1\u30bd\u30c3\u30c9<\/p>\n<p>CloudFiles \u30d7\u30ed\u30c8\u30b3\u30eb\u3067\u306f\u4ee5\u4e0b\u306e 4 \u3064\u306e HTTP  \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3002<\/p>\n<p>\u30fb\tGET<\/p>\n<p>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u53ca\u3073\u30b3\u30f3\u30c6\u30ca\u3092\u53d6\u5f97\u3059\u308b\u3002\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5bfe\u3057\u3066 GET  \u3092\u884c\u306a\u3063\u305f\u5834\u5408\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 \u3092\u53d6\u5f97\u3059\u308b\u3002\u30b3\u30f3\u30c6\u30ca\u306b\u5bfe\u3057\u3066  GET  \u3092\u884c\u3063\u305f\u5834\u5408\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u5185\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4e00\u89a7\u3092\u53d6\u5f97\u3059 \u308b\u3002<\/p>\n<p>\u30fb\tPUT<\/p>\n<p>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3001\u53ca\u3073\u30b3\u30f3\u30c6\u30ca\u306e\u4f5c\u6210\u3092\u884c\u3046\u3002\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u30b3\u30f3\u30c6\u30ca\u306e\u4e2d\u306b\u3057\u304b<br \/>\nPUT  \u3067\u304d\u306a\u3044\u3002\u307e\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u4f5c\u6210\u6642\u306b\u3082\u3001PUT \u304c\u7528\u3044\u3089\u308c\u308b\u3002<\/p>\n<p>\u30fb\tHEAD<\/p>\n<p>GET  \u3068\u540c\u69d8\u306e\u3084\u308a\u3068\u308a\u3092\u884c\u3046\u3002\u305f\u3060\u3057\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u305d\u306e\u3082\u306e\u306f\u53d6\u5f97\u3057\u306a\u3044\u3002HTTP \u3067\u306f\u3001\u901a\u4fe1\u306e \u30c6\u30b9\u30c8\u306a\u3069\u306e\u7528\u9014\u306b\u7528\u3044\u3089\u308c\u308b\u3002Swift \u3067\u306f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306e\u969b\u306b\u3001\u683c\u7d0d\u5148\u3067\u3042\u308b\u30b3\u30f3\u30c6 \u30ca\u3084\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u5b58\u5728\u3059\u308b\u304b\u306e\u78ba\u8a8d\u7b49\u306b\u7528\u3044\u3066\u3044\u308b\u3002<\/p>\n<p>\u30fb\tDELETE<\/p>\n<p>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u53ca\u3073\u30b3\u30f3\u30c6\u30ca\u3092\u524a\u9664\u3059\u308b\u3002\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u5b58\u5728\u3057\u3066\u3044\u308b\u30b3\u30f3\u30c6\u30ca\u306f\u524a\u9664\u3067\u304d\u306a\u3044\u3002<\/p>\n<p>4.2. \u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6d41\u308c<\/p>\n<p>Cloud Files \u30d7\u30ed\u30c8\u30b3\u30eb\u3067\u306e\u3001\u5404\u30b5\u30fc\u30d0\u9593\u3067\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6d41\u308c\u3092\u56f3\u793a\u3059\u308b\u3002\u64cd\u4f5c\u3068\u3057\u3066\u306f\u30af\u30e9\u30a4 \u30a2\u30f3\u30c8\u304b\u3089\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u30b3\u30f3\u30c6\u30ca\u306b\u5bfe\u3057\u3066 GET\u30fbPUT\u30fbDELETE  \u3092\u884c\u3046\u3002\u306a\u304a\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u306e HEAD  \u306b\u3064\u3044\u3066\u306f GET \u3068\u540c\u69d8\u306e\u52d5\u4f5c\u3067\u3042\u308b\u305f\u3081\u3001\u5272\u611b\u3059\u308b\u3002<\/p>\n<p>4.2.1.  \u30a2\u30ab\u30a6\u30f3\u30c8\u4f5c\u6210<\/p>\n<p>\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\u3057\u305f\u969b\u306b\u306f\u3001Auth Server \u4e0a\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u3057\u3066\u4fdd\u5b58\u3055\u308c\u308b\u3002\u307e\u305f\u3001 \u305d\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u305f\u3081\u306e\u3001URL \u7a7a\u9593\u304c Account Server \u306b\u66f8\u304d\u8fbc\u307e\u308c\u308b\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-774\" title=\"image004\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image004.gif\" alt=\"\" width=\"435\" height=\"274\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image004.gif 566w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image004-300x188.gif 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><br \/>\n\u56f3 2  \u30a2\u30ab\u30a6\u30f3\u30c8\u4f5c\u6210<\/p>\n<p>4.2.1.  \u30a2\u30ab\u30a6\u30f3\u30c8\u8a8d\u8a3c<\/p>\n<p>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u8a8d\u8a3c\u7b49\u3092\u884c\u3046\u5834\u5408\u306f Auth Server \u3068\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u901a\u4fe1\u3092\u884c\u3044\u3001Account  Server<br \/>\n\u3084 Proxy Server \u3068\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u9593\u3067\u306f\u901a\u4fe1\u3092\u884c\u308f\u306a\u3044\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-775\" title=\"image006\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image006.gif\" alt=\"\" width=\"435\" height=\"264\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image006.gif 552w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image006-300x182.gif 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><br \/>\n\u56f3 3  \u30a2\u30ab\u30a6\u30f3\u30c8\u8a8d\u8a3c<\/p>\n<p>4.2.1.  \u30b3\u30f3\u30c6\u30ca\u306e PUT<\/p>\n<p>\u30b3\u30f3\u30c6\u30ca\u3092\u4f5c\u6210\u3059\u308b\u5834\u5408\u306e\u52d5\u4f5c\u306f\u56f3 4 \u306e\u3088\u3046\u306b\u306a\u308b\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u3001\u8a8d\u8a3c\u6642\u306b\u53d6\u5f97\u3057\u305f URL \u306b \u5bfe\u3057\u3001Token \u3092\u7528\u3044\u3066 PUT  \u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u308b\u3002Token \u306f HTTP  \u306e\u62e1\u5f35\u30d8\u30c3\u30c0\u3068\u3057\u3066\u6307\u5b9a\u3059\u308b\u3002\u3053 \u308c\u306b\u3064\u3044\u3066\u306f 6.1 \u7bc0\u3067\u5f8c\u8ff0\u3059\u308b\u3002<br \/>\nProxy Server \u304b\u3089\u306f\u3001\u307e\u305a Account Server \u306b\u5bfe\u3057\u3066 HEAD  \u304c\u5b9f\u884c\u3055\u308c\u308b\u3002\u3053\u308c\u306f PUT \u5148\u306e \u30b3\u30f3\u30c6\u30ca\u3092\u3001\u683c\u7d0d\u3059\u308b\u30a2\u30ab\u30a6\u30f3\u30c8\u30b9\u30da\u30fc\u30b9\u304c\u5b58\u5728\u3059\u308b\u304b\u306e\u78ba\u8a8d\u306e\u305f\u3081\u3068\u8003\u3048\u3089\u308c\u308b\uff48\u3002Account Server \u3078\u306e HEAD \u304c\u5b9f\u884c\u3055\u308c\u305f\u5f8c\u3001Container Server \u3078 PUT \u304c\u884c\u308f\u308c\u308b\u3002\u3053\u306e\u6642\u306b\u306f\u5197\u9577\u5316 \u306e\u305f\u3081\u3001\u8907\u6570\u306e Container Server \u306b\u5bfe\u3057\u3066 PUT  \u304c\u5b9f\u884c\u3055\u308c\u308b\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-776\" title=\"image008\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image008.gif\" alt=\"\" width=\"435\" height=\"264\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image008.gif 566w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image008-300x181.gif 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><br \/>\n\u56f3 4  \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e PUT<\/p>\n<p>4.2.2.  \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e PUT<\/p>\n<p>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092 PUT  \u3059\u308b\u5834\u5408\u3082\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089 Proxy Server \u306b\u5bfe\u3057\u3066 PUT  \u304c\u5b9f\u884c \u3055\u308c\u308b\u3002\u30b3\u30f3\u30c6\u30ca\u306e\u5834\u5408\u3068\u540c\u69d8\u306b\u3001Account Server\u3001Container Server \u305d\u308c\u305e\u308c\u306b\u5bfe\u3057\u3066 HEAD \u304c\u5b9f\u884c\u3055\u308c\u305f\u5f8c\u3001Object Server \u306b\u5bfe\u3057\u3066 PUT  \u304c\u5b9f\u884c\u3055\u308c\u308b\u3002\u8907\u6570\u306e Object Server \u306b\u5bfe\u3057\u3066 PUT  \u304c\u5b9f\u884c\u3055\u308c\u308b\u70b9\u3082\u540c\u69d8\u3067\u3042\u308b\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-777\" title=\"image010\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image010.gif\" alt=\"\" width=\"435\" height=\"264\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image010.gif 566w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image010-300x181.gif 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><br \/>\n\u56f3 5  \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e PUT<\/p>\n<p>4.2.3.  \u30b3\u30f3\u30c6\u30ca\u306e GET<\/p>\n<p>\u30b3\u30f3\u30c6\u30ca\u306e GET  \u3067\u306f\u3001\u307e\u305a Account  Server \u306b\u5bfe\u3057\u3066 HEAD  \u304c\u5b9f\u884c\u3055\u308c\u305f\u5f8c\u3001Container Server \u306b\u5bfe\u3057\u3066 GET \u304c\u5b9f\u884c\u3055\u308c\u308b\u3002PUT \u306e\u5834\u5408\u3068\u306f\u7570\u306a\u308a\u3001GET \u306f\u5358\u4e00\u306e\u30b5\u30fc\u30d0\u306b\u5bfe\u3057\u3066\u5b9f\u884c \u3055\u308c\u308b\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-778\" title=\"image012\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image012.gif\" alt=\"\" width=\"435\" height=\"264\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image012.gif 566w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image012-300x181.gif 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><br \/>\n\u56f3 6  \u30b3\u30f3\u30c6\u30ca\u306e GET<\/p>\n<p>4.2.4.  \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e GET<\/p>\n<p>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u5834\u5408\u306f\u3001Account Server \u3084 Container Server \u3068\u306e\u901a\u4fe1\u306f\u884c\u308f\u308c\u305a\u3001\u76f4\u63a5<br \/>\nObject Server \u306b\u5bfe\u3057\u3066 GET \u304c\u5b9f\u884c\u3055\u308c\u308b\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-779\" title=\"image014\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image014.gif\" alt=\"\" width=\"435\" height=\"264\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image014.gif 566w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image014-300x181.gif 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><br \/>\n\u56f3 7  \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e GET<\/p>\n<p>4.2.5.  \u30b3\u30f3\u30c6\u30ca\u306e DELETE<\/p>\n<p>\u30b3\u30f3\u30c6\u30ca\u3092 DELETE \u3059\u308b\u5834\u5408\u306f\u3001\u307e\u305a Account Server \u306b\u5bfe\u3057\u3066 HEAD \u304c\u5b9f\u884c\u3055\u308c\u305f\u5f8c\u3001 Container  Server \u306b\u5bfe\u3057\u3066 DELETE  \u304c\u5b9f\u884c\u3055\u308c\u308b\u3002DELETE \u306b\u95a2\u3057\u3066\u3082\u3001\u8907\u6570\u306e Container Server \u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3055\u308c\u308b\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-780\" title=\"image016\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image016.gif\" alt=\"\" width=\"435\" height=\"263\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image016.gif 567w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image016-300x181.gif 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><br \/>\n\u56f3 8  \u30b3\u30f3\u30c6\u30ca\u306e DELETE<\/p>\n<p>4.2.6.  \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e DELETE<\/p>\n<p>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e DELETE \u3082\u3001\u30b3\u30f3\u30c6\u30ca\u306e DELETE \u3068\u540c\u69d8\u3001Account Server \u3068 Container Server \u306b\u5bfe\u3057\u3066 HEAD  \u3092\u5b9f\u884c\u3057\u305f\u5f8c\u306b\u884c\u308f\u308c\u308b\u3002\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u5834\u5408\u3082\u3001\u8907\u6570\u306e Object Server \u304b\u3089 DELETE \u304c\u5b9f\u884c\u3055\u308c\u308b\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-781\" title=\"image018\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image018.gif\" alt=\"\" width=\"435\" height=\"264\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image018.gif 572w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image018-300x181.gif 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><br \/>\n\u56f3 9  \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e DELETE<\/p>\n<p>5. Swift \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5<\/p>\n<p>\u672c\u7ae0\u3067\u306f\u3001Swift \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806\u3092\u8aac\u660e\u3059\u308b\u3002\u4f7f\u7528\u3059\u308b OS \u306f Swift \u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u306a\u3089\u3044\u3001 Ubuntu  Server10.04 \u3092\u60f3\u5b9a\u3059\u308b\u30025.7 \u7bc0\u307e\u3067\u3067\u30011 \u53f0\u306e\u30db\u30b9\u30c8\u4e0a\u3067\u5168\u3066\u306e\u30b5\u30fc\u30d0\u3092\u52d5\u4f5c\u3055\u305b\u308b\u5834 \u5408\u306e\u8a2d\u5b9a\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u30015.9 \u7bc0\u3067\u306f\u8907\u6570\u53f0\u3067\u69cb\u6210\u3059\u308b\u65b9\u6cd5\u3092\u8ff0\u3079\u308b\u3002<\/p>\n<p>5.1. \u60f3\u5b9a\u3059\u308b\u69cb\u6210<\/p>\n<p>4.7 \u7bc0\u307e\u3067\u306f 1 \u53f0\u306e\u30db\u30b9\u30c8\u4e0a\u3067\u5168\u3066\u306e\u30b5\u30fc\u30d0\u3092\u52d5\u4f5c\u3055\u305b\u308b\u5834\u5408\u306e\u8a2d\u5b9a\u65b9\u6cd5\u3092\u8aac\u660e\u3059\u308b\u3002\u8d77\u52d5\u3055\u305b \u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u3068\u3057\u3066\u306f Auth Server\u3001Proxy \u30b5\u30fc\u30d0\u3092 1 \u30d7\u30ed\u30bb\u30b9\u305a\u3064\u3001Object Server\u3001Container Server\u3001Account Server \u3092 4 \u30d7\u30ed\u30bb\u30b9\u305a\u3064\u52d5\u4f5c\u3055\u305b\u308b\u3002<\/p>\n<p>5.2. \u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u306e\u4f5c\u6210<\/p>\n<p>Swift \u3067\u306f\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u53d6\u308a\u6271\u3046\u3053\u3068\u304c\u3067\u304d\u308b\u3002\u5b9f\u73fe\u65b9\u6cd5\u3068\u3057\u3066\u3001\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u5bfe\u5fdc\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3092\u7528\u3044\u3066\u3044\u308b\u3002\u3053\u306e\u305f\u3081 Swift \u306e\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u30b5\u30fc\u30d0\u306e\u8981\u4ef6\u3068\u3057\u3066\u3001\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u5bfe\u5fdc\u3057\u305f<br \/>\n\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u304c\u5fc5\u8981\u306b\u306a\u308b\u3002\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3068\u3057\u3066\u306f XFS \u304c\u3042\u308a\u3001\u4ee5<br \/>\n\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u4f5c\u6210\u3067\u304d\u308b\u3002<\/p>\n<p># mkfs.xfs  -i size=1024 \/dev\/sdb1<\/p>\n<p># mkdir -p \/mnt\/sdb1<\/p>\n<p>\/dev\/sdb1 \u306e\u7b87\u6240\u306f\u3001\u4f7f\u7528\u3057\u3066\u3044\u308b\u30b9\u30c8\u30ec\u30fc\u30b8\u3084\u5272\u308a\u5f53\u3066\u308b\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u756a\u53f7\u306b\u3088\u3063\u3066\u7570\u306a\u308b\u3002\u4f5c<br \/>\n\u6210\u5f8c\u3001\u4ee5\u4e0b\u306e\u884c\u3092\/etc\/fstab \u306b\u8ffd\u52a0\u3059\u308b\u3002<\/p>\n<p>\/dev\/sdb1  \/mnt\/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0<\/p>\n<p>\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3001OS \u306e\u8d77\u52d5\u6642\u306b\u81ea\u52d5\u7684\u306b\u30de\u30a6\u30f3\u30c8\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308b\u3002\u8ffd\u52a0\u5f8c\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30de<br \/>\n\u30a6\u30f3\u30c8\u51fa\u6765\u308b\u3002<\/p>\n<p># mount \/mnt\/sdb1<\/p>\n<p>\u30b5\u30fc\u30d0\u304c\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u3001\/srv \u304b\u3089\u306e\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3092\u8cbc\u308b\u3002\u3053\u308c\u306f<br \/>\n\u30c7\u30d0\u30a4\u30b9\u306e\u540d\u524d\u3068\u95a2\u4fc2\u306a\u304f\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u6307\u5b9a\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3067\u3042\u308b\u3002\u4e0b\u8a18\u306e\u4f8b\u3067\u306f\u30011\uff5e<br \/>\n4 \u306e 4 \u3064\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u3066\u3044\u308b\u3002\u307e\u305f$user:$group \u306f\u305d\u308c\u305e\u308c swift \u3092\u5b9f\u884c\u3059\u308b\u30e6\u30fc\u30b6\u3068<br \/>\n\u30b0\u30eb\u30fc\u30d7\u306b\u7f6e\u304d\u63db\u3048\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n<p># mkdir \/mnt\/sdb1\/1 \/mnt\/sdb1\/2 \/mnt\/sdb1\/3 \/mnt\/sdb1\/4 \/mnt\/sdb1\/test<\/p>\n<p># chown $user:$group \/mnt\/sdb1\/*<\/p>\n<p># mkdir \/srv<\/p>\n<p># for x in {1..4}; do ln -s \/mnt\/sdb1\/$x \/srv\/$x; done<\/p>\n<p># mkdir -p \/etc\/swift\/object-server \/etc\/swift\/container-server \t\u00a5<\/p>\n<p>\/etc\/swift\/account-server \/srv\/1\/node\/sdb1 \/srv\/2\/node\/sdb2 \/srv\/3\/node\/sdb3 \u00a5<\/p>\n<p>\/srv\/4\/node\/sdb4 \/var\/run\/swift<\/p>\n<p># chown -R $user:$group \/etc\/swift \/srv\/[1-4]\/ \/var\/run\/swift<\/p>\n<p>5.3. Swift \u306b\u5fc5\u8981\u306a\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3068\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/p>\n<p>Swift \u306b\u5fc5\u8981\u306a\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30d1\u30c3\u30b1\u30fc\u30b8\u3068\u3057\u3066\u306f\u3001\u4ee5\u4e0b\u306e\u3082\u306e\u304c\u3042\u308b\u3002<\/p>\n<p>\u2022 \tPython 2.6<br \/>\n\u2022\tRsync  3.0 \t\u203bObject Server\u3001Container Server\u3001Account Server \u306b\u306e\u307f\u5fc5\u8981<br \/>\n\u2022 \tMemcached \t\u203bProxy Server \u306b\u306e\u307f\u5fc5\u8981<\/p>\n<p>\u307e\u305f\u3001Python \u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u3057\u3066\u4ee5\u4e0b\u306e\u3082\u306e\u3082\u5fc5\u8981\u306b\u306a\u308b\u3002<\/p>\n<p>\u2022 \tEventlet 0.9.8<\/p>\n<p>\u2022\tWebOb  0.9.8<\/p>\n<p>\u2022\tSetuptools<\/p>\n<p>\u2022\tSimplejson<\/p>\n<p>\u2022\tXattr<\/p>\n<p>\u2022\tNose<\/p>\n<p>\u2022\tSphinx<\/p>\n<p>\u3053\u308c\u3089\u3092 apt-get \u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u306e\u3088\u3046\u306b\u5b9f\u884c\u3059\u308b\u3002<\/p>\n<p># apt-get install python-software-properties<\/p>\n<p># add-apt-repository ppa:swift-core\/ppa<\/p>\n<p># apt-get update<\/p>\n<p># apt-get install curl gcc bzr memcached python-configobj python-coverage \u00a5 python-dev python-nose python-setuptools python-simplejson python-xattr \u00a5 sqlite3 xfsprogs python-webob python-eventlet python-greenlet \u00a5<br \/>\npython-pastedeploy<\/p>\n<p>\u4e0a\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u306b\u306f\u3001Swift \u306e\u5165\u624b\u306b\u5fc5\u8981\u306a bazaar \u3084\u30c6\u30b9\u30c8\u7528\u306e curl \u306a\u3069\u3082\u542b\u307e\u308c\u3066\u3044\u308b\u3002<br \/>\n\u306a\u304a\u3001\u73fe\u5728\u306f bazaar \u4ee5\u5916\u306b\u3082\u516c\u5f0f\u30b5\u30a4\u30c8\u3067\u306e\u914d\u5e03\u3082\u3055\u308c\u3066\u3044\u308b\u3002\u4ed6\u306b\u3082 swift \u305d\u306e\u3082\u306e\u3092<br \/>\napt-get \u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u306b\u306a\u3063\u3066\u304a\u308a\u3001swift-proxy \u306a\u3069\u69cb\u6210\u3059\u308b\u30b5\u30fc\u30d0\u5358\u4f53<br \/>\n\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3082\u5b58\u5728\u3059\u308b\u3002<\/p>\n<p># apt-get install swift<\/p>\n<p>Object Server\u3001Container Server\u3001Account Server \u306f\u3001rsync \u3092\u7528\u3044\u3066\u3001\u30c7\u30fc\u30bf\u3092\u8907\u88fd\u3057<br \/>\n\u3066\u3044\u308b\u3002\u3053\u306e\u305f\u3081\u306e rsyncd \u306e\u8a2d\u5b9a\u3068\u3057\u3066\u3001\/etc\/rsyncd.conf \u3092\u4ee5\u4e0b\u306e\u5185\u5bb9\u3067\u4f5c\u6210\u3059\u308b\u3002<\/p>\n<p>uid = username gid = username<br \/>\nlog file = \/var\/log\/rsyncd.log pid file = \/var\/run\/rsyncd.pid<\/p>\n<p>[account1]<\/p>\n<p>max connections = 25 path = \/srv\/1\/node\/ read only = false<br \/>\nlock file = \/var\/lock\/account1.lock<\/p>\n<p>[container1]<\/p>\n<p>max connections = 25 path = \/srv\/1\/node\/ read only = false<br \/>\nlock file = \/var\/lock\/container.1lock<\/p>\n<p>[object1]<\/p>\n<p>max connections = 25 path = \/srv\/1\/node\/ read only = false<br \/>\nlock file = \/var\/lock\/object1.lock<\/p>\n<p>uid\u3001gid \u306f\u305d\u308c\u305e\u308c swift \u3092\u5b9f\u884c\u3059\u308b\u30e6\u30fc\u30b6\u306e\u3082\u306e\u306b\u3059\u308b\u3002[account1][container1][object1]<br \/>\n\u306f\u3001\u305d\u308c\u305e\u308c Account  Server\u3001Container Server\u3001Object  Server \u7528\u306e\u8a2d\u5b9a\u3067\u3042\u308b\u3002Path<br \/>\n\u306f\u540c\u671f\u306e\u5bfe\u8c61\u306b\u306a\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u3001\u3053\u308c\u3089\u306e\u30b5\u30fc\u30d0\u304c\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u5834\u6240\u3092\u6307\u5b9a\u3059\u308b<br \/>\n\u5fc5\u8981\u304c\u3042\u308b\u3002\u8907\u6570\u306e\u30b5\u30fc\u30d0\u30d7\u30ed\u30bb\u30b9\u3092\u8d77\u52d5\u3055\u305b\u308b\u5834\u5408\u306f\u3001[account2]\u3084[account3]\u306e\u3088\u3046\u306b\u3001<br \/>\n\u540d\u524d\u3068 path \u3092\u5909\u3048\u3066\u8907\u6570\u5b9a\u7fa9\u3059\u308b\u3002\u3053\u3053\u3067\u306f\u3001\u305d\u308c\u305e\u308c 4 \u3064\u305a\u3064\u8d77\u52d5\u3055\u305b\u308b\u305f\u3081\u3001lock file<\/p>\n<p>\u306e\u540d\u524d\u3068\u3001path \u3092\u5909\u3048\u3066\u305d\u308c\u305e\u308c 4 \u3064\u305a\u3064\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n<p>\u307e\u305f\u3001rsyncd \u3092\u8d77\u52d5\u3055\u305b\u308b\u305f\u3081\u306b\u3001\/etc\/defaults\/rsync \u306b\u4ee5\u4e0b\u306e\u884c\u3092\u8a18\u8ff0\u3059\u308b\u3002\u30c7\u30d5\u30a9\u30eb\u30c8 \u3067\u306f false \u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u306e\u3067 true \u306b\u66f8\u304d\u63db\u3048\u308b\u3002<\/p>\n<p>RSYNC_ENABLE=true<\/p>\n<p>\u8a2d\u5b9a\u5f8c\u3001rsyncd \u3092\u518d\u8d77\u52d5\u3059\u308b\u3002<\/p>\n<p># service rsyncd restart<\/p>\n<p>\u307e\u305f Proxy Server \u304c memcached \u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u3001\u5b9f\u884c\u3059\u308b\u3002memcached \u306b\u95a2\u3057\u3066\u306f\u7279<br \/>\n\u306b\u8a2d\u5b9a\u3092\u305b\u305a\u306b\u8d77\u52d5\u3067\u304d\u308b\u3002<\/p>\n<p># service memcache restart<\/p>\n<p>5.4. Swift \u306e\u5165\u624b\u3068\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/p>\n<p>Swift \u306e\u5165\u624b\u306f\u3001\u73fe\u5728  apt-get \u3084\u516c\u5f0f\u30b5\u30a4\u30c8\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u3067\u884c\u3048\u308b\u304c\u3001\u3053\u3053\u3067\u306f bazaar \u3067\u306e\u5165\u624b\u65b9\u6cd5\u3092\u8aac\u660e\u3059\u308b\u3002Swift \u306f LaunchPad \u3067\u914d\u5e03\u3055\u308c\u3066\u304a\u308a\u3001bazaar \u3067\u5165\u624b\u3059\u308b \u5834\u5408\u306f LaunchPad \u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u5fc5\u8981\u306b\u306a\u308b\u3002\u307e\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u4f5c\u6210\u304a\u3088\u3073\u3001LaunchPad \u3078\u306e\u9375 \u306e\u767b\u9332\u306f\u3057\u3066\u3042\u308b\u3082\u306e\u3068\u3057\u3066\u8aac\u660e\u3059\u308b\u3002<\/p>\n<p>\u307e\u305a\u306f\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u7f6e\u304f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3059\u308b\u3002<\/p>\n<p># mkdir ~\/swift\/<\/p>\n<p>\u7d9a\u3044\u3066 bazaar  \u7528\u306e\u8a2d\u5b9a\u3092\u884c\u3046\u3002~\/bazaar\/.bazaar.conf  \u3092\u4ee5\u4e0b\u306e\u5f62\u5f0f\u3067\u4f5c\u6210\u3059\u308b\u3002Your<br \/>\nName \u3068\u306b\u3064\u3044\u3066\u306f\u3001\u305d\u308c\u305e\u308c LaunchPad \u306b\u767b\u9332\u3057\u3066\u3044\u308b\u60c5\u5831\u3092\u5165\u529b<br \/>\n\u3059\u308b\u3002<\/p>\n<p>[DEFAULT]<\/p>\n<p>email = Your Name<\/p>\n<p>LaunchPad \u3078\u306e\u30ed\u30b0\u30a4\u30f3\u3001\u53ca\u3073\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u5165\u624b\u3092\u884c\u3046\u3002<\/p>\n<p># bzr launchpad-login<\/p>\n<p># bzr init-repo swift<\/p>\n<p># cd ~\/swift<\/p>\n<p># bzr branch lp:swift trunk<\/p>\n<p>Swift \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u884c\u3046\u3002<\/p>\n<p># cd ~\/swift\/trunk<\/p>\n<p># sudo python setup.py develop<\/p>\n<p>\u306a\u304a\u3001\u516c\u5f0f\u30b5\u30a4\u30c8\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u5834\u5408\u306f\u3001\u30a2\u30fc\u30ab\u30a4\u30d6\u3092\u89e3\u51cd\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb<br \/>\n\u52d5\u3057\u3066\u3001\u4e0a\u8a18\u3068\u540c\u69d8\u306b python \u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3002<\/p>\n<p>5.5. Ring \u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210<br \/>\n5.5.1.  Ring \u30d5\u30a1\u30a4\u30eb\u306e\u5834\u6240<\/p>\n<p>\u5404\u30b5\u30fc\u30d0\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3001Ring \u30d5\u30a1\u30a4\u30eb\u306e\u5834\u6240\u306f\u6307\u5b9a\u3057\u3066\u306a\u3044\u3002\u30d5\u30a1\u30a4\u30eb\u540d\u306f\u56fa\u5b9a\u3068\u306a\u3063\u3066\u304a \u308a\u3001\u4ee5\u4e0b\u306e\u540d\u524d\u3067\/etc\/swift  \u306b \u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c \u3042\u308b\u3002\u305d\u308c\u305e\u308c\u3001Object  Server \u3001Container Server\u3001Account Server \u306e Ring \u30d5\u30a1\u30a4\u30eb\u3067\u3042\u308b\u3002<\/p>\n<p>\u30fb\tobject.ring.gz<br \/>\n\u30fb\tcontainer.ring.gz<br \/>\n\u30fb\taccount.ring.gz<\/p>\n<p>\u307e\u305f\u5f8c\u8ff0\u3059\u308b rebalance \u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u3001\u4e0a\u8a18\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u751f\u6210\u3055\u308c\u308b\u3002\u5b9f\u969b\u306b\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u306e \u3042\u308b\u30d5\u30a1\u30a4\u30eb\u306f\u4ee5\u4e0b\u306e\u540d\u524d\u306b\u306a\u308b\u3002<\/p>\n<p>\u30fb\tobject.builder<br \/>\n\u30fb\tcontainer.builder<br \/>\n\u30fb\taccount.builder<\/p>\n<p>5.5.2.  swift-ring-builder \u30b3\u30de\u30f3\u30c9<\/p>\n<p>ring \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u30fb\u5909\u66f4\u3059\u308b\u305f\u3081\u306b\u306f swift-ring-builder \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u3046\u5fc5\u8981\u304c\u3042\u308b\u3002Ring \u30d5 \u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9f\u884c\u3059\u308b\u3002<\/p>\n<p># swift-ring-builder  create<\/p>\n<p>\u306e\u9805\u76ee\u3067\u4f5c\u6210\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3059\u308b\u3002\u524d\u8ff0\u306e\u3068\u304a\u308a\u3001Ring \u30d5\u30a1\u30a4\u30eb\u306f\u6240\u5b9a\u306e\u540d<br \/>\n\u524d\u3067\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u3053\u3053\u3067\u4e0a\u8a18\u306e\u540d\u524d\u3092\u6307\u5b9a\u3059\u308b\u3002<br \/>\n\u3067\u306f\u30d1\u30fc\u30c6\u30a3<br \/>\n\u30b7\u30e7\u30f3\u6570\u3092\u6307\u5b9a\u3059\u308b\u3002\u3053\u3053\u3067\u3044\u3046\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u3068\u306f\u3001Ring  \u3067\u306e\u6982\u5ff5\u3067\u3042\u308a\u3001\u5404\u30b5\u30fc\u30d0\u306b\u7279\u5b9a\u306e\u30d1\u30fc<br \/>\n\u30c6\u30a3\u30b7\u30e7\u30f3\u304c\u3044\u304f\u3064\u304b\u5272\u308a\u5f53\u3066\u3089\u308c\u308b\u3002<br \/>\n\u306e\u5024\u304c\u305d\u306e\u307e\u307e\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u306e\u6570\u306b\u306a\u308b\u306e\u3067<br \/>\n\u306f\u306a\u304f\u30012  \u306e<br \/>\n\u4e57\u306e\u6570\u304c\u5b9f\u969b\u306e\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u6570\u306b\u306a\u308b\u3002\u3067\u306f\u5197\u9577\u5316\u3059\u308b<br \/>\n\u6570\u3092\u6307\u5b9a\u3059\u308b\u3002\u306f\u3001\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u304c\u79fb\u52d5\u53ef\u80fd\u306b\u306a\u308b\u307e\u3067\u306e\u6642\u9593\u3067\u3042\u308b\u3002\u3053\u308c<br \/>\n\u306f\u30b5\u30fc\u30d0\u306e\u8ffd\u52a0\u306a\u3069\u3067\u3001\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u306e\u5272\u308a\u5f53\u3066\u304c\u5909\u308f\u308b\u969b\u306b\u3001\u518d\u5272\u5f53\u3066\u3092\u884c\u3048\u308b\u3088\u3046\u306b\u306a\u308b\u307e\u3067<br \/>\n\u306e\u6642\u9593\u3067\u3042\u308b\u3002<\/p>\n<p>Ring  \u3078\u306e\u30c7\u30d0\u30a4\u30b9\u306e\u8ffd\u52a0\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9f\u884c\u3059\u308b\u3002\u3053\u3053\u3067\u3044\u3046\u30c7\u30d0\u30a4\u30b9\u3068\u306f\u3001swift \u306e\u30b5\u30fc\u30d0\u3067\u3042\u308a\u3001<br \/>\nObject   Server\u3001Container Server\u3001Account Server \u306e\u60c5\u5831\u3092\u8ffd\u52a0\u3059\u308b\u3002<\/p>\n<p># swift-ring-builder add z-:<br \/>\n\/_<\/p>\n<p>\u306f\u4efb\u610f\u306e\u5024\u3092\u8a2d\u5b9a\u3059\u308b\u3002\u540c\u3058 zone \u306e\u30b5\u30fc\u30d0\u306b\u306f\u3001\u30c7\u30fc\u30bf\u304c\u8907\u88fd\u3055\u308c\u306a\u3044\u3002\u3053\u306e\u305f\u3081\u3001\u5730\u7406<br \/>\n\u7684\u306b\u8fd1\u3044\u30b5\u30fc\u30d0\u3084\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30c8\u30dd\u30ed\u30b8\u3068\u3057\u3066\u8fd1\u3044\u30b5\u30fc\u30d0\u306f\u540c\u3058 zone  \u306b\u6240\u5c5e\u3055\u305b\u308b\u4e8b\u304c\u8003\u3048\u3089\u308c<br \/>\n\u308b\u3002<br \/>\n:<br \/>\n\u306f\u305d\u308c\u305e\u308c\u3001\u30b5\u30fc\u30d0\u306e IP  \u30a2\u30c9\u30ec\u30b9\u3068\u30dd\u30fc\u30c8\u756a\u53f7\u3092\u6307\u5b9a\u3059\u308b\u3002\u306f\u3001\u30b5<br \/>\n\u30fc\u30d0\u4e0a\u306e\u30d1\u30b9\u3092\u6307\u5b9a\u3059\u308b\u3002\u306f\u30c7\u30d0\u30a4\u30b9\u306e\u60c5\u5831\u3092\u8a18\u8ff0\u3059\u308b\u305f\u3081\u306b\u3001\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u4ed8\u4e0e\u3059\u308b\u3053<\/p>\n<p>\u3068\u304c\u3067\u304d\u308b\u304c\u3001\u5fc5\u9808\u9805\u76ee\u3067\u306f\u306a\u3044\u3002  \u3067\u306f\u91cd\u307f\u4ed8\u3051\u3092\u884c\u3046\u3002\u306e\u5927\u304d\u306a\u30c7\u30d0\u30a4\u30b9<br \/>\n\u306b\u306f\u3001\u591a\u304f\u306e\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u3001\u30c7\u30fc\u30bf\u304c\u512a\u5148\u7684\u306b\u4fdd\u5b58\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308b\u3002<\/p>\n<p>\u30c7\u30d0\u30a4\u30b9\u306e\u8ffd\u52a0\u5f8c\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b rebalance \u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u3001\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u3092\u5404\u30c7\u30d0\u30a4\u30b9\u306b\u5272<br \/>\n\u308a\u5f53\u3066\u308b\u3002\u307e\u305f\u5b9f\u884c\u5f8c\u306b object.ring.gz \u306a\u3069\u306e\u3001Ring \u306e\u5727\u7e2e\u30d5\u30a1\u30a4\u30eb\u304c\u4f5c\u6210\u3055\u308c\u308b\u3002<\/p>\n<p># swift-ring-builder  rebalance<\/p>\n<p>ring \u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u3066\u8868\u793a\u3059\u308b\u3002<\/p>\n<p># swift-ring-builder<\/p>\n<p>\u4f8b\u3048\u3070\u3001Object Server \u306e Ring \u30d5\u30a1\u30a4\u30eb\u3067\u3042\u308b object.builder \u306e\u4e2d\u8eab\u3092\u8868\u793a\u3057\u305f\u5834\u5408\u306f\u3001\u4ee5\u4e0b<br \/>\n\u306e\u3088\u3046\u306b\u306a\u308b\u3002<\/p>\n<p># swift-ring-builder object.builder object.builder, build version 4<br \/>\n262144 partitions, 3 replicas, 4 zones, 4 devices, 0.00 balance<\/p>\n<p>The minimum number of hours before a partition can be reassigned is 1<\/p>\n<p>Devices: id\tzone\tip address\tport\tname\tweight\tpartitions\tbalance meta<br \/>\n0\t1\t127.0.0.1\t6010\tsdb1\t1.00\t196608\t0.00<br \/>\n1\t2\t127.0.0.1\t6020\tsdb2\t1.00\t196608\t0.00<br \/>\n2\t3\t127.0.0.1\t6030\tsdb3\t1.00\t196608\t0.00<br \/>\n3\t4\t127.0.0.1\t6040\tsdb4\t1.00\t196608\t0.00<\/p>\n<p>5.6. \u5404\u7a2e\u30b5\u30fc\u30d0\u306e\u8a2d\u5b9a<\/p>\n<p>\u5404\u30b5\u30fc\u30d0\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066\u8aac\u660e\u3059\u308b\u3002\u8a2d\u5b9a\u9805\u76ee\u306e\u4e00\u89a7\u306f\u3001Deployment  Guide \u306b\u8a18\u8f09 \u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u3053\u3067\u306f\u5168\u3066\u306e\u9805\u76ee\u306f\u7db2\u7f85\u3057\u306a\u3044\u3002\u3069\u306e\u30b5\u30fc\u30d0\u3067\u3082\u3001\u7701\u7565\u3057\u305f\u5834\u5408\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306e \u5024\u304c\u9069\u7528\u3055\u308c\u308b\u3002\u3069\u306e\u30b5\u30fc\u30d0\u306b\u3082\u5b58\u5728\u3059\u308b\u9805\u76ee\u3068\u3057\u3066\u306f\u4ee5\u4e0b\u306e\u3082\u306e\u304c\u3042\u308b\u3002<\/p>\n<p>\u30fb\tbind_ip  \u5f85\u3061\u53d7\u3051\u306b\u4f7f\u7528\u3059\u308b IP \u30a2\u30c9\u30ec\u30b9\u3092\u6307\u5b9a\u3059\u308b\u3002\u7701\u7565\u3057\u305f\u5834\u5408\u306f 0.0.0.0 \u3068\u306a\u308b\u3002<br \/>\n\u30fb\tbind_port  \u5f85\u3061\u53d7\u3051\u306b\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u756a\u53f7\u3092\u6307\u5b9a\u3059\u308b\u3002\u7701\u7565\u3057\u305f\u5834\u5408\u306e\u5024\u306f\u3001\u30b5\u30fc\u30d0\u3054\u3068\u306b<br \/>\n\u7570\u306a\u3063\u3066\u3044\u308b\u3002<\/p>\n<p>\u30fb\tworkers  \u8d77\u52d5\u3059\u308b\u5b50\u30d7\u30ed\u30bb\u30b9\u306e\u6570\u3092\u6307\u5b9a\u3059\u308b\u3002\u7701\u7565\u3057\u305f\u5834\u5408\u306f 1 \u3068\u306a\u308b\u3002<br \/>\n\u30fb\tswift_dir  \u8a2d\u5b9a\u30d5 \u30a1\u30a4 \u30eb\u3084 ring \u304c \u7f6e\u304b\u308c\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea \u3092\u6307\u5b9a\u3059\u308b\u3002\u30c7 \u30d5\u30a9 \u30eb\u30c8\u306e \u5024\u306f<br \/>\n\/etc\/swift \u3067\u3042\u308b\u3002<br \/>\n\u30fb\tuser  \u30b5\u30fc\u30d0\u30d7\u30ed\u30bb\u30b9\u3092\u5b9f\u884c\u3059\u308b\u30e6\u30fc\u30b6\u3092\u6307\u5b9a\u3059\u308b\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5024\u306f swift \u3067\u3042\u308b\u3002<\/p>\n<p>5.6.1.  Auth Server<\/p>\n<p>\/etc\/swift\/auth-server.conf \u3092\u3001\u4ee5\u4e0b\u306e\u5185\u5bb9\u3067\u4f5c\u6210\u3059\u308b\u3002username  \u306f\u3001\u5b9f\u884c\u3055\u305b\u305f\u3044\u30e6\u30fc\u30b6 \u306e\u540d\u524d\u306b\u7f6e\u304d\u63db\u3048\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n<p>[DEFAULT]<\/p>\n<p>user = username bind_ip  = 0.0.0.0 bind_port = 11000<br \/>\ncert_file = \/etc\/swift\/cert.crt key_file = \/etc\/swift\/cert.key<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = auth-server<\/p>\n<p>[app:auth-server]<\/p>\n<p>use = egg:swift#auth<br \/>\ndefault_cluster_url = http:\/\/127.0.0.1:8080\/v1 super_admin_key = devauth<\/p>\n<p>SSL \u306b\u5bfe\u5fdc\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u305d\u306e\u5834\u5408\u306f cert_file \u3068 key_file  \u3092\u6307\u5b9a\u3059\u308b\u3002SSL \u306b\u5bfe\u5fdc\u3055<br \/>\n\u305b\u306a\u3044\u5834\u5408\u306f\u3001\u3053\u306e\u9805\u76ee\u3092\u8a18\u8ff0\u3057\u306a\u3051\u308c\u3070\u3088\u3044\u3002default_cluster_url  \u306b\u306f\u3001Proxy  server<br \/>\n\u306e URL \u3092\u6307\u5b9a\u3059\u308b\u3002\u305f\u3060\u3057\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u6e21\u3055\u308c\u308b URL \u3067\u3082\u3042\u308b\u305f\u3081\u3001127.0.0.1 \u306a\u3069<br \/>\n\u3067\u306f\u306a\u304f\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u5229\u7528\u53ef\u80fd\u306a\u30a2\u30c9\u30ec\u30b9\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002super_admin_key \u306b<br \/>\n\u306f\u7ba1\u7406\u7528\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u6307\u5b9a\u3059\u308b\u3001\u3053\u306e\u9805\u76ee\u306b\u95a2\u3057\u3066\u306f\u7701\u7565\u4e0d\u53ef\u3067\u3042\u308b\u3002<\/p>\n<p>5.6.2.  Proxy Server<\/p>\n<p>\/etc\/swift\/proxy-server.conf \u3092\u7de8\u96c6\u3057\u3001\u4ee5\u4e0b\u306e\u5185\u5bb9\u3067\u4f5c\u6210\u3059\u308b\u3002<\/p>\n<p>[DEFAULT] bind_ip = 0.0.0.0 bind_port = 8080 user = username<br \/>\ncert_file = \/etc\/swift\/cert.crt key_file = \/etc\/swift\/cert.key<\/p>\n<p>[proxy-server]<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = healthcheck cache auth proxy-server<\/p>\n<p>[app:proxy-server]<\/p>\n<p>use = egg:swift#proxy allow_account_management = true<\/p>\n<p>[filter:auth]<\/p>\n<p>use = egg:swift#auth ip = 127.0.0.1<br \/>\nport = 11000 ssl = False<\/p>\n<p>[filter:healthcheck]<\/p>\n<p>use = egg:swift#healthcheck<\/p>\n<p>[filter:cache]<br \/>\nuse = egg:swift#memcache memcache_servers = 127.0.0.1:11211<\/p>\n<p>[filter:auth]\u306e\u9805\u76ee\u3067\u306f Auth Server \u306e IP \u30a2\u30c9\u30ec\u30b9\u3084 Port \u756a\u53f7\u3092\u6307\u5b9a\u3059\u308b\u304c\u3001\u3053\u3061\u3089\u3082\u7701\u7565\u3057<br \/>\n\u305f\u5834\u5408\u306f\u4e0a\u8a18\u306e\u5024\u304c\u9069\u7528\u3055\u308c\u308b\u3002Auth Server \u3068\u306e\u901a\u4fe1\u306b SSL \u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001ssl \u306e\u9805\u76ee\u3092<br \/>\nTrue \u306b\u3059\u308b\u3002memcache_servers \u306f memcached \u3092\u6307\u5b9a\u3057\u3001\u30ab\u30f3\u30de\u3067\u533a\u5207\u308b\u3053\u3068\u3067\u8907\u6570\u53f0\u3092\u6307\u5b9a<br \/>\n\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002<\/p>\n<p>5.6.3.  Object Server<\/p>\n<p>\/etc\/swift\/object-server\/1.conf \u3092\u4ee5\u4e0b\u306e\u5185\u5bb9\u3067\u4f5c\u6210\u3059\u308b\u3002username \u306b\u95a2\u3057\u3066\u306f\u3001swift \u3092\u5b9f \u884c\u3059\u308b\u30e6\u30fc\u30b6\u306e\u3082\u306e\u306b\u66f8\u304d\u63db\u3048\u308b\u3002<\/p>\n<p>[DEFAULT]<\/p>\n<p>devices = \/srv\/1\/node mount_check = false bind_port = 6010 user = username<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = object-server<\/p>\n<p>[app:object-server]<\/p>\n<p>use = egg:swift#object<\/p>\n<p>[object-replicator]<\/p>\n<p>vm_test_mode = yes<br \/>\n[object-updater] [object-auditor]<\/p>\n<p>devices \u306e\u9805\u76ee\u3067\u306f\u3001\u30b5\u30fc\u30d0\u304c\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3059\u308b\u3002\u6307\u5b9a\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3001<br \/>\n\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\u307e\u305f 2.conf \u3084 3.conf \u306e\u3088\u3046\u306b\u30012 \u3064\u76ee\u4ee5\u964d\u306e\u30b5\u30fc\u30d0\u30d7\u30ed\u30bb<br \/>\n\u30b9\u306e\u305f\u3081\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3082\u4f5c\u6210\u53ef\u80fd\u3067\u3042\u308b\u3002\u3053\u3053\u3067\u306f\u3001\u30d1\u30b9\u3068 Port \u756a\u53f7\u3092\u5909\u3048\u3066 4 \u30d7\u30ed\u30bb\u30b9\u3092\u8d77\u52d5\u3055<br \/>\n\u305b\u308b\u305f\u3081\u30012.conf\u30013.conf\u30014.conf  \u3082\u305d\u308c\u305e\u308c\u4f5c\u6210\u3059\u308b\u3002<\/p>\n<p>\u30fb\t\/etc\/swift\/object-server\/2.conf<\/p>\n<p>[DEFAULT]<\/p>\n<p>devices = \/srv\/2\/node mount_check = false bind_port = 6020 user = username<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = object-server<\/p>\n<p>[app:object-server]<\/p>\n<p>use = egg:swift#object<\/p>\n<p>[object-replicator]<\/p>\n<p>vm_test_mode = yes<br \/>\n[object-updater] [object-auditor]<\/p>\n<p>\u30fb\t\/etc\/swift\/object-server\/3.conf<\/p>\n<p>[DEFAULT]<\/p>\n<p>devices = \/srv\/3\/node mount_check = false bind_port = 6030 user = username<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = object-server<\/p>\n<p>[app:object-server]<\/p>\n<p>use = egg:swift#object<\/p>\n<p>[object-replicator]<\/p>\n<p>vm_test_mode = yes<br \/>\n[object-updater] [object-auditor]<\/p>\n<p>\u30fb\t\/etc\/swift\/object-server\/4.conf<\/p>\n<p>[DEFAULT]<\/p>\n<p>devices = \/srv\/4\/node mount_check = false bind_port = 6040 user = username<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = object-server<\/p>\n<p>[app:object-server]<\/p>\n<p>use = egg:swift#object<\/p>\n<p>[object-replicator]<\/p>\n<p>vm_test_mode = yes<br \/>\n[object-updater] [object-auditor]<\/p>\n<p>5.6.4.  Container Server<\/p>\n<p>\/etc\/swift\/container-server\/1.conf  \u3092 \u4ee5 \u4e0b \u306e \u5185 \u5bb9 \u3067 \u4f5c \u6210 \u3059 \u308b \u3002 \u5404 \u8a2d \u5b9a \u9805 \u76ee \u306b \u3064 \u3044 \u3066 \u306f \u3001 Object  Server \u3068\u540c\u69d8\u306b\u306a\u3063\u3066\u3044\u308b\u3002\u307e\u305f\u3001Container  Server \u3082\u30d7\u30ed\u30bb\u30b9\u3092 4 \u3064\u8d77\u52d5\u3055\u305b\u308b\u305f\u3081\u3001 \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092 4 \u3064\u4f5c\u6210\u3059\u308b\u3002<\/p>\n<p>\u30fb\t\/etc\/swift\/container-server\/1.conf<\/p>\n<p>[DEFAULT]<\/p>\n<p>devices = \/srv\/1\/node mount_check = false bind_port = 6011 user = username<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = container-server<\/p>\n<p>[app:container-server]<\/p>\n<p>use = egg:swift#container<\/p>\n<p>[container-replicator]<\/p>\n<p>vm_test_mode = yes<br \/>\n[container-updater] [container-auditor]<\/p>\n<p>\u30fb\t\/etc\/swift\/container-server\/2.conf<\/p>\n<p>[DEFAULT]<\/p>\n<p>devices = \/srv\/2\/node mount_check = false bind_port = 6021 user = username<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = container-server<\/p>\n<p>[app:container-server]<\/p>\n<p>use = egg:swift#container<\/p>\n<p>[container-replicator]<\/p>\n<p>vm_test_mode = yes<br \/>\n[container-updater] [container-auditor]<\/p>\n<p>\u30fb\t\/etc\/swift\/container-server\/3.conf<\/p>\n<p>[DEFAULT]<\/p>\n<p>devices = \/srv\/3\/node mount_check = false bind_port = 6031 user = username<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = container-server<\/p>\n<p>[app:container-server]<\/p>\n<p>use = egg:swift#container<\/p>\n<p>[container-replicator]<\/p>\n<p>vm_test_mode = yes<br \/>\n[container-updater] [container-auditor]<\/p>\n<p>\u30fb\t\/etc\/swift\/container-server\/2.conf<\/p>\n<p>[DEFAULT]<\/p>\n<p>devices = \/srv\/4\/node mount_check = false bind_port = 6041 user = username<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = container-server<\/p>\n<p>[app:container-server]<\/p>\n<p>use = egg:swift#container<\/p>\n<p>[container-replicator]<\/p>\n<p>vm_test_mode = yes<br \/>\n[container-updater] [container-auditor]<\/p>\n<p>5.6.1.  Account Server<\/p>\n<p>Account  Server  \u306e \u8a2d \u5b9a\u3082 \u3001 Object  Server \u3001 Container  Server \u3068 \u540c\u69d8 \u3067\u3042\u308b \u3002 Account<br \/>\nServer \u3082 4 \u3064\u8d77\u52d5\u3055\u305b\u308b\u305f\u3081\u3001\u4ee5\u4e0b\u306e 4 \u3064\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u3002<\/p>\n<p>\u30fb\t\/etc\/swift\/account-server\/1.conf<\/p>\n<p>[DEFAULT]<\/p>\n<p>devices = \/srv\/1\/node mount_check = false bind_ip  = 0.0.0.0 bind_port = 6012 user = username<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = account-server<\/p>\n<p>[app:account-server]<\/p>\n<p>use = egg:swift#account<\/p>\n<p>[account-replicator]<\/p>\n<p>vm_test_mode = yes<br \/>\n[account-auditor] [account-reaper]<\/p>\n<p>\u30fb\t\/etc\/swift\/account-server\/2.conf<\/p>\n<p>[DEFAULT]<\/p>\n<p>devices = \/srv\/2\/node mount_check = false bind_ip  = 0.0.0.0 bind_port = 6022 user = username<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = account-server<\/p>\n<p>[app:account-server]<\/p>\n<p>use = egg:swift#account<\/p>\n<p>[account-replicator]<\/p>\n<p>vm_test_mode = yes<br \/>\n[account-auditor] [account-reaper]<\/p>\n<p>\u30fb\t\/etc\/swift\/account-server\/3.conf<\/p>\n<p>[DEFAULT]<\/p>\n<p>devices = \/srv\/3\/node mount_check = false bind_ip  = 0.0.0.0 bind_port = 6032 user = username<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = account-server<\/p>\n<p>[app:account-server]<\/p>\n<p>use = egg:swift#account<\/p>\n<p>[account-replicator]<\/p>\n<p>vm_test_mode = yes<br \/>\n[account-auditor] [account-reaper]<\/p>\n<p>\u30fb\t\/etc\/swift\/account-server\/4.conf<\/p>\n<p>[DEFAULT]<\/p>\n<p>devices = \/srv\/4\/node mount_check = false bind_ip  = 0.0.0.0 bind_port = 6042 user = username<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = account-server<\/p>\n<p>[app:account-server]<\/p>\n<p>use = egg:swift#account<\/p>\n<p>[account-replicator]<\/p>\n<p>vm_test_mode = yes<br \/>\n[account-auditor] [account-reaper]<\/p>\n<p>5.7. \u5404\u30b5\u30fc\u30d0\u306e\u8d77\u52d5<\/p>\n<p>\u5404\u30b5\u30fc\u30d0\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u8d77\u52d5\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8aac\u660e\u3059\u308b\u3002\u305f\u3060\u3057\u3001\u8d77\u52d5\u7528\u306e\u30b3\u30de\u30f3\u30c9\u3084\u30b9\u30af\u30ea\u30d7\u30c8\u304c\u5225<br \/>\n\u9014\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u76f4\u63a5\u30b5\u30fc\u30d0\u30d7\u30ed\u30b0\u30e9\u30e0\u304b\u3089\u8d77\u52d5\u3059\u308b\u6a5f\u4f1a\u306f\u5c11\u306a\u3044\u3002<br \/>\n\u8d77\u52d5\u6642\u306b\u306f\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u5f15\u6570\u3068\u3057\u3066\u6307\u5b9a\u3059\u308b\u3002\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u30d5\u30eb\u30d1\u30b9\u3067\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c<br \/>\n\u3042\u308b\u3002<\/p>\n<p># swift-auth-server \t\/etc\/swift\/auth-server.conf<\/p>\n<p># swift-proxy-server \t\/etc\/swift\/proxy-server.conf<\/p>\n<p># swift-object-server \t\/etc\/swift\/object-server\/1.conf<\/p>\n<p># swift-container-server \t\/etc\/swift\/container-server\/1.conf<\/p>\n<p># swift-account-server \t\/etc\/swift\/account-server\/1.conf<\/p>\n<p>\u8d77\u52d5\u7528\u306b swift-init \u3068\u3044\u3046\u30b3\u30de\u30f3\u30c9\u3082\u3042\u308a\u3001\u3053\u3061\u3089\u306f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\u305b\u305a\u3068\u3082\u81ea\u52d5\u7684\u306b\u8aad\u307f\u8fbc<br \/>\n\u3093\u3067\u8d77\u52d5\u3059\u308b\u3002<\/p>\n<p># swift-init auth-server start<\/p>\n<p># swift-init proxy-server start<\/p>\n<p># swift-init account-server start<\/p>\n<p># swift-init container-server start<\/p>\n<p># swift-init object-server start<\/p>\n<p>start \u3092 stop  \u3084 restart \u306b\u5909\u66f4\u3057\u3066\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u3001\u505c\u6b62\u3084\u518d\u8d77\u52d5\u3082\u305d\u308c\u305e\u308c\u884c\u3048\u308b\u3002<br \/>\nswift-init \u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u60f3\u5b9a\u3055\u308c\u3066\u3044\u308b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u4ee5\u4e0b\u306e\u3082\u306e\u306b\u306a\u308b\u3002<\/p>\n<p>\u30b5\u30fc\u30d0\t\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb<\/p>\n<p>Auth Server<br \/>\n\/etc\/swift\/auth-server.conf<\/p>\n<p>Proxy Server<br \/>\n\/etc\/swift\/proxy-server.conf<\/p>\n<p>Account Server<br \/>\n\/etc\/swift\/account-server\/*.conf<\/p>\n<p>Container Server<br \/>\n\/etc\/swift\/container-server\/*.conf<\/p>\n<p>Object Server<br \/>\n\/etc\/swift\/object-server\/*.conf<\/p>\n<p>Object Server\u3001Container Server\u3001Account Server \u306b\u95a2\u3057\u3066\u306f\u8907\u6570\u30d7\u30ed\u30bb\u30b9\u306b\u3082\u5bfe\u5fdc\u3057\u3066\u3044<br \/>\n\u308b\u30021.conf \u3084 2.conf \u306e\u3088\u3046\u306b\u3001\u4e0a\u8a18\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3042\u308b\u3001\u62e1\u5f35\u5b50\u304c.conf \u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3093\u3067\u305d<br \/>\n\u308c\u305e\u308c\u8d77\u52d5\u3055\u305b\u3066\u3044\u308b\u3002<\/p>\n<p>5.7.1.  \u8d77\u52d5\u7528\u306e\u30b9\u30af\u30ea\u30d7\u30c8<\/p>\n<p>Swift \u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u306f\u3001\u64cd\u4f5c\u306e\u305f\u3081\u306b\u5404\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3059\u308b\u305f\u3081\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f5c\u6210\u3057\u3066\u3044\u308b\u30021 \u30db\u30b9\u30c8\u4e0a\u3067\u5168\u3066\u306e\u30b5\u30fc\u30d0\u3092\u52d5\u4f5c\u3055\u305b\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u3042\u308a\u3001\u8907\u6570\u53f0\u306b\u5206\u3051\u305f\u69cb\u6210\u306e\u5834\u5408\u306f\u3001\u5fc5\u8981\u306a\u30b5\u30fc \u30d3\u30b9\u306e\u307f\u3092\u8d77\u52d5\u3059\u308b\u3088\u3046\u306b\u7de8\u96c6\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n<p>\u30fb\tresetswift<\/p>\n<p>resetswift \u306f\u4f55\u304b\u3057\u3089\u306e\u30c8\u30e9\u30d6\u30eb\u304c\u3042\u3063\u305f\u969b\u306b\u3001\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u306e\u4f5c\u6210\u304b\u3089\u3084\u308a\u76f4\u3059\u305f\u3081 \u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u3042\u308b\u3002\u5404\u30b5\u30fc\u30d3\u30b9\u306e\u505c\u6b62\u3001XFS \u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u306e\u30de\u30a6\u30f3\u30c8\u3057\u76f4\u3057\u3001\u30c7\u30a3\u30ec \u30af\u30c8\u30ea\u306e\u4f5c\u6210\u3092\u884c\u3046\u3002\u4f7f\u7528\u3059\u308b\u30c7\u30d0\u30a4\u30b9\u306e\u540d\u524d\u3092$dev\u3001\u30e6\u30fc\u30b6\u540d\u3068\u30b0\u30eb\u30fc\u30d7\u540d\u3092$user  \u3068<br \/>\n$group \u3068\u3057\u3066\u3042\u308b\u3002\u4f7f\u7528\u3059\u308b\u969b\u306b\u306f\u3001\u74b0\u5883\u306b\u5408\u308f\u305b\u3066\u7de8\u96c6\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n<p>#!\/bin\/bash<\/p>\n<p>swift-init all stop sleep 5<br \/>\nsudo umount \/mnt\/$dev<\/p>\n<p>sudo mkfs.xfs  -f -i size=1024 \/dev\/$dev sudo mount \/mnt\/$dev<br \/>\nsudo mkdir \/mnt\/$dev\/1 \/mnt\/$dev\/2 \/mnt\/$dev\/3 \/mnt\/$dev\/4 \/mnt\/$dev\/test sudo chown $user:$group \/mnt\/$dev\/*<br \/>\nmkdir -p \/srv\/1\/node\/sdb1 \/srv\/2\/node\/sdb2 \/srv\/3\/node\/sdb3 \/srv\/4\/node\/sdb4 sudo rm -f \/var\/log\/debug \/var\/log\/messages \/var\/log\/rsyncd.log \/var\/log\/syslog sudo service rsyslog restart<br \/>\nsudo service memcached restart<\/p>\n<p>\u30fb\tremakerings<\/p>\n<p>Ring \u30d5\u30a1\u30a4\u30eb\u3092\u4e00\u5ea6\u524a\u9664\u3057\u3001\u518d\u69cb\u7bc9\u3059\u308b\u3002\u30c7\u30d0\u30a4\u30b9\u306f\u5168\u3066 localhost \u4e0a\u306e\u30b5\u30fc\u30d0\u3067\u3001\u305d\u308c\u305e\u308c 4<br \/>\n\u53f0\u305a\u3064\u3068\u3057\u3066\u3044\u308b\u3002<\/p>\n<p>#!\/bin\/bash cd \/etc\/swift<br \/>\nrm -f *.builder *.ring.gz backups\/*.builder backups\/*.ring.gz<\/p>\n<p>swift-ring-builder object.builder create 18 3 1<\/p>\n<p>swift-ring-builder object.builder add z1-127.0.0.1:6010\/sdb1 1 swift-ring-builder object.builder add z2-127.0.0.1:6020\/sdb2 1 swift-ring-builder object.builder add z3-127.0.0.1:6030\/sdb3 1 swift-ring-builder object.builder add z4-127.0.0.1:6040\/sdb4 1 swift-ring-builder object.builder rebalance<br \/>\nswift-ring-builder container.builder create 18 3 1<\/p>\n<p>swift-ring-builder container.builder add z1-127.0.0.1:6011\/sdb1  1 swift-ring-builder container.builder add z2-127.0.0.1:6021\/sdb2 1 swift-ring-builder container.builder add z3-127.0.0.1:6031\/sdb3 1 swift-ring-builder container.builder add z4-127.0.0.1:6041\/sdb4 1 swift-ring-builder container.builder rebalance<br \/>\nswift-ring-builder account.builder create 18 3 1<br \/>\nswift-ring-builder account.builder add z1-127.0.0.1:6012\/sdb1 1 swift-ring-builder account.builder add z2-127.0.0.1:6022\/sdb2 1 swift-ring-builder account.builder add z3-127.0.0.1:6032\/sdb3 1 swift-ring-builder account.builder add z4-127.0.0.1:6042\/sdb4 1 swift-ring-builder account.builder rebalance<\/p>\n<p>\u30fb\tstartmain<\/p>\n<p>Swift \u306e\u4e3b\u8981\u306a\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3059\u308b\u3002<\/p>\n<p>#!\/bin\/bash<\/p>\n<p>swift-init auth-server start swift-init proxy-server start swift-init account-server start swift-init container-server start swift-init object-server start<\/p>\n<p>\u30fb\tstartrest<\/p>\n<p>Updater\u3001Auditor\u3001Replicator\u3001Reaper \u3092\u305d\u308c\u305e\u308c\u8d77\u52d5\u3059\u308b\u3002\u3053\u308c\u3089\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u8a2d \u5b9a\u306b\u3064\u3044\u3066\u306f\u3001Object Server \u7528\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306a\u3069\u306b\u8a18\u8ff0\u3059\u308b\u3002\u307e\u305f Swift \u306e\u30d0\u30fc\u30b8\u30e7\u30f3 \u306b\u3088\u3063\u3066\u306f\u3001OS \u306e\u8a00\u8a9e\u8a2d\u5b9a\u304c\u65e5\u672c\u8a9e\u7b49\u3060\u3068\u3046\u307e\u304f\u52d5\u4f5c\u3057\u306a\u3044\u306e\u3067\u3001\u8a00\u8a9e\u3092 C \u306b\u8a2d\u5b9a\u3057\u3066\u3044 \u308b\u3002$devauth \u306f\u3001auth \u30b5\u30fc\u30d0\u306e super_admin_key \u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n<p>#!\/bin\/bash<\/p>\n<p>export LANGUAGE=C<\/p>\n<p>swift-auth-recreate-accounts -K $devauth swift-init object-updater start<br \/>\nswift-init container-updater start swift-init object-replicator start swift-init container-replicator start swift-init account-replicator start swift-init object-auditor start<br \/>\nswift-init container-auditor start<\/p>\n<p>swift-init account-auditor start<\/p>\n<p>5.8. \u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u4f5c\u6210<\/p>\n<p>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u306e\u5229\u7528\u306e\u305f\u3081\u306b\u306f\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\u30a2\u30ab\u30a6\u30f3\u30c8\u306e<\/p>\n<p>\u4f5c\u6210\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u7528\u3044\u308b\u3002<\/p>\n<p># swift-auth-add-user -K   -a<\/p>\n<p>\u306b\u306f\u3001Auth  Server  \u306b\u8a2d\u5b9a\u3057\u305f\u7ba1\u7406\u7528\u306e\u30d1\u30b9\u3092\u6307\u5b9a\u3059\u308b\u3002<\/p>\n<p>\u304c\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u3057\u3066\u306e\u4e0a\u65b9\u306b\u306a\u308b\u3002-a \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u7ba1\u7406\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u3057\u3066<br \/>\n\u306e\u4f5c\u6210\u3092\u610f\u5473\u3059\u308b\u304c\u3001-a \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u7701\u3044\u3066\u4f5c\u6210\u3055\u308c\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u306f\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e<br \/>\n\u53d6\u5f97\u3068\u3044\u3063\u305f\u64cd\u4f5c\u3092\u884c\u3048\u306a\u3044\u3002\u5b9f\u884c\u4f8b\u3068\u3057\u3066\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308b\u3002<\/p>\n<p># swift-auth-add-user -K devauth -a test tester testing<\/p>\n<p>5.9. \u8907\u6570\u53f0\u69cb\u6210\u3067\u306e\u69cb\u7bc9<\/p>\n<p>4.7 \u7bc0\u307e\u3067\u306f\u30011 \u30db\u30b9\u30c8\u4e0a\u3067\u5168\u3066\u306e\u30b5\u30fc\u30d0\u3092\u52d5\u4f5c\u3055\u305b\u308b\u69cb\u6210\u3067\u3001\u8a2d\u5b9a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8ff0\u3079\u305f\u3002 \u672c\u7bc0\u3067\u306f\u3001\u8907\u6570\u53f0\u3067\u69cb\u7bc9\u3059\u308b\u5834\u5408\u306e\u8a2d\u5b9a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8ff0\u3079\u308b\u3002<\/p>\n<p>5.9.1.  \u60f3\u5b9a\u3059\u308b\u69cb\u6210<\/p>\n<p>\u8907\u6570\u53f0\u69cb\u6210\u3068\u3057\u3066\u3001\u4ee5\u4e0b\u306e\u69cb\u6210\u3092\u524d\u63d0\u306b\u8aac\u660e\u3059\u308b\u3002Proxy Server\u3001Object Server\u3001 Container Server\u3001Account Server \u306b\u95a2\u3057\u3066\u306f\u3001\u540c\u3058\u69cb\u6210\u306e\u7269\u3092\u8907\u6570\u53f0\u7528\u610f\u3059\u308c\u3070\u3001\u540c\u69d8 \u306e\u8a2d\u5b9a\u3067\u8ffd\u52a0\u304c\u53ef\u80fd\u3067\u3042\u308b\u3002<\/p>\n<p>\u30fb\tAuth Server<br \/>\n\u30fb\tProxy Server<br \/>\n\u30fb\tObject Server + Container Server + Account Server<\/p>\n<p>5.9.2.  Auth Server \u306e\u8a2d\u5b9a<\/p>\n<p>Auth Server \u306e\u307f\u3092\u52d5\u4f5c\u3055\u305b\u308b\u5834\u5408\u306f\u3001Auth  Server \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3068\u3001\u5b9f\u884c\u306b\u5fc5\u8981\u306a python \u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308c\u3070\u3088\u3044\u3002memcached \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3084 XFS \u30d1\u30fc\u30c6 \u30a3\u30b7\u30e7\u30f3\u306e\u4f5c\u6210\u3084\u3001rsync \u306e\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u306f\u5fc5\u8981\u306a\u3044\u3002<br \/>\nDNS \u30e9\u30a6\u30f3\u30c9\u30ed\u30d3\u30f3\u3092\u7528\u3044\u3066\u8907\u6570\u306e Proxy Server \u3078\u632f\u308a\u5206\u3051\u308b\u5834\u5408\u3001Auth Server \u3067\u306f \u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3001URL \u3092 IP \u30a2\u30c9\u30ec\u30b9\u3067\u306f\u306a\u304f\u30db\u30b9\u30c8\u540d\u3092\u7528\u3044\u3066\u6307\u5b9a\u3059\u308b\u3002<\/p>\n<p>[DEFAULT]<\/p>\n<p>user = username bind_ip  = 0.0.0.0 bind_port = 11000<br \/>\ncert_file = \/etc\/swift\/cert.crt key_file = \/etc\/swift\/cert.key<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = auth-server<\/p>\n<p>[app:auth-server]<\/p>\n<p>use = egg:swift#auth<br \/>\ndefault_cluster_url = http:\/\/proxy.example.com:8080\/v1 super_admin_key = devauth<\/p>\n<p>5.9.3.  Proxy Server \u306e\u8a2d\u5b9a<\/p>\n<p>Proxy Server \u306b\u306a\u308b\u30db\u30b9\u30c8\u3067\u306f\u3001\u5b9f\u884c\u306b\u5fc5\u8981\u306a python \u30e9\u30a4\u30d6\u30e9\u30ea\u4ee5\u5916\u306b\u306f memcached \u304c\u5fc5\u8981\u306b\u306a\u308b\u304c\u3001\u540c\u4e00\u30db\u30b9\u30c8\u4e0a\u3067\u52d5\u4f5c\u3057\u3066\u3044\u308b\u5fc5\u8981\u306f\u306a\u3044\u3002XFS \u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u306e\u4f5c\u6210\u3084\u3001 rsync \u306e\u8a2d\u5b9a\u306b\u3064\u3044\u3066\u306f\u5fc5\u8981\u306a\u3044\u3002<br \/>\n\u4e0b\u8a18\u306f Auth Server \u306e IP \u30a2\u30c9\u30ec\u30b9\u304c 192.168.0.1 \u3067\u3042\u308b\u5834\u5408\u306e\u8a2d\u5b9a\u4f8b\u3067\u3042\u308b\u3002<\/p>\n<p>[DEFAULT] bind_ip = 0.0.0.0 bind_port = 8080 user = username<br \/>\ncert_file = \/etc\/swift\/cert.crt key_file = \/etc\/swift\/cert.key<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = healthcheck cache auth proxy-server<\/p>\n<p>[app:proxy-server]<\/p>\n<p>use = egg:swift#proxy allow_account_management = true<\/p>\n<p>[filter:auth]<\/p>\n<p>use = egg:swift#auth ip = 192.168.0.1<br \/>\nport = 11000 ssl = False<\/p>\n<p>[filter:healthcheck]<\/p>\n<p>use = egg:swift#healthcheck<\/p>\n<p>[filter:cache]<br \/>\nuse = egg:swift#memcache memcache_servers = 192.168.0.2:11211<\/p>\n<p>memcached \u3082\u8907\u6570\u306e\u30b5\u30fc\u30d0\u3092\u6307\u5b9a\u3067\u304d\u308b\u304c\u3001\u8907\u6570\u306e Proxy Server \u304b\u3089\u69cb\u6210\u3059\u308b\u5834\u5408\u3001<br \/>\n\u5168\u3066\u306e Proxy Server \u3067\u540c\u3058 memcached \u30b5\u30fc\u30d0\u7fa4\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\u307e\u305f memcached<br \/>\n\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u8a2d\u5b9a\u3067\u306f\u3001localhost  \u3067\u306e\u307f\u30b5\u30fc\u30d3\u30b9\u3092\u5f85\u3061\u53d7\u3051\u3066\u3044\u308b\u3002\u4ed6\u306e\u30db\u30b9\u30c8\u304b\u3089\u3082<br \/>\n\u5229\u7528\u53ef\u80fd\u306b\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b-l \u3067\u59cb\u307e\u308b\u884c\u3092\u7de8\u96c6\u3059\u308b\u3002<\/p>\n<p># vi \/etc\/memcached.conf<br \/>\n(\u7701\u7565)<br \/>\n-l 192.168.0.2 (\u7701\u7565)<\/p>\n<p>5.9.4.  Object Server + Container Server + Account Server \u306e\u8a2d\u5b9a<\/p>\n<p>Object  Server\u3001Container Server\u3001Account  Server \u306b\u306a\u308b\u30db\u30b9\u30c8\u3067\u306f\u3001\u5b9f\u884c\u306b\u5fc5\u8981\u306a python  \u30e9\u30a4\u30d6\u30e9\u30ea\u4ee5\u5916\u306b\u306f rsync \u304c\u5fc5\u8981\u306b\u306a\u308b\u3002\u307e\u305f\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3001 \u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001XFS  \u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u306e\u4f5c\u6210\u3068\u8a2d\u5b9a\u3082\u5fc5\u8981\u306b\u306a \u308b\u3002memcached \u306b\u3064\u3044\u3066\u306f\u5fc5\u8981\u306a\u3044\u3002<\/p>\n<p>5.9.5.  Ring \u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210<\/p>\n<p>\u672c\u7bc0\u306e\u69cb\u6210\u306e\u5834\u5408\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b IP \u30a2\u30c9\u30ec\u30b9\u30fbPort \u756a\u53f7\u3092\u5909\u66f4\u3057\u3066 Ring \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c \u6210\u3059\u308b\u3002<\/p>\n<p>\u30fb\tremakerings<\/p>\n<p>#!\/bin\/bash<\/p>\n<p>cd \/etc\/swift<\/p>\n<p>rm -f *.builder *.ring.gz backups\/*.builder backups\/*.ring.gz<\/p>\n<p>swift-ring-builder object.builder create 18 3 1<\/p>\n<p>swift-ring-builder object.builder add z1-192.168.0.3:6010\/sdb1 1 swift-ring-builder object.builder add z2-192.168.0.3:6020\/sdb2 1 swift-ring-builder object.builder add z3-192.168.0.3:6030\/sdb3 1 swift-ring-builder object.builder add z4-192.168.0.3:6040\/sdb4 1 swift-ring-builder object.builder rebalance<br \/>\nswift-ring-builder container.builder create 18 3 1<\/p>\n<p>swift-ring-builder container.builder add z1-192.168.0.3:6011\/sdb1 1 swift-ring-builder container.builder add z2-192.168.0.3:6021\/sdb2 1 swift-ring-builder container.builder add z3-192.168.0.3:6031\/sdb3 1 swift-ring-builder container.builder add z4-192.168.0.3:6041\/sdb4 1 swift-ring-builder container.builder rebalance<br \/>\nswift-ring-builder account.builder create 18 3 1<br \/>\nswift-ring-builder account.builder add z1-192.168.0.3:6012\/sdb1 1 swift-ring-builder account.builder add z2-192.168.0.3:6022\/sdb2 1 swift-ring-builder account.builder add z3-192.168.0.3:6032\/sdb3 1 swift-ring-builder account.builder add z4-192.168.0.3:6042\/sdb4 1 swift-ring-builder account.builder rebalance<\/p>\n<p>5.9.6.  \u30b5\u30fc\u30d0\u306e\u8ffd\u52a0<\/p>\n<p>\u4e0a\u8a18\u306e\u69cb\u6210\u3067\u66f4\u306b\u30b5\u30fc\u30d0\u3092\u8ffd\u52a0\u3059\u308b\u5834\u5408\u306f\u3001Ring  \u306b\u30c7\u30d0\u30a4\u30b9\u3092\u8ffd\u52a0\u3059\u308b\u3002\u3053\u3053\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u30b9 \u30af\u30ea\u30d7\u30c8\u3092\u4f5c\u6210\u3057\u3066\u5b9f\u884c\u3057\u3066\u3044\u308b\u3002<\/p>\n<p>\u30fb\taddrings<\/p>\n<p>#\/bin\/bash<\/p>\n<p>cd \/etc\/swift\/<\/p>\n<p>swift-ring-builder object.builder add z1-192.168.0.4:6010 sdb1 1 swift-ring-builder object.builder add z2-192.168.0.4:6020\/sdb2 1 swift-ring-builder object.builder add z3-192.168.0.4:6030\/sdb3 1 swift-ring-builder object.builder add z4-192.168.0.4:6040\/sdb4 1 swift-ring-builder object.builder rebalance<br \/>\nswift-ring-builder container.builder create 18 3 1<\/p>\n<p>swift-ring-builder container.builder add z1-192.168.0.4:6011\/sdb1 1 swift-ring-builder container.builder add z2-192.168.0.4:6021\/sdb2 1 swift-ring-builder container.builder add z3-192.168.0.4:6031\/sdb3 1 swift-ring-builder container.builder add z4-192.168.0.4:6041\/sdb4 1 swift-ring-builder container.builder rebalance<br \/>\nswift-ring-builder account.builder create 18 3 1<\/p>\n<p>swift-ring-builder account.builder add z1-192.168.0.4:6012\/sdb1 1 swift-ring-builder account.builder add z2-192.168.0.4:6022\/sdb2 1 swift-ring-builder account.builder add z3-192.168.0.4:6032\/sdb3 1 swift-ring-builder account.builder add z4-192.168.0.4:6042\/sdb4 1<br \/>\nswift-ring-builder account.builder rebalance<\/p>\n<p>5.9.7.  Proxy Server \u306e\u8907\u6570\u53f0\u69cb\u6210<\/p>\n<p>[DEFAULT]<\/p>\n<p>user = username bind_ip  = 0.0.0.0 bind_port = 11000<br \/>\ncert_file = \/etc\/swift\/cert.crt key_file = \/etc\/swift\/cert.key<\/p>\n<p>[pipeline:main]<\/p>\n<p>pipeline = auth-server<\/p>\n<p>[app:auth-server]<\/p>\n<p>use = egg:swift#auth<br \/>\ndefault_cluster_url = http:\/\/<br \/>\n:8080\/v1 super_admin_key = devauth<\/p>\n<p>6. Swift \u306e\u5229\u7528\u624b\u9806<\/p>\n<p>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u306e\u5229\u7528\u624b\u9806\u3068\u3057\u3066\u3001curl \u304a\u3088\u3073 CyberDuck \u304b\u3089\u306e\u5229\u7528\u65b9\u6cd5\u3092\u8aac\u660e\u3059\u308b\u3002<\/p>\n<p>6.1. curl<\/p>\n<p>curl \u306f\u3001\u30b7\u30f3\u30d7\u30eb\u306a\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u306e Web  \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\u3042\u308b\u3002\u30aa\u30d7\u30b7\u30e7\u30f3\u3067 HTTP  \u30d8\u30c3\u30c0\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u305f\u3081\u3001CloudFiles \u306e\u4ed5\u69d8\u306b\u5408\u308f\u305b\u305f HTTP  \u30e1\u30c3\u30bb\u30fc \u30b8\u3092\u6271\u3046\u3053\u3068\u304c\u3067\u304d\u308b\u3002<\/p>\n<p>6.1.1.  curl \u3067\u306e\u8a8d\u8a3c<\/p>\n<p>\u5229\u7528\u306b\u3042\u305f\u3063\u3066\u3001\u307e\u305a\u306f\u8a8d\u8a3c\u3092\u884c\u3046\u30024.8 \u7bc0\u3067\u4f5c\u6210\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u8a8d\u8a3c\u3059\u308b\u5834\u5408\u306f\u3001\u4e0b \u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3002URL \u306b\u3064\u3044\u3066\u306f\u4f7f\u7528\u3059\u308b\u74b0\u5883\u306b\u5408\u308f\u305b\u3066\u5909\u66f4\u3059\u308b\u3002<\/p>\n<p># \tcurl \t-v\t-H \t'X-Storage-User:\ttest:tester'\t-H \t'X-Storage-Pass:\ttesting'<\/p>\n<p>http:\/\/127.0.0.1:11000\/v1.0<\/p>\n<p>\u5b9f\u884c\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u7d50\u679c\u304c\u51fa\u529b\u3055\u308c\u308b\u3002<\/p>\n<p>* About to connect() to 127.0.0.1 port 11000 (#0)<\/p>\n<p>*\tTrying 127.0.0.1... connected<\/p>\n<p>* Connected to 127.0.0.1 (127.0.0.1) port 11000 (#0)<\/p>\n<p>&gt; GET \/v1.0 HTTP\/1.1<\/p>\n<p>&gt; User-Agent: curl\/7.19.7 (i486-pc-linux-gnu)  libcurl\/7.19.7 OpenSSL\/0.9.8k  zlib\/1.2.3.3 libidn\/1.15<br \/>\n&gt; Host: 127.0.0.1:11000<\/p>\n<p>&gt; Accept: *\/*<\/p>\n<p>&gt; X-Storage-User: test:tester<\/p>\n<p>&gt; X-Storage-Pass: testing<\/p>\n<p>&gt;<\/p>\n<p>&lt; HTTP\/1.1 204 No Content<\/p>\n<p>&lt; X-Storage-Url: http:\/\/127.0.0.1:8080\/v1\/AUTH_cb4d116793724eacb908b2f509e53c0d<\/p>\n<p>&lt; X-Storage-Token: AUTH_tk310bafc0db024dd39bd73f43fed2f4b0<\/p>\n<p>&lt; X-Auth-Token: AUTH_tk310bafc0db024dd39bd73f43fed2f4b0<\/p>\n<p>&lt; Content-Length: 0<\/p>\n<p>&lt; Date: Sun, 14 Nov 2010 01:56:05 GMT<\/p>\n<p>&lt;<\/p>\n<p>* Connection #0 to host 127.0.0.1 left intact<\/p>\n<p>* Closing connection #0<\/p>\n<p>X-Storage-Url \u3068 X-Auth-Token \u3092\u3001\u5f8c\u306e\u64cd\u4f5c\u3067\u4f7f\u7528\u3059\u308b\u306e\u3067\u63a7\u3048\u3066\u304a\u304f\u3002X-Storage-Token<br \/>\n\u306e\u5024\u306f X-Auth-Token \u3068\u540c\u3058\u306b\u306a\u308b\u3002<\/p>\n<p>6.1.2.\tcurl \u3067\u306e PUT<\/p>\n<p>PUT   \u3067 \u30b3 \u30f3 \u30c6 \u30ca \u3092 \u4f5c \u6210 \u3059 \u308b \u5834 \u5408 \u306f \u4ee5 \u4e0b \u306e \u3088 \u3046 \u306b \u5b9f \u884c \u3059 \u308b \u3002 \u8a8d \u8a3c \u306e \u969b \u306b \u63a7 \u3048 \u305f X-Auth-Token \u3092-H \u30aa\u30d7\u30b7\u30e7\u30f3\u3068 X-Auth-Token:\u3067\u6307\u5b9a\u3059\u308b\u3002\u5b9b\u5148 URL \u306b\u306f\u540c\u69d8\u306b\u53d6\u5f97\u3057 \u305f X-Storage-Url \u306e\u672b\u5c3e\u306b\u3001\u4f5c\u6210\u3057\u305f\u3044\u30b3\u30f3\u30c6\u30ca\u306e\u540d\u524d\u3092\u52a0\u3048\u3066\u6307\u5b9a\u3059\u308b\u3002<\/p>\n<p># curl \u2013v \u2013X PUT  -H 'X-Auth-Token:  AUTH_tk310bafc0db024dd39bd73f43fed2f4b0'<\/p>\n<p>http:\/\/127.0.0.1:8080\/v1\/AUTH_cb4d116793724eacb908b2f509e53c0d\/container<\/p>\n<p>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4fdd\u5b58\u3059\u308b\u5834\u5408\u306f\u3001-T \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\u3059\u308b\u3002\u5b9b\u5148 URL<br \/>\n\u306b\u306f\u3001X-Storage-Url  \u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u5148\u306e\u30d1\u30b9\u3092\u6307\u5b9a\u3059\u308b\u3002\u306a\u304a\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u30b3\u30f3\u30c6\u30ca\u306e\u4e2d\u306b\u3057<br \/>\n\u304b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u306a\u3044\u3002<\/p>\n<p># curl \u2013v \u2013T object \u2013X PUT -H 'X-Auth-Token: \u00a5<\/p>\n<p>AUTH_tk310bafc0db024dd39bd73f43fed2f4b0'<\/p>\n<p>http:\/\/127.0.0.1:8080\/v1\/AUTH_cb4d116793724eacb908b2f509e53c0d\/container\/object<\/p>\n<p>6.1.3.  curl \u3067\u306e GET\/HEAD<\/p>\n<p>GET \u306e\u5834\u5408\u3082 PUT  \u3068\u540c\u3058\u3088\u3046\u306b\u5b9f\u884c\u3059\u308b\u3002X-Storage-Url \u306b\u3001\u53d6\u5f97\u3057\u305f\u3044\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 \u3084\u30b3\u30f3\u30c6\u30ca\u306e\u30d1\u30b9\u3092\u8ffd\u52a0\u3059\u308b\u3002\u307e\u305f GET \u306e\u5834\u5408\u306f-X \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u7701\u3044\u3066\u3082\u826f\u3044\u3002<\/p>\n<p># \tcurl \t-v\t-H \t'X-Auth-Token:\tAUTH_tk310bafc0db024dd39bd73f43fed2f4b0'<\/p>\n<p>http:\/\/127.0.0.1:8080\/v1\/AUTH_cb4d116793724eacb908b2f509e53c0d<\/p>\n<p>HEAD  \u306e\u5834\u5408\u3082 GET \u3068\u540c\u69d8\u306e\u5f62\u5f0f\u3092\u53d6\u308a\u3001-X \u30aa\u30d7\u30b7\u30e7\u30f3\u3067 HEAD  \u3092\u6307\u5b9a\u3059\u308b\u3002<\/p>\n<p># curl \u2013v \u2013X HEAD -H 'X-Auth-Token: AUTH_tk310bafc0db024dd39bd73f43fed2f4b0'<\/p>\n<p>http:\/\/127.0.0.1:8080\/v1\/AUTH_cb4d116793724eacb908b2f509e53c0d<\/p>\n<p>6.1.4.  curl \u3067\u306e DELETE<\/p>\n<p>DELETE \u306e\u5834\u5408\u3082 GET \u3068\u540c\u3058\u3088\u3046\u306b\u5b9f\u884c\u3059\u308b\u3002X-Storage-Url \u306b\u3001\u524a\u9664\u3057\u305f\u3044\u30aa\u30d6\u30b8\u30a7 \u30af\u30c8\u3084\u30b3\u30f3\u30c6\u30ca\u306e\u30d1\u30b9\u3092\u52a0\u3048\u3066\u6307\u5b9a\u3059\u308b\u3002\u307e\u305f\u30b3\u30f3\u30c6\u30ca\u306f\u3001\u4e2d\u306b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u5b58\u5728\u3059\u308b \u5834\u5408\u306f\u524a\u9664\u3067\u304d\u306a\u3044\u3002<\/p>\n<p># curl \u2013v \u2013X DELETE -H 'X-Auth-Token:<\/p>\n<p>AUTH_tk310bafc0db024dd39bd73f43fed2f4b0'<\/p>\n<p>http:\/\/127.0.0.1:8080\/v1\/AUTH_cb4d116793724eacb908b2f509e53c0d\/container\/object<\/p>\n<p>6.3. CloudFiles API<\/p>\n<p>\u524d\u8ff0\u306e curl \u3067\u884c\u3063\u3066\u3044\u305f\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u3001CloudFiles \u306f API \u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044 \u308b\u3002\u73fe\u5728\u306f PHP\u3001Java\u3001.NET\u3001Ruby\u3001Python \u5411\u3051\u306e\u7269\u304c\u3042\u308a\u3001Github \u3067\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u3002<\/p>\n<p>6.4. CyberDuck<\/p>\n<p>CloudFiles \u306b\u5bfe\u5fdc\u3057\u305f GUI \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3068\u3057\u3066\u306f CyberDuck \u304c\u3042\u308b\u3002Mac \u5411\u3051\u306e\u30bd\u30d5 \u30c8\u30a6\u30a7\u30a2\u3067\u3042\u308b\u304c Java \u3067\u66f8\u304b\u308c\u3066\u304a\u308a\u3001\u30d0\u30fc\u30b8\u30e7\u30f3 3.7 \u4ee5\u964d\u304b\u3089\u306f Windows \u306b\u3082\u5bfe\u5fdc\u3057 \u3066\u3044\u308b\u3002\u73fe\u884c\u306e\u6700\u65b0\u7248\u306f\u30d0\u30fc\u30b8\u30e7\u30f3 4 \u7cfb\u5217\u3067\u3042\u308b\u3002CloudFiles \u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u4f7f\u7528\u3059\u308b\u30b5\u30fc \u30d3\u30b9\u3068\u3057\u3066\u3001Rackspace \u306e Cloud   Storage \u30b5\u30fc\u30d3\u30b9\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002\u4ee5\u524d\u306e\u30d0\u30fc \u30b8\u30e7\u30f3\u3067\u306f\u3001\u30b5\u30fc\u30d0\u306e\u30a2\u30c9\u30ec\u30b9\u306f\u56fa\u5b9a\u3055\u308c\u3066\u304a\u308a\u3001Swift \u3092\u6307\u5b9a\u3067\u304d\u306a\u304b\u3063\u305f\u304c\u3001\u73fe\u884c\u306e\u6700 \u65b0\u7248\u3067\u306f\u3001\u30d7\u30ed\u30c8\u30b3\u30eb\u306e\u30bf\u30a4\u30d7\u3068\u3057\u3066 Swift \u3092\u6307\u5b9a\u3057\u3001\u30b5\u30fc\u30d0\u306e\u30a2\u30c9\u30ec\u30b9\u3082\u6307\u5b9a\u53ef\u80fd\u3067\u3042\u308b\u3002 \u672c\u5831\u544a\u66f8\u3067\u78ba\u8a8d\u3057\u305f\u30d0\u30fc\u30b8\u30e7\u30f3\u306f 4.0b7  \u3067\u3042\u308a\u3001\u305d\u308c\u4ee5\u964d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3042\u308c\u3070\u5bfe\u5fdc\u3057\u3066 \u3044\u308b\u3060\u308d\u3046\u3002<\/p>\n<p>6.4.1.  CyberDuck \u306e\u8a2d\u5b9a<\/p>\n<p>CyberDuck  \u304b \u3089 \u306e \u5229 \u7528 \u65b9 \u6cd5 \u306b \u3064 \u3044 \u3066 \u8aac \u660e \u3059 \u308b \u3002 \u30af \u30e9 \u30a4 \u30a2 \u30f3 \u30c8 \u306e \u74b0 \u5883 \u3068 \u3057 \u3066 \u306f CyberDuck4.0b7\u3001Windows7 \u3067\u78ba\u8a8d\u3057\u3066\u3044\u308b\u3002\u8d77\u52d5\u5f8c\u3001\u65b0\u898f\u63a5\u7d9a\u3092\u9078\u629e\u3059\u308b\u3068\u63a5\u7d9a\u3059\u308b\u30b5 \u30fc\u30d0\u306e\u8a2d\u5b9a\u3092\u884c\u3046\u753b\u9762\u304c\u51fa\u308b\u306e\u3067\u3001\u30d7\u30ed\u30c8\u30b3\u30eb\u3092 FTP  \u304b\u3089 Swift \u5909\u66f4\u3059\u308b\u3002\u9078\u629e\u306e\u753b\u9762\u3092 \u56f3 10 \u306b\u793a\u3059\u3002<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image0711.jpg\" alt=\"\" title=\"image071\" width=\"435\" height=\"463\" class=\"aligncenter size-full wp-image-782\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image0711.jpg 498w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image0711-281x300.jpg 281w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><\/p>\n<p>\u56f3 10   CyberDuck \u3067\u306e\u30d7\u30ed\u30c8\u30b3\u30eb\u9078\u629e<\/p>\n<p>\u9078\u629e\u5f8c\u306f\u56f3 11 \u306e\u3088\u3046\u306b\u3001\u8a2d\u5b9a\u753b\u9762\u304c Swift \u7528\u306e\u3082\u306e\u306b\u5909\u308f\u308b\u306e\u3067\u3001\u7d9a\u3051\u3066\u60c5\u5831\u3092\u5165\u529b\u3059 \u308b\u3002<img loading=\"lazy\" decoding=\"async\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image073.gif\" alt=\"\" title=\"image073\" width=\"435\" height=\"462\" class=\"aligncenter size-full wp-image-783\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image073.gif 498w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image073-282x300.gif 282w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><br \/>\n\u56f3 11  CyberDuck \u3067\u306e\u30b5\u30fc\u30d0\u8a2d\u5b9a<\/p>\n<p>\u30cb\u30c3\u30af\u30cd\u30fc\u30e0\u306f\u3001CyberDuck \u5074\u3067\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u540d\u524d\u306a\u306e\u3067\u597d\u304d\u306a\u3082\u306e\u3092\u5165\u529b\u3059\u308c\u3070\u826f\u3044\u3002\u30b5 \u30fc \u30d0 \u30fb \u30dd \u30fc \u30c8 \u306f \u305d \u308c \u305e \u308c Auth  Server  \u306e \u7269 \u3092 \u6307 \u5b9a \u3059 \u308b \u3002 \u30e6 \u30fc \u30b6 \u540d \u306b \u306f \u3001 curl  \u306e \u6642 \u306e X-Storage-User  \u3068 \u540c \u69d8 \u3001 : \u306e \u5f62 \u5f0f \u3067 \u5165 \u529b \u3059 \u308b \u3002 \u30d1 \u30b9 \u30ef \u30fc \u30c9 \u306b \u3064 \u3044 \u3066 \u306f \u3001 X-Storage-Pass \u3068\u540c\u69d8\u3001<br \/>\n\u3092\u5165\u529b\u3059\u308b\u3002\u7701\u7565\u3057\u305f\u5834\u5408\u306f\u3001\u63a5\u7d9a\u6642\u306b\u56f3 12 \u306e\u3088\u3046\u306a\u753b\u9762 \u304c\u51fa\u3066\u5165\u529b\u3092\u6c42\u3081\u3089\u308c\u308b\u306e\u3067\u3001API \u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u3068\u3057\u3066\u5165\u529b\u3059\u308b\u3002\u56f3 11 \u306b\u3042\u308b\u30d1\u30b9\u306e\u9805\u76ee\u306b\u3064\u3044\u3066 \u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u306f\u306a\u304f\u3001path \u306e\u610f\u5473\u3067\u3042\u308b\u3002\u3053\u308c\u306f\u7701\u7565\u3057\u3066\u304a\u3051\u3070\u3088\u3044\u3002curl \u3068\u540c\u69d8\u306e\u30d1\u30b9\u3068\u3057\u3066\u3001<br \/>\n\/v1.0 \u306a\u3069\u3092\u8ffd\u52a0\u3059\u308b\u3068\u30a8\u30e9\u30fc\u304c\u51fa\u308b\u304c\u3001\u7701\u7565\u3057\u305f\u5834\u5408\u3068\u540c\u69d8\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002\u307e\u305f URL \u304c https \u304b\u3089\u59cb\u307e\u3063\u3066\u3044\u308b\u3088\u3046\u306b\u3001SSL \u63a5\u7d9a\u3092\u884c\u3063\u3066\u3044\u308b\u3002CyberDuck \u304b\u3089\u5229\u7528\u3059\u308b\u5834\u5408\u3001Swift \u306f SSL \u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u8a2d\u5b9a\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u3002<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image075.gif\" alt=\"\" title=\"image075\" width=\"435\" height=\"256\" class=\"aligncenter size-full wp-image-784\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image075.gif 550w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image075-300x176.gif 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><\/p>\n<p>\u56f3 12   \u30d1\u30b9\u30ef\u30fc\u30c9\u5165\u529b\u753b\u9762<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image0771.jpg\" alt=\"\" title=\"image077\" width=\"435\" height=\"372\" class=\"aligncenter size-full wp-image-785\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image0771.jpg 566w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image0771-300x256.jpg 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><br \/>\n\u56f3 13   \u63a5\u7d9a\u5f8c\u306e\u753b\u9762\u3068\u53f3\u30af\u30ea\u30c3\u30af\u30e1\u30cb\u30e5\u30fc<\/p>\n<p>\u63a5\u7d9a\u5f8c\u306f\u3001\u56f3 13 \u306e\u3088\u3046\u306b\u306a\u308b\u3002\u53f3\u30af\u30ea\u30c3\u30af\u30e1\u30cb\u30e5\u30fc\u3082\u56f3 13 \u306b\u5165\u308c\u3066\u3044\u308b\u3002\u3053\u306e\u30e1\u30cb\u30e5 \u30fc\u304b\u3089\u3001\u30d5\u30a9\u30eb\u30c0\u306e\u4f5c\u6210\u3084\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u308b\u3002\u307e\u305f\u3001\u4e00\u756a\u4e0a\u306e \u968e\u5c64\u3067\u4f5c\u6210\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u3068\u3057\u3066\u6271\u308f\u308c\u3001\u56f3 13  \u3067\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306a\u30a2\u30a4 \u30b3\u30f3\u306b\u306a\u308b\u3002\u30b3\u30f3\u30c6\u30ca\u306e\u4e2d\u3067\u4f5c\u6210\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3001\u56f3 14 \u306e\u3088\u3046\u306b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30a2\u30a4 \u30b3\u30f3\u306b\u306a\u308b\u3002<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image079.gif\" alt=\"\" title=\"image079\" width=\"435\" height=\"263\" class=\"aligncenter size-full wp-image-786\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image079.gif 452w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image079-300x181.gif 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><\/p>\n<p>\u56f3 14   \u30b3\u30f3\u30c6\u30ca\u306e\u4e2d<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image081.gif\" alt=\"\" title=\"image081\" width=\"435\" height=\"270\" class=\"aligncenter size-full wp-image-787\" \/><br \/>\n\u56f3 15   \u30d5\u30a1\u30a4\u30eb\u306b\u5bfe\u3059\u308b\u53f3\u30af\u30ea\u30c3\u30af<\/p>\n<p>\u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u6271\u3044\u65b9\u3068\u3057\u3066\u306f\u3001\u56f3 15 \u306e\u3088\u3046\u306b\u5bfe\u8c61\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3001\u60c5\u5831\u3092\u9078 \u629e\u3059\u308b\u3002\u9078\u629e\u5f8c\u3001\u60c5\u5831\u306e\u753b\u9762\u304c\u51fa\u3066\u304f\u308b\u306e\u3067\u3001\u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u30a2\u30a4\u30b3\u30f3\u3092\u9078\u629e\u3059\u308b\u3002\u9078\u629e\u5f8c\u3001\u56f3 16 \u306e\u753b\u9762\u306b\u306a\u308a\u3001\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u5165\u529b\u3067\u304d\u308b\u3002<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image083.gif\" alt=\"\" title=\"image083\" width=\"435\" height=\"399\" class=\"aligncenter size-full wp-image-788\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image083.gif 514w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image083-300x274.gif 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><\/p>\n<p>\u56f3 16   \u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u5165\u529b\u753b\u9762<\/p>\n<p>7. Swift \u306e\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/p>\n<p>7.1. Swift \u306e\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb<\/p>\n<p>\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3079\u3066\/var\/log\/syslog \u306b\u4fdd\u5b58\u3055\u308c\u308b\u3002\u3053\u306e\u305f\u3081\u3001\u30b5\u30fc\u30d0\u3054\u3068\u306b\u7570\u306a\u308b\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb \u3092\u7528\u3044\u308b\u3053\u3068\u306f\u51fa\u6765\u306a\u3044\u3002\u3057\u304b\u3057\u30ed\u30ae\u30f3\u30b0\u306e\u305f\u3081\u306b\u3001stats \u3068\u3044\u3046\u4ed5\u7d44\u307f\u3082\u63d0\u4f9b\u3055\u308c\u3066\u304a\u308a\u3001\u30b5\u30fc\u30d0\u3054 \u3068\u306b\u9055\u3046\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306a\u3069\u304c\u53ef\u80fd\u306b\u306a\u308b\u3002<br \/>\n\u30ed\u30b0\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5185\u5bb9\u3067\u51fa\u529b\u3055\u308c\u308b\u3002\u8868\u793a\u306e\u90fd\u5408\u4e0a\u3001\u9014\u4e2d\u3067\u6539\u884c\u3057\u3066\u3044\u308b\u30ed\u30b0\u306b\u3064\u3044\u3066\u306f\u3001\u5148 \u982d\u306b\u7a7a\u767d\u3092\u5165\u308c\u3066\u3044\u308b\u3002\u592a\u5b57\u3067\u8868\u793a\u3057\u3066\u3044\u308b\u90e8\u5206\u304c\u3001\u30b5\u30fc\u30d0\u30d7\u30ed\u30bb\u30b9\u306e\u540d\u524d\u3067\u3042\u308a\u3001\u305d\u308c\u4ee5\u964d\u306e\u90e8\u5206\u304c\u30ed\u30b0\u306e\u5185\u5bb9\u306b\u306a\u308b\u3002<\/p>\n<p>Dec \t9 18:16:24 swift2 auth-server validate_token('AUTH_tkf53b15e635b64<\/p>\n<p>4b58c575a39778d0cd6', \t_,\t_)\t= \t(86365.042982816696, \t'test', \t'tester',<\/p>\n<p>'AUTH_78578ea362324103b5a82e00ffb59362') [0.00]<\/p>\n<p>Dec \t9 18:16:24 swift2 auth-server 127.0.0.1 - - [09\/Dec\/2010:09:16:24 +0000]<\/p>\n<p>\"GET \/token\/AUTH_tkf53b15e635b644b58c575a39778d0cd6  HTTP\/1.0\"  204 - \"-\" \"-\" - - - - - - - - - \"-\" \"127.0.0.1\" \"-\" 0.0016<br \/>\nDec \t9 18:16:24  swift2 account-server 127.0.0.1 - - [09\/Dec\/2010:09:16:24 +0000] \"GET\t\/sdb3\/197717\/AUTH_78578ea362324103b5a82e00ffb59362\" \t200 \t- \"tx0c7ffab0-33a2-4098-9f17-197730129540\"  \"-\"  \"curl\/7.19.7  (i486-pc-linux-gnu) libcurl\/7.19.7 OpenSSL\/0.9.8k zlib\/1.2.3.3 libidn\/1.15\" 0.0027 \"\"<br \/>\nDec \t9 18:16:24 swift2 proxy-server - 127.0.0.1 09\/Dec\/2010\/09\/16\/24  GET\/v1\/ AUTH_78578ea362324103b5a82e00ffb59362\/ \tHTTP\/1.0 \t200 \t- curl\/7.19.7%20%28i486-pc-linux-gnu%29%20libcurl\/7.19.7%20OpenSSL\/0.9.8k%<br \/>\n20zlib\/1.2.3.3%20libidn\/1.15 test%3Atester%2CAUTH_tkf53b15e635b644b58c575a39778d0cd6\t-\t-\t-<br \/>\ntx0c7ffab0-33a2-4098-9f17-197730129540 - 0.0059<\/p>\n<p>7.2. \u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/p>\n<p>\u8d77\u52d5\u306e\u969b\u306b\u306f swift-init \u30b3\u30de\u30f3\u30c9\u3092\u4ecb\u3057\u3066\u884c\u3063\u3066\u3044\u308b\u304c\u3001\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3067\u306f\u30a8\u30e9\u30fc\u306e\u51fa\u529b\u304c\u3055\u308c\u306a \u3044\u3002\u305d\u306e\u305f\u3081\u3001\u8a2d\u5b9a\u5185\u5bb9\u306e\u8aa4\u308a\u306a\u3069\u306b\u306f\u6c17\u3065\u304d\u306b\u304f\u3044\u3002\u76f4\u63a5\u30b5\u30fc\u30d0\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5b9f\u884c\u3057\u305f\u5834\u5408\u306f\u3001 \u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306a\u3069\u3082\u51fa\u529b\u3055\u308c\u308b\u306e\u3067\u3001\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u969b\u306b\u306f\u76f4\u63a5\u8d77\u52d5\u3059\u308b\u3068\u3088\u3044\u3060\u308d \u3046\u3002<br \/>\n\u4e0b\u8a18\u306f\u3001Auth  Server \u3092\u76f4\u63a5\u8d77\u52d5\u3055\u305b\u305f\u969b\u3001super_admin_key \u3092\u8a2d\u5b9a\u3057\u3066\u3044\u306a\u304b\u3063\u305f\u5834\u5408\u306b\u51fa\u529b\u3055\u308c\u308b\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u3042\u308b\u3002<\/p>\n<p># swift-auth-server \/etc\/swift\/auth-server.conf<br \/>\nError  trying to load  config \/etc\/swift\/auth-server.conf: No super_admin_key set in conf file! Exiting.<\/p>\n<p>8. \u554f\u984c\u70b9\u3068\u8ab2\u984c<\/p>\n<p>8.1. \u62e1\u5f35\u3068 Ring \u306e\u66f4\u65b0<\/p>\n<p>Swift \u306e\u30e1\u30ea\u30c3\u30c8\u3068\u3057\u3066\u3001\u52d5\u7684\u306b\u30b5\u30fc\u30d0\u3092\u8ffd\u52a0\u3057\u3066\u5197\u9577\u5316\u30fb\u5897\u8a2d\u3092\u884c\u3048\u308b\u70b9\u304c\u6319\u3052\u3089\u308c\u308b\u3002 \u3057\u304b\u3057\u305d\u306e\u969b\u306b\u3001\u5404\u30b5\u30fc\u30d0\u306b\u3042\u308b Ring \u30d5\u30a1\u30a4\u30eb\u3092\u66f4\u65b0\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u3002\u898f\u6a21\u304c\u5927\u304d\u304f \u306a\u308b\u306b\u3064\u308c\u3001\u3053\u306e\u4f5c\u696d\u306b\u3088\u308b\u8ca0\u62c5\u3082\u5927\u304d\u304f\u306a\u308b\u3002\u3053\u306e\u305f\u3081\u3001Ring  \u3092\u66f4\u65b0\u3059\u308b\u305f\u3081\u306e\u30e1\u30ab\u30cb \u30ba\u30e0\u3068\u3057\u3066\u3001\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u3092\u8907\u6570\u53f0\u306b\u30b3\u30d4\u30fc\u3059\u308b\u30c4\u30fc\u30eb\u306a\u3069\u304c\u5fc5\u8981\u306b\u306a\u308b\u3060\u308d\u3046\u3002\u305d\u306e\u3088 \u3046\u306a\u30c4\u30fc\u30eb\u306b\u306f\u3001pssh  \u306a\u3069\u304c\u3042\u308b\u3002<\/p>\n<p>8.2. \u30b5\u30fc\u30d0\u306e\u8a00\u8a9e\u8a2d\u5b9a\u306b\u3088\u308b\u4e0d\u5177\u5408<\/p>\n<p>\u30b5\u30fc\u30d0\u3068\u306a\u308b OS \u306e\u8a00\u8a9e\u8a2d\u5b9a\u306b\u3088\u3063\u3066\u306f\u3001Replicator \u306a\u3069\u304c\u6b63\u3057\u304f\u52d5\u4f5c\u3057\u306a\u304f\u306a\u308b\u3002Swift \u306e\u5185\u90e8\u3067\u306f\u3001\u81ea\u8eab\u306e IP  \u30a2\u30c9\u30ec\u30b9\u3092\u53d6\u5f97\u3059\u308b\u95a2\u6570\u304c\u3042\u308a\u3001Replicator  \u306a\u3069\u304c\u4f7f\u7528\u3057\u3066\u3044\u308b\u3002 \u3053\u306e\u95a2\u6570\u306e\u51e6\u7406\u5185\u5bb9\u306f\u3001ifconfig  \u306e\u51fa\u529b\u7d50\u679c\u3092\u89e3\u6790\u3057\u3066\u81ea\u5206\u81ea\u8eab\u306e IP  \u30a2\u30c9\u30ec\u30b9\u3092\u53d6\u5f97\u3059\u308b \u3082\u306e\u3067\u3042\u308b\u3002\u3057\u304b\u3057\u3001\u4f8b\u3048\u3070 OS \u3067\u8a2d\u5b9a\u3057\u3066\u3044\u308b\u8a00\u8a9e\u304c\u65e5\u672c\u8a9e\u306e\u5834\u5408\u3001ifconfig \u306e\u51fa\u529b\u306b\u65e5 \u672c\u8a9e\u304c\u542b\u307e\u308c\u3001\u610f\u56f3\u901a\u308a\u306e\u89e3\u6790\u304c\u3055\u308c\u306a\u3044\u3002\u3053\u306e\u305f\u3081\u3001\u81ea\u8eab\u306e IP  \u30a2\u30c9\u30ec\u30b9\u3092\u53d6\u5f97\u3067\u304d\u305a\u3001 Replicator \u306a\u3069\u304c\u51e6\u7406\u3092\u884c\u3048\u306a\u304f\u306a\u308b\u3002<br \/>\n\u5bfe\u51e6\u6cd5\u3068\u3057\u3066\u306f\u3001\u8d77\u52d5\u7528\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u5185\u3067\u8a00\u8a9e\u8a2d\u5b9a\u3092\u5909\u3048\u308c\u3070\u3088\u3044\u3002\u4f8b\u3048\u3070\u3001startrest \u306e\u4e2d\u3067\u3001\u5404\u30b5\u30fc\u30d0\u306e\u8d77\u52d5\u524d\u306b export LANGUAGE=C \u3092\u52a0\u3048\u308b\u3053\u3068\u3067\u5bfe\u51e6\u3067\u304d\u308b\u3002\u306a\u304a\u73fe \u884c\u306e\u6700\u65b0\u7248\u3067\u306f\u3001IP \u30a2\u30c9\u30ec\u30b9\u306e\u53d6\u5f97\u65b9\u6cd5\u304c\u5909\u308f\u3063\u3066\u304a\u308a\u3001\u8a00\u8a9e\u8a2d\u5b9a\u304c\u65e5\u672c\u8a9e\u306a\u3069\u3067\u3082\u52d5\u4f5c \u3059\u308b\u3002<\/p>\n<p>8.3. Auth Server \u306e\u8a2d\u5b9a<\/p>\n<p>\u5404\u30b5\u30fc\u30d0\u306e\u8a2d\u5b9a\u9805\u76ee\u306b\u3064\u3044\u3066\u306f\u3001Swift \u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b\u3002\u3057\u304b\u3057\u3001Auth Server \u306b\u3064\u3044\u3066\u306f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u304c\u73fe\u884c\u5b58\u5728\u3057\u306a\u3044\u3002\u3053\u306e\u305f\u3081\u96a0\u308c\u305f\u8a2d\u5b9a\u304c\u5b58\u5728\u3057\u3066\u3044\u308b\u53ef \u80fd\u6027\u304c\u3042\u308b\u3002<\/p>\n<p>8.4. Nova \u3068\u306e\u9023\u643a<\/p>\n<p>OpenStack \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001Swift \u306e\u4ed6\u306b\u3082 Nova \u3068\u3044\u3046\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u516c\u958b\u3057\u3066\u3044\u308b\u3002<\/p>\n<p>Nova \u306f\u30af\u30e9\u30a6\u30c9\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3067\u3042\u308a\u3001\u30af\u30e9\u30a6\u30c9\u74b0\u5883\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3067\u3042\u308b\u3002<\/p>\n<p>Swift \u3068\u306e\u9023\u643a\u3068\u3057\u3066\u3001Nova \u3067\u4f7f\u7528\u3057\u3066\u3044\u308b\u4eee\u60f3\u30de\u30b7\u30f3\u306e\u30a4\u30e1\u30fc\u30b8\u3092 Swift \u3078\u4fdd\u5b58\u3059\u308b\u3053<br \/>\n\u3068\u304c\u8003\u3048\u3089\u308c\u308b\u3002\u3057\u304b\u3057\u73fe\u5728\u3001Swift \u306f\u3042\u304f\u307e\u3067\u30d5\u30a1\u30a4\u30eb\u30b5\u30fc\u30d0\u3068\u3057\u3066\u52d5\u4f5c\u3059\u308b\u305f\u3081\u3001\u30d5\u30a1<br \/>\n\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3068\u3057\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u63d0\u4f9b\u306f\u884c\u3063\u3066\u3044\u306a\u3044\u3002Nova \u5074\u3067 Swift \u306e\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u4f7f\u7528<br \/>\n\u3059\u308b\u306a\u3069\u306e\u5de5\u592b\u304c\u5fc5\u8981\u306b\u306a\u308b\u3002<\/p>\n<p>9. \u307e\u3068\u3081<\/p>\n<p>\u672c\u8abf\u67fb\u66f8\u3067\u306f\u3001\u5206\u6563\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u3067\u3042\u308b Swift \u306b\u3064\u3044\u3066\u307e\u3068\u3081\u305f\u3002\u6a5f\u80fd\u3084\u69cb\u6210 \u3059\u308b\u30b5\u30fc\u30d0\u7fa4\u3001\u30b5\u30fc\u30d0\/\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u4e21\u8005\u306e\u5229\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8ff0\u3079\u305f\u3002Swift \u3092\u69cb\u6210\u3059\u308b\u5404\u30b5 \u30fc\u30d0\u306f\u8907\u6570\u53f0\u304b\u3089\u69cb\u6210\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3042\u308a\u3001\u5927\u898f\u6a21\u306a\u30b5\u30fc\u30d0\u3078\u62e1\u5927\u3057\u3066\u3044\u304f\u3053\u3068\u304c\u53ef\u80fd \u3067\u3042\u308b\u3002<br \/>\nSwift \u306f\u307e\u3060\u767a\u5c55\u9014\u4e0a\u3067\u3042\u308a\u3001\u672c\u5831\u544a\u66f8\u306e\u5185\u5bb9\u304b\u3089\u66f4\u65b0\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3002\u5b9f\u969b\u3001\u672c\u5831 \u544a\u66f8\u306e\u57f7\u7b46\u4e2d\u5f53\u521d\u306f\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u304c bazaar \u306e\u307f\u3067\u914d\u5e03\u3055\u308c\u3066\u304a\u308a\u3001CyberDuck \u3082 Swift \u306b\u672a\u5bfe\u5fdc\u3067\u3042\u3063\u305f\u3002\u3057\u304b\u3057\u3069\u3061\u3089\u3082\u57f7\u7b46\u4e2d\u306b\u72b6\u6cc1\u304c\u5909\u5316\u3057\u3001\u672c\u5831\u544a\u66f8\u3067\u8ff0\u3079\u305f\u72b6\u6cc1\u3068\u306a\u3063 \u305f\u3002\u4eca\u5f8c\u3082 OpenStack  Nova \u3067\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u3057\u3066\u5229\u7528\u53ef\u80fd\u306b\u306a\u308b\u306a\u3069\u3001\u66f4\u306b\u958b\u767a\u304c\u9032\u3080 \u3068\u4e88\u60f3\u3055\u308c\u308b\u3002<\/p>\n<p>\u3010\u4e3b\u306a\u53c2\u8003\u6587\u732e\u3011<br \/>\n[1] Swift \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8(\u516c\u5f0f) http:\/\/swift.openstack.org\/<br \/>\n[2] CyberDuck http:\/\/cyberduck.ch\/<\/p>\n<p>[3] Deployment Guide http:\/\/swift.openstack.org\/deployment_guide.html<\/p>\n<p>[4] LaunchPad https:\/\/launchpad.net\/<\/p>\n<p>[5] Swift(LaunchPad) https:\/\/launchpad.net\/swift<br \/>\n[7]  \u65e5\u672c OpenStack \u30e6\u30fc\u30b6\u4f1a http:\/\/openstack.jp\/<br \/>\n[8] RackSpace Cloud  http:\/\/www.rackspacecloud.com\/<\/p>\n<p>[9] CloudFiles API http:\/\/www.rackspacecloud.com\/cloud_hosting_products\/files\/api\/ [10] GitHub https:\/\/github.com\/<br \/>\n[11] CloudFiles API(GitHub) https:\/\/github.com\/rackspace\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>2011\u5e741\u670818\u65e5 1. \u6982\u8981 Swift \u306f OpenStack \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u958b\u767a\u3057\u3066\u3044\u308b\u5206\u6563\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u3067\u3042\u308b\u3002OpenStack \u306f\u3001\u30af\u30e9\u30a6\u30c9\u74b0\u5883\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3042\u308a\u3001\u4eee\u60f3 [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":773,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[1019],"tags":[],"class_list":["post-772","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>OpenStack Storage(Swift) \u8abf\u67fb\u5831\u544a\u66f8 - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3<\/title>\n<meta name=\"description\" content=\"Uncategorized |2011\u5e741\u670818\u65e5 1. \u6982\u8981 Swift \u306f OpenStack \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u958b\u767a\u3057\u3066\u3044\u308b\u5206\u6563\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u3067\u3042\u308b\u3002OpenStack\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.creationline.com\/tech-blog\/772\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OpenStack Storage(Swift) \u8abf\u67fb\u5831\u544a\u66f8 - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\" \/>\n<meta property=\"og:description\" content=\"Uncategorized |2011\u5e741\u670818\u65e5 1. \u6982\u8981 Swift \u306f OpenStack \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u958b\u767a\u3057\u3066\u3044\u308b\u5206\u6563\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u3067\u3042\u308b\u3002OpenStack\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.creationline.com\/tech-blog\/772\" \/>\n<meta property=\"og:site_name\" content=\"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/creationline\" \/>\n<meta property=\"article:published_time\" content=\"2011-01-18T03:01:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-02-07T07:20:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image002.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"568\" \/>\n\t<meta property=\"og:image:height\" content=\"380\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@creationline\" \/>\n<meta name=\"twitter:site\" content=\"@creationline\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"13\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/7d923d1c017568a1a5e66d7bb1c8764a\"},\"headline\":\"OpenStack Storage(Swift) \u8abf\u67fb\u5831\u544a\u66f8\",\"datePublished\":\"2011-01-18T03:01:03+00:00\",\"dateModified\":\"2014-02-07T07:20:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772\"},\"wordCount\":2688,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2011\\\/05\\\/image002.jpg\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772\",\"name\":\"OpenStack Storage(Swift) \u8abf\u67fb\u5831\u544a\u66f8 - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2011\\\/05\\\/image002.jpg\",\"datePublished\":\"2011-01-18T03:01:03+00:00\",\"dateModified\":\"2014-02-07T07:20:03+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/7d923d1c017568a1a5e66d7bb1c8764a\"},\"description\":\"Uncategorized |2011\u5e741\u670818\u65e5 1. \u6982\u8981 Swift \u306f OpenStack \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u958b\u767a\u3057\u3066\u3044\u308b\u5206\u6563\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u3067\u3042\u308b\u3002OpenStack\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772#primaryimage\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2011\\\/05\\\/image002.jpg\",\"contentUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2011\\\/05\\\/image002.jpg\",\"width\":568,\"height\":380},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/772#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"HOME\",\"item\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OpenStack Storage(Swift) \u8abf\u67fb\u5831\u544a\u66f8\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#website\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/\",\"name\":\"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\",\"description\":\"\u30a2\u30b8\u30e3\u30a4\u30eb\uff06DevOps\u3001\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u3001AI\uff06LLM\u306e\u5148\u7aef\u6280\u8853\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/7d923d1c017568a1a5e66d7bb1c8764a\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/avatar.png\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/avatar.png\",\"contentUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/avatar.png\",\"caption\":\"admin\"},\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/author\\\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OpenStack Storage(Swift) \u8abf\u67fb\u5831\u544a\u66f8 - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","description":"Uncategorized |2011\u5e741\u670818\u65e5 1. \u6982\u8981 Swift \u306f OpenStack \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u958b\u767a\u3057\u3066\u3044\u308b\u5206\u6563\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u3067\u3042\u308b\u3002OpenStack","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.creationline.com\/tech-blog\/772","og_locale":"ja_JP","og_type":"article","og_title":"OpenStack Storage(Swift) \u8abf\u67fb\u5831\u544a\u66f8 - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","og_description":"Uncategorized |2011\u5e741\u670818\u65e5 1. \u6982\u8981 Swift \u306f OpenStack \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u958b\u767a\u3057\u3066\u3044\u308b\u5206\u6563\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u3067\u3042\u308b\u3002OpenStack","og_url":"https:\/\/www.creationline.com\/tech-blog\/772","og_site_name":"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","article_publisher":"https:\/\/www.facebook.com\/creationline","article_published_time":"2011-01-18T03:01:03+00:00","article_modified_time":"2014-02-07T07:20:03+00:00","og_image":[{"width":568,"height":380,"url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image002.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@creationline","twitter_site":"@creationline","twitter_misc":{"\u57f7\u7b46\u8005":"admin","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"13\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.creationline.com\/tech-blog\/772#article","isPartOf":{"@id":"https:\/\/www.creationline.com\/tech-blog\/772"},"author":{"name":"admin","@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/7d923d1c017568a1a5e66d7bb1c8764a"},"headline":"OpenStack Storage(Swift) \u8abf\u67fb\u5831\u544a\u66f8","datePublished":"2011-01-18T03:01:03+00:00","dateModified":"2014-02-07T07:20:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.creationline.com\/tech-blog\/772"},"wordCount":2688,"commentCount":0,"image":{"@id":"https:\/\/www.creationline.com\/tech-blog\/772#primaryimage"},"thumbnailUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image002.jpg","articleSection":["Uncategorized"],"inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.creationline.com\/tech-blog\/772#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.creationline.com\/tech-blog\/772","url":"https:\/\/www.creationline.com\/tech-blog\/772","name":"OpenStack Storage(Swift) \u8abf\u67fb\u5831\u544a\u66f8 - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","isPartOf":{"@id":"https:\/\/www.creationline.com\/tech-blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.creationline.com\/tech-blog\/772#primaryimage"},"image":{"@id":"https:\/\/www.creationline.com\/tech-blog\/772#primaryimage"},"thumbnailUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image002.jpg","datePublished":"2011-01-18T03:01:03+00:00","dateModified":"2014-02-07T07:20:03+00:00","author":{"@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/7d923d1c017568a1a5e66d7bb1c8764a"},"description":"Uncategorized |2011\u5e741\u670818\u65e5 1. \u6982\u8981 Swift \u306f OpenStack \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u958b\u767a\u3057\u3066\u3044\u308b\u5206\u6563\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30b9\u30c8\u30ec\u30fc\u30b8\u3067\u3042\u308b\u3002OpenStack","breadcrumb":{"@id":"https:\/\/www.creationline.com\/tech-blog\/772#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.creationline.com\/tech-blog\/772"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.creationline.com\/tech-blog\/772#primaryimage","url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image002.jpg","contentUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2011\/05\/image002.jpg","width":568,"height":380},{"@type":"BreadcrumbList","@id":"https:\/\/www.creationline.com\/tech-blog\/772#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"HOME","item":"https:\/\/www.creationline.com\/tech-blog"},{"@type":"ListItem","position":2,"name":"OpenStack Storage(Swift) \u8abf\u67fb\u5831\u544a\u66f8"}]},{"@type":"WebSite","@id":"https:\/\/www.creationline.com\/tech-blog\/#website","url":"https:\/\/www.creationline.com\/tech-blog\/","name":"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","description":"\u30a2\u30b8\u30e3\u30a4\u30eb\uff06DevOps\u3001\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u3001AI\uff06LLM\u306e\u5148\u7aef\u6280\u8853","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.creationline.com\/tech-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/7d923d1c017568a1a5e66d7bb1c8764a","name":"admin","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2021\/12\/avatar.png","url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2021\/12\/avatar.png","contentUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2021\/12\/avatar.png","caption":"admin"},"url":"https:\/\/www.creationline.com\/tech-blog\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/comments?post=772"}],"version-history":[{"count":0,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/772\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/media\/773"}],"wp:attachment":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/media?parent=772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/categories?post=772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/tags?post=772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}