博瑞博客

青春是一个充满活力的季节,即便是我们失去了天使的翅膀,只要我们还有一颗青春的心,那么我们的生活依然能够如阳光般灿烂!......
现在位置:首页 > 服务器 > Linux > 如何为已安装的linux操作系统设置swap分区

如何为已安装的linux操作系统设置swap分区

江湖    Linux    2016-2-1    1127    0评论

在日常应用中,通过上述命令看到交换空间的使用情况为0,那么你就不需要很大的虚拟内存,甚至可以完全不需要另辟硬盘空间作为虚拟内存。那么,万一有一天你需要了呢,难道要重装系统?大可不必,在Linux下虚拟内存不单可以放在单独的交换分区,也可以是一个在正常分区下的交换文件。

---------------------------------------------------------------------

1 查看swap 空间大小(总计):

# free -m 默认单

位为k, -m 单位为M

total used free shared buffers cached

Mem: 377 180 197 0 19 110

-/+ buffers/cache: 50 327

Swap: 572 0 572

2 查看swap 空间(file(s)/partition(s)):

包括 文件 和 分区 的详细信息

# swapon -s

等价于

# cat /proc/swaps

3 添加交换空间

两种选择:添加一个交换分区或添加一个交换文件。推荐你添加一个交换分区;不过,若你没有多少空闲空间可用,则添加交换文件。

3.1 添加一个交换分区

步骤如下:

a 使用fdisk来创建交换分区(假设 /dev/sdb2 是创建的交换分区)

b 使用 mkswap 命令来设置交换分区:

# mkswap /dev/sdb2

c 启用交换分区:

# swapon /dev/sdb2

d 写入/etc/fstab,以便在引导时启用:

/dev/sdb2 swap swap defaults 0 0

3.2 添加一个交换文件

a 创建大小为512M的交换文件:

# dd if=/dev/zero of=/swapfile1 bs=1024k count=512

b 使用 mkswap 命令来设置交换文件:

# mkswap /swapfile1

c 启用交换分区:

# swapon /swapfile1

d 写入/etc/fstab,以便在引导时启用:

/swapfile1 swap swap defaults 0 0

新添了交换分区并启用它之后,请查看 cat /proc/swaps 或 free 命令的输出来确保交换分区已被启用了。

4 删除交换空间:

a 禁用交换分区:

# swapoff /dev/sdb2

b 从 /etc/fstab 中删除项目;

c 使用fdisk或yast工具删除分区。

删除交换文件步骤同上。

--------------------------------------------------------------------------------

# free -m

total used free shared buffers cached

Mem: 377 180 197 0 19 110

-/+ buffers/cache: 50 327

Swap: 572 0 572

Mem 行显示了从系统角度看来内存使用的情况, total是系统可用的内存大小, 数量上等于系统物理内存减去内核保留的内存.

buffers和cached是系统用做缓冲的内存. buffers与某个块设备关联, 包含了文件系统元数据, 并且跟踪了块的变化. cache只包含了文件本身.

-/+ buffers/cache 行则从用户角度显示内存信息, 可用内存从数量上等于mem行used列值减去buffers和cached内存的大小.

因为buffers和cached是操作系统为加快系统运行而设置的, 当用户需要时, 可以只接为用户使用.

top 显示系统运行时的各进程动态、实时的状态(cpu、内存)

top 中有3个列 VIRT RES SHR, 标示了进程使用的内存情况.

VIRT 标识这个进程可以使用的内存总大小, 包括这个进程真实使用的内存, 映射过的文件, 和别的进程共享的内存等.

RES 标识这个这个进程真实占用内存的大小.

SHR 标识可以和别的进程共享的内存和库大小.

vmstat 显示内存的使用情况

这些命令都是从/proc/meminfo中读取内存信息.

关于/proc/meminfo中各行的含意, 在内核源代码的Documentation/filesystems/proc.txt文件中有叙述

系统的真实内存大小可以用 dmesg | grep [mM][eE][mM]看到

/proc/pid/status显示一个进程的详细状态

# cat /proc/5346/status

Name: bash

State: S (sleeping)

SleepAVG: 98%

Tgid: 5346

Pid: 5346

PPid: 5343

TracerPid: 0

Uid: 1000 1000 1000 1000

Gid: 104 104 104 104

FDSize: 256

Groups: 6 24 29 44 104 113 1000 1001

VmPeak: 6528 kB

VmSize: 6528 kB

VmLck: 0 kB

VmHWM: 1976 kB

VmRSS: 1976 kB

VmData: 752 kB

VmStk: 84 kB

VmExe: 644 kB

VmLib: 1788 kB

VmPTE: 16 kB

Threads: 1

SigQ: 0/4294967295

SigPnd: 0000000000000000

ShdPnd: 0000000000000000

SigBlk: 0000000000000000

SigIgn: 0000000000384004

SigCgt: 000000004b813efb

CapInh: 0000000000000000

CapPrm: 0000000000000000

CapEff: 0000000000000000

VmSize即为该进程内存总大小, 和top输出中的VIRT一致.

评论一下分享本文赞助博瑞

赞助博瑞X

扫码赞助博瑞
联系站长
博瑞博客
挤眼亲亲咆哮开心想想可怜糗大了委屈哈哈小声点右哼哼左哼哼疑问坏笑赚钱啦悲伤耍酷勾引厉害握手耶嘻嘻害羞鼓掌馋嘴抓狂抱抱围观威武给力
提交评论

清空信息
关闭评论