- A+
1.故障描述
今天ODOO服务器无法正常工作,提示信息如下:
错误:
Odoo Server Error
Traceback (most recent call last):
File "/opt/odoo/odoo12/odoo/http.py", line 656, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/odoo12/odoo/http.py", line 314, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/opt/odoo/odoo12/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/opt/odoo/odoo12/odoo/http.py", line 698, in dispatch
result = self._call_function(**self.params)
File "/opt/odoo/odoo12/odoo/http.py", line 346, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo/odoo12/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/odoo/odoo12/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/opt/odoo/odoo12/odoo/http.py", line 941, in __call__
return self.method(*args, **kw)
File "/opt/odoo/odoo12/odoo/http.py", line 519, in response_wrap
response = f(*args, **kw)
File "/opt/odoo/odoo12/odoo/addons/web/controllers/main.py", line 962, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/opt/odoo/odoo12/odoo/addons/web/controllers/main.py", line 954, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/opt/odoo/odoo12/odoo/api.py", line 755, in call_kw
return _call_kw_model(method, model, args, kwargs)
File "/opt/odoo/odoo12/odoo/api.py", line 728, in _call_kw_model
result = method(recs, *args, **kwargs)
File "/opt/odoo/odoo12/odoo/models.py", line 2071, in read_group
result = self._read_group_raw(domain, fields, groupby, offset=offset, limit=limit, orderby=orderby, lazy=lazy)
File "/opt/odoo/odoo12/odoo/models.py", line 2184, in _read_group_raw
self._cr.execute(query, where_clause_params)
File "/opt/odoo/odoo12/odoo/sql_db.py", line 148, in wrapper
return f(self, *args, **kwargs)
File "/opt/odoo/odoo12/odoo/sql_db.py", line 225, in execute
res = self._obj.execute(query, params)
psycopg2.OperationalError: 错误: 无法写入文件 "base/pgsql_tmp/pgsql_tmp19303.0": 设备上没有空间
2.问题排查
上面提示设备上没有空间,无法写入,于是远程登录ODOO服务器进行处理。
Connecting to 192.168.*.168:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last failed login: Tue Jun 1 14:28:16 CST 2021 from 10.128.34.120 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Tue Jun 1 11:06:40 2021 from 10.128.25.225
[root@myprod ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root xfs 50G 50G 402M 100% /
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 92K 3.9G 1% /dev/shm
tmpfs tmpfs 3.9G 426M 3.5G 11% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 xfs 1014M 173M 842M 17% /boot
/dev/mapper/cl-home xfs 42G 1.2G 40G 3% /home
tmpfs tmpfs 783M 16K 783M 1% /run/user/42
tmpfs tmpfs 783M 0 783M 0% /run/user/0
[root@myprod ~]#
发现根已用100%,确实没有剩余空间。
先用find查找大于100M的文件
[root@myprod ~]# find / -xdev -size +100M -exec ls -l {} \; -rw-r--r--. 1 root root 106172832 11月 8 2020 /usr/lib/locale/locale-archive -rw-r--r-- 1 root root 162303153 11月 8 2020 /usr/local/python3.zip -rw-r--r-- 1 root root 192284389 11月 8 2020 /opt/odoo/odoo12.zip -rw-r--r-- 1 root root 181482235 11月 9 2020 /opt/odoo/odoo1220201109.zip -rw-r--r-- 1 root root 239524588 1月 7 17:19 /opt/odoo/mybackup/myodoo_20210107_171927.sql -rw-r--r-- 1 root root 240164390 1月 8 01:45 /opt/odoo/mybackup/myodoo_20210108_014501.sql -rw-r--r-- 1 root root 242777145 1月 9 01:45 /opt/odoo/mybackup/myodoo_20210109_014501.sql -rw-r--r-- 1 root root 245690911 1月 10 01:45 /opt/odoo/mybackup/myodoo_20210110_014501.sql -rw-r--r-- 1 root root 248044112 1月 11 01:45 /opt/odoo/mybackup/myodoo_20210111_014501.sql -rw-r--r-- 1 root root 249439764 1月 12 01:45 /opt/odoo/mybackup/myodoo_20210112_014501.sql -rw-r--r-- 1 root root 250958537 1月 13 01:45 /opt/odoo/mybackup/myodoo_20210113_014501.sql -rw-r--r-- 1 root root 254095501 1月 14 01:45 /opt/odoo/mybackup/myodoo_20210114_014501.sql -rw-r--r-- 1 root root 254564232 1月 15 01:45 /opt/odoo/mybackup/myodoo_20210115_014501.sql -rw-r--r-- 1 root root 255637264 1月 16 01:45 /opt/odoo/mybackup/myodoo_20210116_014501.sql -rw-r--r-- 1 root root 257757071 1月 17 01:45 /opt/odoo/mybackup/myodoo_20210117_014501.sql -rw-r--r-- 1 root root 256223598 1月 18 01:45 /opt/odoo/mybackup/myodoo_20210118_014502.sql -rw-r--r-- 1 root root 256677541 1月 19 01:45 /opt/odoo/mybackup/myodoo_20210119_014501.sql -rw-r--r-- 1 root root 256471126 1月 20 01:45 /opt/odoo/mybackup/myodoo_20210120_014501.sql -rw-r--r-- 1 root root 256284101 1月 21 01:45 /opt/odoo/mybackup/myodoo_20210121_014501.sql -rw-r--r-- 1 root root 257535219 1月 22 01:45 /opt/odoo/mybackup/myodoo_20210122_014501.sql -rw-r--r-- 1 root root 257585191 1月 23 01:45 /opt/odoo/mybackup/myodoo_20210123_014501.sql -rw-r--r-- 1 root root 257648554 1月 24 01:45 /opt/odoo/mybackup/myodoo_20210124_014501.sql -rw-r--r-- 1 root root 258790459 1月 25 01:45 /opt/odoo/mybackup/myodoo_20210125_014501.sql -rw-r--r-- 1 root root 259041328 1月 26 01:45 /opt/odoo/mybackup/myodoo_20210126_014501.sql -rw-r--r-- 1 root root 259950228 1月 27 01:45 /opt/odoo/mybackup/myodoo_20210127_014501.sql -rw-r--r-- 1 root root 260791782 1月 28 01:45 /opt/odoo/mybackup/myodoo_20210128_014501.sql -rw-r--r-- 1 root root 260690928 1月 29 01:45 /opt/odoo/mybackup/myodoo_20210129_014501.sql -rw-r--r-- 1 root root 261040040 1月 30 01:45 /opt/odoo/mybackup/myodoo_20210130_014501.sql
发现备份目录/opt/odoo/mybackup下有大量重复的文件,进一步用du命令查看该目录所占空间。
[root@myprod odoo]# du -h mybackup
41G mybackup
[root@myprod odoo]# cd mybackup/
发现占41G的空间。突然记起,当初写自动化备份脚本的时候,忘记了定期删除功能,从1月份到6月份,数据库备份文件已到41GB。
3.问题处理
发现问题后,及时删除备份目录下过时的文件,只留下最近7天数据库备份内容。
[root@myprod mybackup]# rm -rf myodoo_20210{1..5}*
[root@myprod mybackup]
# ll
[root@myprod mybackup]# rm -rf myodoo_202105{01..20}*
[root@myprod mybackup]
# ll -h 总用量 4.0G -rw-r--r-- 1 root root 349M 5月 21 01:45 myodoo_20210521_014502.sql -rw-r--r-- 1 root root 351M 5月 22 01:45 myodoo_20210522_014501.sql -rw-r--r-- 1 root root 353M 5月 23 01:45 myodoo_20210523_014501.sql -rw-r--r-- 1 root root 354M 5月 24 01:45 myodoo_20210524_014502.sql -rw-r--r-- 1 root root 354M 5月 25 01:45 myodoo_20210525_014501.sql -rw-r--r-- 1 root root 355M 5月 26 01:45 myodoo_20210526_014501.sql -rw-r--r-- 1 root root 357M 5月 27 01:45 myodoo_20210527_014501.sql -rw-r--r-- 1 root root 358M 5月 28 01:45 myodoo_20210528_014501.sql -rw-r--r-- 1 root root 361M 5月 29 01:45 myodoo_20210529_014501.sql -rw-r--r-- 1 root root 363M 5月 30 01:45 myodoo_20210530_014501.sql -rw-r--r-- 1 root root 362M 5月 31 01:45 myodoo_20210531_014501.sql -rw-r--r-- 1 root root 137M 6月 1 01:45 myodoo_20210601_014501.sql
[root@myprod mybackup]
#
删除后,也可以用du查看一下:
[root@myprod odoo]# du -sh mybackup/
4.0G mybackup/
[root@myprod odoo]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root xfs 50G 13G 38G 25% /
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 92K 3.9G 1% /dev/shm
tmpfs tmpfs 3.9G 426M 3.5G 11% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 xfs 1014M 173M 842M 17% /boot
/dev/mapper/cl-home xfs 42G 1.2G 40G 3% /home
tmpfs tmpfs 783M 16K 783M 1% /run/user/42
tmpfs tmpfs 783M 0 783M 0% /run/user/0
[root@myprod odoo]#
清理后,已用空间由100%变为25%,再次登录服务器,问题消失。
4.Linux中{}的使用补充
{1,3,5} == 1 3 5
{1..5} == 1 2 3 4 5
{a..e} == a b c d e
{A..z}
{1..50..2}
{1..50..3}
{1..50..4}
{1..50..5}
组合用法
file{1..5} == file1 file2 file3 file4 file5
file{1..2}.{txt,log} == file1.txt file1.log file2.txt file2.log