19 tháng 1, 2009

Thời gian cho máy con Xen (ntp)

Thời gian (time) của máy ảo (VM Xen guest domU) trong XEN được đặt theo máy cái (host). Vì vậy, để đảm bảo thời gian OK, thì cần: (a) chỉnh đúng thời gian máy cái; và/hoặc (b) tạo máy ảo với thời gian độc lập (independent timing). Tại đây xin trình bày cách (b), phù hợp cho trường hợp không có khả năng can thiệp vào máy cái (host); thí nghiệm trên Debian Lenny, Ubuntu 8.10, và CentOS 5.1.

Đặt trong file /etc/rc.local (startup script):

## initialize computer time
## AFTER making sure that the Xen guest using independent clock
echo 1 > /proc/sys/xen/independent_wallclock
/usr/sbin/ntpdate pool.ntp.org

hoặc nếu không thích dùng /etc/rc.local thì có thể đặt trong /etc/sysctl.conf:

## Independent wall clock time to XenServer Host
xen/independent_wallclock = 1

Sau đó đặt chỉnh giờ định kỳ (ví dụ vào 5:30 AM hàng ngày) trong /etc/crontab:

## time sync daily
30 5    * * *   root    /usr/sbin/ntpdate pool.ntp.org

Nếu cảm thấy ntpdate chưa đủ chính xác, thì có thể dùng ntp (time server) chạy ở chế độ dịch vụ (daemon), khi đó thời gian sẽ được chỉnh chính xác hơn. Bỏ ntpdate trong crontab đi, và cài ntp như sau, với Debian/Ubuntu:

# apt-get install ntp

hoặc với CentOS:

# yum install ntp

Lưu ý: trong Debian/Ubuntu, ntp và ntpdate được xếp vào 2 gói (package) riêng, còn với CentOS thì cả 2 nằm trong 1 gói ntp.

Cấu hình của ntp được đặt trong /etc/ntp.conf, trong đó có danh sách các máy chủ thời gian (time server) khác được sử dụng để tham chiếu thời gian. Có thể xem trạng thái của dịch vụ ntp, xem xem trạng thái so với các máy chủ khác mà nó tham chiếu thời gian đến:

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 starlite.ispwor .INIT.          16 u    - 1024    0    0.000    0.000   0.000
 24.node6504.gpl .INIT.          16 u    - 1024    0    0.000    0.000   0.000
 203.116.5.254   129.6.15.29      2 u   81  512  151  1005.25  -470.58  10.582

Lưu ý: giao thức ntp (Network Time Protocol) dùng cổng UTP 123 cả hai phía client và server; như vậy, khi ntp đang chạy thì ntpdate không chạy được vì cổng UTP 123 bị bận ở phía client. Nếu muốn chạy ntpdate thì phải tạm ngưng dịch vụ ntp, với Debian/Ubuntu:

# /etc/init.d/ntp stop
# ntpdate pool.ntp.org
# /etc/init.d/ntp start

hoặc với CentOS:

# /etc/init.d/ntpd stop
# ntpdate pool.ntp.org
# /etc/init.d/ntpd start

Tham khảo:

Không có nhận xét nào: