ÔØÈëÖС£¡£¡£ 'S bLog
 
ÔØÈëÖС£¡£¡£
 
ÔØÈëÖС£¡£¡£
ÔØÈëÖС£¡£¡£
ÔØÈëÖС£¡£¡£
ÔØÈëÖС£¡£¡£
ÔØÈëÖС£¡£¡£
 
ÌîдÄúµÄÓʼþµØÖ·£¬¶©ÔÄÎÒÃǵľ«²ÊÄÚÈÝ£º


 
MooseFSʹÓÃ×ܽá
[ 2011/3/2 19:41:00 | By: ÃÎÏè¶ù ]
 

Á÷ÐеĿªÔ´·Ö²¼Ê½Îļþϵͳ±È½Ï

ÎÒÏÖÔÚÓк£Á¿µÄÊý¾ÝÎļþ(1000Íò¸öÎļþ)ÐèÒª´æ´¢£¬ÐèÒªÈÃÆäËû¼ÆËã»ú¿ÉÒÔºÜÈÝÒ׵طÃÎÊ£¬Êý¾ÝÎÞ¼Û£¬ÎÒ»¹Ï£ÍûÕâ¸öÎļþϵͳ´øÈßÓ๦ÄÜ¡£ÎÒÊ×ÏÈ×¢Òâµ½µÄÊÇUbuntu Enterprise CloudµÄÌṩÕß:Eucalyptus¡£ËüÌṩÁ˺ÍAWS(Amazon Web Service)¼¸ºõÍêÈ«¼æÈݵÄÔÆ¼ÆËã½Ó¿Ú£¬¿´ÆðÀ´ËƺõÊǸöÔÆ´æ´¢µÄ¿¿Æ×½â¾ö·½°¸¡£

EucalyptusÄ£·ÂAmazonµÄS3·þÎñ£¬ÌṩÁËÒ»¸ö½Ð×ö WalrusµÄ´æ´¢·þÎñ×é¼þ¡£¿ÉÊǾ­¹ýÒ»·¬Ì½Ë÷£¬ÎÒ·¢ÏÖEucalyptusÏë˵°®Äã²»ÈÝÒס£Ò»·½ÃæÊÇÒòΪEucalyptusÅäÖÃÆðÀ´ºÜÂé·³£¬È±·¦Îĵµ£¬ÍøÉϼ¸ºõÕÒ²»µ½ÈκÎÏà¹Ø°ïÖú£»ÁíÒ»·½Ã棬ËäÈ»ÀíÂÛÉÏEucalyptusºÍAWSµÄEC2/S3¼æÈÝ£¬µ«Êµ¼ÊÉϲ¢·ÇÈç´Ë£¬ºÜ¶àÔÚAWSÉÏ¿ÉÒÔÓõŤ¾ß£¬ÔÚEucalyptusÉϾÍÎÞ·¨Ê¹ÓÃ×î¹Ø¼üÊÇ£¬Ö±µ½×îºóÎÒ°ÑWalrusÅäÖÃÍê³ÉÖ®ºó£¬²Å·¢ÏÖWalrus¸ù±¾²»ÏñÎÒÏëµÄÄÇÑù£¬ÊÇÒ»¸ö´øÈßÓàµÄÔÆ´æ´¢ÏµÍ³¡£¶øÖ»ÊÇÒ»¸öʵÏÖÁËS3½Ó¿ÚµÄµ¥»úÈí¼þ¶øÒÑ¡£Êµ¼ÊÉÏWalrusºÍEucalyptusµÄÁíÒ»¸ö×é¼þsc(storage controller)ûÓÐÈκιØÁª£¬WalrusÖ»ÊÇÌṩÁ˺ÍS3Ò»ÖµĽӿڣ¬¶øËüµÄʵÏÖ·½Ê½£¬¼È²»´øÈßÓ࣬Ҳ²»ÄÜ·Ö¿ª²¿ÊðÔÚ¶ą̀·þÎñÆ÷ÉÏ¡£ÓÚÊÇÎÒ¿ªÊ¼Ñ°ÕÒÒ»¸öÕæÕýµÄ·Ö²¼Ê½Îļþϵͳ£¬À´½â¾öÎҵĴ洢ÄÑÌâ¡£

Ò»ÕҲŷ¢ÏÖ£¬ÊÐÃæÉϸ÷ÖÖ·Ö²¼Ê½ÎļþϵͳƷÖÖ·±¶à£¬²ã³ö²»Çî¡£Áоټ¸¸öÖ÷ÒªµÄ£ºmogileFS£ºKey-ValueÐÍÔªÎļþϵͳ£¬²»Ö§³ÖFUSE£¬Ó¦ÓóÌÐò·ÃÎÊËüʱÐèÒªAPI£¬Ö÷ÒªÓÃÔÚwebÁìÓò´¦Àíº£Á¿Ð¡Í¼Æ¬£¬Ð§ÂÊÏà±È mooseFS¸ßºÜ¶à¡£

FastDFS£º¹úÈËÔÚmogileFSµÄ»ù´¡ÉϽøÐиĽøµÄkey-valueÐÍÎļþϵͳ£¬Í¬Ñù²»Ö§³ÖFUSE£¬Ìṩ±È mogileFS¸üºÃµÄÐÔÄÜ¡£

mooseFS£ºÖ§³ÖFUSE£¬Ïà¶Ô±È½ÏÇáÁ¿¼¶£¬¶Ômaster·þÎñÆ÷Óе¥µãÒÀÀµ£¬ÓÃc±àд£¬ÐÔÄÜÏà¶Ô½ÏºÃ£¬¹úÄÚÓõÄÈ˱Ƚ϶àglusterFS£ºÖ§³ÖFUSE£¬±ÈmooseFSÅÓ´ó¡£

ceph£ºÖ§³ÖFUSE£¬¿Í»§¶ËÒѾ­½øÈëÁËlinux-2.6.34Äںˣ¬Ò²¾ÍÊÇ˵¿ÉÒÔÏñext3/rasierFSÒ»Ñù£¬Ñ¡ÔñcephΪÎļþϵͳ¡£³¹µ×µÄ·Ö²¼Ê½£¬Ã»Óе¥µãÒÀÀµ£¬ÓÃC±àд£¬ÐÔÄܽϺ᣻ùÓÚ²»³ÉÊìµÄbtrfs£¬Æä±¾ÉíÒ²·Ç³£²»³ÉÊì¡£

lustre£ºOracle¹«Ë¾µÄÆóÒµ¼¶²úÆ·£¬·Ç³£ÅӴ󣬶ÔÄں˺Íext3Éî¶ÈÒÀÀµ¡£

NFS£ºÀÏÅÆÍøÂçÎļþϵͳ£¬¾ßÌå²»Á˽⣬·´ÕýNFS×î½ü¼¸Äêû·¢Õ¹£¬¿Ï¶¨²»ÄÜÓᣱ¾À´ÎÒ´òËãÓÃmogileFS£¬ÒòΪËüÓõÄÈË×î¶à£¬¶øÇÒÎÒµÄÖ÷ÒªÐèÇó¶¼ÊÇÔÚweb·½Ãæ¡£

µ«ÊÇÑо¿ÁËËüµÄapiÖ®ºó·¢ÏÖ£¬Key-ValueÐÍÎļþϵͳûÓÐĿ¼½á¹¹£¬µ¼Ö²»ÄÜÓÃlistij¸ö×ÓĿ¼µÄËùÓÐÎļþ£¬²»ÄÜÖ±½ÓÏñ±¾µØÎļþϵͳһÑù²Ù×÷£¬¸ÉʲôÊÂÇé¶¼ÐèÒªÒ»¸öapi£¬ÈÃÈËÊ®·Ö²»Ë¬¡£mogileFsÕâÖÖ×ö·¨£¬¿ÉÄÜÊÇÊÜͬһ¸ö¿ª·¢ÍŶӵÄÁíÒ»¸ö´óÃû¶¦¶¦µÄ²úÆ·memcachedµÄÕìÌý¶Ë¿Ú+apiģʽӰÏ죬ҲÓпÉÄÜÊÇ mogileFS¸Õ¿ªÊ¼Éè¼ÆµÄʱºò£¬FUSE»¹Ã»ÓпªÊ¼Á÷ÐС£

×ÜÖ®ÒªÕÒÒ»¸öÖ§³ÖFUSEµÄ·Ö²¼Ê½Îļþϵͳ£¬×îºó¾ÍÔÚmooseFS, glusterFS, cephÖÐÑ¡Ôñ¡£´Ó¼¼ÊõÉÏÀ´¿´£¬ceph¿Ï¶¨ÊÇ×î°ôµÄ£¬ÓÃc±àд£¬½øÈëlinux-2.6.34Äںˣ¬»ùÓÚbtrfsÎļþϵͳ£¬±£Ö¤ÁËËüµÄ¸ßÐÔÄÜ£¬¶ø¶ą̀ masterµÄ½á¹¹³¹µ×½â¾öÁ˵¥µãÒÀÀµÎÊÌ⣬´Ó¶øÊµÏÖÁ˸߿ÉÓ᣿ÉÊÇcephÌ«²»³ÉÊìÁË£¬Ëü»ùÓÚµÄbtrfs±¾Éí¾Í²»³ÉÊ죬ËüµÄ¹Ù·½ÍøÕ¾ÉÏÒ²Ã÷È·Ö¸³ö²»Òª°ÑcephÓÃÔÚÉú²ú»·¾³ÖС£

¶øglusterFS±È½ÏÊʺϴóÐÍÓ¦Ó㬿ڱ®Ïà¶Ô½Ï²î£¬Òò´ËÒ²²»¿¼ÂÇ¡£×îºóÎÒÑ¡ÔñÁËȱµãºÍÓŵãͬÑùÃ÷ÏÔµÄmooseFS¡£ËäÈ»ËüÓе¥µãÒÀÀµ£¬ËüµÄ master·Ç³£Õ¼ÄÚ´æ¡£µ«ÊǸù¾ÝÎÒµÄÐèÇó£¬mooseFSÒѾ­×ã¹»Âú×ãÎҵĴ洢ÐèÇó¡£¹úÄÚmooseFSµÄÈ˱Ƚ϶࣬²¢ÇÒÓкܶàÈËÓÃÔÚÁËÉú²ú»·¾³£¬¸ü¼Ó¼á¶¨ÁËÎÒµÄÑ¡Ôñ¡£

Ò»¡¢MFS½éÉÜ£º
Distinctive features of MooseFS are:

MooseFSÓÅÔ½ÌØÐÔÈçÏ£º
- higher reliability (data can be stored in several copies on separate computers)
¸ß¿ÉÓÃÐÔ(Êý¾Ý¿ÉÒÔ´æ´¢ÔÚ¶à¸ö»úÆ÷ÉϵĶà¸ö¸±±¾)

- dynamically expanding disk space by attaching new computers/disks
¿É¶¯Ì¬À©Õ¹ËæÊ±ÐÂÔö¼Ó»úÆ÷»òÕßÊÇ´ÅÅÌ

- possibility of storing deleted files for a defined period of time ("trash bin" service on a file system level)
¿É»ØÊÕÔÚÖ¸¶¨Ê±¼äÄÚɾ³ýµÄÎļþ(¡°À¬»ø»ØÊÕÕ¾¡±ÊÇÒ»¸öϵͳ¼¶±ðµÄ·þÎñ)

- possibility of creating snapshot of a file, which means coherent copy of the whole file, even while the file is being written.
¿ÉÒÔ¶ÔÕû¸öÎļþÉõÖÁÔÚÕýÔÚдÈëµÄÎļþ´´½¨ÎļþµÄ¿ìÕÕ¡£

MFSÎļþϵͳ½á¹¹: °üº¬4ÖÖ½ÇÉ«: 
¹ÜÀí·þÎñÆ÷managing server (master) £º¸ºÔð¸÷¸öÊý¾Ý´æ´¢·þÎñÆ÷µÄ¹ÜÀí£¬Îļþ¶Áдµ÷¶È£¬Îļþ¿Õ¼ä»ØÊÕÒÔ¼°»Ö¸´.¶à½Úµã¿½±´¡£

single computer managing the whole filesystem,storing metadata for every file (information on size, attributes and file localisation(s), including all information about non-regular files, i.e.directories, sockets, pipes and devices).

µ¥¸ö»úÆ÷¹ÜÀíÕû¸öÎļþϵͳ£¬ÓÃÀ´´æ´¢¼Ç¼ÿһ¸öÎļþµÄMetadata(¼Ç¼ÎļþµÄ´óС¡¢ÎļþµÄÊôÐÔ¡¢ÎļþµÄλÖã¬Ò²°üÀ¨·**æÔòÎļþµÄϵͳ£¬ÈçĿ¼¡¢sockets¡¢¹ÜµÀºÍÉ豸)

ÔªÊý¾ÝÈÕÖ¾·þÎñÆ÷Metalogger server(Metalogger)£º¸ºÔ𱸷Ýmaster·þÎñÆ÷µÄ±ä»¯ÈÕÖ¾Îļþ£¬ÎļþÀàÐÍΪchangelog_ml.*.mfs£¬ÒÔ±ãÓÚÔÚmaster server³öÎÊÌâµÄʱºò½ÓÌæÆä½øÐй¤×÷¡£

Êý¾Ý´æ´¢·þÎñÆ÷data servers (chunkservers)  £º¸ºÔðÁ¬½Ó¹ÜÀí·þÎñÆ÷,Ìý´Ó¹ÜÀí·þÎñÆ÷µ÷¶È£¬Ìṩ´æ´¢¿Õ¼ä£¬²¢Îª¿Í»§ÌṩÊý¾Ý´«Êä¡£

¿Í»§»ú¹ÒÔØÊ¹ÓÃclient computers  £ºÍ¨¹ýfuseÄں˽ӿڹҽÓÔ¶³Ì¹ÜÀí·þÎñÆ÷ÉÏËù¹ÜÀíµÄÊý¾Ý´æ´¢·þÎñÆ÷,.¿´ÆðÀ´¹²ÏíµÄÎļþϵͳºÍ±¾µØunixÎļþϵͳʹÓÃÒ»ÑùµÄЧ¹û¡£

˵˵mfsÓÅÊÆ£º
Ò»)¡¢Free(GPL)
0. ͨÓÃÎļþϵͳ£¬²»ÐèÒªÐÞ¸ÄÉϲãÓ¦ÓþͿÉÒÔʹÓÃ(Ö§³Öfuse)¡£
1. ¿ÉÒÔÔÚÏßÀ©ÈÝ£¬Ìåϵ¼Ü¹¹¿ÉÉìËõÐÔ¼«Ç¿¡£
2. ²¿Êð¼òµ¥¡£
3. Ìåϵ¼Ü¹¹¸ß¿ÉÓ㬳ý¿ªmaster×é¼þÎÞµ¥µã¹ÊÕÏ¡£
4. Îļþ¶ÔÏó¸ß¿ÉÓ㬿ÉÉèÖÃÈÎÒâµÄÎļþÈßÓà³Ì¶È£¬¶ø¾ø¶Ô²»»áÓ°Ïì¶Á»òÕßдµÄÐÔÄÜ¡£
5. ÌṩWindows»ØÊÕÕ¾µÄ¹¦ÄÜ¡£
6. ÌṩÀàËÆJavaÓïÑ﵀ GC(À¬»ø»ØÊÕ)¡£
7. Ìṩnetapp£¬emc£¬ibmµÈÉÌÒµ´æ´¢µÄsnapshotÌØÐÔ¡£
8. google filesystemµÄÒ»¸öcʵÏÖ¡£
9. Ìṩweb gui¼à¿Ø½Ó¿Ú¡£
10. Ìá¸ßËæ»ú¶Á»òдµÄЧÂÊ¡£
11. Ìá¸ßº£Á¿Ð¡ÎļþµÄ¶ÁдЧÂÊ¡£
¿ÉÄܵį¿¾±£º
0). master±¾ÉíµÄÐÔÄÜÆ¿¾±¡£mfsϵͳmaster´æÔÚµ¥µã¹ÊÕÏÈçºÎ½â¾ö£¿ÍøÉÏÓÐÈËÌṩmoosefs+drbd+heartbeat À´±£Ö¤masterµ¥µãÎÊÌ⣿²»¹ýÔÚʹÓùý³ÌÖв»¿ÉÄÜÍêÈ«²»¹Ø»úºÍ¼äЪÐÔµÄÍøÂçÖжϣ¡
¶ÌÆÚ¶Ô²ß£º°´ÒµÎñÇзÖ

1). Ìåϵ¼Ü¹¹´æ´¢Îļþ×ÜÊýµÄ¿ÉÓö¼ûµÄÉÏÏÞ¡£(mfs°ÑÎļþϵͳµÄ½á¹¹»º´æµ½masterµÄÄÚ´æÖУ¬¸öÈËÈÏΪÎļþÔ½¶à£¬masterµÄÄÚ´æÏûºÄÔ½´ó£¬8g¶ÔÓ¦2500kwµÄÎļþÊý£¬2ÒÚÎļþ¾ÍµÃ64GBÄÚ´æ )¡£
¶ÌÆÚ¶Ô²ß£º°´ÒµÎñÇзÖ

2). µ¥µã¹ÊÕϽâ¾ö·½°¸µÄ½¡×³ÐÔ¡£

¶þ¡¢mfs¸÷ÔªËØÖ÷ÒªÅäÖÃÎļþ

1¡¢master
Ö÷·þÎñÆ÷
Metadata is stored in memory of the managing server and simultaneously is being saved on disk (as a periodically updated binary file and immediately updated incremental logs). The main binary file as well as the logs are replicated to metaloggers (if present).

MetadataÔªÊý¾Ý´æ´¢ÔÚmaster·þÎñÆ÷µÄÄÚ´æÖУ¬Í¬Ê±Ò²±£´æÔÚ´ÅÅÌÉÏ(×÷Ϊһ¸ö¶¨ÆÚ¸üеĶþ½øÖÆÎļþ£¬²¢ÊµÊ±µÄ¸üÐÂchangelogÈÕÖ¾)¡£Èç¹û´æÔÚmetaloggersµÄ»°£¬Ö÷ÒªµÄ¶þ½øÖÆÎļþÒÔ¼°ÈÕÖ¾Ò²¸´ÖƵ½metaloggersÖС£

How much CPU/RAM resources are used?
ÏûºÄ¶àÉÙCPUºÍÄÚ´æ×ÊÔ´

In our environment (ca. 500 TiB, 25 million files, 2 million folders distributed on 26 million chunks on 70 machines) the usage of chunkserver CPU (by constant file transfer) is about 15-20% and chunkserver RAM usually consumes about 100MiB (independent of amount of data).

ÔÚÎÒÃǵIJâÊÔ»·¾³ÖÐ(´óÔ¼500 TiBµÄÊý¾Ý£¬250Íò·ÝÎļþ£¬200ÍòÎļþ¼Ð£¬·Ö³É260Íò¿é·Ö²¼ÔÚ70»úÆ÷ÉÏ)£¬chunkserverµÄCPUʹÓÃÇé¿öΪ(³ÖÐøµÄÎļþ´«Êä)ԼΪ15-20£¥Í¬Ê±chunkserverÄÚ´æÊ¹ÓÃ100MiB(ºÍÊý¾ÝÁ¿µÄ¶àÉÙÎÞ¹Ø)¡£

The master server consumes about 30% of CPU (ca. 1500 operations per second) and 8GiB RAM. CPU load depends on amount of operations and RAM on number of files and folders.

master·þÎñÆ÷ÏûºÄÔ¼30£¥µÄCPU(ÿÃëÖÓÔ¼1500´Î²Ù×÷)ºÍ8GµÄÄÚ´æ¡£ CPU¸ºÔØÈ¡¾öÓÚ²Ù×÷µÄ´ÎÊý£¬ÄÚ´æµÄʹÓÃÈ¡¾öÓÚÎļþºÍÎļþ¼ÐµÄ¸öÊý¡£

File data is divided to fragments (chunks) of maximum size 64MB each which are stored as files on selected disks on data servers (chunkservers). Each chunk is saved on different computers in a number of copies equal to a "goal" for the given file.

ÎļþÊý¾ÝÊǰ´¿éΪµ¥Î»(¿éµÄ×î´ó´óС64MBÒÔÉÏ)´æ´¢ÔÚÊý¾Ý·þÎñÆ÷(chunkservers)ÉÏÖ¸¶¨´ÅÅÌÉÏ¡£Èç¹ûÉèÖõÄgoalµÄ´æ´¢·ÖÊýºÍ»úÆ÷¸öÊýÏàͬ£¬²»Í¬µÄ¿é¶ù»á´æ´¢ÔÚÿһ¸ö»úÆ÷ÉÏ¡£

What sort of sizing is required for the Master  server?
¶ÔMasterÖ÷·þÎñÆ÷ÓÐʲôÐèÇó£¿

The most important factor is RAM of mfsmaster machine, as the full file system structure is cached in RAM for speed. Besides RAM mfsmaster machine needs some space on HDD for main metadata file together with incremental logs.
×îÖØÒªµÄÒòËØ¾ÍÊÇmfsmaster»úÆ÷µÄÄڴ棬ÒòΪÕû¸öÎļþϵͳ½á¹¹¶¼»º´æµ½ÄÚ´æÖÐÒÔ±ã¼Ó¿ì·ÃÎÊËÙ¶È¡£³ýÁËÄÚ´æmfsmaster»úÆ÷»¹ÐèÒªÒ»¶¨Ó²ÅÌ´óСÓÃÀ´´æ´¢MetadataÊý¾ÝºÍÔö³¤µÄÈÕÖ¾Îļþ¡£

The size of the metadata file is dependent on the number of files (not on their sizes). The size of incremental logs depends on the number of operations per hour, but length (in hours) of this incremental log is configurable.
MetadataÎļþµÄ´óСÊÇÈ¡¾öÓÚÎļþÊýµÄ¶àÉÙ(¶ø²»ÊÇËûÃǵĴóС)¡£changelogÈÕÖ¾µÄ´óСÊÇÈ¡¾öÓÚÿСʱ²Ù×÷µÄÊýÄ¿£¬µ«ÊÇÕâ¸öʱ¼ä³¤¶È(ĬÈÏÊǰ´Ð¡Ê±)ÊÇ¿ÉÅäÖõġ£

1 million files takes approximately 300 MiB of RAM. Installation of 25 million files requires about 8GiB of RAM and 25GiB space on HDD.
100ÍòÎļþ´óÔ¼ÐèÒª300MÄÚ´æ¡£25°ÙÍò·ÝÎļþ´óÔ¼ÐèÒª8GiBÄÚ´æºÍ25GiBÓ²Å̿ռ䡣

masterÖ÷ÒªÎļþ
mfsmaster.cfg
configuration file for MooseFS master process

²ÎÊý˵Ã÷ÈçÏ£º
#WORKING_USERºÍWORKING_GROUP£ºÊÇÔËÐÐmaster serverµÄÓû§ºÍ×飻
#SYSLOG_IDENT£ºÊÇmaster serverÔÚsyslogÖеıêʶ£¬Ò²¾ÍÊÇ˵Ã÷ÕâÊÇÓÉmaster server²úÉúµÄ£»
#LOCK_MEMORY£ºÊÇ·ñÖ´ÐÐmlockall()ÒÔ±ÜÃâmfsmaster ½ø³ÌÒç³ö(ĬÈÏΪ0£¬¼´·ñ)£»
#NICE_LEVE£ºÔËÐеÄÓÅÏȼ¶(Èç¹û¿ÉÒÔĬÈÏÊÇ -19; ×¢Òâ: ½ø³Ì±ØÐëÊÇÓÃrootÆô¶¯)£»
#EXPORTS_FILENAME£º±»¹Ò½ÓĿ¼¼°ÆäȨÏÞ¿ØÖÆÎļþµÄ´æ·ÅλÖÃ
#DATA_PATH£ºmetadata files and lock file´æ·Å·¾¶£¬´ËĿ¼Ï´óÖÂÓÐÒÔÏÂÎļþ£ºmetadata£¬changelog£¬sessions£¬stats£¬lock¡£
#BACK_LOGS£ºmetadataµÄchange logÎļþÊýÄ¿(ĬÈÏÊÇ 50);
#REPLICATIONS_DELAY_INIT£º(initial delay in seconds before starting replications)³õʼÑÓ³Ù¸´ÖƵÄʱ¼ä(ĬÈÏÊÇ300s);
#REPLICATIONS_DELAY_DISCONNECT£º(replication delay in seconds after chunkserver disconnection) chunkserver¶Ï¿ªºó¸´ÖÆÑÓ³Ù(ĬÈÏÊÇ3600s)£»
# MATOML_LISTEN_HOST£ºÓÃÓÚmetaloggerÁ¬½ÓµÄIPµØÖ·(ĬÈÏÊÇ*£¬´ú±íÈκÎIP)£»
# MATOML_LISTEN_PORT£º¼àÌýmetaloggerÇëÇóµÄ¶Ë¿ÚµØÖ·(ĬÈÏÊÇ9419)£»
# MATOCS_LISTEN_HOST£ºÓÃÓÚchunkserverÁ¬½ÓµÄIPµØÖ·(ĬÈÏÊÇ*£¬´ú±íÈκÎIP)£»
# MATOCS_LISTEN_PORT£º¼àÌýchunkserverÁ¬½ÓµÄ¶Ë¿ÚµØÖ·(ĬÈÏÊÇ9420)£»
# MATOCU_LISTEN_HOST£ºÓÃÓÚ¿Í»§¶Ë¹Ò½ÓÁ¬½ÓµÄIPµØÖ·(ĬÈÏÊÇ*£¬´ú±íÈκÎIP)£»
# MATOCU_LISTEN_PORT£º¼àÌý¿Í»§¶Ë¹ÒÔØÁ¬½ÓµÄ¶Ë¿ÚµØÖ·(ĬÈÏÊÇ9421)£»
# CHUNKS_LOOP_TIME £º(Chunks loop frequency in seconds)chunksµÄ»Ø»·ÆµÂÊ(ĬÈÏÊÇ£º300Ãë)£»
# CHUNKS_DEL_LIMIT£º(Maximum number of chunks to delete in one loop)ÔÚÒ»¸öloopÖпÉÒÔɾ³ýchunksµÄ×î´óÊý (ĬÈÏ£º100)
# CHUNKS_WRITE_REP_LIMIT£º(Maximum number of chunks to replicate to one chunkserver in one loop)ÔÚÒ»¸öloopÀï¸´ÖÆµ½Ò»¸öchunkserverµÄ×î´óchunkÊýÄ¿(ĬÈÏÊÇ1)
# CHUNKS_READ_REP_LIMIT£º(Maximum number of chunks to replicate from one chunkserver in one loop)ÔÚÒ»¸öloopÀï´ÓÒ»¸öchunkserver¸´ÖƵÄ×î´óchunkÊýÄ¿(ĬÈÏÊÇ5)
# REJECT_OLD_CLIENTS£ºµ¯³öµÍÓÚ1.6.0µÄ¿Í»§¶Ë¹Ò½Ó(0»ò1£¬Ä¬ÈÏÊÇ0)

mfsexports.cfg
MooseFS access control file
µØÖ·¿ÉÒÔÖ¸¶¨µÄ¼¸ÖÖ±íÏÖÐÎʽ£ºËùÓÐip£¬µ¥¸öip£¬IPÍøÂçµØÖ·/λÊýÑÚÂ룬IPÍøÂçµØÖ·/×ÓÍøÑÚÂ룬ip¶Î·¶Î§¡£

ȨÏÞ²¿·Ö£º
ro  Ö»¶Áģʽ¹²Ïí
rw  ¶Áд·½Ê½¹²Ïí
alldirs  Ðí¹ÒÔØÈκÎÖ¸¶¨µÄ×ÓĿ¼
maproot   Ó³ÉäΪroot£¬»¹ÊÇÖ¸¶¨µÄÓû§
password  Ö¸¶¨¿Í»§¶ËÃÜÂë

.mfsmaster.lock
lock file of running MooseFS master process
mfsmaster.lockÎļþ¼Ç¼ÕýÔÚÔËÐеÄMooseFS µÄÖ÷½ø³Ì

metadata.mfs, metadata.mfs.back
MooseFS filesystem metadata image
metadata.mfs, metadata.mfs.backÊÇMooseFSÎļþϵͳµÄÔªÊý¾ÝmetadataµÄ¾µÏñ

changelog.*.mfs
MooseFS filesystem metadata change logs (merged into metadata.mfs once per hour)
changelog.*.mfs ÊÇMooseFSÎļþϵͳԪÊý¾ÝµÄ¸Ä±äÈÕÖ¾(ÿһ¸öСʱºÏ²¢µ½metadata.mfsÖÐÒ»´Î)

The size of the  metadata file is dependent on the number of files (not on their sizes). The size of incremental logs depends on the number of operations per hour¡£
MetadataÎļþµÄ´óСȡ¾öÓÚÎļþÊý(¶ø²»ÊÇËûÃǵĴóС)£¬ChangelogµÄ´óСȡ¾öÓÚÿСʱµÄ²Ù×÷´ÎÊý¡£

2¡¢metalogger
Ö÷ÒªÎļþ£º
mfsmetalogger.cfg

# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfsmetalogger
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH = /usr/local/mfs/var/mfs
# BACK_LOGS = 50

META_DOWNLOAD_FREQ = 1 # metadata download frequency in hours (default is 24, at most BACK_LOGS/2) ¡£metadataÔªÊý¾ÝÏÂÔØ¼ä¸ôʱ¼ä(ĬÈÏÊÇ24Сʱ£¬µ¥Î»ÊÇСʱ£¬ÖÁ¶àÊÇBACK_LOGSµÄ1/2)
# MASTER_RECONNECTION_DELAY = 5   # delay in seconds before trying to reconnect to master after disconnection¡£ÔÚʧȥÁ¬½ÓÖ®ºóÑÓ³Ù¶àÉÙÃëÖØÐÂÁ¬½Ómaster
MASTER_HOST = 192.168.5.230
# MASTER_PORT = 9419
# MASTER_TIMEOUT = 60 # timeout (in seconds) for master connections¡£MasterÁ¬½Ó³¬Ê±Ê±¼ä(µ¥Î»ÊÇÃë)
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfsmetalogger.lock
.mfsmetalogger.lock

changelog_ml.*.mfs
MooseFS filesystem metadata change logs (backup of master change log files)
changelog_ml.*.mfsÊÇMooseFSÎļþϵͳµÄÔªÊý¾ÝµÄchangelogÈÕÖ¾(±¸·ÝµÄMaster µÄMasterµÄchangelogÈÕÖ¾¡£)

metadata.ml.mfs.back
Latest copy of complete metadata.mfs.back file from MooseFS master.
metadata.ml.mfs.backÊÇ´ÓMasterÖ÷»úÉÏÏÂÔØµÄ×îеÄÍêÕûmetadata.mfs.backµÄ¿½±´

sessions.ml.mfs
Latest copy of sessions.mfs file from MooseFS master.
sessions.ml.mfsÊÇ´ÓmasterÏÂÔØµÄ×îеÄsessions.mfsÎļþ¿½±´¡£

3¡¢chunker
Ö÷ÒªÎļþ£º
mfschunkserver.cfg

# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfschunkserver
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH = /usr/local/mfs/var/mfs
# MASTER_RECONNECTION_DELAY = 5 (delay in seconds before trying to reconnect to master after disconnection)ÔÚʧȥÁ¬½ÓÖ®ºóÑÓ³Ù¶àÉÙÃëÖØÐÂÁ¬½Ómaster
MASTER_HOST = 192.168.5.230 ÔªÊý¾Ý·þÎñÆ÷µÄÃû³Æ»òµØÖ·£¬¿ÉÒÔÊÇÖ÷»úÃû£¬Ò²¿ÉÒÔÊÇipµØÖ·¡£Ö»ÒªÊý¾Ý´æ´¢·þÎñÆ÷ÄÜ·ÃÎʵ½ÔªÊý¾Ý·þÎñÆ÷¾ÍÐС£
# MASTER_PORT = 9420
# MASTER_TIMEOUT = 60
# CSSERV_LISTEN_HOST = *  #IP address to listen on for client (mount) connections (* means any) ÔÊÐí¹ÒÔØµÄ¿Í»§¶ËÁ¬½ÓµÄIPµØÖ·(*ÔÊÐíÈ«²¿)
# CSSERV_LISTEN_PORT = 9422
# CSSERV_TIMEOUT = 5      #timeout (in seconds) for client (mount) connections
¿Í»§¶Ë¹ÒÔØÁ¬½ÓµÄ³¬Ê±Ê±¼ä(µ¥Î»ÎªÃë)
# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg #·ÖÅ䏸MFSʹÓõĴÅÅ̿ռäÅäÖÃÎļþµÄλÖÃ
# HDD_TEST_FREQ = 10   #chunk test period in seconds ¿éµÄ²âÊÔÆÚ(µ¥Î»ÎªÃë)
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfschunkserver.lock
# BACK_LOGS = 50

mfshdd.cfg
list of directories (mountpoints) used for MooseFS storage (one per line; directory prefixed by * character causes given directory to be freed by replicating all data already stored there to another locations) Lines starting with # character are ignored as comments¡£

mfschunkserver.lock
lock file of running MooseFS chunkserver process

4¡¢mfsclient(mount)

Èý¡¢MFS¶ÁдÐÔÄÜ£º
¼òµ¥²âÊÔ½á¹û£º
д£ºtime dd if=/dev/zero of=/usr/mfstest/test2/zhhtest500M  bs=1024k count=500
¶Á£ºtime dd if=/usr/mfstest/test2/zhhtest500M  of=/dev/null

1copyд

2copyд

1copy¶Á

2copy¶Á

1M

0m0.042s

0m0.042s

0m0.017s

0m0.017s

2M

0m0.056s

0m0.066s

0m0.030s

0m0.055s

5M

0m0.073s

0m0.079s

0m0.070s

0m0.071s

10M

0m0.119s

0m0.131s

0m0.136s

0m0.197s

20M

0m0.250s

0m0.288s

0m0.291s

0m0.376s

50M

0m0.514s

0m0.589s

0m0.896s

0m0.886s

100M

0m0.977s

0m7.497s

0m1.677s

0m1.787s

200M

0m7.910s

0m22.270s

0m2.683s

0m3.129s

500M

0m22.465s

0m51.735s

0m6.559s

0m6.990s

1G

0m52.346s

1m48.056s

0m17.319s

0m17.154s

2G

1m46.224s

3m46.283s

0m41.608s

0m34.435s

5G

4m41.956s

9m34.798s

2m9.200s

1m56.183s

10G

9m29.037s

19m26.237s

3m55.222s

3m24.914s

100G

95m53.500s

195m7.173s

32m4.295s

41m26.995s


×Ü½á¹æÂÉ£º
1¡¢¶ÁËÙ¶È£ºca 71M/s   дËÙ¶È£ºca 22M/s  9M/s   (ÒÔ500M¼ÆËã)
2¡¢goalµÄÉèÖúͶÁдËٶȵĹØÏµ£¿Ã²ËÆÃ»ÓйØÏµ¡£

What average write/read speeds can we expect?
ÀíÏëµÄƽ¾ùдºÍ¶ÁµÄËÙ¶ÈÊǶàÉÙ£¿

The raw reading / writing speed obviously depends mainly on the performance of the used hard disk drives and the network capacity and its topology and varies from installation to installation. The better performance of hard drives used and better throughput of the net, the higher performance of the whole system.

ԭʼµÄ¶Á/дËٶȺÜÃ÷ÏÔÊÇÖ÷Ҫȡ¾öÓÚËùʹÓõÄÓ²Å̵ÄÐÔÄÜ¡¢ÍøÂçµÄÈÝÁ¿ºÍÍØÆË½á¹¹µÄ£¬Ê¹ÓõÄÓ²Å̺ÍÍøÂçµÄÍÌÍÂÁ¿Ô½ºÃ£¬Õû¸öϵͳµÄÐÔÄÜÒ²¾Í»áÔ½ºÃ¡£

In our in-house commodity servers (which additionally make lots of extra calculations) and simple gigabyte Ethernet network on a petabyte-class installation  on Linux (Debian) with goal=2 we have write speeds of about 20-30 MiB/s and reads of 30-50MiB/s. For smaller blocks the write speed decreases, but reading is not much affected.

ÔÚÎÒÃǵIJâÊÔ»·¾³ÖУ¬½«MFS°²×°ÔÚlinux(Debian)ÉÏÉèÖô洢µÄ·ÝÊýΪ2£¬Ò»°ãµÄ²âÊÔ·þÎñÆ÷(»¹×öÁËÆäËû½Ï´óÁ¿µÄ¼ÆËã)£¬GÌ«ÍøÂ磬ʹÓÃPbyte¼¶±ðµÄÊý¾Ý£¬²âÊԵĽá¹ûΪдµÄËÙ¶È´óÔ¼ÔÚ20-30MB/s£¬¶ÁµÄËÙ¶ÈΪ30-50MB/s¡£¶ÔÓÚСÎļþдµÄËÙ¶ÈÓÐЩϽµ£¬µ«ÊǶÔÓÚ¶ÁµÄËÙ¶ÈÊÇûÓÐÓ°ÏìµÄ¡£

Does the goal setting influence writing/reading speeds?
ÉèÖÃÎļþ´æ´¢µÄ·ÝÊýÊÇ·ñÓ°Ïìд/¶ÁµÄËÙ¶È£¿

Generally speaking,  it doesn¡¯t. The goal setting can influence the reading speed only under certain conditions. For example, reading the same file at the same time by more than one client would be faster when the file has goal set to 2 and not goal=1.

Ò»°ãÀ´Ëµ£¬ËüÊÇÓÐÓ°ÏìµÄ¡£ÔÚÒ»¶¨Ìõ¼þÏ£¬´æ´¢·ÝÊýµÄÉèÖûáÓ°ÏìµÄ¶ÁÈ¡µÄËÙ¶È¡£ÀýÈ磬µ±ÎļþÉèÖô洢Á½·Ý¶ø²»ÊÇÒ»·ÝʱÄܼӿì¶ÔͬһÎļþÓжà¸ö¿Í»§¶Ë¶ÁÈ¡µÄËÙ¶È¡£

But the situation in the real world when several computers read the same file at the same moment is very rare; therefore, the goal setting has rather little influence on the reading speeds.

µ«ÊÇÔÚÕæÊµµÄ»·¾³ÖУ¬¶à¸ö»úÆ÷ͬʱ¶Áȡͬһ¸öÎļþµÄ»úÂÊÊDZȽÏСµÄ£¬Òò´Ë£¬´æ´¢·ÖÊýµÄÉèÖöԶÁÈ¡µÄËÙ¶ÈÓ°ÏìÊDZȽÏСµÄ¡£

Similarly, the writing speed is not much affected by the goal setting.(if only the file is bigger than 64MiB)

ͬÑù£¬ÉèÖô洢·ÝÊý¶ÔдµÄËÙ¶ÈÓ°ÏìÒ²ÊDz»Ì«´óµÄ(Ö»ÓÐÎļþ³¬¹ý64MµÄʱºò)¡£

ËÄ¡¢ÔÖÄѲâÊÔ¡¢»Ö¸´¼°ÆäËû²âÊÔ
1¡¢client »úÆ÷ÎÞÂÛÔõÑù²Ù×÷¶¼²»»áÓ°Ïìmaster¡£

¿Í»§¶ËÇ¿ÖÆkill -9ɱµômfsmount½ø³Ì£¬ÐèÒªÏÈumount£¬È»ºóÔÙmount¡£·ñÔò»áÌáʾ£º
fuse: bad mount point `/usr/mfstest/': Transport endpoint is not connected
see: /usr/local/mfs/bin/mfsmount -h for help

2¡¢matser¡¢metalogger¡¢chunker¡¢client¶Ë£¬·þÎñÆ÷¹Ø»ú(init0)ºÍÖØÆô(init6)ʱ£¬³ÌÐò¶¼ÊÇÕý³£¹Ø±Õ£¬ÎÞÐèÐÞ¸´¡£

3¡¢masterÆô¶¯ºó£¬metalogger¡¢chunker¡¢clientÈý¸öÔªËØ¶¼ÄÜ×Ô¶¯Óëmaster½¨Á¢Á¬½Ó¡£
Õý³£Æô¶¯Ë³Ðò£ºmatser---chunker---metalogger---client
¹Ø±Õ˳Ðò£ºclient---chunker---metalogger---master
µ«Êµ¼ÊÖÐÎÞÂÛÈçºÎ˳ÐòÆô¶¯»ò¹Ø±Õ£¬Î´¼ûÈκÎÒì³£¡£

4¡¢Õû¸ömfsÌåϵÖУ¬Ö±½Ó¶ÏµçÖ»ÓÐmasterÓпÉÄÜÎÞ·¨Æô¶¯¡£
ʹÓÃmfsmetarestore -aÐÞ¸´²ÅÄÜÆô¶¯£¬Èç¹ûÎÞ·¨ÐÞ¸´£¬Ê¹ÓÃmetaloggerÉϵı¸·ÝÈÕÖ¾½øÐлָ´¡£(¼¸´Î²âÊÔ·¢ÏÖ£ºÈç¹ûmfsmetarestore -aÎÞ·¨ÐÞ¸´£¬ÔòʹÓÃmetaloggerÒ²ÎÞ·¨ÐÞ¸´)¡£

Ç¿ÖÆÊ¹ÓÃmetadata.mfs.back´´½¨metadata.mfs£¬¿ÉÒÔÆô¶¯master£¬µ«¶ªÊ§µÄÊý¾ÝÔÝÎÞ·¨È·¶¨(´ËÎÊÌâÒѾ­Çë½ÌMFS¿ª·¢Ð¡×é)¡£

Ö±½Ó¶Ïµç²âÊÔ¹ý³Ì£¬Ê¹ÓÃmfsmetarestore ¨CaÎÞ·¨ÐÞ¸´£¬Ê¹ÓÃmetaloggerÒ²ÎÞ·¨ÐÞ¸´µÄÇé¿ö½ÏÉÙ·¢Éú¡£5´ÎÖ»ÓÐÒ»´ÎÎÞ·¨ÐÞ¸´¡£

5¡¢chunkerµÄά³Ö£ºchunkerµÄ¿é(chunks)Äܹ»×Ô¶¯¸´ÖÆ»òɾ³ý
¶ÔÒ»¸öĿ¼É趨¡°goal¡±£¬´ËĿ¼ÏµÄд´½¨ÎļþºÍ×ÓĿ¼¾ù»á¼Ì³Ð´ËĿ¼µÄÉ趨£¬µ«²»»á¸Ä±äÒѾ­´æÔÚµÄÎļþ¼°Ä¿Â¼µÄcopy·ÝÊý¡£µ«Ê¹ÓÃ-rÑ¡Ïî¿ÉÒÔ¸ü¸ÄÒѾ­´æÔÚµÄcopy·ÝÊý¡£

goalÉèÖÃΪ2£¬Ö»ÒªÁ½¸öchunkerÓÐÒ»¸öÄܹ»Õý³£ÔËÐУ¬Êý¾Ý¾ÍÄܱ£Ö¤ÍêÕûÐÔ¡£¼ÙÈçÿ¸öÎļþµÄgoal(±£´æ·ÝÊý)¶¼²»Ð¡ÓÚ2£¬²¢ÇÒûÓÐunder-goalÎļþ(¿ÉÒÔÓÃmfsgetgoal ¨CrºÍmfsdirinfoÃüÁîÀ´¼ì²é)£¬ÄÇôһ¸öµ¥Ò»µÄchunkserverÔÚÈκÎʱ¿Ì¶¼¿ÉÄÜ×öÍ£Ö¹»òÕßÊÇÖØÐÂÆô¶¯¡£ÒÔºóÿµ±ÐèÒª×öÍ£Ö¹»òÕßÊÇÖØÐÂÆô¶¯ÁíÒ»¸öchunkserverµÄʱºò£¬ÒªÈ·¶¨Ö®Ç°µÄchunkserver±»Á¬½Ó£¬¶øÇÒҪûÓÐunder-goal chunks¡£

ʵ¼Ê²âÊÔʱ£¬´«ÊäÒ»¸ö´óÎļþ£¬ÉèÖô洢2·Ý¡£´«Êä¹ý³ÌÖУ¬¹Øµôchunker1£¬ÕâÑù¾ø¶Ô»á³öÏÖÓв¿·Ö¿éÖ»´æÔÚchunker2ÉÏ£»Æô¶¯chunker1£¬¹Ø±Õchuner2£¬ÕâÑù¾ø¶Ô»áÓв¿·Ö¿éÖ»´æÔÚchuner1ÉÏ¡£

°Ñchunker2Æô¶¯ÆðÀ´¡£Õû¸ö¹ý³ÌÖУ¬¿Í»§¶ËÒ»Ö±Äܹ»Õý³£´«Êä¡£ÔÚ¿Í»§¶Ë²é¿´£¬Ò»¶Îʱ¼äÄÚ£¬ÎÞ·¨²é¿´£»ÉÔºóÒ»¶Îʱ¼äºó£¬¾Í¿ÉÒÔ·ÃÎÊÁË¡£ÎļþÕý³££¬Ê¹ÓÃmfsfileinfo ²é¿´´ËÎļþ£¬·¢ÏÖÓеĿé·Ö²¼ÔÚchunker1ÉÏ£¬ÓеĿé·Ö²¼ÔÚchuner2ÉÏ¡£Ê¹ÓÃmfssetgoal 2ºÍmfssetgoal -r 2¾ù²»Äܸıä´ËÎļþµÄĿǰ¿éµÄÏÖ×´¡£µ«Ê¹ÓÃmfssetgoal -r 1ºó£¬ËùÓп鶼Ð޸ijÉ1¿éÁË£¬ÔÙmfssetgoal -r 2£¬ËùÓп鶼Ð޸ijÉ2·ÝÁË¡£

²âÊÔchunker¶Ë£¬Ö±½Ó¶ÏµçÇé¿öÏ£¬chunker»á²»»á³öÎÊÌ⣺

a¡¢Êý¾Ý´«Êä¹ý³ÌÖУ¬¹Øµôchunker1£¬µÈ´ýÊý¾Ý´«ÊäÍê±Ïºó£¬¿ª»úÆô¶¯chunker1.
chunker1Æô¶¯ºó£¬»á×Ô¶¯´Óchunker2¸´ÖÆÊý¾Ý¿é¡£Õû¸ö¹ý³ÌÖÐÎļþ·ÃÎʲ»ÊÜÓ°Ïì¡£

b¡¢Êý¾Ý´«Êä¹ý³ÌÖУ¬¹Øµôchunker1£¬²»µÈ´ýÊý¾Ý´«ÊäÍê±Ï£¬¿ª»úÆô¶¯chunker1.
chunker1Æô¶¯ºó£¬client¶Ë»áÏòchunker1´«ÊäÊý¾Ý£¬Í¬Ê±chunker1Ò²´Óchunker2¸´ÖÆÈ±Ê§µÄ¿é¡£

Èç¹ûÓÐÈý̨chunker£¬ÉèÖÃgoal=2£¬ÔòËæ»úÌôÑ¡2¸öchunker´æ´¢¡£

Èç¹ûÓÐÒ»¸öchunker²»ÄÜÌṩ·þÎñ£¬ÔòÊ£ÓàµÄ2¸öchunkerÉϿ϶¨Óв¿·Öchunks±£´æµÄÊÇÒ»·Ý¡£ÔòÔÚ²ÎÊý(REPLICATIONS_DELAY_DISCONNECT = 3600)ºó£¬Ö»ÓÐÒ»·ÝµÄchunks»á×Ô¶¯¸´ÖÆÒ»·Ý£¬¼´±£´æÁ½·Ý¡£

±£´æÁ½·Ýºó£¬Èç¹û´Ëʱ»µµôµÄchunkerÄܹ»Ìṩ·þÎñºó£¬´Ëʱ¿Ï¶¨Óв¿·Öchunks´æ´¢ÁËÈý·Ý£¬mfs»á×Ô¶¯É¾³ýÒ»·Ý¡£

6¡¢chunksÐÞ¸´ £ºmfsfilerepair
mfsfilerepair deals with broken files (those which cause I/O errors on read operations) to make them partially readable. In case of missing chunk it fills missing parts of file with zeros; in case of chunk version mismatch it sets chunk version known to mfsmaster to highest one found on chunkservers. Note: because in the second case content mismatch can occur in chunks with the same version, it¡¯s advised to make a copy (not a snapshot!) and delete original file after "repairing".

MfsfilerepairÖ÷ÒªÊÇ´¦Àí»µÎļþµÄ(Èçд²Ù×÷ÒýÆðµÄI/O´íÎó)ʹÎļþÄܹ»²¿·Ö¿É¶Á¡£×÷ÓÃÈçÏ£ºÔÚ¶ªÊ§¿éµÄÇé¿öÏÂʹÓÃ0¶Ô¶ªÊ§Îļþ½øÐÐÌî³ä£»ÔÚ¿éµÄ°æ±¾ºÅ²»Æ¥ÅäʱÉèÖÿìµÄ°æ±¾ºÅΪmasterÉÏÒÑÖªµÄÄÜÔÚchunkerserversÕÒµ½µÄ×î¸ß°æ±¾ºÅ£»×¢Ò⣺ÒòΪÔÚµÚ¶þÖÖÇé¿öµÄÄÚÈݲ»Æ¥Å䣬¿ÉÄÜ·¢ÉúÔÚ¿é¾ßÓÐÏàͬµÄ°æ±¾£¬½¨Òé½øÐÐÎļþµÄ¿½±´(¶ø²»ÊǽøÐв»¿ìÕÕ£¡)£¬²¢É¾³ýԭʼÎļþÔÙ½øÐÐÎļþµÄÐÞ¸´¡£

Client¶Ë´óÎļþ´«Êä¹ý³ÌÖУ¬Ç¿ÖưÎÏÂmasterÖ÷»úµçÔ´£¬Ôì³Émaster·Ç·¨¹Ø±Õ£¬Ê¹ÓÃmfsmetarestore -aÐÞ¸´ºó£¬masterÈÕÖ¾±¨¸æÓлµ¿é£º
Jan 19 17:22:17 ngmaster mfsmaster[3250]: chunkserver has nonexistent chunk (000000000002139F_00000001), so create it for future deletion
Jan 19 17:22:18 ngmaster mfsmaster[3250]: (192.168.5.232:9422) chunk: 000000000002139F creation status: 20
Jan 19 17:25:18 ngmaster mfsmaster[3250]: chunk 000000000002139F has only invalid copies (1) - please repair it manually
Jan 19 17:25:18 ngmaster mfsmaster[3250]: chunk 000000000002139F_00000001 - invalid copy on (192.168.5.232 - ver:00000000)
Jan 19 17:26:43 ngmaster mfsmaster[3250]: currently unavailable chunk 000000000002139F (inode: 135845 ; index: 23)
Jan 19 17:26:43 ngmaster mfsmaster[3250]: * currently unavailable file 135845: blog.xxx.cn-access_log200904.tar.gz

Client¶ËʹÓÃmfsfilerepairÐÞ¸´
[root@localhost mfstest]# /usr/local/mfs/bin/mfsfilerepair blog.xxx.cn-access_log200904.tar.gz
blog.xxt.cn-access_log200904.tar.gz:
chunks not changed: 23
chunks erased: 1
chunks repaired: 0
²é¿´masterÈÕÖ¾£¬·¢ÏÖ£º
Jan 19 17:30:17 ngmaster mfsmaster[3250]: chunk hasn't been deleted since previous loop - retry
Jan 19 17:30:17 ngmaster mfsmaster[3250]: (192.168.5.232:9422) chunk: 000000000002139F deletion status: 13
Jan 19 17:35:16 ngmaster mfsmaster[3250]: chunk hasn't been deleted since previous loop - retry
Jan 19 17:35:16 ngmaster mfsmaster[3250]: (192.168.5.232:9422) chunk: 000000000002139F deletion status: 13
Client¶ËÖ´ÐÐÒÔϲÙ×÷ºó£¬master²»ÔÙ±¨¸æÏà¹ØÐÅÏ¢£º
mv blog.xxt.cn-access_log200904.tar.gz blog.xxt.cn-access_log200905.tar.gz

7¡¢chunkerµÄ¿Õ¼ä
ÿһ¸öchunkserverµÄ´ÅÅ̶¼ÒªÎªÔö³¤ÖеÄchunks±£ÁôЩ´ÅÅ̿ռ䣬´Ó¶ø´ïµ½´´½¨ÐµÄchunk¡£Ö»ÓдÅÅ̶¼³¬¹ý256M²¢ÇÒchunkservers±¨¸æ×ÔÓɿռ䳬¹ý1GB×ÜÁ¿²Å¿ÉÒÔ±»ÐµÄÊý¾Ý·ÃÎÊ¡£×îСµÄÅäÖÃ,Ó¦¸Ã´Ó¼¸¸öG ×ֽڵĴ洢¡£

When doing df -h on a filesystem the results are different from what I would expect taking into account actual sizes of written files.

ÔÚÎļþϵͳÉÏ×ödf ¨ChµÃµ½µÄ½á¹ûºÍÎÒÒѾ­Ð´½øÈ¥µÄÎļþ´óС²»Ò»Ö£¿

Every chunkserver sends its own disk usage increased by 256MB for each used partition/hdd, and a sum of these master sends to the client as total disk usage. If you have 3 chunkservers with 7 hdd each, your disk usage will be increased by 3*7*256MB (about 5GB). Of course it's not important in real life, when you have for example 150TB of hdd space.

ÿ¸öchunkerserverÿ´ÎÒÔ256MµÄ´ÅÅÌ¿Õ¼ä½øÐÐÉêÇ룬¶ø·¢¸ø¿Í»§¶ËµÄÊÇÕâ¸ö¿Õ¼ä¼ÓÆðÀ´µÄ×ܺ͡£ÀýÈ磺Èç¹ûÄãÓÐ3¸öchunkerserver7¸ö·ÖÇø´ÅÅÌ£¬Ã¿´ÎÄãµÄÓ²ÅÌʹÓûáÔö¼Ó3*7*256MB (´óÔ¼5GB)¡£µ±È»Èç¹ûÔÚÏÖʵÉú»îÖÐÄãµÄÓ²ÅÌ´óСΪ150TµÄ´óС£¬ÕâÊǶÔÄãÀ´ËµÊDz»ÖØÒªµÄ¡£

There is one other thing. If you use disks exclusively for MooseFS on chunkservers df will show correct disk usage, but if you have other data on your MooseFS disks df will count your own files too.

ÁíÍ⣬Èç¹ûÄãµÄchunkserversʹÓÃרÓõĴÅÅÌ£¬df½«ÏÔʾÕýÈ·µÄ´ÅÅÌʹÓÃÇé¿ö¡£µ«ÊÇÈç¹ûÄãÓÐÆäËûµÄÊý¾ÝÔÚÄãµÄMooseFS´ÅÅÌÉÏ£¬df½«»á¼ÆËãÄãËùÓеÄÎļþ¡£

If you want to see usage of your MooseFS files use 'mfsdirinfo' command.
Èç¹ûÄãÏë¿´ÄãµÄMooseFSÎļþµÄʹÓÃÇé¿ö£¬ÇëʹÓÃ'mfsdirinfo'ÃüÁî¡£

8¡¢¿ìÕÕsnapshot
¿ÉÒÔ¿ìÕÕÈκÎÒ»¸öÎļþ»òĿ¼£¬Óï·¨£ºmfsmakesnapshot src dst
µ«ÊÇsrcºÍdst±ØÐë¶¼ÊôÓÚmfsÌåϵ£¬¼´²»ÄÜmfsÌåϵÖеÄÎļþ¿ìÕÕµ½ÆäËûÎļþϵͳ¡£both elements must be on the same device¡£ÔªËرØÐëÊÇÏàͬµÄÉ豸ÉÏ¡£

Mfsappendchunks£º×·¼Óchunksµ½Ò»¸öÎļþ
append file chunks to another file. If destination file doesn't exist then it's created as empty file and then chunks are appended.

×·¼ÓÎļþ¿éµ½ÁíÒ»¸öÎļþ¡£Èç¹ûÄ¿±êÎļþ²»´æÔÚ£¬Ôò»á´´½¨Ò»¸ö¿ÕÎļþ£¬È»ºó¼ÌÐø½«¿é½øÐÐ×·¼Ó¡£

9¡¢»ØÊÕÕ¾ trash bin
ÉèÖÃÎļþ»òĿ¼µÄɾ³ýʱ¼ä¡£Ò»¸öɾ³ýµÄÎļþÄܹ»´æ·ÅÔÚ¡° À¬»øÏ䡱ÖеÄʱ¼ä³ÆÎª¸ôÀëʱ¼ä£¬ Õâ¸öʱ¼ä¿ÉÒÔÓÃmfsgettrashtime ÃüÁîÀ´²é¿´£¬ÓÃmfssettrashtime ÃüÁîÀ´ÉèÖᣵ¥Î»ÎªÃë¡£

µ¥¶À°²×°»ò¹ÒÔØMFSMETA Îļþϵͳ£¬Ëü°üº¬Ä¿Â¼/ trash (°üº¬ÈÔÈ»¿ÉÒÔ±»»¹Ô­µÄɾ³ýÎļþµÄÐÅÏ¢)ºÍ/ trash/undel (ÓÃÓÚ»ñÈ¡Îļþ)¡£

°Ñɾ³ýµÄÎļþ£¬ÒƵ½/ trash/undelÏ£¬¾Í¿ÉÒÔ»Ö¸´´ËÎļþ¡£ÔÚMFSMETA µÄĿ¼À³ýÁËtrash ºÍtrash/undel Á½¸öĿ¼£¬»¹ÓеÚÈý¸öĿ¼reserved£¬¸ÃĿ¼ÄÚÓÐÒѾ­É¾³ýµÄÎļþ£¬µ«È´±»ÆäËûÓû§Ò»Ö±´ò¿ª×Å¡£ÔÚÓû§¹Ø±ÕÁËÕâЩ±»´ò¿ªµÄÎļþºó£¬reserved Ŀ¼ÖеÄÎļþ½«±»É¾³ý£¬ÎļþµÄÊý¾ÝÒ²½«±»Á¢¼´É¾³ý¡£´ËĿ¼²»ÄܽøÐвÙ×÷¡£

10¡¢ÎļþÃèÊö·û
1.5.12°æ±¾£¬½øÐдóÁ¿Ð¡Îļþдʱ£¬³öÏÖÁËÒ»¸öÑÏÖØ´íÎó£¬ÓпÉÄܺͲÙ×÷ϵͳÎļþÃèÊö·ûÓйء£²Ù×÷ϵͳĬÈÏÎļþÃèÊö·ûΪ1024.1.6.11°æ±¾Ä¬ÈÏΪ100000£¬½¨ÒéÉÏÏßʱ£¬masterºÍchunkerÐÞ¸ÄÎļþÃèÊö·û£¬¼´ÐÞ¸Ä/etc/security/limits.confÌí¼Ó'* - nofile 65535'¡£

×î³õÎÒÃdz¢ÊÔ¹ý²ÉÓÃHeartBeatÀ´ÔÚÁ½Ì¨Ö÷¿Ø¼äÇл»£¬ÒÀ¿¿¹Ù·½ÌṩµÄmfsÔªÈÕÖ¾»Ö¸´¹¤¾ßÀ´ÔÚÿ´ÎÇл»Ê±»Ö¸´ÈÕÖ¾£¬µ«Êµ¼Ê²âÊÔÖз¢ÏÖÕâ·½°¸ÒÀ¾É²»¿É¿¿£¬Ò»µ©·¢Éú¸¡¶¯IPÇл»£¬ÈÕÖ¾ÈÔÈ»¿ÉÄÜÔÚ»Ö¸´ÖжªÊ§ÉÙÁ¿ÐÅÏ¢£¬µ¼ÖÂȺ¼¯ÖÐÎļþË𻵡£Îª´Ë£¬ÔÚHAµÄ»ù´¡ÉÏÓÖ¹¹ÖþÁËDRBDÀ´È·±£¹Ø¼üÊý¾ÝµÄ²»¿ÉÖжÏÐÔ¡£

11¡¢¶ÔmasterµÄµ¥µã¹ÊÕϵĽâ¾ö°ì·¨

Æä¹Ù·½ËùÌṩµÄ½â¾ö·½°¸£º
´Ó±¸·ÝÖлָ´Ò»¸ömaster¡£
1)¡¢°²×°Ò»¸ömfsmaster
2)¡¢ÀûÓÃͬÑùµÄÅäÖÃÀ´ÅäÖÃÕą̂mfsmaster(ÀûÓñ¸·ÝÀ´ÕÒ»Ømfsmaster.cfg)£¬¿É¼ûÅäÖÃÎļþÒ²ÊÇÐèÒª±¸·ÝµÄ¡£
3)¡¢ÕÒ»Ømetadata.mfs.backÎļþ£¬¿ÉÒÔ´Ó±¸·ÝÖÐÕÒ£¬Ò²¿ÉÒÔÖÐmetaloggerÖ÷»úÖÐÕÒ(Èç¹ûÆô¶¯ÁËmetalogger·þÎñ)£¬È»ºó°Ñmetadata.mfs.back·ÅÈëdataĿ¼£¬Ò»°ãΪ${prefix}/var/mfs¡£
4)¡¢´ÓÔÚmasterå´µô֮ǰµÄÈκÎÔËÐÐmetalogger·þÎñµÄ·þÎñÆ÷ÉÏ¿½±´×îºómetadataÎļþ£¬È»ºó·ÅÈëmfsmasterµÄÊý¾ÝĿ¼¡£
5)¡¢ÀûÓÃmfsmetarestoreÃüÁîºÏ²¢ÔªÊý¾Ýchangelogs£¬¿ÉÒÔÓÃ×Ô¶¯»Ö¸´Ä£Ê½mfsmetarestore ¨Ca£¬Ò²¿ÉÒÔÀûÓ÷Ç×Ô¶¯»¯»Ö¸´Ä£Ê½£¬Óï·¨ÈçÏ£º
mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog_ml.*.mfs
ÆÀ¼Û£ºÕâÖÖÔÚÓÐЩÇé¿öÏÂÎÞЧ£¬µ±ÔÚÄã¸ÕдÍêÎļþʱ£¬ÔڶϵômasterµÄÍø¿¨ºó£¬ÔÚmetalogger»úÆ÷ÉÏ×ö»Ö¸´ºó£¬¿Í»§¶ËÉϲ»ÄܶÔijЩÎļþÕý³£·ÃÎÊ£¬»á³¤Ê±¼äµØ¿¨ÔÚÄÇÀͨ¹ýmfsfileinfoÔڲ鿴ÎļþÊôÐÔʱ£¬»á·¢ÏÖһЩµÄ¿éÎÞЧÌáʾ£¬ÔÚÎļþÎļþÀïÒ²ÄÜ¿´µ½Ò»Ð©ÌáʾÐÅÏ¢¡£Êý¾Ý»á¶ªÊ§£¬ÍêÕûÐԵò»µ½±£ÕÏ¡£

MFS+HA+DRBDµÄЧ¹û
DRBDÏàÐźܶàÈ˶¼ÓÐÁ˽⣬ËüÊÇÒ»¸öÀàËÆÓÚÍøÂçRAID1µÄʵÏÖ£¬ÔÚË«»úÖ®¼ä½øÐÐʵʱµÄ¿éÉ豸Êý¾Ýͬ²½£¬Í¨³£»áºÍHA½áºÏʹÓá£ÎÒÃÇÔÚÕâ¸öÓ¦Óû·¾³ÖУ¬½«Ö÷¿ØµÄÈÕ־Ŀ¼µ¥¶À´æ´¢ÔÚÒ»¸ö¿éÉ豸ÉÏ£¨ÈÕÖ¾µÄÔö³¤ÊǿɿØÇÒÄÜÉ趨»Ø¹öÖÜÆÚµÄ£¬ËùÒÔÈÕÖ¾ÈÝÁ¿ÎÊÌâ²»´æÔÚ£©£¬²¢²¿ÊðÁ½¸öÏàͬµÄÖ÷¿Ø»·¾³£¬½«Ò»¸öͬÑùÈÝÁ¿µÄ¿éÉ豸ºÍ¶ÔÓ¦µÄÖ÷¿Ø»úÈÕÖ¾´æ´¢É豸ÉèΪHA+DRBDͬ²½£¬ÔÚÕâ¸ö»·½ÚÖУ¬·Ç³£¹Ø¼üµÄÒ»µãÊÇÔÚHA×ÊÔ´¶¨ÒåÅäÖÃÖУ¬±ØÐëÏÈÇÐDRBD£¬ÔÙÇл»mfs·þÎñ£¬·ñÔòmfs¿Í»§¶Ë²»Äܼ°Ê±Ì½²âµ½ÐéÄ⸡¶¯IPµÄµÄ±ä»¯£¬µ¼Ö¹ÒÔØÊ§Ð§¡£

haresourceʾÀý£º
master1 drbddisk::r0 Filesystem::/dev/drbd0::/mnt/drbd::ext3 mfs Ipaddr::192.168.2.103/24/eth0

ÔÚ¶Áд²âÊÔÖУ¬ÎÒÃdz¢ÊÔÁËÍùmfs¹ÒÔØµãÖв»¼ä¶ÏдÈëÊ®Íò¸öÎļþ£¬²¢Í³¼ÆÁËmd5ÖµÁÐ±í¡£È»ºóÔÚÆäËümfs¹ÒÔØÄ¿Â¼ÖУ¬ÔÙÒ»´ÎÖØ¸´ÉÏÊö²½Ö裬ÆÚ¼ä¶à´ÎÇл»Ö÷±¸£¬¿É¹Û²ìµ½Ã¿´ÎÇл»Ê±ËäÈ»I/O»á½øÈëµÈ´ýÑ­»·£¬µ«Ò»µ©ÁíÒ»¶ËµÄÖ÷¿ØµãÕý³£Æô¶¯¡¢¸¡¶¯IP»Ö¸´£¬Ð´Èë»áÂíÉϼÌÐø£¬ÕâÒ»²½½áÊøºó£¬ÎÒÃÇÔÙ´Îͳ¼ÆÐÂдÈëµÄÊ®Íò¸öÎļþµÄmd5ÁÐ±í£¬Í¾ÖÐͬÑù¶à´ÎÈ˹¤Çл»Ö÷±¸£¬×îÖÕÈÔÈ»²»Ó°ÏìÊý¾ÝµÄ¿É¿¿ÐÔ£¬µÃµ½µÄmd5ÖµÁбíºÍ֮ǰµÄÍêȫһÖ¡£ÀàËÆÄ¿µÄµÄ²âÊÔ£¬ÎÒÃÇÒ²·´¸´³¢ÊÔÁ˵¥¸ö´óÎļþµÄ¶ÁдУÑ飬½á¹ûÁîÈ˱ȽÏÂúÒâ¡£

ÒªÊdzöÏÖÍøÂçÖжϼ°master»úÆ÷ͻȻ¶Ïµç£¬mfsmaster·ÇÕý³£¹Ø±Õ£¬Ã»Óн«ÆäÔËÐйý³ÌËùÕÆÎÕµÄÎļþÐÅÏ¢»ØÐ´µ½´ÅÅ̵ϰ£¬ÔÚ±¸»úÈ¡µÃÏà¹Øip¼°×ÊÔ´ºó£¬Ò²²»ÄÜÕý³£Æô¶¯£¬»á³öÏÖÏñµÚÒ»´Î¿ªÆômfsmasterʱÄÇÑùµÄÌáʾ£º¡°½«'metadata.mfs.empty'¸´ÖƳÉ'metadata.mfs'¡±µÈ¡£

¡®drbd+heartbeat(keepalived)¡¯ÕâÖÖ·½·¨ÄÜÌṩ¶ÔÔªÊý¾ÝµÄÍêÕûÐÔ¸üÓб£ÕÏ£¬µ±masterÔÚ³öÏÖ¶ÏÍøºó£¬ÔÚbackupÉÏÎÞ·¨Æô¶¯mfsmaster½ø³Ì£¬³ý·ÇÔÚÔ­master»úÆ÷ÉÏÕý³£¹Ø±ÕÁËmfsmaster½ø³Ì¡£ÒòΪÔÚmfsmaster¿ªÊ¼ÔËÐÐʱ£¬»á½«ÆädataĿ¼ÏµÄmetadata.mfsÎļþ¸´ÖÆÎªmetadata.mfs.back£¬½«ÏÖÓеÄmetadata.mfsÎļþ¶ÁÈëµ½ÄÚ´æÖУ¬²¢É¾³ýÁËmetadata.mfs£¬¶øÄÚ´æÖеĴËÎļþÔò·¢ÉúÁ˸ı䣬µ«Ëü²»»áÔÚÎļþϵͳÀï'ÓÐËù±íÏÖ'¡£ÕâÑùÔÚmfsmasterÖ÷»ú³öÏÖÒ쳣ʱ£¬»òmfsmasterûÓÐÕý³£¹Ø±Õʱ£¬¸ÃÎļþ¶¼²»»áдµ½´ÅÅÌÉÏ(»ò¶¨ÆÚµØ½«ÐÂÔöÄÚÈݸüе½metadata.mfs.backÎļþÖУ¿)£¡¶øÕâ¶Îʱ¼äËù²úÉúµÄÎļþÐÅÏ¢½«»á¶ªÊ§¡£

ÔÚʹÓÃdrbd·½°¸Ê±£¬ÔÚ½øÐÐÇл»Ê±Òª±£Ö¤master»úÉϵÄmfsmaster½ø³ÌÒªÄÜÕý³£¹Ø±ÕÇÒ²»ÄܶÏÍø£¬µ±È»£¬Äã²»ÄÜʹÓÃÏñdell r610ÕâÑùµÄ»úÆ÷ÁË(´òÁËÍø¿¨²¹¶¡ºó»¹»áÓжÏÍøÏÖÏó£¡410Ò²ÓиÃÏÖÏó)¡£

×ÛÆä¹ÛÖ®£¬MFSÊÇÒ»¸ö·Ç³£¾ßÓÐDZÁ¦µÄ·Ö²¼Ê½´æ´¢·½°¸£¬½áºÏHA+DRBDÀ´ÃÖ²¹ÁËËü±¾ÉíµÄÖ÷¿Øµ¥µãºó£¬ÔÚÆóÒµÓ¦ÓÃÖеļÛÖµ¸üÉÏÒ»²ã¡£ËäÈ»Ëü»¹Ã»Óо­ÀúÕæÕýµÄ³¤ÆÚÓ¦ÓõĿ¼Ñ飬µ«Ä¿Ç°ÒѾ­´ïµ½µÄ³Ì¶È£¬ÒÑÓÐ×ã¹»µÄÀíÓÉÀ´Ö§³ÖÎÒÃǶÔËü×÷½øÒ»²½µÄÍÆ¹ãºÍ¹Ø×¢£¬¼ÙÒÔʱÈÕ£¬ÏàÐÅ»¹»áÓиü¶àµÄ¾­ÑéºÍ¼ÛÖµÄÜ´ÓÖпª¾ò³öÀ´¡£

ת×Ô£ºhttp://www.unixaid.info/index.php/unixtecspt/30-backup/875-moosefs

=========

Ïà¹Ø£º

MooseFS·Ö²¼Ê½Îļþϵͳ°²×°Ïòµ¼

http://www.moosefs.org/reference-guide.html

ÖÐÎİæÏÂÔØ:oosefs-step-by-step-tutorial-cn-v.1.1.rar


ϵͳ°²×°

Ò»¸ö°¸Àý£º
 
 
  • ±êÇ©£ºMooseFS MFS 
  • ·¢±íÆÀÂÛ£º
    ÔØÈëÖС£¡£¡£

     
     
     

    ÃÎÏè¶ùÍøÕ¾ ÃηÉÏèµÄµØ·½ http://www.dreamflier.net
    ÖлªÈËÃñ¹²ºÍ¹úÐÅÏ¢²úÒµ²¿TCP/IPϵͳ ±¸°¸ÐòºÅ£ºÁÉICP±¸09000550ºÅ

    Powered by Oblog.