跳转到内容

时间、时区与主机名 ​

这一篇做两件小事:让 OMV 的时钟自动校准,给它起一个以后不想改的名字。时间错了,更新、证书、日志、计划任务都会出怪问题;名字改了,网络里所有按旧名字访问它的电脑都要重新连。早点定好,省事。

改主机名和时区会牵连别的东西

  • 影响范围:改主机名和域名会让 Samba、Avahi(mDNS)、邮件和 /etc/hosts 重新部署。电脑上用旧名字映射的网络驱动器、书签、.local 地址都会失效。改时区会改变所有计划任务、SMART 测试的执行时刻,也会改变日志里的时间。
  • 前置条件:没有正在进行的 SMB 传输;知道哪些客户端是按名字访问这台 NAS 的。
  • 怎么回退:把主机名或时区改回去,保存并应用。已经断掉的客户端映射,改回旧名字后重连即可。

开始之前 ​

  • 装好系统,能登录 Web 界面,见第一次登录。
  • OMV 8 里时间同步用的是 chrony,不是 systemd-timesyncd。
  • 界面没有手动设置日期和时间的字段,只能选时区、开关 NTP 和指定时间服务器。所以要让机器能连上 NTP 服务器。

设置时区和时间同步 ​

  1. 打开 系统 → 日期和时间(System → Date & Time)。
  2. 时区(Time zone):选你所在的时区,比如 Asia/Shanghai、Asia/Tokyo。安装时选的时区会带到这里,对的话不用改。
  3. 勾选使用 NTP 服务器(Use NTP server)。
  4. 时间服务器(Time servers):默认是 pool.ntp.org,多个用逗号隔开。
  5. 允许的客户端(Allowed clients):默认空。填了 CIDR 格式的网段或主机名,OMV 就会对这些客户端提供 NTP 服务,一般的家庭 NAS 用不着,留空。
  6. 点保存,再点黄色提示条上的应用。

关于时间服务器:

  • NTP Pool 项目按国家提供区域域名,格式是 <国家代码>.pool.ntp.org,例如 cn.pool.ntp.org、jp.pool.ntp.org,离你近的通常延迟更低。也可以填你信任的其他 NTP 服务器的域名。
  • 填的每一项,OMV 8 都会在 chrony 的配置里写成一行 pool <地址> iburst。8.0 起默认用 pool 指令,由环境变量 OMV_CHRONY_SERVER_POOL_DIRECTIVE 控制,想改成 server 指令见环境变量。
  • chrony 配置里还有 makestep 1 3:开机后的前三次校准里,如果时间差超过 1 秒,会直接跳变而不是慢慢调。所以重启后的时间一般很快就对了。
  • 机器所在网络不让访问外面的 NTP(UDP 123 端口)时,同步会失败。要么放行,要么指向你内网里可用的 NTP 服务器。

OMV 的硬件时钟用 UTC

OMV 设置时区时按「硬件时钟是 UTC」处理。这对 Linux 是标准做法,只有和 Windows 装在同一台机器上双系统才会冲突,而 NAS 不会。

给 NAS 起名字 ​

  1. 打开 网络 → 常规(Network → General)。
  2. 主机名(Hostname):这台机器在网络里的名字。可以用字母、数字和连字符,最长 63 个字符,不能以连字符开头或结尾,不能含点、下划线和空格。OMV 在系统里设置主机名时会转成小写。
  3. 域名(Domain name):必填。界面的提示是:如果系统属于没有注册域名的私有网络,按 ICANN 的建议用 internal。
  4. 点保存,再应用。

关于域名,ISO 安装器默认填的是 local。官方界面的提示建议用 internal,因为 .local 是留给 mDNS(Bonjour)的特殊后缀。OMV 自己也对 local 有特殊处理:给网卡写 DNS 搜索域时,会跳过它。家里没有自己的域名,就改成 internal。你有自己拥有的域名(比如 home.example.com)也可以填。

起名的建议:

  • 短、好记、全小写,比如 nas、omv1,以后每天要敲、要认。
  • 起好就别改。SMB 共享的地址、备份任务的目标、mDNS 的 .local 地址、邮件里的发件主机名都和它有关。
  • 一个网络里不要有两台同名的机器。

改主机名或域名后,应用时会部署 hostname、hosts、samba、avahi、postfix 和 systemd-networkd 这几个模块。已经启用了 HTTPS 的,证书里可能还是旧名字,处理见证书。

时间不对会出什么问题 ​

现象原因
更新时报 Release file ... is not valid yet,或签名已过期APT 校验软件源索引的时间戳
浏览器报证书「尚未生效」或「已过期」HTTPS 证书有有效期,系统时间在范围外
两步验证的验证码总是错TOTP 验证码按当前时间计算,双方时间要接近,见两步验证
日志的时间和实际对不上排查故障时没法对时间线
计划任务、SMART 测试、备份在奇怪的时间跑它们按系统时间和时区执行
同步和备份工具误判文件新旧它们靠文件的修改时间比较

检查结果 ​

在 OMV 的 shell 里:

sh
# 在 OMV 的 shell 里执行
timedatectl
chronyc tracking
  • timedatectl 里的 Time zone 是你选的,System clock synchronized 是 yes。NTP service 那一行反映的是 systemd-timesyncd,而 OMV 用的是 chrony,所以它显示 n/a 或 inactive 都不代表没同步,看 System clock synchronized 那一行。
  • chronyc tracking 能输出 Reference ID 和 System time 等内容,说明 chrony 在和服务器同步。想看它连着哪些服务器,用 chronyc sources。
  • 在 网络 → 常规 保存并应用之后,在 OMV 的 shell 里执行 hostname,输出的是你设的小写主机名。
  • 在另一台电脑上用新名字访问,比如 ping <主机名>.local,能通。mDNS 解析不是每台电脑都支持,不通就用 IP。

常见问题 ​

时区选对了,界面里的时间看起来还差几小时。 仪表盘上的「系统时间」小部件显示的是 OMV 自己的当前时间,而通知栏里任务的相对时间等,是浏览器按你电脑的区域设置换算后显示的。判断 OMV 的时间对不对,以 timedatectl 的输出为准,再检查你电脑的时区。

chronyc tracking 报错,或者同步不上。 确认勾了使用 NTP 服务器,时间服务器没填错,网络能出去,DNS 正常。可以用 chronyc sources 看服务器是不是可达。

改了主机名,Windows 上的映射驱动器打不开了。 重新用新名字或 IP 映射。如果想让大家少改,别改名字,或者以后固定用 IP 访问。见局域网发现。

我想在界面里手动改时间。 OMV 8 没有这个功能,时间交给 NTP。确实无法联网的离线环境,建议在局域网里架一台 NTP 服务器,OMV 指向它。

在虚拟机里时间老是漂移。 确认虚拟机没有同时开启「与宿主机同步时间」和 NTP 两种机制互相打架,以虚拟化平台的文档为准。

参考资料 ​

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。