Á÷ÐеĿªÔ´·Ö²¼Ê½Îļþϵͳ±È½Ï
ÎÒÏÖÔÚÓк£Á¿µÄÊý¾ÝÎļþ(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


