web-dev-qa-db-ja.com

巨大な時差での時間同期

こんにちは現在、ローカルのntpサーバー(chrony)とntp client(chrony)がありますが、すべて正常に動作していますが、ntpサーバーの時間を現在の時間からマイナス6年に変更しようとすると、 ntpクライアントはそれと同期できません、それは単にsyslogで言うでしょう:

Jan 9 17:29:11 localhost chronyd [9192]:システムクロックが6780812.328260秒間違っており、調整を開始しました

ntp client(chrony)/etc/chrony.confはデフォルトの構成にありますが、サーバーは私のローカルを指しているNTP server(chrony)です。ここに私の構成があります。

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server local.ntp.server iburst

# Ignore stratum in source selection.
stratumweight 0

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Enable kernel RTC synchronization.
rtcsync

# In first three updates step the system clock instead of slew
# if the adjustment is larger than 10 seconds.
makestep 10 3

# Allow NTP client access from local network.
#allow 192.168/16

# Listen for commands only on localhost.
bindcmdaddress 127.0.0.1
bindcmdaddress ::1

# Serve time even if not synchronized to any NTP server.
#local stratum 10

keyfile /etc/chrony.keys

# Specify the key used as password for chronyc.
commandkey 1

# Generate command key if missing.
generatecommandkey

# Disable logging of client accesses.
noclientlog

# Send a message to syslog if a clock adjustment is larger than 0.5 seconds.
logchange 0.5

logdir /var/log/chrony
#log measurements statistics tracking

私はそれが同期しないことを知りません、私はそれがより長い時間がかかることを読みました、しかし私は私のマシンを1日置いたままにしました、そしてそれでもntpクライアントはntpサーバーと同じ時間を持っていませんでした(同期していません) 。何か案は? chronydサービスを再起動せず、時刻を自動同期させるだけです

「local.ntp.server」は私の/ etc/hostsで定義されていることに注意してください。また、NTP serverおよびNTP clientはntpdサービスを使用していませんが、chronydを使用しています。この種のセットアップは分離されています。

3
lemoncodes

あなたの問題は、あなたが6年時間変更を達成しようとしていることであり、時計をゆがめ、1日後にあきらめることです。

スキューアルゴリズムがクロックを1%だけドリフトさせる場合-これはかなりの量です-クロックをそのくらいスキューさせるには600年かかります。時計が完全に静止している場合まだ静止している場合でも、時計を6年進めるには6年経過する必要があります。経過した6年未満で6年の時間ドリフトを達成する唯一の方法は、時計を動かすことですbackwards、そして私はそれに対してうまく反応するとは思いません。 1日でそれを実行するには、リアルタイムレートの2000倍を少し超える速度でクロックを逆方向に実行する必要があります。

私の感じは、NTP嘘をつくサーバーを実行することは非常に悪い考えですが、これを主張し、突然サーバーをかなりの量だけ傾けた場合、強制的に変更する必要があります同期する前のクライアントクロック。これは、クライアントが起動時にサーバーからクロックを強制的にリセットすることで最も簡単に実行されます(ntpdを使用して、これはntpdate at起動時間; chronyについてはわかりません)、クライアントを再起動します。

4
MadHatter

時刻がずれている場合(日または月)、時刻同期は機能しません( "時間がかかる")NTPクライアントのようなChronyは、時計を遅くしたり、速くしたりして、徐々に時計を調整します

この行をChrony設定に追加します(たとえば、/etc/chrony.confまたは/etc/chrony/chrony.conf):

makestep 1 -1

その後、Chronyを再起動します。

# systemctl restart chronyd
# or
# /etc/init.d/chrony restart

説明:

Makestepディレクティブを使用して、chronydにクロックをステップさせることができます。たとえば、chrony.confに

makestep 1 3

オフセットが1秒より大きい場合、クロックは最初の3つの更新でステップされます。通常、最初の数回の更新でのみステップを許可することをお勧めしますが、場合によっては(たとえば、RTCまたは一時停止し、誤った時間で再開できる仮想マシン)のないコンピューター)クロック更新のステップを許可する必要があるかもしれません。上の例は

makestep 1 -1

https://chrony.tuxfamily.org/faq.html#_is_code_chronyd_code_allowed_to_step_the_system_clock

4
basic6

時差が大きい場合、chrony受け入れない ソースになる可能性があります。私の時計は数年前のchronyc trackingが報告していた:

> chronyc tracking
Ref time (UTC) : Thu Jan 01 00:00:00 1970

私のために働いたのは、maxdiference 1000000000 in /etc/chrony.confしてから(chronydの再起動後に)chrnoyc -a makestep 1000 -1

0
rvernica