Eri*_*Kim 3 postgresql linux storage centos centos7
我一直在将数据插入 PostgreSQL DB,并收到错误消息:
psycopg2.OperationalError: could not extend file "base/16384/61892": No space left on device
HINT: Check free disk space
Run Code Online (Sandbox Code Playgroud)
我正在使用 CentOS 7,并且我已经在我的 linux 机器上检查了我的一些状态:
df -h
我对 Linux 很陌生,根据我的df -h命令的结果,我可以看到 Linux 存储系统的工作方式与 Windows 不同。
看起来 PostgreSQL 正在推送到/dev/mapper/centos-root,但它只有 50 GB 可用。
问题 1:如何更改?如何将可用的额外可用空间分配/dev/mapper/centos-home到我的~/centos-root目录中?
问题2:我的机器有两个硬盘,每个200GB。但是根据我的df-h命令,看起来我只有 200GB 可用空间。为什么会这样?如何充分利用 400GB 空间?
看起来问题是我/dev/mapper/centos-root的都填满了。我在 PostgreSQL 中插入了近 10,000,000 行 12 列的数据。
问题 3:这是否足够占用 50GB 的空间?
谢谢!
编辑:输出pvs, vgs,lvs
您的服务器分区严重。这不完全是你的错;相反,在我看来,默认的 RHEL/CentOS 设置非常具有误导性。
让我们从pvs; vgs; lvs上面输入的命令的描述开始。它们都与LVM2逻辑卷管理器有关,简而言之,它使您能够创建“灵活”、可调整大小的分区:
pvs显示物理磁盘如何连接到 LVM 系统。您有 2x 200 GB 磁盘,但pvs只显示 1x200 GB 物理设备。这意味着您的磁盘在 RAID1(镜像)中并且它们完全分配给 LVM(即:没有未分配的物理空间);
vgs显示分配给您的物理设备的卷组和任何可用的可用空间。在您的情况下,可用空间小于 4 MB,因此基本上您没有可用空间。下一个命令解释了什么正在使用您的空间...
lvs显示您有两个逻辑卷(将它们视为分区):一个 50 GB 的根卷和一个 ~145 GB 的主卷。简而言之,您的root容量(PostgreSQL 所在的位置)远小于您的需求;相反,home考虑到它包含的数据很少(< 5GB),您的容量非常大。
要解决此问题,您有两种选择:
将 PostgreSQL 重新定位到home卷下,例如在/home/pgsl. 我会避免这种情况,因为/home这不是数据库的正确位置,并且将来会造成管理负担。此外,您需要将 SELinux 置于许可模式(setenforce 0+/etc/selinux/config编辑)才能让重定位工作;
缩小home体积并放大root。这说起来容易做起来难,尤其是当您使用不支持收缩的 XFS(默认 RHEL/CentOS 文件系统)时。
当且仅当您的数据在home可以丢弃/再,你可以按照如下步骤来删除的home数量和扩大root。请注意,一个小错误(我的和你的)将破坏您的数据(杀死约 100 公里范围内的任何猫),因此我对最终结果不承担任何责任。如果您不确定,请在此处停止并致电专业的系统管理员寻求支持。好的,让我们继续;我将发布一个带有相关描述的命令序列:
umount /home:这卸载(即“禁用”)主卷;lvremove centos/home:这将永久销毁 /home及其所有内容;lvextend centos/root -L +100G:这将root音量扩大100 GB;xfs_growfs /:假设您正在使用 XFS,这将扩展根文件系统以匹配底层的扩展卷。如果您正在使用ext4(这是不可能的),则需要发出resize2fs /dev/centos/root.| 归档时间: |
|
| 查看次数: |
20545 次 |
| 最近记录: |