linux quota磁盘限额,引发的rename系统调用 errno:18
起因:
log4j日志滾動失敗,debug發(fā)現(xiàn)jvm調(diào)用native方法rename失敗,也就是系統(tǒng)調(diào)用rename失敗。
自己寫c程序系統(tǒng)調(diào)用rename,證實確實是這個問題。
日志打在容器里,日志目錄通過docker掛載到宿主機上,而對日志目錄設(shè)置了quota磁盤限額。掛載目錄下的文件rename會失敗,而它的子目錄下的文件rename不會失敗。
幾經(jīng)排查定位到quata設(shè)置引起的,在容器更新或重啟后,目錄的quotaId和文件的quotaId就會對不上。
而Invalid cross-device link 原意就是,文件在不同的文件系統(tǒng)下,rename系統(tǒng)調(diào)用失敗報這個錯誤碼。
查詢quota
#/usr/bin/lsattr -p -d /home/admin/logs/antdnsfilter/
設(shè)置quota
/usr/bin/chattr -p 16777675 +P /home/admin/logs/antdnsfilter/
取消quota
/usr/bin/chattr -p 0 -P /home/admin/logs/antdnsfilter/
總結(jié)
以上是生活随笔為你收集整理的linux quota磁盘限额,引发的rename系统调用 errno:18的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教你如何把浏览器变为浏览“神器”
- 下一篇: 30分钟彻底弄懂flex布局