无法交换但有足够的物理内存可用

Dom*_*Dom 7 linux memory centos swap virtual-memory

我在关闭交换时遇到了一个奇怪的问题。服务器有 192 GB 内存,154 GB 可用内存。

它是一个运行多个 Linux KVM 虚拟机的管理程序。

当尝试:

# swapoff -a
swapoff: /dev/sda2: swapoff failed: Cannot allocate memory
Run Code Online (Sandbox Code Playgroud)

但内存是免费的:

# cat /proc/meminfo
MemTotal:       197805748 kB
MemFree:        162274264 kB
MemAvailable:   162388912 kB
Buffers:             432 kB
Cached:           353524 kB
SwapCached:       221828 kB
Active:         28253440 kB
Inactive:        5349056 kB
Active(anon):   28159204 kB
Inactive(anon):  5289320 kB
Active(file):      94236 kB
Inactive(file):    59736 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:      124999676 kB
SwapFree:       124534724 kB
Dirty:               796 kB
Writeback:             0 kB
AnonPages:      33063024 kB
Mapped:            59236 kB
Shmem:            199984 kB
Slab:             313264 kB
SReclaimable:     206596 kB
SUnreclaim:       106668 kB
KernelStack:       10784 kB
PageTables:        94012 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    223902548 kB
Committed_AS:   43094824 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      794656 kB
VmallocChunk:   34358685284 kB
HardwareCorrupted:     0 kB
AnonHugePages:  32186368 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      136564 kB
DirectMap2M:     8136704 kB
DirectMap1G:    195035136 kB
Run Code Online (Sandbox Code Playgroud)

有谁知道可能是什么原因?

小智 2

尝试一下:

sync ; echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)

进而

swapoff
Run Code Online (Sandbox Code Playgroud)

或者临时添加新的交换文件