1
ÎĵµËµÃ÷
Ñо¿·Ö²¼Ê½Îļþϵͳʱ¼äÒ²²»¶ÌÁË£¬½Ó´¥¹ýµÄÎļþϵͳҲ²»ÉÙ£¬³Ã×ÅÕâ2014µ½À´Ö®¼Ê£¬»¨µãʱ¼äÓÃÀ´×ܽá×ܽᡣ
½Ó´¥¹ýµÄÎļþϵͳÓÐglusterfs¡¢moosefs¡¢lustre¼°hdfsµÈ£¬Æä¼Ü¹¹¼òµ¥Ë³´ø½â˵һµã£¬×ÜÌåÀ´Ëµ·ÖΪԪÊý¾ÝÖÐÐÄʽ¼°È¥ÖÐÐÄʽ¡£Æäʵ³ýÁËglusterfs£¬ÆäËûµÄ¶¼ÊÇÔªÊý¾ÝÖÐÐÄʽµÄ·Ö²¼Ê½Îļþϵͳ¡£
¶ÔÓÚÎļþϵͳµÄ¼Ü¹¹Ö»½øÐмòµ¥µÄ½â˵£¬ÏÖÔÚÖ÷Òª¶ÔÒÔÉϸ÷ÖÖÎļþϵͳµÄÊý¾Ý·Ö²¼·½Ê½½øÐÐ×ܽá·ÖÎö£¬Ë³±ã´ÓÆäÊý¾Ý·Ö²¼·½Ê½ÖзÖÎöÆäÐÔÄÜ£¬¿ÉÓÃÐÔ£¬ÊÊÓÃÐԵȵȡ£
2 µäÐÍDFS¼°ÆäÊý¾Ý·Ö²¼
2.1 Lustre
2.1.1ϵͳ¼Ü¹¹
LustreÊǸöÈË×îÔç½Ó´¥µÄÒ»¸ö·Ö²¼Ê½Îļþϵͳ£¬Æä¸øÎÒÁôÏÂ×îÉî¿ÌµÄÓ³Ïó¾ÍÊÇ¡°ÎÞÓëÂױȡ±µÄ¿ì£¬Æä´æ´¢ËÙ¶ÈÊÇÎÒ¼û¹ýÓùýµÄ·Ö²¼Ê½ÎļþϵͳÖÐ×î¿ìµÄ¡£
ÏÈÀ´ÕÅLustreÎļþϵͳµÄ¼Ü¹¹Í¼£º

ͼ2.1.1 Lustre¼Ü¹¹Í¼
´Ó¼Ü¹¹Í¼ÖУ¬ÎÒÃÇ¿ÉÒÔ¿´³öLustreÊǵäÐ͵ÄÔªÊý¾ÝÖÐÐÄʽµÄ·Ö²¼Ê½Îļþϵͳ£¬ÆäÔªÊý¾Ý·þÎñÆ÷ΪMDS£¬ÓÃÓÚ´æ´¢ÎļþµÄÔªÊý¾ÝÐÅÏ¢£¬OSS·þÎñÆ÷ÓÃÓڴ洢ʵ¼ÊµÄÎļþÊý¾Ý¡£LustreÖ§³Ö³£¹æÒÔÌ«Íø£¬Ò²Ö§³Ö¿ìËÙµÄIBÍøÂç¡£
´Ó½á¹¹ÉÏ¿´£¬MDSÖ§³Öactive-standyÖ§³ÖÖ÷±¸Çл»£¬OSSÒ²Ö§³Öfailover£¬µ«Êµ¼ÊÉÏMDSµÄÖ÷±¸ÅäÖü°OSSµÄ¹ÊÕϻָ´Ô¶Ã»ÓÐÏëÏóÖеĺÃÓá£ÆäÖ÷±¸ÅäÖÃÒ²ºÃ£¬failoverÒ²ºÃÖ»ÊÇÖ§³Ö·þÎñÆ÷¼¶±ðµÄÇл»£¬Æäµ×²ãÕæÕýÓÃÓÚ´æ´¢¶ÔÏó½á¹¹MDT¼°OSTÊDz»Ö§³ÖÖ÷±¸¼°¹ÊÕϻָ´µÄ¡£Ò»°ãµ×²ã¶ÔÏó´æ´¢»á²ÉÓù²Ïí´æ´¢µÄ·½Ê½À´Ö§³ÖMDSµÄactive-standy¡¢OSSµÄfailover¡£µ«ÊÇÕâÖÖÅäÖò»µ«»áÓ°ÏìÐÔÄÜ£¬ÅäÖÃÆðÀ´¸´ÔÓ£¬°²È«ÐÔҲûÓÐÏëÏóÖиߣ¬Ö»Òª¹²Ïí´æ´¢²ã³öÏÖ¹ÊÕÏ£¬Õû¸öϵͳ½«ÎÞ·¨Õý³£Ê¹Óá£
2.1.2Êý¾Ý·Ö²¼·½Ê½
LustreÖ§³ÖÁ½ÖÖÊý¾Ý·Ö²¼·½Ê½£¬Îļþµ¥¸öÕûÌå´æ´¢¼°Îļþ·ÖƬ(stripe)´æ´¢Á½ÖÖ·½Ê½¡£
Ê×ÏÈÊÇÎļþÕûÌå´æ´¢£¬ÎļþÒÔµ¥¸öÎļþµÄÐÎʽ´æ´¢ÔÚOSTÖУ¬²»½øÐÐÈκεÄÊý¾Ý·ÖƬ¡¢¾ÀɾÂëÉèÖü°checksum(УÑé)ÉèÖõȲÙ×÷£¬ÕâÊÇÒ»ÖֱȽϳ£¼ûµÄÊý¾Ý·Ö²¼·½Ê½¡£
Lustre»¹Ö§³ÖÎļþ·ÖƬ´æ´¢£¬Ò²¾ÍÊdz£ËµµÄstripe·½Ê½£¬ºÜ¶àDFS»áÌṩÕâôһÖÖÊý¾Ý·Ö²¼·½Ê½¡£
LustreÖ§³ÖĿ¼¼¶µÄStripe´æ´¢£¬¼´¿ÉÒÔͨ¹ýÉèÖÃÖ¸¶¨Ä³¸ö×ÓĿ¼µÄStripeÏà¹ØÉèÖ㬰üÀ¨Stripe_count¡¢Stripe_size¡¢Stripe_ost¡£Stripe_sizeÖ¸¶¨×ÓĿ¼ÏµÄÎļþ·ÖƬ´óС£»Stripe_countÖ¸¶¨Ñ¡ÔñOST¸öÊý£¬¼´·ÖƬ·Ö²¼ÔÚ¶àÉÙ¸öOSTÉÏ£»Stripe_ostÖ¸¶¨Æðʼ´æ´¢OSTλÖã¬ÏµÍ³Ä¬ÈÏΪ-1,¼´ÓÉMDS¸ù¾ÝÊ£ÓàÈÝÁ¿¼°¸ºÔØÑ¡Ôñ³õʼOST£¬·ñÔò´ÓÖ¸¶¨µÄOST¿ªÊ¼·ÖƬ´æ´¢¡£
¾ßÌåÉèÖÃÈçÏ£º
lfs setstripe -s Stripe_sizeM -c Stripe_count /mnt/SubDir
/Stripe_size±ØÐëΪpage_sizeµÄÕûÊý¾Ý±¶X*64KB
//Stripe_countСÓÚµÈÓÚOSTÊý |

ͼ2.1.2 Lustre StripeÊý¾Ý·Ö²¼Ê¾Òâͼ
ÈçͼʾÀý£ºLustre´æ´¢ÓÉ6¸öOSTÌṩ¶ÔÏó´æ´¢¿Õ¼ä¡£/mnt/SubDir1Ŀ¼δ½øÐÐStripe´¦Àí£¬¸ÃĿ¼ÏÂfile1ÒÔÎļþµÄÐÎʽ´æ´¢ÔÚµ¥¸öOSTÖУ¬ÀýÈç´æ´¢ÔÚOST0ÖУ»/mnt/SubDir2Ŀ¼ÉèÖÃStripe_count=6£¬ÔòÈçͼËùʾ£¬Stripe_size´óСµÄÊý¾Ý·Ö±ðÔÚ6¸öOSTÖзֲ¼£¬ÇÒ°´ÕÕÊý¾Ý˳ÐòÂÖѯºÏ²¢£»/mnt/SubDir3ÓëSubDir2ÇéÐÎÏàËÆ£¬Stripe_count=5¡£
2.1.3ϵͳÓÅȱµã
Lustre¿ÉÒÔÉèÖþßÌå×ÓĿ¼µÄStripe²ÎÊý£¬ÕâÖÖ·½Ê½±È½ÏÁé»î£¬¿ÉÒÔ¸ù¾ÝÎļþ´óС½øÐкÏÊʵÄStripeĿ¼ÉèÖᣲ¢ÇÒStripeµÄÊý¾Ý·Ö²¼·½Ê½±ÈÎļþÕûÌå´æ´¢¸ßЧ£¬ÎÞÂÛÊÇÎļþ¶Á»¹ÊÇд¡£
LustreÊÇ»ùÓÚÄں˼¶µÄ·Ö²¼Ê½Îļþϵͳ¡£ÆäÎļþµÄ¶ÁдÐÔÄÜÔÚ·Ö²¼Ê½ÎļþϵͳÊDZȽϿìµÄ(Ŀǰ¸öÈËʹÓùý£¬²âÊÔ¹ýµÄDFSÖÐÊÇ×î¿ìµÄ£¬ÆäËû·Ö²¼Ê½ÎļþϵͳÅÄÂíÄѼ°)¡£¼øÓÚÆäÐÔÄܼ°ÆäÇ¿º·µÄÀ©Õ¹ÐÔ£¬¶àÊýÓÃÓÚ¸ßÐÔÄܼÆËãÖС£¸ßÐÔÄÜ£¬ÕâÕýÊÇLustre×î´óµÄÁÁµã¡£
ÔÚijÖֽǶÈÉÏ˵£¬Lustre»ù±¾²»ÌṩÊý¾ÝµÄ±£»¤£¬ÎÞÂÛÊÇÊý¾ÝÈßÓà±£»¤£¬»¹ÊÇÊý¾ÝµÄ¾Àɾ±£»¤£¬»¹ÊÇÊý¾ÝУÑé±£»¤µÈµÈ£»µ±È»£¬Í¬Ñù£¬ÆäÔªÊý¾ÝÒ²´æÔÚµ¥µãÎÊÌâ¡£ÕâÊÇLustreµÄÒ»´óÈõµã¡£
2.2 HDFS
2.2.1ϵͳ¼Ü¹¹
HDFS£¬»òÕß˵Hadoop´ó¼Ò»áÁ˽â¶àЩ¡£Æäʵ¶ÔÓÚhadoop£¬¸öÈËÁ˽âµÄ²¢²»ÊǺֻܶ࣬ÊǽӴ¥¹ýһЩÏà¹ØµÄÅàѵ¼°½øÐйýÏà¹ØµÄÁ˽âʹÓ㬲¢²»ÊÇÌØ±ðµÄÊìϤ(ÕýÔÚÒ»²½Ò»²½µÄÑо¿ËûÄØ)¡£ËùÒÔ£¬ÒªÊÇÓв»¶ÔµÄµØ·½£¬»¶Ó´ó¼ÒÖ¸Õý¡£
Ïȸø´ó¼ÒÉϸö¼Ü¹¹Í¼£º

ͼ2.2.1 HDFS¼Ü¹¹Í¼
ÏàÐźܶàÈË»áºÜÊìϤÕâÕÅhdfsµÄ¼Ü¹¹Í¼¡£ÈçͼËùʾ£¬HDFSÓÉÁ½²¿·Ö×é³É£¬Ò»²¿·ÖÊǸºÔðÔªÊý¾Ý´æ´¢µÄNamenode£¬Ò»²¿·ÖÊǸºÔðʵ¼Ê´æ´¢Êý¾ÝµÄDatanodes¡£NamenodeÊÇÒ»¸öÖÐÐÄ·þÎñÆ÷£¬¸ºÔð¹ÜÀíÎļþϵͳµÄÃû×ֿռ䡢¸ºÔðÎļþÊý¾Ý¿éµÄ×éÖ¯¼°´¦Àí¿Í»§¶Ë¶ÔÊý¾ÝµÄ·ÃÎÊ£»¶øDatanodeÔòÊÇÒ»°ãÊÇÒ»¸ö½ÚµãÒ»¸ö£¬¸ºÔð¹ÜÀíÆäËùÔÚ½ÚµãµÄÊý¾Ý´æ´¢¡£
×îа汾µÄHDFS»áÖ§³ÖÒ»¸ö±¸ÓõÄNamenode£¬¸ºÔð¶¨Ê±µÄ±¸·ÝNamenodeÉϵij־û¯µÄÔªÊý¾ÝÐÅÏ¢£¬µ«Êµ¼ÊÉÏHDFSÒÀÈ»´æÔÚµ¥µãÎÊÌâ(ÊìϤMFS¼Ü¹¹µÄÅóÓѻᷢÏÖ£¬ÕâÖּܹ¹·½Ê½ÓëMFSÊÇÈç´ËµÄÏàËÆ£¬ÓÖÊÇÈç´ËµÄûÓÃ)¡£
2.2.2Êý¾Ý·Ö²¼·½Ê½
HDFSÖ»Ö§³ÖÊý¾Ý·Ö¿éµÄ·½Ê½´æ´¢£¬Ä¬ÈϵÄÊý¾Ý¿é´óСΪ64MB¡£ÆäÓëÒ»°ãµÄStripe´æ´¢·½Ê½²»Í¬(²Î¿¼Lustre
Stripe´æ´¢)£¬Æä»á°ÑÎļþ·Ö³ÉÒ»¸ö¸ö64MB´óСµÄÊý¾Ý¿é£¬ÔÚDatanodes´æ´¢×ÅÒ»¸ö¸öµÄ64MB´óСµÄÊý¾Ý¿é¶ø²»ÊÇÊý¾Ý¿éµÄ¼¯ºÏ¡£
HDFSÖ§³ÖÎļþ´æ´¢Ê±´´½¨¸±±¾£¬ÓÃÓÚ±£Ö¤Êý¾ÝµÄ°²È«ÐÔ¡£²¢ÇÒϵͳ±£Ö¤ÎļþµÄÊý¾Ý¿éµÄ¸±±¾¿é²»»á³öÏÖÔÚͬһ¸öDatanodeÉÏ£¬±ÜÃâij¸öDatanodeʧЧʱ£¬ÎļþÎÞ·¨·ÃÎÊ¡£²¢ÇÒHDFS¿ÉÒÔÖ§³Ö¶à¸ö¸±±¾¡£
ÈçÏÂͼËùʾ£º

ͼ2.2.2 HDFSÊý¾Ý·Ö²¼Í¼
¸±±¾Êý¾Ý¿éÓëÔÊý¾Ý¿é²»ÔÚͬһ¸ödatanodeÖУ¬ÕâÖÖ·½Ê½±£Ö¤ÁËÈκÎÒ»¸ödatanodeʧЧ£¬¶¼ÓÐÆäËûdatanodeÉϵĸ±±¾Êý¾Ý¿é½øÐÐÌæ»»£¬´Ó¶ø±£Ö¤ÁËÊý¾ÝµÄ°²È«ÐÔ¡£
ÔÚHDFSµÄÎļþʵ¼Ê´æ´¢½ÚµãDatanodesÖУ¬Êý¾Ý¿éÊÇÒÔµ¥¶ÀµÄÎļþ¿é´æÔÚ£¬¶ø²»ÊÇÓëLustreÄÇÑù½«Êý¾Ý¿éÂÖѯºÏ²¢(¶Ô±ÈLustreÊý¾Ý·Ö²¼Í¼)¡£
HDFSÔÚÊý¾Ý·Ö²¼ÖУ¬×îÌØ±ðµÄÊÇÆä¶ÔÊý¾ÝµÄУÑé¡£ÔÚ´æ´¢Îļþʱ£¬HDFS»áΪÿһ¸ö64MBµÄÊý¾Ý¿é´´½¨Ò»¸ö¶ÔÓ¦µÄchecksum£¬ÓÃÓÚÎļþ·ÃÎÊʱ¶ÔÊý¾Ý¿éµÄУÑé¡£ÕâÔÚ·Ö²¼Ê½ÎļþϵͳÖÐÊǺܲ»³£¼ûµÄ¡£
ÎļþÔÚHDFSÖÐÊÇÒÔ˽Óиñʽ´æ´¢µÄ£¬Ö»ÄÜͨ¹ýϵͳµÄAPI½øÐзÃÎÊ¡£
2.2.3ϵͳÓÅȱµã
HDFS×÷Ϊ´æ´¢±¾ÉíÀ´Ëµ£¬Ã»ÓжàÉÙ´æ´¢ÓÅÊÆ¡£ÀýÈçÆäϵͳ±¾Éí²¢²»Ö§³Ö±ê×¼µÄPOSIX½Ó¿Ú£¬ÎļþÐèÒªÒÔרÃŵÄÊý¾Ý²Ù×÷API½øÐÐÎļþÊý¾Ý²Ù×÷£¬ÕâÔÚͨÓô洢ÖÐÊǺܲ»·½±ãµÄ·½Ê½£»ÔÚÐÔÄÜÉÏ£¬Æä´æ´¢²¢Ã»ÓÐÏÔÖøµÄÓÅÊÆ£¬ÆäΪÿһ¸öÊý¾Ý¿é´´½¨Ò»¸öchecksum£¬ËäÈ»ÔÚÊý¾Ý°²È«ÐÔÉÏÌá¸ßÁË£¬ÔÚijÖ̶ֳÈÉÏ˵»á½µµÍÆä´æ´¢Ð§ÂÊ£»ÆäÔªÊý¾Ý´¦Àí·½Ê½£¬¼´½«ÔªÊý¾Ý¼ÓÔØÔÚÄÚ´æÖУ¬ÕâÖÖ·½Ê½¿ÉÒÔ˵ÊÇÓŵ㣬¼´Ìá¸ßÁ˿ͻ§¶ËÓëÔªÊý¾Ý¼°´æ´¢½ÚµãÓëÔªÊý¾ÝµÄ½»»¥Ð§ÂÊ£¬µ«ÊÇÓÉÓÚÄÚ´æµÄÀ©³äÏÞÖÆ£¬Õâ»áµ¼ÖÂÆä¹æÄ£À©³äÊÜ×è(ÕâµãÓëMFSÓÖÊǼ«ÆäÏàËÆ)¡£ËùÒÔ¾ÍĿǰÀ´Ëµ£¬ºÜÉÙÈ˻ὫHDFSµ¥´¿ÓÃÓÚ´æ´¢µÄ¡£
È»¶ø£¬¾ÍĿǰÑо¿ÈȶÈÀ´Ëµ£¬hadooop¾ø¶ÔÊÇÊ×ÇüÒ»Ö¸µÄ¡£HDFSÆäÓÅÊÆÔÚÓÚÒÔÆäΪ»ù´¡µÄһϵÁÐÑÜÉú¼Ü¹¹£¬¾ÍÊÇ´ó¼ÒËù˵µÄhadoopÉú̬»·¾³£¬°üÀ¨NosqlÊý¾Ý¿âϵͳHBase£¬Sql²Ù×÷»¯µÄHive£¬¼°Êý¾Ý²Ö¿âPigµÈµÈ¡£HadoopÔÚÅú´¦ÀíÉÏÓÐ×ÅÎÞÓëÂױȵÄÓÅÊÆ£¬ËùÒÔ£¬ÅäºÏÆäÑÜÉú¼Ü¹¹£¬´ó¶àÊýÈ˽«ÆäÓÃÓÚÊý¾ÝÍÚ¾òÊý¾Ý·ÖÎöµÈ¡£
2.3 MooseFS
2.3.1ϵͳ¼Ü¹¹
MFSÖ÷ÒªÓÉËIJ¿·Ö×é³É£¬ÔªÊý¾Ý·þÎñÆ÷Master¡¢ÔªÊý¾ÝÈÕÖ¾·þÎñÆ÷Metalogger¡¢Êý¾Ý´æ´¢·þÎñÆ÷chunkservers¡¢¼°¹ÒÔØ¿Í»§¶Ëclient¡£

ͼ2.3.1 MFS¼Ü¹¹Í¼
ÈçͼËùʾ£¬Æä¼Ü¹¹ÓëÒ»°ãµÄÔªÊý¾ÝÖÐÐÄ»¯µÄ·Ö²¼Ê½Îļþϵͳ¼Ü¹¹ÏàËÆ£¬¶à³öÀ´²»Í¬Ö®´¦ÔÚÓÚMetalogger¼´ÔªÊý¾ÝÈÕÖ¾·þÎñÆ÷µÄÔö¼Ó(ÕâÊÇ1.5.X°æ±¾Ö®ºóÌí¼ÓµÄ×é¼þ)¡£¸Ã²¿·Ö×é¼þÓÃÓÚ¶¨Ê±±¸·ÝMasterÉϵÄÔªÊý¾ÝÎļþ¼°MasterʹÓÃÆÚ¼ä²úÉúµÄchangelogÎļþ¡£ÔÚÔªÊý¾Ý·þÎñÆ÷µ±»úµÄÇé¿öÏ£¬¿ÉÒÔͨ¹ýMetaloggerÉϵÄÔªÊý¾ÝÎļþ¼°changelogÎļþÀ´»Ö¸´ÔªÊý¾Ý£¬²¢ÇÒ¿ÉÒÔͨ¹ýÐÞ¸´ÔªÊý¾Ý¼°ÐÞ¸ÄMetaloggerµÄIP·½Ê½À´Ìæ»»µ±»úµÄMaster¡£
2.3.2Êý¾Ý·Ö²¼·½Ê½
MFSÖ§³ÖÁ½ÖÖÊý¾Ý·Ö²¼·½Ê½£¬Ò»ÖÖÊdz£¹æµÄÒÔÎļþΪµ¥Î»µÄ´æ´¢£»ÁíÒ»ÖÖ¾ÍÊÇ·Ö¿é´æ´¢¡£
MFSµÄ·Ö¿é´æ´¢ÓëHDFSµÄ·Ö¿éÏàËÆ£¬ÒÔ64MBµÄÊý¾Ý¿é·Ö±ð´æ´¢ÔÚ²»Í¬µÄchunkserverÖУ¬²¢ÇÒ²»½øÐÐÊý¾Ý¿éÔٴκϲ¢´æ´¢¡£ÆäʵMFSÓëHDFSÓкܶàÏàËÆµÄµØ·½£¬Ö®Ç°Ëù˵µÄÎļþ·Ö¿é·½Ê½£¬ÆäÔªÊý¾ÝÔÚϵͳÆô¶¯Ê±ÖÃÓÚÄÚ´æµÄ·½Ê½¼°Ìí¼ÓÈÕÖ¾·þÎñÆ÷À´±¸·ÝÔªÊý¾ÝµÄ·½Ê½µÈ¡£µ«HDFSµÄÊý¾ÝÊÇÒÔ˽Óиñʽ´æ´¢£¬²»Ö§³ÖPOSIX±ê×¼ÐÒéµÄ·ÃÎÊ£¬ÕâµãÊDz»Í¬µÄ£¬Æä´ÎMFSµÄÊý¾Ý¿é²»½øÐд´½¨Ð£ÑéÖµ(checksum)£¬ÕâÑù×ö£¬½µµÍÁËÒ»¶¨µÄÊý¾Ý°²È«ÐÔ£¬µ«ÊÇÌá¸ßÁ˸±±¾·½Ê½µÄ´æ´¢Ð§ÂÊ¡£

ͼ2.3.2 MFSÊý¾Ý·Ö²¼Í¼
ÈçͼËùʾ£¬¿ÉÒÔ¿´³öMFSµÄÁ½ÖÖÊý¾Ý´æ´¢·½Ê½£¬´ËÍ⣬MFS»¹Ö§³Ö¶àÊý¾Ý¸±±¾£¬Æä¸±±¾µÄÉèÖÃÊÇÊǸù¾ÝĿ¼½øÐÐÉèÖõ쬼´ÉèÖÃĿ¼ÄÚµÄÎļþΪ¸±±¾·½Ê½´æ´¢¡£ÒÔĿ¼Ϊµ¥Î»£¬ÉèÖñȽÏÁé»î¡£µ¥Îļþ´æ´¢·½Ê½µÄ¸±±¾´æ´¢ÔÚÁíÒ»¸öchunkserverÖУ¬¶øÒÔÊý¾Ý¿é´æ´¢µÄ·½Ê½£¬ÔÚ±£Ö¤¸±±¾¿é²»ÔÚͬһ¸öchunkserverÖУ¬Èç´Ë£¬ÔòÄܱ£Ö¤chunkserver²»»á³öÏÖµ¥µãÎÊÌâ¡£
2.3.3ϵͳÓÅȱµã
ÓÉÓÚMFS»úÖÆÖУ¬ÔÚϵͳÆô¶¯Ê±»á½«ÔªÊý¾Ý»º´æÔÚÄÚ´æÖУ¬ÕâÖÖ·½Ê½ÔÚijÖ̶ֳÈÉÏÌá¸ßÁËchunkserverÓëmasterµÄ½»»¥Ð§ÂÊ£¬µ«ÊÇ£¬Í¬Ñù£¬ÓÉÓÚÄÚ´æÀ©³äµÄ¾ÖÏÞÐÔ£¬Õâ»áµ¼ÖÂMFSµÄÀ©Õ¹ÈÝÒ׳öÏÖÏÞÖÆ¡£¸ù¾Ý¹Ù·½Ëµ·¨£¬8GµÄÄÚ´æÄܹ»´æ´¢2500KWµÄÎļþÔªÊý¾ÝÐÅÏ¢£¬ÕâÑùµÄ»°£¬´æ´¢º£Á¿µÄСÎļþ¾ÍºÜÈÝÒ×´ïµ½Îļþ¸öÊýµÄÏÞÖÆ£¬¶ø²»ÊÇchunkserverµÄÈÝÁ¿ÏÞÖÆ¡£ÆäʵHDFSÒ²»áÃæÁÙͬÑùµÄÎÊÌ⣬ֻÊÇHDFSÔÚÔªÊý¾Ý½á¹¹½øÐÐÁËÓÅ»¯£¬¼õÉÙÁ˵¥¸öÎļþµÄÔªÊý¾ÝSIZE¡£
´ËÍ⣬¾ÍĿǰ°æ±¾µÄMFS£¬ÒÀÈ»´æÔÚµ¥µãÎÊÌ⣬ËäÈ»1.6°æ±¾Ö®ºóÌí¼ÓÁËMetalogger×é¼þ£¬µ«ÊDz¢²»ÄܺܺõĽâ¾öÔªÊý¾ÝµÄµ¥µãÎÊÌ⡣ʵ¼ÊÉÏ£¬ÏµÍ³ÖÁ½ñÈÔÈ»ÎÞ·¨´ïµ½¹ÊÕÏÇл»µÄÄ¿µÄ£¬Ìí¼ÓÁËÈÕÖ¾·þÎñÆ÷Ö®ºó£¬Ö»ÊÇÔÚijЩÇé¿öϳöÏÖ¹ÊÕϺóÄܹ»¸ù¾ÝÈÕÖ¾·þÎñÆ÷½øÐÐÔªÊý¾Ý»Ö¸´¡£
ÔÚС¹æÄ£´æ´¢ÉÏMFS»¹ÊDZȽÏÓÐÓÅÊÆµÄ£¬Ä¿Ç°ÒѾÓв»ÉÙ¹«Ë¾ÔÚʹÓÃËû½øÐÐÏà¹ØµÄ´æ´¢ÒµÎñ£¬»òÕßÔÚ´Ë»ù´¡ÉϽøÐÐÏà¹ØµÄ¶þ´Î¿ª·¢¡£
2.4 GlusterFS
2.4.1ϵͳ¼Ü¹¹
GlusterFSÊǸöÈËÑо¿Ê±¼ä×һ¸ö·Ö²¼Ê½Îļþϵͳ£¬×ÜÌåÀ´Ëµ¶ÔÆä»¹ÊDZȽÏÊìϤ£¬ÎÞÂÛÊǴӼܹ¹»¹ÊÇ´ÓËûµÄһЩϵͳ»úÖÆÀ´Ëµ¡£
GlusterFS¼Ü¹¹Ïà¶ÔÓÚÆäËû·Ö²¼Ê½ÎļþϵͳÊÇ×î¼òµ¥µÄ¼Ü¹¹£¬ÈçͼËùʾ£¬³ýÈ¥ÍøÂç²ã¡¢Íâ¹ÒSamba¼°NFSÏà¹Ø¶«Î÷£¬¾ÍֻʣÏÂclient¼°Storage
Brick£¬ÆäÊµÕæÕýµÄ´æ´¢ºËÐľÍÊÇStorage Brick¡£

ͼ2.4.1 GlusterFS¼Ü¹¹Í¼
GlusterFSµÄ¼Ü¹¹ÊÇÈ¥ÖÐÐÄʽ¼Ü¹¹£¬¼´Ã»ÓÐÔªÊý¾ÝÖÐÐĽṹ£¬Ò²¾ÍÒâζ×ÅÆäûÓд洢ԪÊý¾ÝµÄ½á¹¹£¬ÕâÕýÊÇÆäÒìÓÚLustre¡¢HDFS¼°MooseFSµÄµØ·½£¬ÕâÒ²ÊÇÆä¼Ü¹¹µÄ×î´óÌØÉ«¡£
ÄÇôÆä¾¿¾¹ÊÇÈçºÎÍê³ÉÎļþÊý¾Ý¶Áд¶¨Î»µÄÄØ£¿Õâ¾ÍÊÇÈ¥ÖÐÐÄʽµÄ·Ö²¼Ê½ÎļþϵͳµÄÌØÉ«£¬GlusterFSͨ¹ýÄÚ²¿µÄhashË㷨ʵÏÖÎļþµÄ¶¨Î»£¬Í¨¹ýÕâÖÖ·½·¨´úÌæÔªÊý¾Ý×é¼þ²úÉúµÄ×÷Ó᣾ÍĿǰÀ´Ëµ£¬È¥ÖÐÐÄʽµÄ·Ö²¼Ê½Îļþϵͳ¾Í¸öÈËËùÖª£¬Ö»ÓÐGlusterFS¡£
2.4.2Êý¾Ý·Ö²¼·½Ê½
GlusterFSÊÇÒ»¸ö±È½ÏÈ«ÃæµÄ·Ö²¼Ê½Îļþϵͳ£¬°üÀ¨ÆäÊý¾ÝµÄ·Ö²¼·½Ê½¡£GlusterFSÖ§³ÖÈýÖÖÊý¾Ý·Ö²¼£¬¼´Æä¿ÉÒÔ´´½¨ÈýÖÖ¾í£º·Ö²¼Ê½¾í(Distributed)¡¢Ìõ´ø¾í(Stripe)¼°¸±±¾¾í(Replicated)¡£
·Ö²¼Ê½¾í(Distributed)£¬ÏµÍ³ÔÚ´æ´¢Îļþʱ£¬¸ù¾ÝÎļþ·¾¶¼°brick½øÐÐhash¼ÆË㣬¸ù¾Ý¼ÆËã½á¹û¾ö¶¨Æä½«´æ´¢ÓÚÄĸöbrickÖ®ÉÏ£¬²¢ÇÒÔÚbrickÖÐÊÇÒÔµ¥¸öÎļþµÄÐÎʽ¶ø´æÔڵġ£ÕâÖÖhash¼ÆËã»á×öµ½¾¡¿ÉÄܵĸºÔؾùºâ¡£Í¬Ñù£¬ÔÚ¶ÁÈ¡Îļþʱ£¬Ò²»á¸ù¾Ýhash¼ÆË㶨λÎļþµÄλÖá£
Ìõ´ø¾í(Stripe)£¬ÕâÖÖÊý¾Ý·Ö²¼·½Ê½ÊǴ󲿷ֳ£¼ûµÄ·Ö²¼Ê½ÎļþϵͳËùÖ§³ÖµÄ¡£GlusterFSµÄÌõ´ø»¯Êý¾Ý·Ö²¼ÓëLustreµÄÌõ´ø»¯Êý¾Ý·Ö²¼ºÜÏàËÆ¡£ÏµÍ³¸ù¾ÝStripe
count½øÐÐÂÖѯ·Ö¿é£¬²¢ÇÒÔÚµ¥¸öbrickÖÐÔÙ½øÐÐÊý¾Ý¿éºÏ²¢¡£²¢ÇÒÆäStripe size´óСĬÈÏΪ128KB¡£
¸±±¾¾í(Replicated)£¬ÎļþÔÚbrickÖÐ»á´æ´¢Îļþ¸±±¾£¬²¢ÇÒ¸±±¾Êý¿ÉÒÔ×ÔÓÉÉèÖ㬵«ÊÇ»á¸ù¾ÝbrickÊý½øÐÐÏà¹ØµÄÏÞÖÆ¡£ÏµÍ³»¹Õë¶Ô¸±±¾¾íÉè¼ÆÁËÎļþ×Ô¶¯ÐÞ¸´»úÖÆ£¬ÒÔ±£³Ö¸±±¾ÎļþµÄÕýÈ·ÐÔ¡£
GlusterFSÊÇÊý¾Ý·Ö²¼×îÁé»îµÄ·Ö²¼Ê½Îļþϵͳ£¬ÒÔÉÏÈýÖÖÊý¾Ý·Ö²¼·½Ê½¿ÉÒÔÈÎÒâµÄ´îÅäʹÓá£

ͼ2.4.2-1 GlusterFS Distributed-Striped
Volume

ͼ2.4.2-2 GlusterFS Distributed-Replicated
Volume

ͼ2.4.2-3 GlusterFS Replicated-Striped
Volume
Èçͼ2.4.2-1Ëùʾ£¬µ×²ãÒ»¹²Á½¸öserver£¬Ã¿¸öserverÉÏ×öÁ½¸öbrick£¬¹©Ëĸöbrick×ö³É2x2µÄDistributed-Striped¾í¡£File1/2ÊÇÒÔ·Ö²¼Ê½·½Ê½£¬¼´hash·½Ê½´æ´¢ÔÚ²»Í¬µÄbrickÉÏ£»¶ø´Óµ¥¸öÎļþµÄ½Ç¶È¿´£¬ÈçFile1£¬ÆäÄÚ²¿ÊÇͨ¹ýStripeµÄ·½Ê½½øÐÐÌõ´ø»¯´æ´¢µÄ£¬ÆäStripe
countΪ2£¬Í¨¹ýÎļþ·Ö¿é±àºÅ£¬¿ÉÒÔ¿´³öÆäÊý¾ÝÊÇStripeÖ®ºóÔÙ×éºÏ³ÉÁ½¸öÎļþ´æ´¢ÔÚÁ½¸öbrickÉÏ¡£
Èçͼ2.4.2-2Ëùʾ£¬Í¬ÑùÊÇ4¸öbrick£¬×ö³É2x2µÄDistributed-Replicated¾í¡£File1/2·Ö±ðÒÔµ¥¸öÎļþΪµ¥Î»hash´æ´¢ÔÚ²»Í¬µÄbrickÉÏ£¬²¢ÇÒ±£Ö¤Ã¿¸öÎļþ¶¼»áÒ»¸ö¸±±¾ÎļþÔÚÆäbrickÖ®Í⣬´Ó¶ø±£Ö¤ÁËÊý¾ÝµÄ°²È«¡£
Èçͼ2.4.2-3Ëùʾ£¬ÏµÍ³ÊÇ2x2µÄReplicated-Striped¾í¡£FileÔÚÁ½¸öbrickÉÏStripeÇÐÆ¬´æ´¢£¬ÇÒÔÚÁíÍâÁ½¸öbrickÉϱ£´æÁËËùÓÐÇÐÆ¬µÄ¶ÔÓ¦¸±±¾¡£
ÔÚ×îеÄGlusterFS3.3.XÉÏ£¬ÏµÍ³»¹ÊÇÖ§³ÖDistributed-Replicated-Stripe¾í£¬¼´ÈýÖÖÊý¾Ý·Ö²¼·½Ê½×é³ÉµÄϵͳ¾í£¬ÆäÊý¾Ý¾ßÌå·Ö²¼·½Ê½ÓÉÉÏÃæÈý¸öͼ¾ÍºÜÈÝÒ×ÍÆ¶Ï³öÀ´ÁË¡£GlusterFSÆä¾íµÄÊý¾Ý·Ö²¼ÉèÖÃÓëÆäbrickÊýÄ¿ÓкܴóµÄ¹ØÏµ¡£
¾ÍĿǰËùÖªµÄÇé¿ö£¬Stripe¾íÒ»°ã½ÏÉÙµÄÈËʹÓã¬ÆäÐÔÄÜÓдýÓÚÌá¸ß£¬¶ø×ʹÓõÄÊý¾Ý·Ö²¼×éºÏ·½Ê½¾ÍÊÇDistributed-Replicated¡£×ÜÌåÉÏ˵£¬GlusterFSÌṩÁ˶àÖÖÊý¾Ý·Ö²¼·½Ê½£¬²¢ÌṩÁËÁé»î¶à±äµÄ×éºÏ·½Ê½£¬ÈÃÎÒÃÇÔÚʹÓ÷½±ãÁËÐí¶à¡£
2.4.3ϵͳÓÅȱµã
GlusterFS×î´óµÄÌØµãÔÚÓÚÆäÎÞÔªÊý¾ÝµÄÕûÌå¼Ü¹¹£¬µ«ÕâÖ»ÄÜ˵ÊÇËûµÄÒ»´óÌØÉ«£¬Ëã²»ÉÏÆäÓŵ㡣¾ÝÆä¹ÙÍøÉÏËù˵µÄÎÞÖÐÐĽṹʹÆä´æ´¢À©Õ¹½üËÆÏßÐÔ£¬ÕâÒ²Ö»ÊÇÀíÂÛÉϵÄÏßÐÔÀ©Õ¹£¬Êµ¼ÊÉÏGlusterFSµÄÀ©Õ¹ÐÔÄܱÈÄÜ´ïµ½70%-80%¾ÍºÜ²»´íÁË¡£Õâ¿ÉÄÜ»á±ÈÆäËû·Ö²¼Ê½ÎļþϵͳÀ©Õ¹ÐÔÄÜËðºÄÉϺÃÒ»µãµã(ÖÐÐÄ»¯µÄ·Ö²¼Ê½ÎļþÏµÍ³Ëæ×Å´æ´¢½ÚµãµÄÔö¼Ó£¬²¢ÐÐÁ¿ÉÏÉý£¬ÔªÊý¾Ý¸ºÔØ»áÔ½À´Ô½´ó£¬µ¼ÖÂÆäÐÔÄÜ»áËðºÄºÜ´ó)£¬µ«ËæÖ®¶øÀ´µÄÎÊÌâÊÇ£¬Îļþ±éÀúʱµÄЧÂʳÊÖ±ÏßϽµ£¬ÌرðÊÇÔÚ´æ´¢ÁË´óÅúÁ¿Îļþʱ¡£ÓÉÓÚÆäÊÇÎÞÔªÊý¾Ý½á¹¹£¬µ¼ÖÂÎļþ±éÀúÐèÒª±éÀúÐèҪʵ¼Ê±éÀúÕû¸öϵͳ¾í£¬¶ø²»ÊÇÈçÆäËû·Ö²¼Ê½ÎļþϵͳÄÇÑùÖ±½Ó´ÓÔªÊý¾Ý·þÎñÆ÷ÖлñÈ¡¡£ÕâÊÇÆäÒ»´óȱµã¡£
GlusterFSÌṩÁ˱Ƚ϶àµÄ¹¦ÄÜ£¬Æä¶àÖÖ¾íµÄ×éºÏÊÇÒ»¸ö£¬Ëû»¹ÌṩÁËÎļþÐÞ¸´»úÖÆ¡¢Ô¶³ÌµØÓò±¸·Ý¡¢ÔÚÏßÀ©ÈÝËõÈÝ¡¢´æ´¢½ÚµãÔÚÏßÌæ»»µÈµÈ¡£´ËÍ⣬¸öÈËÈÏΪÆä×î´óµÄÓŵãÔÚÓÚÆä¾ßÓÐÒ»¸öÍêÉÆµÄÃüÁîÐйÜÀí½Ó¿Ú£¬ÔÚÖÚ¶à·Ö²¼Ê½ÎļþϵͳÖУ¬GlusterFS¹ÜÀíÆðÀ´ÊÇ×î·½±ãµÄ£¬ËùÓвÙ×÷¶¼¿ÉÒÔͨ¹ýÃüÁîÐй¤¾ß½øÐйÜÀí£¬¶ø²»ÊÇÏñºÜ¶àÎļþϵͳÄÇÑùͨ¹ýÐÞ¸ÄÅäÖÃÎļþ½øÐвÙ×÷µÈµÈ¡£
3 ×ܽá
´ÓÊý¾Ý»ù±¾·Ö²¼·½Ê½À´¿´£¬Ä¿Ç°¿ªÔ´µÄ×ÜÌå¾Í·ÖΪµ¥¸öÎļþ´æ´¢¡¢¸±±¾»òÕßÊǾµÏñÎļþ´æ´¢¡¢¼°Êý¾Ý·Ö¿é´æ´¢¡£ÔÚÊý¾Ý·Ö¿é´æ´¢ÖУ¬ÓеäÐ͵ÄÌõ´ø»¯Stripe´æ´¢£¬Èçlustre¼°glusterµÄstripe´æ´¢·½Ê½£¬ÒÔ¼°HDFS¡¢MFSÎļþÕæÕý·Ö¿é(chunk)´æ´¢µÄ·½Ê½¡£
·Ö¿é´æ´¢ÔÚ´ó¶àÊýÇé¿öϲ¢²»ÄÜÌáÉýÎļþдЧÂÊ£¬µ±È»ÕâÒ²ºÍϵͳ»úÖÆÓйأ¬ÈçlustreµÄstripe´æ´¢¾Í±ÈÎļþµ¥¶À´æ´¢µÄ·½Ê½Ð§ÂÊÒª¸ß£¬µ«ÆäËûµÄ·Ö²¼Ê½ÎļþϵͳûÓÐÈç´ËÃ÷ÏԵIJîÒ죬glusterfsµÄstripe´æ´¢Ð§ÂÊ»¹¼«ÆäµÄµÍ£¬ºÜÉÙÈË»áʹÓÃËü¡£µ«·Ö¿é´æ´¢ÔÚ¶ÁЧÂÊÉÏ»áÓÐÃ÷ÏÔµÄÌáÉý£¬ÌرðÊÇÕë¶Ô´óÎļþ¶Áʱ¡£
¸±±¾´æ´¢»òÕß¾µÏñ´æ´¢µÄÊý¾Ý´æ´¢·½Ê½ÊÇÒ»ÖÖ±È½ÏÆÕ±éµÄÊý¾Ý°²È«±£Ö¤µÄÊý¾Ý·Ö²¼¡£ÊµÏÖÆðÀ´Ò²±È½ÏÈÝÒס£»¹ÓÐÒ»ÖÖÌṩÊý¾Ý±£»¤µÄÊý¾Ý·Ö²¼·½Ê½¾ÍÊǾÀɾÂ롣ĿǰÔÚ¿ªÔ´·Ö²¼Ê½ÎļþϵͳÖкÃÏñûÓп´µ½ÓÐÈ˽«ÆäʵÏÖ£¬µ«ÔÚһЩÉÌÒµ·Ö²¼Ê½ÎļþϵͳÖÐÄÜ¿´µ½ËüµÄÉíÓ°£¬ÆäʵÏÖÄѶÈÒ²±È¸±±¾´æ´¢µÄÄѶȴó¡£Ò»Ð©¹úÄڵķֲ¼Ê½ÎļþϵͳÑз¢¹«Ë¾½«Æä×÷Ϊ¿ªÔ´·Ö²¼Ê½Îļþϵͳ¶þ´Î¿ª·¢Ä¿±ê¡£ÕâÖÖÊý¾Ý´æ´¢·½Ê½ÀàËÆÓÚRAID5£¬²»½öÄܹ»ÌṩÊý¾Ý±£»¤£¬»¹½ÚÔ¼ÁËÓ²¼þ³É±¾¡£
ÔÚ¼¼ÊõȺÖв»ÉÙÈ˶¼»áÎÊÒ»¸öÏàÀàËÆµÄÎÊÌâ¡°´ó¼ÒÈÏΪÄĸö¿ªÔ´·Ö²¼Ê½Îļþϵͳ×îºÃ£¿¡±ÆäʵÕâ¸öÎÊÌâÊǺÜÄѻشðµÄ¡£¾ÍĿǰÕâЩ¿ªÔ´µÄÎļþϵͳÖУ¬¸÷Óи÷µÄÌØÉ«£¬µ«Í¬ÑùËûÃǶ¼´æÔÚÒ»¶¨È±ÏÝ»òÕß˵ÊDz»×ãÖ®´¦¡£ÄÄÅÂÊÇÉÌÒµ·Ö²¼Ê½Îļþϵͳ£¬Í¬ÑùÒ²»á´æÔÚÕâ¸öÎÊÌ⡣ûÓÐ×îºÃ£¬Ö»ÓÐ×îºÏÊÊ£¡
Èç¹ûÄã×·ÇóµÄ¸ßЧ£¬²¢ÇÒÔÚÒ»¶¨³Ì¶ÈÉÏ¿ÉÒÔÈÝÈÌÉÙÁ¿Êý¾ÝµÄ¶ªÊ§£¬ÄÇôlustre½«»áÊÇÄãµÄ²»¶þÑ¡Ôñ£¬ÖÁÓÚÊý¾ÝµÄ°²È«ÐÔ£¬Äã¿ÉÒÔʹÓõÚÈý·½µÄÈí¼þ»òÕßϵͳÀ´ÊµÏÖ£¬»òÕß˵ֱ½Ó¾ÍºöÂÔÖ®£»Èç¹ûÄãµÄÒµÎñÐèÇóÊÇ×öÊý¾ÝÍÚ¾òÊý¾Ý·ÖÎö£¬ÄÇô²»ÓöàÏëÁË£¬Ã»ÓÐÈ˲»Ñ¡ÔñHDFS¶øÈ¥Ñ¡ÔñÆäËûµÄ£»Èç¹ûÄãÏëʹÓÃÆðÀ´¹¦ÄܱȽÏÍêÉÆ£¬²¢ÇÒ¹ÜÀíÆðÀ´±È½Ï·½±ã£¬ÄÇôGlusterFS»áÊDz»´íµÄÑ¡Ôñ£»Èç¹ûÄãÏëʹÓÃËüÀ´´æ´¢Ð¡Îļþ£¬ºÃ°É£¬ÒÔÉÏÄÇЩ³ýÁËMFSÊʺÏÒ»µãµã(²»ÉÙ¹«Ë¾Ê¹ÓÃMFS½øÐÐС¹æÄ£´æ´¢Ð¡Îļþ)£¬ÆäËûµÄÒ²¶¼Êdz¶¶¿×ӵ컵±È»£¬Èç¹ûȷʵÐèÒª´æ´¢º£Á¿Ð¡Îļþ£¬Ò²ÊÇÓÐרÃÅΪСÎļþÉè¼ÆµÄ¿ªÔ´·Ö²¼Ê½Îļþϵͳ£¬ÀýÈç¹úÈË¿ª·¢µÄFastDFS¡¢MogileFSÒÔ¼°ÌÔ±¦¿ªÔ´µÄTFS£¬Ö»ÊǶÔÓÚÕâЩ·Ö²¼Ê½Îļþϵͳ¸öÈ˾Ͳ»ÊǺÜÊìϤÁË£¬Ò²Ö»ÊÇÖªµÀ¸ö´ó¸Å¶øÒÑ¡£
|