$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 33G 31G 467M 99% /var
/dev/sda6 120G 22G 93G 19% /var/lib/postgresql
我想将它们合并到单个/var
分区(不丢失数据)
我可以关闭它一段时间
答案1
检查分区
/dev/sda6
是否位于紧接着的位置/dev/sda5
,例如使用 GParted。备份!备份!备份!(做 3 次备份)
使用分区进行工作很危险。确保已在外部媒体中备份和复制重要数据。避免在要使用的同一磁盘上进行备份。
删除(或注释掉)文件
/dev/sda6
中的条目/etc/fstab
,以便在下次启动时不再查找它。现在启动实时介质。您只能关闭 PostgreSQL(一般来说:任何可能在复制数据时修改数据的东西)才能进行下一步,但无论如何,我们必须启动实时介质才能调整分区大小。
挂载要删除的分区。请注意,设备字母(
a
中/dev/sda
)可能会在实时会话中发生更改,因此请根据需要调整命令或使用 GUI 挂载分区。export p=sda6 sudo mkdir /media/$p sudo mount /dev/$p /media/$p
将所有数据从分区复制到另一个位置。您可以使用
cp
、rsync
或tar
(带或不带压缩)。我会使用tar
带压缩的,因为它会创建只读副本,而且使用当今的设备,压缩大数据比以未压缩形式写入更快。我已经选择
/media/data/
为目标位置,请根据您自己的情况进行调整。我使用它是
sudo
因为某些数据/var/lib/postgresql
对于登录的用户来说可能无法读取,但在这里可能没有必要。sudo tar -cJvf /media/data/var-lib-postgresql.txz /media/sda6/
卸载分区。
sudo umount /media/sda6
现在运行 GParted,删除原始分区
/dev/sda6
并扩展/dev/sda5
以利用释放的空间。详细说明可参见https://askubuntu.com/a/1005841/250300。挂载目标分区。
export p=sda5 sudo mkdir /media/$p sudo mount /dev/$p /media/$p
检查文件夹
/media/sda5/postgresql
是否为空。如果不是,请清除它,因为它很可能包含创建之前使用的数据/dev/sda6
。恢复数据:
cd /media/sda5/lib/postgresql && sudo tar -xvf /media/data/var-lib-postgresql.txz
重新启动系统并享受新可用的可用空间。