我没有将我的 Nextcloud (Linux/Nginx/PGsql/PHP) 服务器配置为在安装在 的旋转硬盘上查找文件夹/mnt/HDDfs/
,而是进行符号链接/var/Nextcloud_Data
,使其指向/mnt/HDDfs/Nextcloud_Data
,然后将我的 Nextcloud 配置指向/var/Nextcloud_Data
。这样,如果我决定更改挂载点的名称,我不必接触数据库,因为我可以简单地编辑符号链接。
起初这似乎是一个好主意,但后来我想起我的根/
驱动器是 SSD,与传统的磁盘相比,它只能承受有限的磨损;即使当今磁盘的使用磨损很小,反复敲击驱动器的特定单元也并不是最好的主意。
我要问的是:当程序加载和/或写入其中包含符号链接的位置时,操作系统是否每次都从源位置加载符号链接,然后跟随它到真正的目标并在那里执行操作,或者它是否“缓存”符号链接并直接转换/var/Nextcloud_Data/filename
为/mnt/HDDfs/Nextcloud_Data/filename
?
附加信息:
- 操作系统:Ubuntu Server 18.04 LTS,带有所有最新补丁和升级。
- 磁盘驱动器:通过 SATA 连接的 WD RED 硬盘和 PCIe M.2 (Samsung 960 EVO) SSD。
- 文件系统:两个驱动器均采用 GPT 格式外部4文件系统。
- 主板:华硕Z170-Deluxe(台式机主板)
答案1
没关系,有很多原因。
首先,闪存驱动器关注的是写入次数,而不是读取次数。
其次,这种担忧适用于固件较差或驱动程序较差的较旧或较便宜的驱动器,但不适用于现代操作系统上的现代驱动器。现代 SSD 具有足够好的磨损均衡,现代操作系统具有区分覆盖和擦除的驱动程序(修剪)因此需要很长时间才能开始关注写入次数。在这个年龄,磁力驱动器通常会因机械相关原因而失效,例如错误位置的湿度或灰尘或机械损坏。
根据系统配置,读取符号链接可能会更新其访问时间。Linux 默认每天只更新一次文件的访问时间。因此,即使担心驱动器的写入次数,一次写入也将是一天,而不是通过符号链接进行一次访问。
内核将有关符号链接的信息保留在其磁盘缓存中,就像从磁盘读取的任何其他信息一样。它不保留一个显示“重定向到”的缓存,但它维护一个显示“是一个符号链接,其目标是”的缓存。这意味着只要缓存条目仍然存在,它就不会从驱动器读取。这与访问时间更新的频率无关:这是访问文件的时间的函数,而不是从驱动器传输有关文件的信息的时间的函数。/var/Nextcloud_Data/filename
/mnt/HDDfs/Nextcloud_Data/filename
/var/Nextcloud_Data
/mnt/HDDfs/Nextcloud_Data