内核crash>>>磁盘空间小 怎么处理
在内存发生panic时,需要把panic的日志保存下来。以方便日后进行分析。
一般主机为x86的时候,panic 使用 kdump保存log。由于它使用占用大量内存和硬盘。所以当磁盘空间不够时,就会遇到问题。
所以此时使用crashlog.
carshlog
在内核中有一个叫crashlog的东东,它完成如下操作
操作如下
1.在linux内核启动时,保留一64K内存。用于记录panic日志。
2.使用kmsg_dump_register,注册一个回调函数,当发生panic,oops时,把日志记到保留内存。
3.linux内核上电后,把保留内存的内容写入文件
kmsg_dump是oops时进入kmsg_dump的入口。由panic,die,oops_exit等函数调用。它会一一调用回调函数。
每一个回调函数都会用到kmsg_dump_get_buffer---将当前内存log 写入
oid __meminit crashlog_init_memblock(phys_addr_t addr, phys_addr_t size) { if (crashlog_addr) return; addr = CRASHLOG_ADDR; if (memblock_reserve(addr, xxxxLOG_SIZE)) { printk("C crashlog failed to allocate ramat address 0x%lx\n", (unsigned long) addr); return; } crashlog_addr = addr; } static void crashlog_do_dump(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason) { struct timeval tv; struct module *m; char *buf; size_t len; gettimeofday(&tv); crashlog_printf("Time: %lu.%lu\n", (long)tv.tv_sec, (long)tv.tv_usec); buf = (char *)&crashlog_buf->data[crashlog_buf->len]; kmsg_dump_get_buffer(dumper, true, buf, get_maxlen(), &len); crashlog_buf->len += len; }
copy from https://blog.csdn.net/sunshineywz/article/details/106601116
http代理服务器(3-4-7层代理)-网络事件库公共组件、内核kernel驱动 摄像头驱动 tcpip网络协议栈、netfilter、bridge 好像看过!!!!
但行好事 莫问前程
--身高体重180的胖子