以开源世界基石之姿存在的Linux操作系统,其设计哲学以及实现机制,对现代计算生态施加着深刻的影响。知悉其核心原理,不但能够提升系统管理能力,而且还能助力我们搭建更为稳定的服务架构。现在阐述的这篇文章,会围绕进程管理、文件系统、内存机制等这些核心维度,去剖析Linux借助简洁设计来达成复杂功能的方式 。

Linux进程管理如何实现多任务调度

Linux借助进程描述符(task_struct)精准追踪每个进程状态,调度器依据完全公平调度算法(CFS)动态分配CPU时间片,在负载均衡场景里linux之家,内核会把任务从繁忙CPU迁移至空闲核心,这般设计令单核树莓派也能够流畅运行数十个并发进程,实际监控之际可运用pidstat -u 1命令观察进程的实时调度延迟,结合/proc/标点齐全。/schedstat文件分析历史调度数据。

linux操作系统原理及应用_操作系统及linux应用_linux操作系统原理及应用

系统调用fork()借助写时复制技术来优化进程创建开销,线程实现部分在现代内核方面采用NPTL模式。等容器技术兴起以后,cgroups子系统凭借cpu.shares参数达成对进程组的资源配额,这样的机制使得Kubernetes能够精准控制Pod间的CPU争用。经由echo 1000>/cpu/cgroup.procs就能够把进程归入控制组,实际进行数据库部署时建议单独去分配控制组以避免雪崩效应。

<b>Linux文件系统怎样保证数据安全</b>

通过日志机制保障元数据一致性的Ext4文件系统,日志块会先于数据块被写入磁盘,当出现意外断电情况时,fsck只需回放日志而非进行全盘扫描,促使TB级文件系统恢复时间从小时级被缩短到分钟级,在实际运维当中,要使用dumpe2fs /dev/sda1 | grep features来确认启用了has_journal特性。

linux操作系统原理及应用_操作系统及linux应用_linux操作系统原理及应用

用mdadm工具构建软RAID的磁盘阵列时,配置关键数据的RAID10阵列乃是建议之举。LVM快照功能借由写时复制技术实现零停机备份这一情况而言,快照满溢的状况会致使镜像断裂,此点需要留意。在生产环境当中,设置监控告警应成为必要操作,当lvs --units m所显示的快照使用率超出80%的时候,要即刻进行扩容操作或者删除快照。

<b>Linux内存管理有哪些优化策略</b>

管理物理页帧时,内核运用伙伴系统,借助slab分配器来提升小对象分配效率。内存压力增大之际,kswapd守护进程会开启页面回收,此过程中linux操作系统版本,匿名页优先被写入swap区域,文件缓存页直接被丢弃。于数据库服务器里,借助sysctl -w vm.swappiness=10能够降低交换倾向linux操作系统原理及应用,以此防止I/O瓶颈。

操作系统及linux应用_linux操作系统原理及应用_linux操作系统原理及应用

透明大页(THP)功能把2MB连续物理页映射成单个页表项,能够降低TLB缺失率。然而在内存碎片化十分严重之时,要借助echo never > /sys/kernel/mm/transparent_hugepage/enabled来禁用该项特性。监控内存碎片可运用cat /proc/buddyinfo去观察各阶空闲页分布,在高阶连续页不够用时得考虑重启服务。

<b>Linux网络协议栈如何提升传输效率</b>

起于Linux 3.5内核便予以支持的TCP Fast Open特性,准许于三次握手之际携带数据负载。借由设置sysctl -w net.ipv4.tcp_fastopen=3,能够同时启用客户端以及服务端功能,经实际测试可让HTTP首包延迟降低30%。与TSO/GRO等网卡卸载技术相配合,万兆网卡能够达成线速转发。

网络命名空间达成了协议栈的隔离,这构成了Docker网络的基石,一旦容器有直连物理网络的需求,MACVLAN驱动会创建虚拟网卡并将其映射到物理接口,从而规避了传统桥接流程中出现的性能损耗,在对网络问题实施排查时,ss -tlnp相较于netstat能够展示更为详尽的socket状态信息,再结合tcpdump -i eth0 tcp and port 80便能够精确地把报文丢失的环节确定下来。

linux操作系统原理及应用_操作系统及linux应用_linux操作系统原理及应用

<b>Linux安全机制怎样防御系统攻击</b>

SELinux借助强制访问控制模型对进程权限予以限制,其策略规则是基于类型强制架构的。在Apache服务器配置里,能够把文档根目录标签设定为httpd_sys_content_t,就算攻击者上传webshell,也不能够执行系统命令。日常审计的时候应当利用ausearch -m avc去检查权限拒绝日志。

用于将root权限划分成30种彼此独立能力的能力机制(Capabilities)实例linux操作系统原理及应用,在开展Nginx服务部署操作之际,仅需赋予CAP_NET_BIND_SERVICE能力,便能够实现对低位端口的绑定功效。最新内核所支持的BPF沙箱具备可针对系统调用实施动态过滤的特性,借助seccomp-tools dump。<pid>可验证进程受限情况。

Linux性能监控需要关注哪些指标

linux操作系统原理及应用_操作系统及linux应用_linux操作系统原理及应用

要关注系统中的磁盘I/O是否成为瓶颈,就要通过iostat -x 1查看,若显示的%util超过80%,并且await持续增高,那就需立刻检查存储子系统。而对于系统整体负载,要同时留意CPU就绪队列长度,也就是sar -q 1输出里的runq-sz,以及不可中断进程数。另外,内存瓶颈可借助vmstat 1的si/so字段发现早期交换迹象。

应用级的监控,需要同perf工具相结合起来,进而展开火焰图的分析工作,执行perf record -F 99 -g -- sleep 10此操作,能够采集调用栈的样本情况。针对偶发的性能方面的问题,SystemTap动态插桩技术,能够在不重启服务的情形下,注入探针,比如说跟踪文件打开延迟的脚本,仅仅需要20行代码,便能够达成。

于您那段Linux运维的经历当中,可存在过某一个性能问题致您长时间思索却始终想不明白的情况吗?欢迎于评论区去分享您那次排查的经历,要是本文对您产生了启发,请毫不吝啬地点赞予以支持!

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复