ÔÚSwift2.0ÖÐÍÆ³öµÄ´æ´¢²ßÂÔ¹¦ÄÜ£¬Äܹ»ÈùÜÀíÔ±¸ù¾Ý×Ô¼ºÏµÍ³µÄÌØµãÖÆ¶¨²»Í¬µÄ´æ´¢²ßÂÔ£»Óû§»ò×â»§¸ù¾Ý×Ô¼ºÊý¾ÝµÄÌØµãºÍÒµÎñÐèÒª£¬ÒÔContainerΪÁ£¶ÈÑ¡Ôñ´æ´¢²ßÂÔ¡£ÎÄÖжԴ洢²ßÂÔ×öÁ˼òÒª½éÉÜ£¬ÈöÁÕßÌå»áÆäÓÃ;¡£
OpenStack ObjectStorage£¨Swift£©Ç°ÉíÊÇRackspace CloudFilesÏîÄ¿£¬ÓÚ2010Äê¹±Ï׸øOpenStackÉçÇø£¬ÊÇOpenStack×îÔçµÄÁ½¸öÏîĿ֮һ¡£Swift¿ÉÔڱȽϱãÒ˵ÄͨÓÃÓ²¼þÉϹ¹Öþ¾ßÓм«Ç¿¿ÉÀ©Õ¹ÐÔºÍÊý¾Ý³Ö¾ÃÐԵĴ洢ϵͳ£¬Ö§³Ö¶à×â»§£¬Í¨¹ýRESTfulAPIÌṩ¶ÔÈÝÆ÷£¨Container£©ºÍ¶ÔÏóµÄCRUD²Ù×÷¡£
OpenStackSwift¶ÔÏó´æ´¢¼°Æä´æ´¢²ßÂÔ¼ò½é
Swift2.0ÓÚ2014Äê7ÔÂ8ÈÕ·¢²¼£¬ÆäÖÐ×îÖØÒªµÄÐÂÌØÐÔÊÇ´æ´¢²ßÂÔ£¨StoragePolicy£©£¬¸ÃÌØÐԸıäÁËÒÔÍù´æ´¢ÏµÍ³Öд洢²ßÂÔÓÉÉè¼ÆÓëʵʩ·½¾ö¶¨µÄ×ö·¨£¬ÈÃÓû§Äܹ»ÒÔContainerΪÁ£¶È£¬Îª²»Í¬ÐèÇóµÄÊý¾ÝÖ¸¶¨²»Í¬µÄ¸±±¾ÊýÁ¿¡¢²»Í¬²ÎÊýµÄ¾ÀɾÂë¡¢²»Í¬ÐÔÄܵĴ洢½éÖÊ¡¢²»Í¬µØÀíλÖᢲ»Í¬µÄºó¶Ë´æ´¢É豸¡£´æ´¢²ßÂÔ³ä·ÖÌåÏÖÁËSwift"Èí¼þ¶¨Òå´æ´¢"£¨SoftwareDefinedStorage£©µÄÌØµã¡£
ΪÁËʵÏÖ´æ´¢²ßÂÔ£¬SwiftÔÚÔÏÈÈý¸ö»·£¨Ring£©µÄ¼Ü¹¹»ù´¡ÉϽøÐÐÁ˸Ľø¡£SwiftΪÕË»§¡¢ÈÝÆ÷ºÍ¶ÔÏó·Ö±ð¶¨ÒåÁ˵Ļ·£¬Í¨¹ý»·½«ÐéÄâ½Úµã£¨·ÖÇø£©Ó³Éäµ½Ò»×éÎïÀí´æ´¢É豸ÉÏ¡£ÔÚSwift2.0ÖУ¬Ã¿¸ö´æ´¢²ßÂÔ¶ÔÓ¦Ò»¸öObjectRing¡£
Swift´æ´¢²ßÂÔµÄÅäÖÃÓëʹÓÃ
ÅäÖô洢²ßÂÔ
ÉèÖô洢²ßÂÔ·ÖΪÁ½²½£º±à¼ÅäÖÃÎļþswift.confÎļþ£¬´´½¨ÏàÓ¦µÄObjectRing¡£ÔÚÅäÖÃÎļþÖÐÿ¸ö´æ´¢²ßÂÔÒÔ[storage-policy:N]¿ªÍ·£¬ÆäÖÐNÊDzßÂԵıàºÅ¡£¶ÔÓÚ¸ÃÎļþµÄ½âÎö×ñÑÒÔϹæÔò£º
- Èç¹û¸ÃÎļþÖÐûÓÐÉùÃ÷ÈκβßÂÔ£¬Swift»á×Ô¼º´´½¨Ò»¸ö£»
- ²ßÂÔ±àºÅÓ¦µ±Î»·Ç¸ºÕûÊý£»
- Èç¹ûûÓÐÉùÃ÷ĬÈϲßÂÔ£¬Swift»á°Ñ±àºÅΪ0µÄ²ßÂÔÉèΪĬÈϲßÂÔ£»
- ²ßÂÔ±àºÅ±ØÐëΨһ£»
- ²ßÂÔÓ¦µ±¾ßÓÐÃû×Ö£¬²ßÂÔÃüÃûÇø·Ö´óСÇÒ±ØÐëΨһ£»
- ²ßÂÔÃû³ÆÖ»Äܰüº¬×Öĸ¡¢Êý×ÖºÍÁ¬×Ö·û£¬"Policy-0"Ö»ÄÜÓÃÓÚ±àºÅΪ0µÄ²ßÂÔ£»
- ¶¨Òå²ßÂÔÖ®ºó£¬Ó¦µ±ÓÐÒ»¸öÇÒ½öÓÐÒ»¸ö²ßÂÔ±»Ö¸¶¨ÎªÄ¬ÈϲßÂÔ£»
- "·ÏÆú"£¨Deprecated£©²ßÂÔ²»ÄÜͬʱΪĬÈϲßÂÔ¡£
ÏÂÃæÊÇÒ»¸öswift.confÎļþµÄʾÀý£º

Íê³Éswift.conf ÎļþµÄ±à¼£¬ÏÂÒ»²½ÊÇΪÿ¸ö´æ´¢²ßÂÔ´´½¨ÏàÓ¦µÄObject Ring£¬·½·¨ºÍ´´½¨Àϰ汾 Object RingÀàËÆ£¬Ö»ÊÇÒªÔÚobject ºóÃæ¼ÓÉÏ"-N"£¬ÕâÀïµÄ N ÊÇ´æ´¢²ßÂԵıàºÅ¡£ÀýÈ磬ΪÉÏÊö±àºÅΪ 0ºÍ1µÄ´æ´¢²ßÂÔ´´½¨Object Ring£º

ʹÓô洢²ßÂÔ
´æ´¢²ßÂÔµÄʹÓ÷dz£¼òµ¥£¬Ö»ÐèÒªÔÚ´´½¨ container ÊÇÖ¸¶¨´æ´¢²ßÂÔ¼´¿É£¬ÏÂÃæÒÔ SAIO ²¿ÊðΪÀý¼ÓÒÔ˵Ã÷£º

È»ºóÖ´ÐУº

ÀýÈ磬»á¿´µ½ÈçϽá¹û£º

˵Ã÷ Storage Policy ÒѾ³É¹¦·¢»Ó×÷Óá£
´æ´¢²ßÂÔµÄÓ¦ÓÃģʽ
ÉÏÊöÌáµ½¸±±¾ÊýÁ¿µÄ¸Ä±ä£¬Ö»ÊÇ´æ´¢²ßÂÔµÄÓ¦ÓÃģʽµÄÒ»ÖÖ£¬ÔÚʵ¼ÊÓ¦ÓÃÖУ¬¿ÉÒÔÓÐÒÔϼ¸ÖÖģʽ£º
1. Ëõ¼õ»òÔö¼ÓÈßÓà
¶ÔÓÚһЩÊý¾Ý£¬ËüÃDz»ÐèÒª±£Ö¤ºÜ¸ßµÄÊý¾Ý³Ö¾ÃÐԺͿɿ¿ÐÔ£¬±È½ÏµäÐ͵ÄÊÇͼÏñµÄËõÂÔͼ£¬ËüÃÇ¿ÉÒÔÓÉÔͼ½µ²ÉÑùµÃµ½£¬ÔÚÕâÖÖÇé¿öÏ£¬¿ÉÒÔ¶ÔÔͼ²ÉÓÃÈý¸±±¾·½°¸£¬¶ÔËõÂÔͼ²ÉÓÃË«¸±±¾·½°¸£¬½µµÍ´æ´¢ÏµÍ³µÄ¿ªÏú¡£
ͼ 1.Ϊ²»Í¬µÄ Container Ö¸¶¨²»Í¬µÄ¸±±¾ÊýÁ¿

2. ÐÔÄÜ·Ö²ã
ÀýÈ磬¶ÔÓÚһЩÊý¾ÝÓà HDD ±£´æ£¬ÁíһЩÓà SSD ±£´æ¡£Ò²¿ÉÒÔÓ¦ÓÃÓÚÆäËû´æ´¢½éÖÊ£¬ÉõÖÁÊDz»Í¬µÄ´æ´¢É豸¡£
ͼ 2.Ϊ²»Í¬µÄ Container Ö¸¶¨²»Í¬µÄ´æ´¢½éÖÊ

3. µØÀíλÖÃÔ¼Êø
ÔÚijЩ³¡¾°Ï£¬ÒòΪ¹«Ë¾»òÕß¹ú¼ÒµÄÕþ²ßµÄÔ¼Êø£¬Ä³Ð©Êý¾Ý±ØÐë´æ´¢ÔÚÖ¸¶¨µÄµØÀíλÖã¬ÀýÈç»ìºÏÔÆ³¡¾°¡£ÓÐЩ³¡¾°Ï£¬Óû§Ï£ÍûÖ¸¶¨Êý¾Ý´æ·ÅÔÚ¾àÀë·ÃÎʿͻ§¶Ë±È½Ï½üµÄµØ·½¡£
ͼ 3.Ϊ²»Í¬µÄ Container Ö¸¶¨²»Í¬µÄ´æ´¢Î»ÖÃ

4. Ó¦ÓþÀɾÂ루Erasure Codes£©
¶ÔÓÚÐÔÄÜÒªÇ󲻸ߵij¡ºÏ£¬Ó¦ÓþÀɾÂë¡£¾ÀɾÂ룬ÓÖ³ÆÎªÉ¾³ýÂ룬½«¶ÔÏó·Ö¸îΪ m ¸ö·ÖƬ£¨fragments£©£¬²¢Í¨¹ý±àÂëÉú³É k ¸öУÑé·ÖƬ£¬×îºó½«Õâ n=m+k ¸ö·ÖƬ·Åµ½ Swift ¶ÔÏó´æ´¢ÏµÍ³µÄ²»Í¬Î»Öã¨Í¨³£ÊÇ swift µÄ²»Í¬ zone ÖУ©¡£¶ÔÓÚ½« m ¸ö·ÖƬ±àÂëΪ n ¸ö·ÖƬµÄ¾ÀɾÂ룬¼ÇΪEC(m, n)¡£¾ÀɾÂëµÄʾÒâͼÈçÏ£º
ͼ 4.¾ÀɾÂëʾÒâͼ

¾ÀɾÂëÔÚÌá¸ß´æ´¢¿Õ¼äÀûÓÃÂʵÄͬʱ£¬±£³Ö»òÔö¼ÓÊý¾ÝµÄ³Ö¾ÃÐÔ£¨durability£©ºÍ¿É¿¿ÐÔ¡£µ«ÊÇÓÉÓÚ±àÂë¡¢½âÂëºÍ»Ö¸´Êý¾ÝÍùÍùÐèÒª½Ï´óµÄ¼ÆËãÁ¿£¬¿ÉÄܵ¼ÖÂÐÔÄܵĽµµÍ£¬ËùÒԱȽÏÊÊÓÃÓÚ¶Ô³Ö¾ÃÐԺͿɿ¿ÐÔÒªÇó±È½Ï¸ß£¬µ«ÊÇ·ÃÎÊÁ¿²¢²»´óµÄÊý¾Ý´æ´¢¡£
ͼ 5 .Ó¦ÓþÀɾÂë±£»¤Êý¾Ý

ÔÚijÊÓÆµÍøÕ¾ÖеÄÓ¦Óð¸Àý
ÔÚijÊÓÆµÍøÕ¾ÖУ¬²ÉÓà Swift ´æ´¢ÊÓÆµÎļþ£¬²¢¶ÔÆä²¿·ÖÎļþ¸ù¾ÝÊÓÆµÀàÐ͵IJ»Í¬Ó¦Óò»Í¬µÄ´æ´¢²ßÂÔ¡£
ÊÓÆµÊý¾Ý·ÖΪÈýÀࣺ1£©Ô´Æ¬£»2£©³¬ÇåÊÓÆµÎļþ£»3£©ÆäËû²»Í¬ÇåÎú¶ÈµÄÊÓÆµÎļþ¡£Ô´Æ¬Ìå»ý½Ï´ó£¬¶Ô³Ö¾ÃÐÔÒªÇó¸ß£¬µ«ÊǶԷÃÎÊËÙ¶ÈÒªÇó½ÏµÍ£¬²¢·¢·ÃÎÊÊýÁ¿ºÍ·ÃÎÊÆµÂʽϵͣ»ÇåÎú¶È½ÏµÍµÄÊÓÆµÓɳ¬ÇåÊÓÆµ×ªÂëµÃµ½£¬Õë¶ÔÉÏÊöÐèÇó£¬Éè¼Æ´æ´¢²ßÂÔÈçÏ£º
- ԴƬ²ÉÓþÀɾÂë²ßÂÔ£¬±àÂë²ÎÊýΪEC(7, 4)£¬¼´°ÑÒ»¸öÊÓÆµÎļþ·Ö¸îΪ 4 ¿é£¬²¢Éú³É 3 ¿éУÑé¿é£¬´æ´¢Ð§ÂÊԼΪ 57%£»
- ³¬ÇåÊÓÆµÈý¸±±¾²ßÂÔ£¬´æ´¢Ð§ÂÊԼΪ 33%£»
- ÇåÎú¶È½ÏµÍµÄÊÓÆµ²ÉÓÃË«¸±±¾²ßÂÔ£¬´æ´¢Ð§ÂÊΪ 50%¡£
¼ÙÉèÉ豸Ë𻵵ĸÅÂÊΪ 2%£¬ÒÔÉÏÈýÖÖ´æ´¢²ßÂÔµÄÊý¾Ý³Ö¾ÃÐÔ·Ö±ðΪ£º99.9995%£¬99.9992%ºÍ 99.96%¡£
±í 1.´æ´¢²ßÂÔµÄÓ¦ÓÃ

Swift ¼¯ÈºµÄ×ܽáµãÊýÁ¿Îª 54 ¸ö½Úµã£¬×ÜÈÝÁ¿Ô¼Îª 2.3PB£¬¼¯ÈºµÄ²¿Êð¼Ü¹¹ÈçÏÂͼËùʾ£¬ÆäÖÐ Proxy Server µÄÊýÁ¿¿ÉÒÔ¸ù¾ÝÐèÒªÔö¼Ó»òÕß¼õÉÙ¡£²ÉÓô«Í³Èý¸±±¾·½°¸£¬Äܹ»±£´æµÄÊÓÆµ×ܳ¤¶ÈԼΪ£¨Í¬Ò»¶ÎÊÓÆµ²»Í¬·Ö±æÂʲ»½øÐÐÖØ¸´Í³¼Æ£©3.97×106 ·ÖÖÓ¡£
²ÉÓÃÉÏÊö´æ´¢²ßÂԺ󣬱£´æµÄÊÓÆµ×ܳ¤¶ÈΪ 5.89×106 ·ÖÖÓ£¬´æ´¢Ð§ÂÊÌá¸ßÁË 48%¡£
ͼ 6. »ùÓÚ Swift µÄÊÓÆµ´æ´¢ÏµÍ³µÄ²¿Êð¼Ü¹¹

½áÊøÓï
ÔÚ´óÊý¾Ýʱ´ú£¬Ëæ×ÅÎļþÊýÁ¿ºÍÊý¾ÝÌåÁ¿µÄÔö¼Ó£¬ÎļþϵͳºÍ NAS µÄÆ¿¾±Ô½À´Ô½Ã÷ÏÔ£¬»ùÓÚ RESTful Web API µÄ¶ÔÏó´æ´¢Öð½¥Êܵ½ÈËÃǵĹ㷺½ÓÊÜ¡£×÷Ϊ×î¾ß´ú±íÐÔ£¬Ó¦ÓÃ×î¹ã·ºµÄ¿ªÔ´¶ÔÏó´æ´¢·½°¸£¬OpenStack Swift ×Ôµ®ÉúÒÔÀ´Ò»Ö±±£³Ö׿¼ÊõÉÏÁìÏȵĵØÎ»£¬ÔÚ Swift 2.0 ÖÐÍÆ³öµÄ´æ´¢²ßÂÔ¹¦ÄÜ£¬Äܹ»ÈùÜÀíÔ±¸ù¾Ý×Ô¼ºÏµÍ³µÄÌØµãÖÆ¶¨²»Í¬µÄ´æ´¢²ßÂÔ£»Óû§»ò×â»§¸ù¾Ý×Ô¼ºÊý¾ÝµÄÌØµãºÍÒµÎñÐèÒª£¬ÒÔ Container ΪÁ£¶ÈÑ¡Ôñ´æ´¢²ßÂÔ£¬´Ó¶øÊµÏֳɱ¾¡¢Êý¾Ý¿É¿¿ÐÔ¡¢ÐÔÄܵÈά¶ÈÉϵÄ×ÛºÏȨºâºÍÓÅ»¯£¬ÌåÏÖÁËÈí¼þ¶¨Òå´æ´¢µÄÌØµã¡£±¾ÎÄÖ»ÊǶԴ洢²ßÂÔ×öÁËÒ»¸ö¼òÒªµÄ½éÉÜ£¬ÈöÁÕßÌå»á´æ´¢²ßÂÔµÄÓÃ;£¬½øÒ»²½ÉîÈë̽Ë÷¿ÉÒԲ鿴²Î¿¼×ÊÁÏÁ˽âÓÐ¹Ø OpenStack Swift µÄ¸ü¶àÏà¹ØÐÅÏ¢¡£
|