ºìÁªLinuxÃÅ»§
Linux°ïÖú

Ïê½âNTPD¹¤×÷Ô­Àí

·¢²¼Ê±¼ä:2017-09-12 08:09:54À´Ô´:ºìÁª×÷Õß:Ronny
ntpd ÊÇÒ»¸ö²Ù×÷ϵͳDaemon½ø³Ì£¬ÓÃÓÚУÕý±¾µØϵͳÓëInternet±ê׼ʱÖÓÔ´Ö®¼äµÄʱ¼ä¡£ntpd ÍêÕûµÄʵÏÖÁË NTP ЭÒé°æ±¾v4£¬µ«ÊÇͬʱ¼æÈÝ°æ±¾v3£¨RFC-1305£©¡¢°æ±¾v1Óëv2£¨·Ö±ðÓÉRFC-1059, RFC-1119¶¨Ò壩¡£ntpd ¾ø´ó¶àÊýÇé¿öÏÂʹÓÃ64λ¸¡µãÊý¼ÆË㣬½öÔÚÐèÒª¼«¸ßʱ¼ä¾«¶ÈµÄÇé¿öÏÂʹÓñ¿×¾µÄ64λ¹Ì¶¨³¤¶ÈÊý¼ÆË㣬Õâ¸ö¼«¸ßµÄ¾«¶ÈÊÇ 232*1/1,000,000,000,000 Ã룻Ҫ´ïµ½Õâ¸ö¾«¶È¶ÔCPUÓëÍøÂç´ø¿íµÄÒªÇóÒѳ¬¹ýGHZÓëGMbpsµÄ¼¶±ð£¬µ±Ç°µÄ´ó¶àÊý¹¤×÷Õ¾¶¼ÎÞ·¨Âú×ã¡£
Ïê½âNTPD¹¤×÷Ô­ÀíÏê½âNTPD¹¤×÷Ô­Àí

NTP ¹¤×÷Ô­Àí
ntpd ½ø³Ìͨ¹ý¶¨ÆÚÓëNTPʱÖÓÔ´·þÎñÆ÷·¢ËÍÏûÏ¢À´»ñȡʱ¼äÐÅÏ¢¡£ÔÚ½ø³Ì³õʼÆô¶¯Ê±ºò£¬²»ÂÛÊǵÚÒ»´Îboot»¹ÊÇËæºóÆô¶¯£¬nptd »á¸ø·þÎñÆ÷·¢ËÍÏûÏ¢ÒÔ»ñȡʱ¼ä±¾ÉèÖõ½±¾µØϵͳ¡£ÎªÁË·ÀÖ¹ÍøÂç·ç±©£¬½ø³ÌÆô¶¯ºó»áÔÚ¶¨ÒåºÃµÄ¼ä¸ô64ÃëÖ®ÉÏÔÙ¼ÓÒ»¸öËæ»úÑÓ³ÙÖµ£¬Õâ¸öËæ»úÖµµÄ·¶Î§ÊÇ0~16Ã룻Òò´Ë½ø³ÌÆô¶¯ºóÐèÒªÊý·ÖÖӲŻῪʼͬ²½Ê±¼ä¡£

Èç½ñµÄ¼ÆËã»ú¶¼´øÓÐÓ²¼þʱÖÓоƬ(time-of-year (TOY) chip)£¬ÓÃÓÚÔÚ¼ÆËã»úµôµç¹ý³ÌÖÐÈÔÈ»±£³ÖÕýȷʱ¼ä£¬µ±¼ÆËã»úÉϵ磬²Ù×÷ϵͳ´ÓʱÖÓоƬÖлñȡʱ¼ä¡£µ±²Ù×÷ϵͳÆô¶¯Íê³É²¢Á¬½Óµ½Ê±ÖÓÔ´Ö®ºó£¬²Ù×÷ϵͳ»áÒÀ¾ÝʱÖÓÔ´¶¨Ê±µ÷ÕûоƬʱ¼ä¡£ÔÚ·þÎñÆ÷ûÓÐÓ²¼þʱÖÓоƬ»òÓ²¼þʱÖÓоƬ¹ÊÕÏ£¨CMOSµç³Øûµç£©»òÆäËûÔ­Òòµ¼Ö²Ù×÷ϵͳ±¾µØʱ¼äÓëʱÖÓԴʱ¼ä²î±ð³¬¹ý1000Ã룬nptdÈÏΪ´Ëʱ·¢ÉúÁËÑÏÖØÎÊÌ⣬Ψһ¿É¿¿µÄ´¦Àí·½·¨ÊÇÈËΪ½éÈë¡£ÕâÖÖÇé¿öÏÂnptd Daemon½ø³Ì»áÍ˳ö²¢ÔÚ²Ù×÷ϵͳµÄsyslogÖмǼһÌõÈÕÖ¾¡£nptd µÄÆô¶¯Ñ¡Ïî -g Ñ¡Ïî¿ÉÒÔºöÂÔ1000ÃëµÄ¼ì²é²¢Ç¿Öƽ«Ê±ÖÓԴʱ¼äÉèÖÃΪӲ¼þʱ¼ä£¬²»¹ý¿¼Âǵ½Ó²¼þʱÖÓоƬ¹ÊÕϵij¡¾°£¨CMOSµç³Øûµç¡¢»òʱÖÓ¼ÆʱÆ÷¹ÊÕÏ£©£¬Ò»µ©ÔٴγöÏÖоƬʱ¼äÓëʱÖÓÔ´³¬¹ý1000Ã룬nptd»¹ÊÇ»áÍ˳ö¡£

ͨ³£Çé¿öÏ£¬ntpd ÒÔºÜСµÄ²½³¤µ÷Õûʱ¼äʹµÃʱ¼ä¾¡Á¿ÊÇÁ¬ÐøµÄ¡¢²»³öÏÖÌøÔ¾¡£ÔÚÍøÂ缫¶ÈÓµÈûµÄÌõ¼þÏ£¬nptd ÓëʱÖÓÔ´Ö®¼ä·¢ËÍÒ»¸öÏûÏ¢°üÀ´»ØµÄʱÑÓÓпÉÄÜ´ïµ½3Ã룬Òò´Ë»áµ¼ÖÂͬ²½¾àÀ루°ë¸öÀ´»ØʱÑÓ£¬1.5Ã룩±äµÄºÜ´ó¡£ntpd ͬ²½Ëã·¨»á¶ªÆúʱ²î´óÓÚ128msµÄ°ü£¬³ý·ÇÔÚ900ÃëÄÚûÓÐʱ²îСÓÚ128msµÄ°ü£¬»¹ÓоÍÊÇÊ×´ÎÆô¶¯Ê±ºò²»»á¼ì²éÕâ¸öʱ²îÖ±½Óͬ²½¡£ÕâÖÖÉè¼ÆÊÇΪÁ˼õÉÙÎó±¨Ê±ÖÓͬ²½Òì³£µÄ¸æ¾¯¡£

ÉÏÊöÐÐΪµÄ½á¹ûÊÇÿ´Î³É¹¦ÉèÖñ¾µØʱ¼ä£¬Ò»°ã²»»á³¬¹ý128ms£¬¼´Ê¹ÔÚÍøÂçʱÑӺܸߵÄÇé¿öÏ¡£ÓÐʱºò£¬ÌرðÊÇÔÚntpdÊ×´ÎÆô¶¯µÄʱºò£¬Ê±²î¿ÉÄܳ¬¹ý128ms£¬ÕâÖÖº±¼û³¡¾°Ò»°ãÊDZ¾µØʱ¼ä±ÈʱÖÓÔ´µÄʱ¼ä¿ì£¨Î´À´£©³¬¹ý128Ã룬ÕâÖÖÇé¿ö±¾µØʱ¼ä½«»á±»Íù¹ýÈ¥·½Ïòµ÷»Ø¡£ÕâÖÖÇé¿öÏÂijЩӦÓóÌÐò»áÓÐÎÊÌâ¡£Èç¹ûÆô¶¯nptdʱºò¼ÓÉÏÁË -x Ñ¡ÏÄÇô nptd ²»»áÒÔ²½³¤·½Ê½(stepped)ͬ²½£¬Ö»»áÒÔ΢µ÷УÕý·½Ê½(slew correction)ͬ²½¡£

ʹÓà -x Ñ¡Ïî֮ǰÐèÒª×Ðϸ¿¼Á¿Ó°Ïì¡£ ntpd ΢µ÷У׼µÄ×î´óƵÂÊÊÇ 500 ¸ö PPM (parts-per-million)ÿÃ룬Ҳ¾ÍÊÇÿÃëУ׼ 5/10,000 Ãë¡£Òò´Ë»áµ¼Ö±¾µØʱ¼äÓëʱÖÓÔ´Ö®¼äÐèÒªºÜ³¤Ê±¼ä²ÅÄܽ«Ê±²îͬ²½µ½Ò»¸ö¿É½ÓÊܵķ¶Î§£¬´ó¸ÅÊÇ2000Ãëͬ²½Ò»Ã룬¶ÔÓÚÒÀÀµÍøÂçʱÖÓÔ´µÄÓ¦ÓÃÀ´ËµÕâÖÖÇé¿ö²»¿É½ÓÊÜ¡£

Ƶ¶È¹æÔò
nptd Æô¶¯Ê±µÄÐÐΪÒÀÀµÆµ¶ÈÎļþÊÇ·ñ´æÔÚ£¬Í¨³£ÊÇ npt.drift ¡£Õâ¸öÎļþ°üº¬ÁË×î½ü¹ÀËã³öµÄʱÖÓƵ¶ÈÎó²îÖµ¡£Èç¹ûÎļþ²»´æÔÚ£¬´Ëʱ ntpd ½øÈëÒ»ÖÖÌØÊâģʽ»á¿ìËÙµ÷Õûʱ¼äÓëƵ¶ÈÎó²îÖµ£¬Õâ¸ö¿ìËÙ´ó¸ÅºÃÊÂ15·ÖÖÓ£¬ËæºóÔÚʱ¼äÓëƵ¶ÈÎó²îÖµÕý³£ºónptd½øÈëÕý³£Ä£Ê½£¬Ê±¼äÓëƵ¶È³ÖÐøÓëʱÖÓԴͬ²½¡£²¢ÔÚÒ»¸öСʱ֮ºó£¬½«µ±Ç°µÄƵ¶ÈÎó²îֵдÈë npt.drift Îļþ¡£Èç¹ûÎļþ´æÔÚ£¬nptd´Ó´ËÎļþ¶ÁȡƵ¶ÈÎó²îÖµÖ±½Ó½øÈëÕý³£Ä£Ê½£¬²¢Ã»¸ôÒ»¸öСʱ½«¼ÆËãºÃµÄƵ¶ÈÎó²îֵдÈëÎļþ¡£

ÔËÐÐģʽ
nptd ¿ÉÒÔÔËÐÐÔÚ¶àÖÖģʽÏ£¬°üÀ¨¶Ô³ÆµÄ Ö÷¶¯¡¢±»¶¯£¨active/passive)£¬¿Í»§¶Ë¡¢·þÎñ¶Ë(client/server)£¬¹ã²¥¡¢¶à²¥(broadcast/multicase/manycase)£¬Ïêϸ²Î¿¼Association Management¡£Í¨³£ÔËÐÐģʽÊÇÒÔDaemon·½Ê½³ÖÐø¸ú×Ùͬ²½Ê±ÖÓԴʱ¼ä£»µ±È»Ò²¿ÉÒÔÖ»ÔËÐÐÒ»´Î£¬´ÓÍⲿʱÖÓԴͬ²½Ê±¼ä£¨´ÓÉϴμͼµÄƵ¶ÈÎó²îÎļþÖжÁȡƵ¶ÈÎó²îÖµ£©¡£¹ã²¥Óë¶à²¥Ä£Ê½Ï¿ͻ§¶ËÄܹ»×Ô¶¯·¢ÏÖʱÖÓÔ´·þÎñÆ÷£¬²¢¼ÆËã¸÷¸ö·þÎñÆ÷µÄʱÑÓÈ»ºó×Ô¶¯Íê³ÉÅäÖã¬ÕâÖÖģʽʹµÃ¹¤×÷Õ¾¼¯Èº×Ô¶¯ÅäÖñäΪÏÖʵ¡£

ĬÈÏÇé¿öÏÂnptdÒÔDaemon·½Ê½³ÖÐø¸ú×Ù¶à¸öʱÖÓÔ´£¬Í¬²½µÄ¼ä¸ôÓÉÒ»¸ö¸´ÔÓµÄ״̬»ú¾ö¶¨¡£×´Ì¬»úʹÓÃÆô·¢Ê½Ëã·¨£¬¸ù¾ÝÏûÏ¢°üÀ´»ØʱÑÓ¡¢Æµ¶ÈÎó²îÀ´¼ÆËã×îÓŵÄͬ²½¼ä¸ô¡£Í¨³£Çé¿öÏ£¬×´Ì¬»ú³õʼÒÔ64ÃëΪ¼ä¸ô²¢×îÖÕ´ïµ½1024Ã룬ÉÙÁ¿µÄËæ»úÊýÖµ»á±»Ôö¼Óµ½¼ä¸ôÉÏΪÁ˾ùºâ·þÎñÆ÷ѹÁ¦¡£¶îÍâµÄ£¬Èç¹ûÒ»¸ö·þÎñÆ÷²»¿É´ïµÄÇé¿öÏ£¬ÎªÁ˼õÉÙÍøÂçÏûÏ¢ÅŶÓ×èÈû£¬¼ä¸ô»áÖð²½Ôö¼Óµ½1024Ãë¡£

ÔÚijЩÇé¿öÏÂnptd²»ÄÜÕý³£³ÖÐøÔËÐУ¬Í¨³£µÄ¹æ±ÜÊÖ¶ÎʱʹÓÃcron¶¨Ê±ÈÎÎñÖ´ÐÐntpdateÃüÁî¡£µ«ÊÇntpdate²¢Ã»ÓÐÏñnptdÒ»ÑùÓп¼ÂǸ÷ÖÖÐźŴ¦Àí¡¢´íÎó¼ì²é¡¢Á¬Ðøͬ²½Ëã·¨¡£nptd -q ¿ÉÒÔ´ïµ½Óë ntpdateͬÑùµÄЧ¹û£¬-q ²ÎÊýʹµÃ nptͬ²½Ò»´Îºó¾ÍÍ˳ö£»Í¬²½µÄ¹ý³ÌÓëDaemonģʽµÄnptdÊÇÏàͬµÄ¡£

Èç¹û²Ù×÷ϵͳÄÚºËÖ§³Öµ÷ÕûʱÖÓƵ¶È£¨Solaris£¬Linux£¬FreeBSD¶¼ÒѾ­Ö§³Ö£©£¬ÄÇôʱÖÓͬ²½»¹ÓÐÒ»ÖÖ²»ÒÔDaemon·½Ê½ÔËÐеĿÉÑ¡Ó÷¨¡£Ê×ÏÈ£¬nptdÒÔDaemon·½Ê½ÔËÐУ¬ÅäÖúÃʱÖÓÔ´£¬´óÔ¼Ò»¸ö»ò¼¸¸öСʱºó£¬»ñÈ¡µ½Æµ¶ÈÎó²înpt.drift Îļþ£»È»ºóÍ˳önptd½ø³Ì£¬²¢ÒÔÒ»´ÎÐÔģʽÔËÐУ¨nptd -q£©£¬´Ëʱÿ´ÎnptdÔËÐж¼»ùÓÚµ±Ç°»ñÈ¡µ½µÄƵ¶ÈÎó²îÓëʱÖÓԴͬ²½Ê±¼ä¡£

ͬ²½¼ä¸ô¿ØÖÆ
µ±Ç°°æ±¾µÄNTP°üº¬ÁËÒ»¸ö¸´ÔÓµÄ״̬»ú£¬ÓÃÓÚ¼õÉÙͬ²½Ê±µÄÍøÂ縺ÔØ£»Í¬Ê±Ò²°üº¬ºÜ¶àÖÖÌáÉý¾«¶ÈµÄ·½·¨¡£Ê¹ÓÃÕßÔÚÐÞ¸Äͬ²½¼ä¸ô£¨64Ãë~1024Ã룩µÄʱºòÐèÒª×Ðϸ¿¼ÂÇÓ°Ï졣ĬÈϵÄ×îСͬ²½¼ä¸ô¿ÉÒÔʹÓà tinker minpool ÃüÁîÐÞ¸ÄΪ²»Ð¡ÓÚ16Ã룬Õâ¸öÖµ»á±»ÓÃ×÷ËùÓÐÏà¹ØµÄʹÓõ½Í¬²½¼ä¸ôµÄµØ·½£¬³ý·ÇÏÔʾʹÓÃminpoll Ñ¡Ï¸Ç¡£ÐèҪעÒâµÄÊDz»ÉÙÉ豸Çý¶¯ÔÚͬ²½¼ä¸ôСÓÚ64Ãëʱºò²»ÄÜÕý³£¹¤×÷£»Í¬Ê±¹ã²¥Óë¶à²¥Ä£Ê½Ò²ÊÇʹÓõÄĬÈÏÖµ£¬³ý·ÇÏÔʾ¸²¸Ç¡£

NPTDÓï·¨
ntpd [ -aAbdgLmNPqx ] [ -c conffile ] [ -f driftfile ] [ -g ] [ -k keyfile ] [ -l logfile ] [ -N high ] [ -p pidfile ] [ -r broadcastdelay ] [ -s statsdir ] [ -t key ] [ -v variable ] [ -V variable ] [ -x ]
ÃüÁîÐвÎÊý
-a
"md_block md_has_block_below md_has_block_below_ul">Æô¶¯ÈÏÖ¤£¨Ä¬ÈÏÆôÓã©- -A½ûÓÃÈÏÖ¤

-b
ʹÓÃNTP¹ã²¥ÏûϢͬ²½- -c conffileÖ¸¶¨ÅäÖÃÎļþÃû³Æ

-d
ÆôÓõ÷ÊÔģʽ- -D levelÖ¸¶¨µ÷ÊÔ¼¶±ð

-f driftfile
Ö¸¶¨Æµ¶ÈÎó²îÎļþµÄ·¾¶- -gÕý³£Çé¿öÏ£¬ntpd ÓëʱÖÓÔ´µÄʱ¼ä²î³¬¹ý1000ÃëµÄãÐÖµ»áÍ˳ö£¬Èç¹ûãÐÖµÉèÖÃΪ0£¬Ôòntpd ²»»á¼ì²é£¬ÈκÎʱ²î¶¼»áÇ¿ÖÆͬ²½¡£-g Ñ¡Ïî¾ÍÊÇÓÃÓÚÉèÖÃãÐֵΪ0£»µ«ÊÇÖ»ÊÇÒ»´ÎÉúЧ£¬Èç¹ûntpd ÔËÐйý³ÌÖз¢ÏÖʱ²î³¬¹ý1000Ã룬»¹ÊÇ»áÍ˳ö¡£

-k keyfile
Ö¸¶¨NTPÈÏÖ¤keyÎļþµÄ·¾¶- -l logfileÖ¸¶¨ÈÕÖ¾Îļþ·¾¶£¬Ä¬ÈÏÊDzÙ×÷ϵͳÈÕÖ¾

-L
listenÔÚÐéÄâIPÉÏ- -mʹÓÃNTP¶à²¥ÏûÏ¢ÔڶಥµØÖ·224.0.1.1ÉÏͬ²½£¨ÐèÒªÄÚºËÖ§³Ö£©

-n
²»fork½ø³Ì- -N priorityÖ¸¶¨ÓÅÏȼ¶ÔËÐÐntpd½ø³Ì

-p
Ö¸¶¨ntpdµÄpidÎļþ- -P¸²¸Ç²Ù×÷ϵͳµÄÓÅÏȼ¶ÏÞÖÆ

-q
½öͬ²½Ò»´ÎºóÍ˳ö- -r broadcastdelayÖ¸¶¨Ä¬ÈϵĹ㲥¡¢¶à²¥ÑÓ³Ùʱ¼ä

-s statsdir
Ö¸¶¨Í³¼Æ¹¤¾ßÉú³ÉµÄÎļþËùÔÚĿ¼- -t keyÔö¼Ókeyµ½ÐÅÈεÄkeyÁбí

-v, -V
Ôö¼Óϵͳ±äÁ¿- -xĬÈÏÇé¿öÏ£¬ntpdÔÚʱ²îСÓÚ128msʱºòʹÓÃ΢µ÷ģʽ£¬ÔÚ´óÓÚ128msʱºòʹÓò½³¤Ä£Ê½¡£-x Ñ¡ÏîÇ¿ÖÆnptd½öʹÓÃ΢µ÷ģʽͬ²½¡£Èç¹û²½³¤ãÐÖµ£¨128ms£©ÉèÖÃΪ0£¬ÔòÇ¿ÖÆʹÓò½³¤Ä£Ê½£¬-xÒ²²»ÉúЧ¡£²»ÊǺÜÍƼöʹÓôËÑ¡Ï»áµ¼ÖÂʱ¼äͬ²½±äµÄ·Ç³£»ºÂý£¬¶ÔÇ¿ÒÀÀµÍøÂçʱÖÓµÄÓ¦ÓÃÓÐÓ°Ï졣΢µ÷ģʽµÄͬ²½ËÙÂÊÊÇ0.5ms/s£¬ÐèÒª2000s²Åͬ²½1Ãë¡£
±¾ÎÄתÔØ×Ô£ºhttp://www.linuxprobe.com/ntpd-principle.html

Ãâ·ÑÌṩ×îÐÂLinux¼¼Êõ½Ì³ÌÊé¼®£¬Îª¿ªÔ´¼¼Êõ°®ºÃÕßŬÁ¦×öµÃ¸ü¶à¸üºÃ£¬¿ªÔ´Õ¾µã£ºhttp://www.linuxprobe.com/
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ