『壹』 linux Swap 绌洪棿绠$悊涓庝紭鍖栨寚鍗楋細浠庡熀纭浣跨敤鍒拌繃楂樺勭悊
Linux Swap绌洪棿绠$悊涓庝紭鍖栵細娣卞叆鐞嗚В涓庡疄鐢ㄧ瓥鐣
鍦↙inux鐨勪笘鐣岄噷锛孲wap绌洪棿鏄鍐呭瓨绠$悊鐨勭寷闂峰叧閿缁勪欢锛屽畠宸у欏湴鎵婕旂潃铏氭嫙鍐呭瓨鐨勮掕壊锛屽挨鍏跺湪鍐呭瓨绱у紶鏃讹紝鑳芥彁鍗囩郴缁熻祫婧愮殑鍒╃敤鐜囥傜劧鑰岋紝Swap绌洪棿骞堕潪鏃犻檺鍒剁殑榄旀硶锛屽叾浣跨敤涓嶅綋鍙鑳戒細瀵圭郴缁熸ц兘閫犳垚璐熼潰褰卞搷銆傛湰鏂囧皢甯︿綘鎺㈢储Swap绌洪棿鐨勫熀纭鍘熺悊锛屾暀浣犲備綍鐩戞帶銆佽剧疆鍜屼紭鍖栵紝浠ュ簲瀵筍wap浣跨敤杩囬珮鏃剁殑鎸戞垬銆
Swap绌洪棿鐨勪綔鐢ㄥ湪浜庯紝褰撶墿鐞哛AM锛圧AM锛変笉鍫閲嶈礋鏃讹紝浼氬皢鏆傛椂涓嶆椿璺冪殑鏁版嵁绉诲姩鑷崇‖鐩樹笂鐨勯勭暀绌洪棿銆傝繖鐪嬩技绠鍗曪紝瀹炲垯鍏充箮绯荤粺鐨勭伒娲绘т笌绋冲畾鎬с備笉杩囷紝纭鐩樿诲啓閫熷害杩滀綆浜嶳AM锛岄戠箒鐨凷wap鎿嶄綔鍙鑳藉艰嚧鎬ц兘涓嬮檷锛屽洜姝わ紝鍚堢悊閰嶇疆Swap绌洪棿鑷冲叧閲嶈併
棣栧厛锛屼娇鐢╢ree -m鍛戒护锛屼綘鍙浠ョ洿瑙傚湴鐪嬪埌鍐呭瓨鍜孲wap鐨勪娇閫楀巻鐢ㄦ儏鍐点傞氳繃swapon --show鍛戒护锛屽彲浠ヨ︾粏浜嗚ВSwap鐨勫垎鍖烘垨鏂囦欢鐘舵併
锛1锛夊垱寤篠wap鏂囦欢锛氫娇鐢╯udo fallocate鍒涘缓锛屼緥濡傚垱寤4GB鐨勬枃浠秙udo fallocate -l 4G /swapfile銆
锛2锛夋潈闄愯剧疆锛氱‘淇濆彧鏈塺oot鏉冮檺鍙璁块棶锛屽俿udo chmod 600 /swapfile銆
锛3锛夋牸寮忓寲涓篠wap锛氱敤mkswap鍛戒护鏍煎紡鍖栵紝濡俿udo mkswap /swapfile銆
锛4锛夊惎鐢ㄥ苟鎸佷箙鍖栵細涓存椂鍚鐢╯wapon锛屾案涔呯敓鏁堝垯闇娣诲姞鍒/etc/fstab銆
Swappiness鍙傛暟褰卞搷鍐呭瓨鍒癝wap鐨勫垏鎹锛岃皟鏁村畠鑳戒紭鍖栧唴瀛樹娇鐢ㄣ傚厛鏌ョ湅褰撳墠鍊硷紝涓存椂鏀硅撅紝鐒跺悗姘镐箙淇鏀归厤缃銆
灏界Swap鍙浠ヨˉ鍏匯AM锛屼絾纭鐩樻ц兘褰卞搷鏄捐憲銆傚敖閲忎娇鐢⊿SD浠ユ彁鍗嘢wap鎿嶄綔閫熷害锛岄伩鍏嶆ц兘鐡堕堛
Swap绌洪棿鍙鑳藉寘鍚鏁忔劅鏁版嵁锛岃板緱鍦ㄤ笉闇瑕佹椂浣跨敤swapoff鍛戒护鍏抽棴锛屽苟娓呴櫎swap鏂囦欢浠ヤ繚瀹夊叏銆
閫氳繃涓婅堪姝ラわ紝鎴戜滑鎴愬北鐭ユ悳鍔熸墿灞曚簡Linux绯荤粺Swap绌洪棿锛岃В鍐充簡鍙鑳界殑涓嶈冻銆傜悊瑙e苟绠$悊濂絊wap锛屽氨鍍忕粰绯荤粺鍔犺呬簡鍐呭瓨鎵╁睍鍣锛岀‘淇濆湪鍐呭瓨鍘嬪姏涓嬶紝绯荤粺浠嶈兘淇濇寔骞崇ǔ杩愯屻傝繖鏄涓涓鎻愬崌绯荤粺鎬ц兘鍜岀ǔ瀹氭х殑瀹炵敤宸ュ叿锛屽煎緱姣忎釜Linux鐢ㄦ埛鎺屾彙銆
璁颁綇锛孲wap绌洪棿鐨勭$悊骞堕潪涓鍔虫案閫革紝鍔ㄦ佽皟鏁村拰鐩戞帶Swappiness鍊硷紝閫夋嫨鍚堥傜殑纭鐩樼被鍨嬶紝閮芥槸纭淇濈郴缁熼珮鏁堣繍琛岀殑鍏抽敭銆傜幇鍦锛屼綘宸茬粡鍑嗗囧ソ鍦↙inux涓栫晫涓锛岀伒娲昏屾湁鏁堝湴绠$悊浣犵殑Swap绌洪棿浜嗐
『贰』 CentOS下SWAP分区建立及释放内存详解
方法一:
一、查看系统当前的分区情况:
free -m
二、创建用于交换分区的文件:
dd if=/dev/zero of=/whatever/swap bs=block_size (10M)count=number_of_block(3000)
三、设置交换分区文件:
mkswap /export/swap/swapfile
四、立即启用交换分区文件:
swapon /whateever/swap
五、若要想使开机时自启用,则需修改文件/etc/fstab中的swap行:
/whatever/swap swap swap defaults 0 0
方法二
增加交换分区空间的方法:
1.查看一下/etc/fstab确定目前的分区
2.swapoff /dev/hd**
3.free 看一下是不是停了.
4.fdisk 删了停掉的swap分区
5.重新用FDISK建一个新的SWAP分区
6.mkswap /dev/hd**把新的分区做成swap
7.swapon /dev/hd**打开swap
8.修改/etc/fstab
操作实例:
1.查看系统Swap空间使用
# free
total used free shared buffers cached
Mem: 513980 493640 20340 0 143808 271780
-/+ buffers/cache: 78052 435928
Swap: 1052248 21256 1030992
2.在空间合适处创建swap文件
# mkdir swap
# cd swap
# dd if=/dev/zero of=swapfile bs=1024 count=10000
10000+0 records in
10000+0 records out
# ls -al
total 10024
drwxr-xr-x 2 root root 4096 7月 28 14:58 .
drwxr-xr-x 19 root root 4096 7月 28 14:57 ..
-rw-r--r-- 1 root root 10240000 7月 28 14:58 swapfile
# mkswap swapfile
Setting up swapspace version 1, size = 9996 KiB
3.激活swap文件
# swapon swapfile
# ls -l
total 10016
-rw-r--r-- 1 root root 10240000 7月 28 14:58 swapfile
# free
total used free shared buffers cached
Mem: 513980 505052 8928 0 143900 282288
-/+ buffers/cache: 78864 435116
Swap: 1062240 21256 1040984
生成1G的文件
# dd if=/dev/zero of=swapfile bs=10M count=3000
创建为swap文件
#mkswap swapfile
让swap生效
#swapon swapfile
查看一下swap
#swapon -s
[root@cluster /]# swapon -sFilenameTypeSizeUsedPriority/dev/sda3 partition10201161728-1/state/partition1/swap/swapfile file307199920-2
加到fstab文件中让系统引导时自动启动
#vi /etc/fstab
/state/partition1/swap/swapfil swap swap defaults 0 0
完毕。
二,LINUX释放内存
细心的朋友会注意到,当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题.
先来说说free命令
[root@cluster /]# free -m
total used free shared buffers cached
Mem: 31730 31590 139 0 37 27537
-/+ buffers/cache: 4015 27714
Swap: 30996 1 30994
其中:
total 内存总数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总额
buffers Buffer Cache和cached Page Cache 磁盘缓存的大小
-buffers/cache 的内存数:used - buffers - cached
+buffers/cache 的内存数:free + buffers + cached
可用的memory=free memory+buffers+cached
有了这个基础后,可以得知,我现在used为163MB,free为86,buffer和cached分别为10,94
那么我们来看看,如果我执行复制文件,内存会发生什么变化.
[root@cluster /]# cp -r /etc ~/test/
[root@cluster /]# free -m
total used free shared buffers cached
Mem: 31730 31590 139 0 37 27537
-/+ buffers/cache: 4015 27714
Swap: 30996 1 30994
在我命令执行结束后,used为244MB,free为4MB,buffers为8MB,cached为174MB,天呐都被cached吃掉了.别紧张,这是为了提高文件读取效率的做法.
引用[url]http://www.2qyou.com/thread-591-1-1.html[/url] 为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
那么有人说过段时间,linux会自动释放掉所用的内存,我们使用free再来试试,看看是否有释放?
[root@cluster /]# free -m
total used free shared buffers cached
Mem: 31730 31590 139 0 37 27537
-/+ buffers/cache: 4015 27714
Swap: 30996 1 30994
MS没有任何变化,那么我能否手动释放掉这些内存呢???回答是可以的!
/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存.操作如下:
[root@cluster /]# cat /proc/sys/vm/drop_caches
0
首先,/proc/sys/vm/drop_caches的值,默认为0
[root@cluster /]# sync
手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行 sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)
[root@server test]# echo 3 /proc/sys/vm/drop_caches
[root@server test]# cat /proc/sys/vm/drop_caches
3
将/proc/sys/vm/drop_caches值设为3
[root@server test]# free -m
total used free shared buffers cached
Mem: 249 66 182 0 0 11
-/+ buffers/cache: 55 194
Swap: 511 0 511
再来运行free命令,发现现在的used为66MB,free为182MB,buffers为0MB,cached为11MB.那么有效的释放了buffer和cache.
有关/proc/sys/vm/drop_caches的用法在下面进行了说明
/proc/sys/vm/drop_caches (since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches,
dentries and inodes from memory, causing that memory to become free.
To free pagecache, use echo 1 /proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2 /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3 /proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects
这几天发现linux系统内存一直涨,即使把apache和mysql关闭了,内存也不释放,可以使用以下脚本来释放内存:
脚本内容:
#!/bin/sh
# cache释放:
# To free pagecache:
/bin/sync
/bin/sync
#echo 1 /proc/sys/vm/drop_caches
# To free dentries and inodes:
#echo 2 /proc/sys/vm/drop_caches
# To free pagecache, dentries and inodes:
echo 3 /proc/sys/vm/drop_caches
利用系统crontab实现每天自动运行:
crontab -e
输入以下内容:
00 00 * * * /root/Cached.sh
每天0点释放一次内存,这个时间可以根据自己需要修改设置
在运行./Cached.sh时如果提示错误:Permission denied 权限的问题,可以运行
『叁』 如何在Ubuntu中创建swap分区文件
备注:
1)Ubuntu版本:14.04
2)Linux用户:root
通常,Linux系统中swap分区可以通过两种方式指定,分别为:一、在磁盘分区的时候格式化一个swap分区;二、在文件系统中创建一个swap文件作为swap分区。此文主要介绍第二种方式。步骤如下:
1. 创建文件
fallocate -l 8G /swapfile
说明:8G 表示swap文件大小,/swapfile为swap文件路径和名称,可以任意指定。
2. 修改文件权限
chmod 600 /swapfile
3. 将 swapfile 初始化为交换文件
mkswap /swapfile
4. 启用交换文件
swapon /swapfile
5. 至此,linux系统已经将swapfile作为交换文件使用,但是重启之后是不会自动挂在刚才创建的文件的,因此需要手动修改 /etc/fstab 配置文件:
gedit /etc/fstab
在文件中添加如下内容:
/swapfile none swap sw 0 0
6. 完成,测试下:
swapon -s
提示:
如果需要卸载swap分区文件,可以使用命令:swapoff /swapfile