Category Archives: Corporate

Leap Second กระทบการทำงานของ Server หรือไม่

เมื่อเร็วๆนี้ หลายคนคงเคยได้ยินข่าวเกี่ยวกับการปรับเทียบเวลา หรือเคยได้เห็นประกาศของกรมอุทกศาสตร์ กองทัพเรือ เรื่องการปรับเวลามาตรฐานประเทศไทย ผ่านหูผ่านตากันมาบ้างแล้ว

หลายท่านอาจเกิดความสงสัยว่า การปรับเปลี่ยนนี้ ปรับทำไม หรือบางท่านที่เป็น Admin ต้องมีหน้าที่ดูแล Server และอุปกรณ์ต่างๆ ซึ่งอาจจะรวมทั้งอุปกรณ์จัดเก็บ Log ตาม พรบ. คอมพิวเตอร์ฯ ด้วย อาจจะมีคำถามว่า การปรับเวลาเช่นนี้จะส่งผลกระทบต่ออุปกรณ์​ หรือข้อมูล Log ต่างๆ ซึ่งมีการระบุ Timestamp กำกับหรือไม่อย่างไร และจะต้องทำการปรับหรือตั้งเวลาระบบใหม่หรือไม่

ปรับเวลาทำไม

การปรับเวลาที่เกิดขึ้นในวันที่ 30 มิถุนายน 2558 นี้ เรียนกว่าการเพิ่ม “Leap Second”  ซึ่งไม่ได้เพิ่งเกิดขึ้นเป็นครั้งแรก ในอดีตที่ผ่านมา มีการปรับเวลามาตรฐานโลกด้วยวิธีการนี้หลายครั้งแล้ว โดยหน่วยงานหลักที่ดูแลการปรับเวลานี้ได้แก่ International Earth Rotation Service (IERS) โดยการปรับเวลาดังกล่าว มีผลทำให้วันที่ประกาศ มีความยาวของวันนั้นเพิ่มขึ้นอีก 1 วินาที โดยการเพิ่มวินาทีที่ 23:59:60 เข้าไปหลังจาก 23:59:59 (หากไม่มีการเพิ่ม Leap Second เวลาจะเดินจาก 23:59:59 ไปเป็น 00:00:00) ดังนั้นในวันที่มีการประกาศ Leap Second ดังกล่าว 1 วันของวันนั้นจะมี 86,401 วินาที (1 วันปกติมี 24 x 60 x 60 = 86,400 วินาที)

เหตุผลของการปรับเวลาดังกล่าว เนื่องจาก เวลามาตรฐาน UTC (เวลาสากลเชิงพิกัด) เป็นเวลาที่เดินตามนาฬิกาอะตอม (Atomic Clock) ซึ่งมีความเที่ยงตรงสูงมาก และไม่มีการเปลี่ยนแปลงไม่ว่าจะเกิดสภาพใดๆก็ตาม ในขณะที่เวลาในการหมุนของโลกมีการเปลี่ยนแปลงได้ (เช่นจากผลกระทบของแรงโน้มถ่วงจากดวงอาทิตย์ ดวงจันทร์ และดาวดวงอื่นๆรอบข้าง) ซึ่งการเปลี่ยนแปลงของการหมุนของโลกนั้นเป็นไปอย่างช้าๆ ดังนั้นเมื่อการเปลี่ยนแปลงนี้สะสมมากขึ้นๆรวมเวลาหลายๆปี IERS จะออกประกาศให้ใช้ Leap Second เพื่อปรับเวลา UTC ให้สอดคล้องกับการหมุนของโลกครั้งหนึ่งเป็นเวลา 1 วินาที โดยในการปรับ จะปรับที่เวลาเที่ยงคืนของเวลา UTC (ซึ่งเป็นโซนเวลาเดียวกับเวลามาตรฐานกรีนิชหรือ GMT) และมักประกาศในเดือนมิถุนายน หรือธันวาคม

หากไม่มีการปรับดังกล่าว เวลาที่กำหนดโดยนาฬิกาอะตอม จะค่อยๆคลาดเคลื่อนห่างจากเวลาการหมุนของโลกมากขึ้นๆ เช่น อีก 100 หรืออีก 500 ปีถัดไป เวลา 06 นาฬิกาของวันใหม่ (ตามการบอกเวลาของนาฬิกาอะตอม) ที่ดวงอาทิตย์ควรจะขึ้นแล้ว ดวงอาทิตย์อาจจะยังไม่ขึ้น (เพราะโลกยังหมุนไปไม่ถึงองศาที่ดวงอาทิตย์โผล่จากขอบฟ้าของโซนเวลานั้นๆ) ดวงอาทิตย์อาจจะขึ้นช้าไป 1 ชั่วโมง ฯลฯ ก็เป็นได้

สำหรับในประเทศไทย กรมอุทกศาสตร์ กองทัพเรือ เป็นหน่วยงานหลักที่ประสานงานการปรับเวลามาตรฐานของประเทศไทยดังกล่าว ให้สอดคล้องตามประกาศของ IERS ซึ่งหน่วยงานหลักๆของประเทศไทยที่มีนาฬิกาอะตอม หรือ Time Server ในความดูแล เช่น สถาบันมาตรวิทยาแห่งชาติ ก็จะทำการปรับเวลาเช่นเดียวกัน

เอกสารประกาศกรมอุทกศาสตร์

ประกาศกรมอุทกศาสตร์กองทัพเรือ เรื่อง เปลี่ยนแปลงเวลามาตรฐานประเทศไทย

ต้องทำอะไรกับ Server หรือไม่

โดยส่วนใหญ่แล้ว สำหรับ Server ที่มีการทำ Time Synchronization (time sync) ผ่าน Network Time Protocol (NTP) จะไม่ต้องทำอะไรเพิ่มเติม เนื่องจาก NTP มีกระบวนการรองรับการเพิ่ม Leap Second อยู่แล้ว ดังตัวอย่างด้านล่างเป็น Log ของ Server ที่ใช้ระบบปฏิบัติการ CentOS โดยใช้ NTP Server ของสำนักงานมาตรวิทยา (time1.nimt.or.th และ time2.nimt.or.th) เป็น master time server

การรองรับการปรับ Leap Second ในระบบปฏิบัติการ CentOS ที่ทำ time sync กับ NTP Server

การรองรับการปรับ Leap Second ในระบบปฏิบัติการ CentOS ที่ทำ time sync กับ NTP Server

ซึ่งในตัวอย่างนี้จะเห็นได้ว่า ระบบ NTP มีการแทรกวินาทีที่ 23:59:60 (UTC) เมื่อเวลา 7 นาฬิกาของวันที่ 1 กรกฎาคม ตามเวลาในประเทศไทย เนื่องจากประเทศไทยอยู่ในโซนเวลา UTC+7 ซึ่งจะเร็วกว่า UTC 7 ชั่วโมงนั่นเอง (ซึ่งตรงตามเอกสารของกรมอุทกศาสตร์กองทัพเรือ ที่ประกาศว่าจะมีการปรับเวลาในเวลา 07.00 น. ตามเวลาประเทศไทยนั่นเอง)

เวลาในระบบจะกระโดดหรือไม่

อย่างไรก็ดี ในระบบปฏิบัติการตระกูล Unix ไม่มีการเผื่อวินาทีที่ 23:59:60 ในนาฬิกาของระบบไว้ ซึ่งเมื่อมีการแทรก Leap Second เข้ามา จะทำให้นาฬิกาในเคอร์เนลของระบบเดินถอยหลังไป 1 วินาที ดังตัวอย่าง

2015-06-31 23:59:59:052549000 UTC 2015-06-31 23:59:59:259988000 UTC
2015-06-31 23:59:59:465214000 UTC
2015-06-31 23:59:59:669629000 UTC
2015-06-31 23:59:59:873936000 UTC
2015-06-31 23:59:59:079184000 UTC 2015-06-31 23:59:59:284011000 UTC
2015-06-31 23:59:59:488648000 UTC
2015-06-31 23:59:59:692691000 UTC
2015-06-31 23:59:59:896577000 UTC
2015-07-01 00:00:00:052378000 UTC

ซึ่งเหตุการณ์เช่นนี้อาจทำให้ Log Message หรือ Timestamp ของเหตุการณ์ที่เกิดขึ้นในวินาทีที่ 23:59:59 กับวินาทีที่ 23:60:60 ทับซ้อนกันได้ แต่หลังจากวินาทีที่ 00:00:00 เป็นต้นไป ก็จะเป็นปกติ และเวลาของระบบจะถูกต้องตรงกับเวลามาตรฐาน UTC หลังจากปรับ Leap Second แล้ว

สำหรับระบบปฏิบัติการตระกูล Microsoft Windows ที่มีการทำ Time Sync กับ NTP Server นั้น ตามข้อมูลจาก Microsoft Support ระบบ NTP ของระบบปฏิบัติการ Windows ไม่ได้มีการรองรับ Leap Second ไว้ แต่เวลาจะมีการกระโดดถอยหลังไป 1 วินาที เมื่อมีการทำ Time Sync กับ NTP Server ภายนอกอีกครั้งหนึ่งหลังจากเกิด Leap Second

ระบบที่ไม่มีการทำ Time Sync กับ NTP Server

สำหรับระบบที่ไม่มีการทำ Time Sync กับ NTP Server หลังจาก 7 นาฬิกาของวันที่ 1 กรกฎาคม (ตามเวลาประเทศไทย) เป็นต้นไป เวลาบน Server ของท่านก็จะเร็วกว่าเวลามาตรฐานไป 1 วินาที จนกว่าจะมีการปรับเวลาให้ถูกต้องตรงกัน

สำหรับระบบปฏิบัติการตระกูลอื่นๆ หรืออุปกรณ์เครือข่ายอื่นๆ ท่านสามารถหาข้อมูลอ้างอิงได้จากเอกสารหรือเวบไซต์ของผู้ผลิต

วิธีการปรับเวลา
วิธีการง่ายๆที่ใช้ได้ผลดีอย่างหนึ่งก็คือ การปรับเวลาตาม NTP Server เป็นครั้งคราว โดยการใช้คำสั่ง ntpdate

[root@zmdevelop ~]# ntpdate time.csloxinfo.com
6 Jul 15:41:44 ntpdate[16533]: adjust time server 203.146.30.185 offset 0.001501 sec

อ่านเพิ่มเติม

How the Windows Time service treats a leap second

Leap Second

Resolve Leap Second Issues in Red Hat Enterprise Linux It would be odd for a top executive like https://topspying.com/ richard to comment based on rumors