备份!备份!备份!(做 3 次备份)

备份!备份!备份!(做 3 次备份)
$ 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

  1. 检查分区/dev/sda6是否位于紧接着的位置/dev/sda5,例如使用 GParted。

  2. 备份!备份!备份!(做 3 次备份)

    使用分区进行工作很危险。确保已在外部媒体中备份和复制重要数据。避免在要使用的同一磁盘上进行备份。

    来源:https://askubuntu.com/a/1005841/250300

  3. 删除(或注释掉)文件/dev/sda6中的条目/etc/fstab,以便在下次启动时不再查找它。

  4. 现在启动实时介质。您只能关闭 PostgreSQL(一般来说:任何可能在复制数据时修改数据的东西)才能进行下一步,但无论如何,我们必须启动实时介质才能调整分区大小。

  5. 挂载要删除的分区。请注意,设备字母(a/dev/sda)可能会在实时会话中发生更改,因此请根据需要调整命令或使用 GUI 挂载分区。

    export p=sda6
    sudo mkdir /media/$p
    sudo mount /dev/$p /media/$p
    
  6. 将所有数据从分区复制到另一个位置。您可以使用cprsynctar(带或不带压缩)。我会使用tar带压缩的,因为它会创建只读副本,而且使用当今的设备,压缩大数据比以未压缩形式写入更快。

    我已经选择/media/data/为目标位置,请根据您自己的情况进行调整。

    我使用它是sudo因为某些数据/var/lib/postgresql对于登录的用户来说可能无法读取,但在这里可能没有必要。

    sudo tar -cJvf /media/data/var-lib-postgresql.txz /media/sda6/
    
  7. 卸载分区。

    sudo umount /media/sda6
    
  8. 现在运行 GParted,删除原始分区/dev/sda6并扩展/dev/sda5以利用释放的空间。详细说明可参见https://askubuntu.com/a/1005841/250300

  9. 挂载目标分区。

    export p=sda5
    sudo mkdir /media/$p
    sudo mount /dev/$p /media/$p
    
  10. 检查文件夹/media/sda5/postgresql是否为空。如果不是,请清除它,因为它很可能包含创建之前使用的数据/dev/sda6

  11. 恢复数据:

    cd /media/sda5/lib/postgresql && sudo tar -xvf /media/data/var-lib-postgresql.txz
    
  12. 重新启动系统并享受新可用的可用空间。

相关内容