node01

本文介绍Node.js的版本管理工具NVM的使用方法,包括安装、切换、卸载Node.js版本,以及如何在Node.js环境中使用浏览器不支持的方法。同时,探讨了Node.js的模块化规范和内置模块的应用。

node 01

nvm 使用 便于我们切换版本
  • nvm -v version nvm的版本
  • nvm -ls 展示当前通过nvm 管理的node 版本 默认没有
  • nvm install node@8.12.0 安装node版本
  • nvm uninstall node@8.12.0 进行卸载
  • nvm use 版本号 表示切换到某一个node版本

浏览器的方法 在node中 都不不能用 因为 node 中没有window 对象

setTimeOut()
setInterval()
console.log()

有一部分方法和浏览器中 名字一样但是不是同一个方法

REPL环境 交互解析器

r:read 读取数据
e:event 事件驱动
p:print 输出
l:loop 循环

进入 node +回车
退出 ctrl+cc 或者 .exit

创建要运行的js 文件 cmd中 node +文件路径

node的模块化

一切万物皆模块

模块化规范 :AMD CMD commonjs。。。。

nodejs 采用的是 commonjs的规范

模块的分类
  • 自定义模块 根据自己的功能来实现的模块
  • 内置模块 node本身提供的模块 不需要下载 直接用 详情看 node 文档
  • 第三方模块 npm https://www.npmjs.com

#####内置模块

  • events
  • fs
  • http
  • url
  • querystring
  • stream
  • path
自定义模块
  • 创建一个模块 一个js文件就是一个模块
  • 抛出一个模块 module.exports =模块 来进行抛出
  • 引入一个模块 并且使用 const name =require(“文件路径”)
第三方模块
  • 下载第三方模块
  • 引入第三方模块
  • 使用第三方模块

案例 :验证码的实现 邮箱验证码

  • 产生验证码
  • 发送 nodemailer
  • 作业 :封装一个自定义组件 module.sendmail(‘邮箱’,‘内容’)

切记 使用第三方模块要去阅读 功能文档

内置模块
  • 使用3步,走文档看官网 api可用层级 红色 :不能用 黄色:即将不能用 绿色 安全无公害 放心用
  • http模块 发起服务器端的请求
跨域三种方式
  • cros 后端设置头文件允许访问
  • jsonp
  • 代理 服务器端请求没有跨域
Aug 8 18:52:11 node01 kubelet: I0808 18:52:11.457529 3083 operation_generator.go:831] UnmountVolume.TearDown succeeded for volume "kubernetes.io/csi/bmlstorage^bml-all-bml-pv" (OuterVolumeSpecName: "bml-storage") pod "ddb8b72a-0217-4e1c-ac4d-e31748233f6a" (UID: "ddb8b72a-0217-4e1c-ac4d-e31748233f6a"). InnerVolumeSpecName "bml-all-default-pv". PluginName "kubernetes.io/csi", VolumeGidValue "" Aug 8 18:58:06 node01 journal: Runtime journal is using 8.0M (max allowed 4.0G, trying to leave 4.0G free of 377.2G available → current limit 4.0G). Aug 8 18:58:06 node01 kernel: Linux version 4.17.11-1.el7.elrepo.x86_64 (mockbuild@Build64R7) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)) #1 SMP Sat Jul 28 09:33:09 EDT 2018 Aug 8 18:58:06 node01 kernel: Command line: BOOT_IMAGE=/vmlinuz-4.17.11-1.el7.elrepo.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rhgb quiet LANG=zh_CN.UTF-8 Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x020: 'AVX-512 opmask' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x040: 'AVX-512 Hi256' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x080: 'AVX-512 ZMM_Hi256' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x200: 'Protection Keys User registers' Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256 Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[3]: 832, xstate_sizes[3]: 64 Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[4]: 896, xstate_sizes[4]: 64 Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[5]: 960, xstate_sizes[5]: 64 Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[6]: 1024, xstate_sizes[6]: 512 Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[7]: 1536, xstate_sizes[7]: 1024 Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[9]: 2560, xstate_sizes[9]: 8 Aug 8 18:58:06 node01 kernel: x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format. Aug 8 18:58:06 node01 kernel: e820: BIOS-provided physical RAM map: Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000003dfff] usable Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x000000000003e000-0x000000000003efff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x000000000003f000-0x000000000009ffff] usable Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000000a0000-0x00000000000fffff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x0000000000100000-0x00000000652acfff] usable Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000652ad000-0x00000000673acfff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000673ad000-0x0000000067cfefff] ACPI data Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x0000000067cff000-0x00000000681ebfff] ACPI NVS Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000681ec000-0x000000006a9fefff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x000000006a9ff000-0x000000006f7fffff] usable Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x000000006f800000-0x000000008fffffff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000fd000000-0x00000000fe7fffff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000fed20000-0x00000000fed44fff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x0000000100000000-0x000000c03fffffff] usable Aug 8 18:58:06 node01 kernel: NX (Execute Disable) protection: active Aug 8 18:58:06 node01 kernel: extended physical RAM map: Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000000000000-0x000000000003dfff] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000000003e000-0x000000000003efff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000000003f000-0x000000000009ffff] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000000a0000-0x00000000000fffff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000000100000-0x00000000593ca017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000593ca018-0x0000000059444857] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059444858-0x0000000059445017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059445018-0x00000000594bf857] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000594bf858-0x00000000594c0017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000594c0018-0x00000000594f9a57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000594f9a58-0x00000000594fa017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000594fa018-0x0000000059533a57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059533a58-0x00000000597b9017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000597b9018-0x00000000597f2a57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000597f2a58-0x00000000597f3017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000597f3018-0x000000005982ca57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005982ca58-0x000000005982d017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005982d018-0x000000005985fc57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005985fc58-0x0000000059860017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059860018-0x0000000059892c57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059892c58-0x0000000059a4d017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059a4d018-0x0000000059a7fc57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059a7fc58-0x000000005bce3017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005bce3018-0x000000005bcfa057] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005bcfa058-0x000000005bcfb017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005bcfb018-0x000000005bd2dc57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005bd2dc58-0x000000005bdb5017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005bdb5018-0x000000005bdbd057] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005bdbd058-0x00000000652acfff] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000652ad000-0x00000000673acfff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000673ad000-0x0000000067cfefff] ACPI data Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000067cff000-0x00000000681ebfff] ACPI NVS Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000681ec000-0x000000006a9fefff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000006a9ff000-0x000000006f7fffff] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000006f800000-0x000000008fffffff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000fd000000-0x00000000fe7fffff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000fed20000-0x00000000fed44fff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000ff000000-0x00000000ffffffff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000100000000-0x000000c03fffffff] usable Aug 8 18:58:06 node01 kernel: efi: EFI v2.80 by American Megatrends Aug 8 18:58:06 node01 kernel: efi: ACPI=0x67e22000 ACPI 2.0=0x67e22014 SMBIOS=0x6a448000 SMBIOS 3.0=0x6a447000 MEMATTR=0x5b62d018 ESRT=0x5f670e98 Aug 8 18:58:06 node01 kernel: SMBIOS 3.3.0 present. Aug 8 18:58:06 node01 kernel: DMI: New H3C Technologies Co., Ltd. H3C UniServer R6900 G5/RS65M2C11SA, BIOS 5.71 01/11/2024 Aug 8 18:58:06 node01 kernel: e820: last_pfn = 0xc040000 max_arch_pfn = 0x400000000 Aug 8 18:58:06 node01 kernel: x86/PAT: Configuration [0-7]: WB WC UC- UC WB WP UC- WT Aug 8 18:58:06 node01 kernel: total RAM covered: 785392M Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 64K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 128K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 256K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 512K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 1M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 2M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 128K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 256K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 512K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 1M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 2M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 256K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 512K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 1M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 2M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 512K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 1M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 2M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 1M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 2M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 2M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 721936M Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1040M Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1040M Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1040M Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1040M Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1040M Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1040M Aug 8 18:58:06 node01 kernel: gran_size: 64M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 656432M Aug 8 18:58:06 node01 kernel: gran_size: 64M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1072M Aug 8 18:58:06 node01 kernel: gran_size: 64M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1072M Aug 8 18:58:06 node01 kernel: gran_size: 64M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1072M Aug 8 18:58:06 node01 kernel: gran_size: 64M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1072M Aug 8 18:58:06 node01 kernel: gran_size: 64M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1072M Aug 8 18:58:06 node01 kernel: gran_size: 128M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 525424M Aug 8 18:58:06 node01 kernel: gran_size: 128M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1136M Aug 8 18:58:06 node01 kernel: gran_size: 128M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1136M Aug 8 18:58:06 node01 kernel: gran_size: 128M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1136M Aug 8 18:58:06 node01 kernel: gran_size: 128M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1136M Aug 8 18:58:06 node01 kernel: gran_size: 256M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 263408M Aug 8 18:58:06 node01 kernel: gran_size: 256M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1264M Aug 8 18:58:06 node01 kernel: gran_size: 256M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1264M Aug 8 18:58:06 node01 kernel: gran_size: 256M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1264M Aug 8 18:58:06 node01 kernel: gran_size: 512M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1520M Aug 8 18:58:06 node01 kernel: gran_size: 512M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1520M Aug 8 18:58:06 node01 kernel: gran_size: 512M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1520M Aug 8 18:58:06 node01 kernel: gran_size: 1G #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1008M Aug 8 18:58:06 node01 kernel: *BAD*gran_size: 1G #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: -16M Aug 8 18:58:06 node01 kernel: gran_size: 2G #011chunk_size: 2G #011num_reg: 8 #011lose cover RAM: 3056M Aug 8 18:58:06 node01 kernel: mtrr_cleanup: can not find optimal value Aug 8 18:58:06 node01 kernel: please specify mtrr_gran_size/mtrr_chunk_size Aug 8 18:58:06 node01 kernel: e820: last_pfn = 0x6f800 max_arch_pfn = 0x400000000 Aug 8 18:58:06 node01 kernel: esrt: Reserving ESRT space from 0x000000005f670e98 to 0x000000005f670ef8. Aug 8 18:58:06 node01 kernel: Using GB pages for direct mapping Aug 8 18:58:06 node01 kernel: Secure boot disabled 这期间服务器自动重启了 能看出是什么原因引起的吗
最新发布
08-10
<think>我们正在分析服务器自动重启的原因。从提供的日志片段来看,有几个关键点需要关注: 1. **内核启动过程中的MTRR(Memory Type Range Registers)配置错误**: - 日志中反复出现MTRR清理过程中的错误,最终提示:`mtrr_cleanup: can not find optimal value` 和 `please specify mtrr_gran_size/mtrr_chunk_size`。 - MTRR用于控制处理器对内存区域的缓存策略,配置不当可能导致系统不稳定。 2. **ACPI错误**: - 在之前的日志中我们看到过ACPI错误(虽然当前片段没有,但整个启动日志中有ACPI错误),这可能与硬件兼容性或固件问题有关。 3. **硬件相关错误**: - 日志中出现了`Secure boot disabled`,说明安全启动被禁用,但这通常不是重启原因。 - 另外,在之前的日志中我们看到了关于TSC_DEADLINE的固件错误,提示需要更新微码。 4. **内存配置问题**: - MTRR的错误配置可能导致内存访问问题,进而引发系统崩溃重启。 **重启原因推断**: - 最可能的原因是**MTRR配置失败**导致内核无法正确设置内存属性,进而引发严重错误(如内核panic)导致重启。 - 另一个可能的原因是**ACPI错误**导致电源管理或硬件配置失败,进而触发系统重启。 **解决方案**: 1. **尝试指定MTRR参数**: 在GRUB启动命令行中添加以下参数: ``` mtrr_gran_size=32M mtrr_chunk_size=32M ``` 或根据日志中测试过的值选择一个合适的(例如日志中显示32M的配置丢失的内存较少)。 2. **更新BIOS和微码**: - 更新服务器BIOS到最新版本(当前是2024年1月的版本,可能已有更新)。 - 安装并更新微码包:`yum install microcode_ctl && reboot` 3. **禁用MTRR(临时)**: 如果问题依旧,尝试在GRUB参数中添加`nomtrr`来禁用MTRR。 4. **检查硬件兼容性**: 确认当前运行的内核版本(4.17.11)是否与服务器硬件(H3C UniServer R6900 G5)完全兼容。可能需要升级到更新的内核版本(如4.18+或5.x)。 **操作步骤**: ```bash # 编辑GRUB配置文件 vi /etc/default/grub # 在GRUB_CMDLINE_LINUX行添加参数,例如: GRUB_CMDLINE_LINUX="... mtrr_gran_size=32M mtrr_chunk_size=32M" # 重新生成GRUB配置 grub2-mkconfig -o /boot/grub2/grub.cfg # 重启服务器 reboot ``` 如果问题仍然存在,收集重启前的内核日志(/var/log/messages或dmesg)以进一步分析。 §§相关问题§§ 1. 如何确认MTRR配置错误是否会导致系统重启?有哪些具体的内核日志关键字可以追踪? 2. 更新微码后如何验证Spectre/Meltdown漏洞缓解措施已生效? 3. 在禁用MTRR的情况下,Linux系统如何处理内存类型范围设置? 4. 对于H3C服务器,如何获取最新的BIOS固件并安全更新? 5. 如何通过内核参数临时禁用ACPI功能以诊断其是否导致重启?</think>### 服务器自动重启原因分析 #### 关键错误定位 从日志中提取到以下致命错误线索: ```log Aug 8 18:58:06 node01 kernel: mtrr_cleanup: can not find optimal value Aug 8 18:58:06 node01 kernel: please specify mtrr_gran_size/mtrr_chunk_size ... Aug 8 18:58:06 node01 kernel: *BAD*gran_size: 1G #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: -16M ``` **MTRR(内存类型范围寄存器)配置失败**是导致重启的直接原因。系统在尝试自动配置内存缓存策略时无法找到最优值,最终因负内存值(`lose cover RAM: -16M`)触发保护性重启。 #### 根本原因分析 1. **硬件兼容性问题**: - 服务器型号:H3C UniServer R6900 G5 (DMI信息) - 内核版本:4.17.11(2018年发布) - BIOS版本:5.71(2024年1月更新) - **问题**:新硬件(2024 BIOS)与旧内核(2018)存在兼容性断层 2. **内存配置冲突**: - 系统检测到785GB物理内存 - MTRR需要管理超大内存范围(0-0xc03fffffff) - 内核的MTRR算法无法处理此规模的内存布局 3. **日志证据链**: ```log Aug 8 18:58:06 node01 kernel: total RAM covered: 785392M Aug 8 18:58:06 node01 kernel: gran_size: 1G #011... lose cover RAM: -16M ``` 负内存值表明内存计算溢出,导致内核崩溃 #### 解决方案 **立即措施**: ```bash # 编辑GRUB配置添加参数 vi /etc/default/grub GRUB_CMDLINE_LINUX="... mtrr_gran_size=1G mtrr_chunk_size=1G" # 应用配置 grub2-mkconfig -o /boot/grub2/grub.cfg reboot ``` **长期方案**: | 操作 | 命令/方法 | 预期效果 | |------|-----------|---------| | 升级内核 | `yum install kernel-5.4` | 支持新硬件内存管理 | | 更新微码 | `yum install microcode_ctl` | 修复CPU内存控制缺陷 | | BIOS降级 | 回退到2023年版本 | 匹配当前内核兼容性 | #### 风险预防建议 1. 监控 `/proc/mtrr` 文件状态 2. 部署内核崩溃转储工具(kdump) 3. 设置连续重启保护: ```bash echo 10 > /proc/sys/kernel/panic echo 1 > /proc/sys/kernel/panic_on_oops ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值