现在,我在同一个磁盘上有一个包含数据的文件和一个数据库。长时间运行的原子插入可能会在提交之前填满磁盘。无论如何,即使数据库可能打开了当前文件,我是否可以用符号链接(symbolic link)替换数据文件以节省几百 GB 的空间?如果没有这样的文件系统级解决方案,并且需要“重新打开数据,并从检查点继续”操作,我使用的是 postgres 9.5 并且数据文件由 pg_dump 生成。
我的主要问题和好奇心是关于在不中断打开文件的程序的情况下用链接替换文件的可能性,但我对这里的情况很感兴趣。任何关于如何在不中断当前运行程序的情况下将更多磁盘空间与数据库所在目录相关联的知识也会派上用场。
最佳答案
无法“替换”进程当前打开的文件。
但是您可以动态扩展文件所在的文件系统,前提是您使用 LVM,包含文件系统的卷组中有可用空间并且文件系统类型允许调整大小。
这是文件系统的解决方案ext2
及其继任者:
找到文件所在的逻辑卷
# df /path/to/large/file Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/datalv 991512 991500 12 100% /path/to
找到您的文件所在的卷组
# lvdisplay -c /dev/mapper/datalv | cut -d: -f2 datavg
找出物理范围的大小以及有多少是空闲的
# vgdisplay -c datavg | cut -d: -f13,16 4096:476
可用空间是 4 MB 的 476 倍或 1904 MB。
将逻辑卷扩展 1 GB
# lvextend -L +1G /dev/mapper/datalv
调整
ext<em>n</em>
的大小在线文件系统# resize2fs /dev/mapper/datalv
关于linux - 在 Linux 中用符号链接(symbolic link)替换打开的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40119277/