启动openGauss出现No space left on device问题解决方法
No space left on device问题解决方法
Oracle VM VirtualBox 6.1.32安装了openEuler-20.03-LTS-x86_64-dvd,设置openEuler占有硬盘虚拟空间10G,然后继续安装了openGauss2.1.0,在使用过程中用户日志和数据库数据逐渐增多,待后来执行数据库服务启动时,即:gs_om -t start,出现如下类似问题。
[omm@db1 ~]$ gs_om -t start
[GAUSS-50205] : Failed to write log file /var/log/gaussdb/omm/om/gs_om-2022-02-08_101000.log. Error:
[Errno 28] No space left on device
1、故障分析
根据报错信息“No space left on device”,可以用df -i显示inode信息
[omm@db1 ~]#exit
[root@db1 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 185584 382 185202 1% /dev
tmpfs 189124 1 189123 1% /dev/shm
tmpfs 189124 610 188514 1% /run
tmpfs 189124 17 189107 1% /sys/fs/cgroup
/dev/sda3 524288 118186 406102 23% /
tmpfs 189124 10 189114 1% /tmp
/dev/sda1 65536 343 65193 1% /boot
tmpfs 189124 5 189119 1% /run/user/0
发现空间占用不多,最多的是
/dev/sda3 524288 118186 406102 23% /
没有满,需要去删除数量过多的小文件,需进一步查询。
ps:在df -h 和df -i 显示使用率。
df -h 是去删除比较大无用的文件———–大文件占用大量的磁盘容量。
df -i 则去删除数量过多的小文件———–过多的文件占用了大量的inode号。
通过以下脚本进行检查哪个目录下面的文件最多。
[root@db1 ~]# for i in / * /; do echo $i; find $i | wc -l; done
/
203858
anaconda-ks.cfg
1
gauss_om
1203
postgresql.conf
1
/
204537
2、解决方法
结合前面的错误信息
[GAUSS-50205] : Failed to write log file /var/log/gaussdb/omm/om/gs_om-2022-02-08_101000.log. Error:
[Errno 28] No space left on device
说明日志文件可能占用空间多了,这时通过Xftp对/var/log/gaussdb/目录下面的日志文件进行查阅,如图1所示。继续进入/var/log/gaussdb/omm/pg_audit/dn_6001,里面的超过1M的日志文件选择后,把日期比较早的日志直接删除掉。
重启虚拟机后,再执行数据库服务的启动。
[omm@db1 ~]$ gs_om -t start
Starting cluster.
=========================================
[SUCCESS] db1
。。。。。
=========================================
Successfully started.
启动成功了,说明日志占有空间大了,引起
[Errno 28] No space left on device
继续查看下虚拟磁盘情况
[omm@db1 ~]$ exit
logout
[root@db1 ~]# fdisk -l /dev/sda
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x986401e8
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 4196351 2097152 1G 82 Linux swap / Solaris
/dev/sda3 4196352 20971519 16775168 8G 83 Linux
3、进一步调整增加虚拟机的空间
为彻底解决openEuler虚拟机空间可以采用如下方法扩大空间
在Oracle VM VirtualBox的安装目录D:\Program Files\Oracle\VirtualBox下执行:
D:\Program Files\Oracle\VirtualBox>VBoxManage list hdds
UUID: 31836802-98ad-4261-abb2-a0dee41c747f
Parent UUID: base
State: created
Type: normal (base)
Location: D:\Program Files\VMwork\openEuGau2.1\openEuler.vdi
Storage format: VDI
Capacity: 10240 MBytes
Encryption: disabled
上面列出所有虚拟机的磁盘及路径信息。找到你需要调整空间的虚拟机,记下 UUID
.值,假如为:31836802-98ad-4261-abb2-a0dee41c747f。上面安装的虚拟机openEuler是D:\Program Files\VMwork\openEuGau2.1\openEuler.vdi,占有10240 Mbytes(10G)空间。
(1)、Windows下调整增加虚拟机空间
Oracle VM VirtualBox的安装目录下执行:
D:\Program Files\Oracle\VirtualBox>vBoxManage modifyhd 31836802-98ad-4261-abb2-a0dee41c747f --resize 15240
说明:–resize 15240 单位:M
执行完成后,显示如下:
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
(2)、Windows下虚拟机空间已经更新
再次执行VBoxManage list hdds查看,会发现虚拟机空间已经更新了,分配虚拟空间为15240 MBytes。
D:\Program Files\Oracle\VirtualBox>VBoxManage list hdds
UUID: 31836802-98ad-4261-abb2-a0dee41c747f
Parent UUID: base
State: created
Type: normal (base)
Location: D:\Program Files\VMwork\openEuGau2.1\openEuler.vdi
Storage format: VDI
Capacity: 15240 MBytes
Encryption: disabled
(3)、在虚拟机里查阅虚拟机存储空间
在虚拟机的存储设置里查看,原存储空间已修改了,从原10GB变成14.88GB,说明修改成功了。