温馨提示×

Linux虚拟机时间同步设置

小樊
42
2025-10-18 06:36:59
栏目: 云计算

Linux虚拟机时间同步设置方法

1. 通过NTP服务同步(传统可靠方式)

NTP(网络时间协议)是Linux系统最常用的时间同步方案,通过连接公共或私有NTP服务器实现精准同步。

  • 安装NTP服务:根据发行版选择对应命令(Debian/Ubuntu使用apt,CentOS/RHEL使用yum):
    # Debian/Ubuntu
    sudo apt update && sudo apt install ntp -y
    # CentOS/RHEL
    sudo yum install ntp -y
    
  • 配置NTP服务器:编辑配置文件/etc/ntp.conf,添加公共NTP服务器(如pool.ntp.org),并启用iburst选项(加快初次同步速度):
    server 0.pool.ntp.org iburst
    server 1.pool.ntp.org iburst
    server 2.pool.ntp.org iburst
    server 3.pool.ntp.org iburst
    
  • 启动与启用服务:启动NTP服务并设置开机自启:
    sudo systemctl start ntpd   # 启动服务
    sudo systemctl enable ntpd  # 开机自启
    
  • 验证同步状态:使用ntpq -p命令查看NTP服务器同步状态,确认*标记的服务器为当前同步源。

2. 通过Chrony服务同步(更适合虚拟机/不稳定网络)

Chrony是NTP的轻量级替代工具,针对网络延迟、间歇性断开等情况优化,更适合虚拟机环境。

  • 安装Chrony服务
    # Debian/Ubuntu
    sudo apt update && sudo apt install chrony -y
    # CentOS/RHEL
    sudo yum install chrony -y
    
  • 配置Chrony服务器:编辑配置文件/etc/chrony/chrony.conf,添加NTP服务器并启用iburst
    server 0.pool.ntp.org iburst
    server 1.pool.ntp.org iburst
    
  • 启动与启用服务
    sudo systemctl start chronyd   # 启动服务
    sudo systemctl enable chronyd  # 开机自启
    
  • 验证同步状态:使用chronyc tracking查看同步详情(如时间偏移量、漂移率),或chronyc sources查看同步源状态。

3. 配置虚拟机工具同步(宿主机-虚拟机联动)

VMware Tools(VMware)或Hyper-V Integration Services(Hyper-V)可实现虚拟机与宿主机时间自动同步,避免网络依赖。

  • VMware Tools设置
    1. 在VMware中安装Tools(通过“虚拟机→安装VMware Tools”);
    2. 启用时间同步:打开虚拟机设置→“选项”→“VMware Tools”,勾选“同步客户机时间与主机”。
  • Hyper-V Integration Services设置
    1. 在Hyper-V管理器中选中虚拟机→“设置”→“集成服务”;
    2. 勾选“时间同步”选项并保存。

4. 手动同步时间(临时调整场景)

若需临时修正时间(如测试环境),可使用以下命令:

  • 手动设置系统时间:通过date命令指定格式(YYYY-MM-DD HH:MM:SS):
    sudo date -s "2025-10-18 14:30:00"
    
  • 同步系统时间与硬件时钟:使用hwclock将系统时间写入硬件时钟(避免重启后失效):
    sudo hwclock --systohc
    
  • 手动同步NTP时间:使用ntpdate命令(需提前安装ntpdate)从NTP服务器拉取时间:
    sudo ntpdate pool.ntp.org
    

5. 自动同步脚本(定期维护场景)

通过脚本定期运行同步命令,确保时间长期准确。

  • 创建同步脚本(如/usr/local/bin/sync_time.sh):
    #!/bin/bash
    # 使用chrony同步时间(若未安装可替换为ntpdate)
    chronyc -a makestep  # 强制立即同步
    
  • 赋予执行权限
    chmod +x /usr/local/bin/sync_time.sh
    
  • 设置定时任务:通过crontab -e添加每小时同步一次的任务:
    0 * * * * /usr/local/bin/sync_time.sh
    

注意事项

  • 优先选择Chrony:Chrony对虚拟机环境的网络波动适应性更强,推荐替代传统NTP服务。
  • 检查时区一致性:确保虚拟机与宿主机时区一致,避免时间偏差(使用timedatectl set-timezone <时区>设置,如Asia/Shanghai)。
  • 开放NTP端口:若使用公网NTP服务器,需确保虚拟机防火墙允许UDP 123端口通信(sudo ufw allow 123/udp)。
  • 监控同步状态:定期通过chronyc trackingntpq -p检查同步状态,及时排查服务异常。

0