[内容] Linux 内存机制

正文:

内容一:Linux 显示内存的命令

# free

或者:

# top

内容二:Linux 内存各项指标和机制

2.1 top 命令显示的 Linux 内存各项指标和机制 (虚拟内存和物理内存之间的机制)

1) VIRT 虚拟内存使用的大小,应用申请的内存量
2) RES 物理内存使用的大小,虚拟内存映射到物理内存的内存量,也就是真实占用的内存量
3) %MEM 物理内存占用总内存的百分比,也就是真实占用的内存比


补充:
输入 top 命令以后,在显示的指标中, VIRT 是指虚拟内存占用率,RES 是指物理内存占用率。
应用使用内存时第 1 步会先申请虚拟内存。在拥有了虚拟机内存以后,只有当需要的时候才会将虚拟内存应用到物理内存。而只有当物理内存被应用了以后才会被消耗。
虚拟内存包含所有的代码、数据和已经被换出去的共享库加号页。虚拟内存同时也包含被分配但是还没有被使用的页,处于此状态的页映射到了内核的 “Zero Page” 所以其不会消耗任何内存。
真实内存占用率应该是检查物理内存的占用率。

2.2 free 命令显示的 Linux 内存各项指标和机制 (物理内存中 free 指标、buffers 指标、cached 指标和 available 指标之间的机制)

1) total 内存的总大小
2) used 正在被使用的内存大小
3) free 表示完全没有被使用的物理内存大小
4) shared 正在被多个进程共享的内存大小
5) buffers 被内核用作块缓冲区 (buffers) 的大小。这些数据暂时存储在内存中,用于提升系统性能,当再次使用时可以在内存中被快速调用。buffers (buffer page) 代表块设备 (硬盘等设备) 所占用的缓存页,对应从硬盘中直接获取的数据,处于内存和硬盘之间,由内核使用 (当 free 状态的内存不够时,它的部分空间会自动释放出来,我们也可以手动释放出它的部分空间来)
6) cached 被内核用作文件系统缓存 (cache) 的大小。这些数据暂时存储在内存中,用于提升系统性能,当再次使用时可以在内存中被快速调用。cached (cache page) 代表普通文件数据 (硬盘里的数据) 所占用的缓存页,对应 vfs 页缓冲层的数据,处于内存和 CPU (处理器) 之间,由应用程序使用 (当 free 状态的内存不够时,它的部分空间会自动释放出来,我们也可以手动释放出它的部分空间来)
7) available = free + buffers (部分空间) + cached (部分空间),也就是估算出来的真实的内存可使用量


补充:释放处于 buffers 和 cached 状态内存的方法

1) 释放 page cache:

# echo 1 > /proc/sys/vm/drop_caches

2) 释放 dentries 和 inodes:

# echo 2 > /proc/sys/vm/drop_caches

3) 同时释放 pagecache、dentries 和 inodes:

# echo 3 > /proc/sys/vm/drop_caches

2.3 free 命令的 Mem 行和 Swap 行的机制 (物理内存和 Swap 内存 (交换内存) 之间的机制)

2.3.1 Linux 内存的种类

1) Linux 物理内存:系统的真实内存,速度快 (也就是 free 命令中显示的第 1 行)
2) Linux Swap 内存 (交换内存):使用硬盘作为临时的内存的空间,速度慢 (也就是 free 命令中显示的第 2 行)

2.3.2 Swap 内存 (交换内存) 被使用的条件

1) Linux 内核会周期性把内存中不常调用的匿名页和共享内存交换至 Swap 内存 (交换内存) 里。即使现在 Linux 系统的物理内存有剩余空间
2) 当系统的内存不足时,系统会把匿名页和共享内存交换至 Swap 内存 (交换内存) 里

内容四:查看那些内存可以交换至 Swap 内存 (交换内存) 以及哪些内存可以被释放

# cat /proc/meminfo 
MemTotal:       65185544 kB
MemFree:        42285372 kB
MemAvailable:   57893528 kB
Buffers:            1656 kB
Cached:         16157600 kB
SwapCached:            0 kB
Active:          4505604 kB
Inactive:       17856228 kB
Active(anon):    1859740 kB
Inactive(anon):  4353236 kB
Active(file):    2645864 kB
Inactive(file): 13502992 kB
Unevictable:          16 kB
Mlocked:              16 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Zswap:                 0 kB
Zswapped:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:       6190160 kB
Mapped:           130544 kB
Shmem:             10400 kB
KReclaimable:     100636 kB
Slab:             234788 kB
SReclaimable:     100636 kB
SUnreclaim:       134152 kB
KernelStack:        8096 kB
PageTables:        26504 kB
SecPageTables:       696 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    32592772 kB
Committed_AS:   13920568 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       58476 kB
VmallocChunk:          0 kB
Percpu:            14464 kB
HardwareCorrupted:     0 kB
AnonHugePages:   5797888 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
Unaccepted:            0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      284800 kB
DirectMap2M:    14784512 kB
DirectMap1G:    51380224 kB


补充:
1) Active(anon) 经常被使用的内存
2) Inactive(anon) 没有被经常使用的内存,也是 Linux 系统可以从物理内存交换至交换分区里的内存
3) Active(file) 经常被使用的页缓存内存
4) Inactive(file) 没有被经常使用的页缓存内存,也是 buffers/cached 中可以被系统回收的内存

参考文献:

https://access.redhat.com/solutions/296313

[命令] Linux 命令 ipmitool (管理服务器硬件)(转载)

ipmitool安装,常用指令

IPMI: Intelligent Platform Management Interface
1.下载地址:

https://sourceforge.net/projects/ipmitool/
2.安装步骤

a. tar -xvf ipmitool-1.8.18.tar.bz2
b. cd ipmitool-1.8.18
c. ./configure
d. make
e.make install
f.
modprobe ipmi_si
modprobe ipmi_devintf
modprobe ipmi_msghandler
安装成功(实测Centos7.4)
3.常用指令

    远程电源控制类 远程电源控制类
    Ipmitool -I lanplus –H 10.32.228.111 –U username –P Passwordchassis power off
    Ipmitool -I lanplus –H 10.32.228.111 –U username –P Passwordchassis power on
    Ipmitool -I lanplus –H 10.32.228.111 –U username –P Passwordchassis power reset
    Ipmitool -I lanplus –H 10.32.228.111 –U username –P Passwordchassis power cycle
    (注意power cycle 和power reset的区别在于前者从掉电到上电有1秒钟的间隔,而后者是很快上电)
    读取系统状态类
    Ipmitool sensor list  显示系统所有传感器列表
    Ipmitool fru list   显示系统所有现场可替代器件的列表
    Ipmitool sdr list   显示系统所有SDRRepository设备列表 
    Ipmitool pef list   显示系统平台时间过滤的列表
    3 系统日志类
    Ipmitool sel elist   显示所有系统事件日志
    Ipmitool sel clear   删除所有系统时间日志
    Ipmitool sel delete ID 删除第ID条SEL
    Ipmitool sel time get  显示当前BMC的时间
    Ipmitool sel time set XXX 设置当前BMC的时间
    启动设置类
    Ipmitool chassis bootdev bios 重启后停在BIOS 菜单
    Ipmitool chassis bootdev pxe 重启后从PXE启动
    系统相关的命令
    Ipmitool mc info 显示BMC版本信息
    Ipmitool bmc reset cold BMC 热启动
    Ipmitool bmc reset warmBMC冷启动
    网络接口相关命令
    Ipmitool lan print 1 显示channel1的网络配置信息
    Ipmitool lan set 1ipaddr 10.32.2.2 设置channel1的IP地址
    Ipmitool lan set 1 netmask 255.255.0.0 设置channel1的netmask
    Ipmitool lan set 4 defgw ipaddr255.255.0.254 设置channel4的网关
    Ipmitool lan set 2 defgw macaddr  设置channel2的网关mac address
    Ipmitool lan set 2 ipsrc dhcp 设置channel2的ip 源在DHCP
    Ipmitool lan set 3 ipsrc static 设置channel2的ip是静态获得的
    通道相关命令
    Ipmitool channel info 显示系统默认channel
    Ipmitool channel authcap channel-number privilege  修改通道的优先级别
    Ipmitool channel getaccess channel-number user-id 读取用户在通道上的权限
    Ipmitool channel setacccess channel-number user-id callin=on ipmi=on link=onprivilege=5 // 设置用户在通道上的权限
    看门狗相关命令
    Ipmitool mc watchdog get 读取当前看门狗的设置
    Ipmitool watchdog off   关掉看门狗
    Ipmitool watchdog reset   在最近设置的计数器的基础上重启看门狗
    用户管理相关命令
    Ipmitool user list chan-id 显示某通道上的所有用户
    Ipmitool set password [] 修改某用户的密码
    Ipmitool disable   禁止掉某用户
    ipmitool enable   使能某用户
    ipmitool priv [] 修改某用户在某通道上的权限
    ipmitool test <16|20>[<password]> 测试用户
————————————————
版权声明:本文为CSDN博主「Rudy,Zhao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40343504/article/details/82664389

注明:所有转载内容皆直接从被转载文章网页的标题和内容的文本中复制而来

CC 4.0 BY-SA 版权协议网址:https://creativecommons.org/licenses/by-sa/4.0/deed.z

[步骤] Linux 光纤号的显示

步骤一:显示有哪些光纤号

# lspci | grep -i fibre

步骤二:显示光纤号有哪些配置文件

# ls /sys/class/fc_host/
host1  host2  host3  host4

步骤三:显示光纤号配置文件里对应 FC HBA 卡的 WWN 信息

# cat /sys/class/fc_host/host[1-4]/port_name

步骤四:显示光纤的状态

4.1 光纤正常在线的情况

# cat /sys/class/fc_host/host5/port_state
online

4.2 光纤不正常或者不在线的情况

# cat /sys/class/fc_host/host7/port_state
linkdown

[命令] Linux 命令 nmcli (网络管理)

内容一:整个网络的管理

1.1 开启整个网络

# nmcli network on

或者:

# nmcli net on

1.2 关闭整个网络

# nmcli network off

或者:

# nmcli net off

内容二:管理网络设备

2.1 显示网络设备的信息

2.1.1 显示所有网络设备
# nmcli connection show

或者:

# nmcli conneciton

或者:

# nmcli con show

或者:

# nmcli con

或者:

# nmcli c s
2.1.2 显示被激活的网络设备
# nmcli connection show --active

或者:

# nmcli conneciton --active

或者:

# nmcli con show --active

或者:

# nmcli con --active

2.2 显示某一个网络设备是否激活

# nmcli device connect <network device name>

或者:

# nmcli dev con <network device name>

2.3 显示网络设备的联通状态

# nmcli device status

或者:

# nmcli dev status

2.4 添加网络设备

# nmcli connection add con-name <custom network card alias> ifname <network device name> type ethernet

(补充:这里 con-name 是指要指定一个自定义的网卡别名,ifname 是指要指明网络设备名)

或者:

# nmcli con add con-name <custom network card alias> ifname <network device name> type ethernet

(补充:这里 con-name 是指要指定一个自定义的网卡别名,ifname 是指要指明网络设备名)

2.5 删除网络设备 (只是删除里面的 IP 地址)

# nmcli connection delete <custom network card alias>

或者:

# nmcli con del <custom network card alias>

2.6 激活一个网络设备

# nmcli device connect <network device name>

或者:

# nmcli dev con <network device name>

2.7 取消激活一个网络设备

# nmcli device disconnect <network device name>

或者:

# nmcli dev dis <network device name>

内容三:IP 地址管理

3.1 设置 IP 地址

3.1.1 设置 IP 地址的格式
# nmcli connection modify <custom network card alias> ipv4.address <IP address>/<subnet mask> ipv4.gateway <gateway IP address> ipv4.dns <DNS IP address> autoconnect yes

或者:

# nmcli connection modify <custom network card alias> ipv4.address <IP address>/<subnet mask> ipv4.gateway <gateway IP address> ipv4.dns <DNS IP address 1>,<DNS IP address 2> autoconnect yes

或者:

# nmcli connection modify <custom network card alias> ipv4.address <IP address>/<subnet mask> ipv4.gateway <gateway IP address> ipv4.dns "<DNS IP address 1>,<DNS IP address 2>" autoconnect yes
3.1.2 设置 IP 地址的案例
# nmcli connection modify eth0 ipv4.address 192.168.1.1/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.254 autoconnect yes

(补充:这里以添加给 eth0 网卡添加静态 IP 地址 192.168.1.1/24,网关 IP 地址 192.168.1.1,DNS 192.168.1.254 并开机自启为例)

或者:

# nmcli connection modify eth0 ipv4.address 192.168.1.1/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.254,192.168.1.253 autoconnect yes

(补充:这里以添加给 eth0 网卡添加静态 IP 地址 192.168.1.1/24,网关 IP 地址 192.168.1.1,DNS 192.168.1.254 和 192.168.1.253 并开机自启为例)

或者:

# nmcli connection modify eth0 ipv4.address 192.168.1.1/24 ipv4.gateway 192.168.1.1 ipv4.dns "192.168.1.254,192.168.1.253" autoconnect yes

(补充:这里以添加给 eth0 网卡添加静态 IP 地址 192.168.1.1/24,网关 IP 地址 192.168.1.1,DNS 192.168.1.254 和 192.168.1.253 并开机自启为例)

3.2 让 IP 地址生效

3.2.1 让 IP 地址生效的格式
# nmcli connection up <custom network card alias>
3.2.2 让 IP 地址生效的案例
# nmcli connection down eth0

3.3 添加或删除额外的 IP 地址

3.3.1 添加额外的 IP 地址
3.3.1.1 添加额外的 IP 地址的格式
# nmcli connection modify <custom network card alias> +ipv4.address <IP address>/<subnet mask>
3.3.1.2 添加额外的 IP 地址的案例
# nmcli connection modify eth0 +ipv4.addresses 192.168.0.100/24

(补充:这里以添加给 eth0 网卡额外添加 IP 地址 192.168.1.1/24 为例)

3.3.2 删除额外的 IP 地址
3.3.2.1 删除额外的 IP 地址的格式
# nmcli connection modify <custom network card alias> -ipv4.address <IP address>/<subnet mask>
3.3.2.2 删除额外的 IP 地址的案例
# nmcli connection modify eth0 -ipv4.addresses 192.168.0.100/24

(补充:这里以删除 eth0 网卡上的额外 IP 地址 192.168.1.1/24 为例)

3.4 添加或删除网关的 IP 地址 (添加或删除网关)

3.4.1 添加网关的 IP 地址 (添加网关)
3.4.1.1 添加网关的 IP 地址 (添加网关)
3.4.1.1.1 添加网关 IP 地址的格式 (添加网关)
# nmcli connection modify <custom network card alias> ipv4.gateway <gateway IP address>
3.4.1.1.2 添加网关 IP 地址的案例 (添加网关)
# nmcli connection modify eth0 ipv4.gateway 192.168.1.1

(补充:这里以给 eth0 网卡添加网关 IP 地址 192.168.1.1 为例)

3.4.1.2 让添加的网关 IP 地址生效 (添加网关)
3.4.1.2.1 让添加的网关 IP 地址生效的格式 (添加网关)
# nmcli connection up <custom network card alias>
3.4.1.2.2 让添加的网关 IP 地址生效的案例 (添加网关)
# nmcli connection up eth0

(补充:这里以让给 eth0 网卡添加的网关 IP 生效为例)

3.4.2 删除网关的 IP 地址 (删除网关)
3.4.2.1 删除网关的 IP 地址 (删除网关)
3.4.2.1.1 删除网关的 IP 地址格式 (删除网关)
# nmcli connection modify <custom network card alias> ipv4.gateway ""
3.4.2.1.2 删除网关的 IP 地址的案例 (删除网关)
# nmcli connection modify eth0 ipv4.gateway ""

(补充:这里以给 eth0 网卡删除网关的 IP 地址 192.168.1.1 为例)

3.4.2.2 让删除网关的操作生效 (删除网关)
3.4.2.2.1 让删除网关的操作生效的格式 (删除网关)
# nmcli connection up <custom network card alias>
3.4.2.2.2 让删除网关的操作生效的案例 (删除网关)
# nmcli connection up eth0

(补充:这里以让 eth0 网卡删除网关的操作生效为例)

内容四:路由管理

4.1 添加路由

4.1.1 添加路由的格式
# nmcli con mod <custom network card alias> ipv4.routes "<network segment> <gateway IP address>"
4.1.2 添加路由的案例
# nmcli con mod eth0 ipv4.routes "192.168.2.0/24 192.168.3.1"

(补充:这里以给 eth0 网卡添加 192.168.2.0/24 通过 192.168.3.1 的路由为例)

(注意:以后指向 192.168.2.0/24 的流量都会通过网卡 eth0)

4.2 让路由生效

4.2.1 让路由生效的格式
# nmcli connection up <custom network card alias>
4.2.2 让路由生效的案例
# nmcli connection up eth0

(补充:这里以让 eth0 网卡生效为例)

内容五:IPv6 管理

5.1 关闭 IPv6

5.1.1 关闭 IPv6 的格式
# nmcli connection modify <custom network card alias> ipv6.method disabled
5.1.2 关闭 IPv6 的案例
# nmcli connection modify eth0 ipv6.method disabled

(补充:这里关闭 eth0 网卡的 IPv6 为例)

5.2 开启 IPv6

5.2.1 开启 IPv6 的格式
# nmcli connection modify <custom network card alias> ipv6.method enabled
5.2.2 开启 IPv6 的案例
# nmcli connection modify eth0 ipv6.method enabled

(补充:这里开启 eth0 网卡的 IPv6 为例)