postgresql initdb - 目录不为空

时间:2012-12-05 13:33:53

标签: postgresql filesystems ext4

我在ubuntu lucid服务器上安装postgres 8.4(不,目前我们在该服务器上使用“清晰”LTS版本,因此无法进行升级(尽管我们将开始测试精确的系统)很快现在))

我已经使用ext4文件系统为/var/lib/postgresql/8.4/main目录设置了一个自己的分区。 (那些真正进入postgres安装的人知道现在发生了什么...)由于ext4在所有文件系统的根目录中放置了一个lost + found目录,postgres不会将该目录用作其数据目录,因为它最初是不空......

initdb:目录“/var/lib/postgresql/8.4/main”存在但不是空的 如果要创建新的数据库系统,请删除或清空 目录“/var/lib/postgresql/8.4/main”或运行initdb 使用“/var/lib/postgresql/8.4/main”以外的参数。

最简单的方法是删除lost + found并在initdb完成其工作后重新创建它。 - 这会导致任何问题吗? lost + found是否有任何特殊属性或任何无法重新创建的东西,而且,除了checkdisk发现需要放在那里的东西之外,还需要它吗?

另一种方法是卸载... / main /文件系统,初始化数据库,在其他地方临时安装... / main / filesystem,在那里移动东西并将其安装到位。似乎比“最简单的方式”更多的工作。

或者是否有一些方法让initdb忽略该目录不为空? (看不到任何命令行开关)

可能在postgres主目录中丢失+找到的目录会导致任何问题吗?

目前我在虚拟机上运行系统进行测试,所以如果我把事情弄得一团糟无所谓,但在将其作为安装任务关键型系统的官方方式之前,这将是不错的对此有一些想法。

1 个答案:

答案 0 :(得分:0)

lost+found具有预先分配的块,当分区缺少空闲块时,fsck可以更轻松地将数据移入其中。要创建它,最好使用mklost+found命令而不是mkdir

如果您不重新创建它,fsck无论如何都会在需要时进行。

但是,如果fsck在PGDATA中发现损坏,我会考虑进行备份,而不是依靠lost+found来检索任何内容。