Chinaunix首页 | 论坛 | 博客
  • 博客访问: 316170
  • 博文数量: 90
  • 博客积分: 2850
  • 博客等级: 少校
  • 技术积分: 951
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-02 14:01
文章分类

全部博文(90)

文章存档

2015年(1)

2014年(1)

2013年(2)

2011年(3)

2010年(83)

分类: LINUX

2010-06-07 18:33:30

在Linux中增加swap空间
 

1.查看系统Swap空间使用

[root@jumper usr]# free
total used free shared buffers cached
Mem: 513980 493640 20340 0 143808 271780
-/+ buffers/cache: 78052 435928
Swap: 1052248 21256 1030992

2.在空间合适处创建swap文件

[root@jumper usr]# mkdir swap
[root@jumper usr]# cd swap
[root@jumper swap]# dd if=/dev/zero of=swapfile bs=1024 count=10000
10000+0 records in
10000+0 records out
[root@jumper swap]# 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


[root@jumper swap]# mkswap swapfile
Setting up swapspace version 1, size = 9996 KiB

3.激活swap文件
[root@jumper swap]# swapon swapfile
[root@jumper swap]# ls -l
total 10016
-rw-r--r-- 1 root root 10240000 7月 28 14:58 swapfile
[root@jumper swap]# free
total used free shared buffers cached
Mem: 513980 505052 8928 0 143900 282288
-/+ buffers/cache: 78864 435116
Swap: 1062240 21256 1040984
[root@jumper swap]#

================================================================

临时增加swap空间的。方法如下:

step 1:


#dd if=/dev/zero of=/home/swap bs=1024 count=500000

注释:of=/home/swap,放置swap的空间; count的大小就是增加的swap空间的大小,1024就是块大小,这里是1K,所以总共空间就是bs*count=500M


step 2:

# mkswap /home/swap

注释:把刚才空间格式化成swap各式


step 3:

#swapon /home/swap

注释:使刚才创建的swap空间


关闭刚开辟的swap空间,只需命令:#swapoff

====================================================================

制作SWAP有两种方法:
1.使用分区做为SWAP
2.使用文件做为SWAP

使用分区做为SWAP比较好,速度比文件的快,也不容易产生磁盘碎片
所有应该尽量使用分区作为SWAP.

先说说使用文件做为SWAP吧:

因为做为SWAP的文件,必须是连续的,所以需要使用dd命令创建它:
[root@NEWLFS ~]#dd if=/dev/zero of=swapfile bs=1024 count=65536
65536+0 records in
65536+0 records out
[root@NEWLFS ~]#
这样就制作了一个64M的swapfile (文件名自定)
如果想制作128M的SWAP,count值:128*1024=131072
制作128M的SWAP 命令就变成了:
dd if=/dev/zero of=swapfile bs=1024 count=131072
会计算了吧 ^_^

使用mkswap命令制作swap:

[root@NEWLFS ~]#mkswap swapfile
Setting up swapspace version 1, size = 67104 kB
[root@NEWLFS ~]#

最后加在/etc/fstab,每次开机都会自动启用SWAP:
编辑fstab,在最后加入一行,格式如下:

/root/swapfile swap swap defaults 0 0

OK,启用它:
[root@NEWLFS ~]#swapon -a
使用swapon -s 查看是否成功启用了:
[root@NEWLFS ~]#swapon -s
Filename       Type     Size     Used     Priority

/root/swapfile file     65528     0         -1

OK,swapfile已经投入使用啦  ^_^

再来看看使用分区作为swap :


注意:对分区不熟悉,不要轻易操作,重要数据要备份,硬盘有价,数据无价。
首先用分区工具分出一个分区作为SWAP,分区类型标识为82(Linux swap)
这里我使用/sbin/cfdisk比fdisk简单用一些
[root@NEWLFS ~]#cfdisk
.........略
    Name        Flags      Part Type  FS Type           [Label]        Size (MB)
--------------------------------------------------------------------------------
    hda1        Boot        Primary   W95 FAT32                          6859.89
    hda5                    Logical   Linux ReiserFS                    22413.89
    hda6                    Logical   NTFS              [^C]            26386.70
    hda7                    Logical   Linux ext3                        10734.00
    hda8                    Logical   Linux ext3                          106.93
    hda9                    Logical   Linux raid autodetect              3619.13
    hda10                   Logical   Linux ext3                         7221.80
    hda11                   Logical   Linux swap / Solaris                534.65
    hda12                   Logical   Linux raid autodetect              2146.80

[Bootable]  [ Delete ]  [  Help  ]  [Maximize]  [ Print  ]  [  Quit  ]
     [  Type  ]  [ Units  ]  [ Write  ]
我没有空闲分区了   假设我已经将hda11删除掉,现在hda11是空闲空间。
选择 [Type] :
...........略
16 Hidden FAT16          82 Linux swap / Solaris  E4 SpeedStor
17 Hidden HPFS/NTFS      83 Linux                 EB BeOS fs
18 AST SmartSleep        84 OS/2 hidden C: drive  EE EFI GPT

Enter filesystem type: 82  ----->;输入82

返回主菜单,hda11空间空间就应该变成了上面所示的那样。
确定无误,选择 [ Write  ] 写入分区表就OK了。

使用mkswap命令制作swap:

[root@NEWLFS ~]#mkswap /dev/hda11
Setting up swapspace version 1, size = 67104 kB
[root@NEWLFS ~]#

最后加在/etc/fstab,每次开机都会自动启用SWAP:
编辑fstab,在最后加入一行,格式类似如下:

  /dev/hda11  swap swap defaults 0 0

OK,启用它:
[root@NEWLFS ~]#swapon -a
使用swapon -s 查看是否成功启用了:
[root@NEWLFS ~]#swapon -s
Filename       Type     Size     Used     Priority

/dev/hda11   partition  522072     0         -1

OK,/dev/hda11也投入使用喽


========================================================================
这是文件的swap分区

第一步:
dd if=/dev/zero of=swapfile count=200 bs=1024k
count  为几个块
bs     每个块多少个字节

第二步:
mkswap swapfile   (你刚刚生成的文件)

第三步:
swapon swapfile

用free命令看看就知道了,或cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/hda6                               partition       497972  91584   -1
/root/swapfile                          file            10232   0       -2

/root/swapfile 就是你生成的文件

第四步:
在/etc/fstab 中加入
/root/swapfile            swap                 swap       defaults    0 0

每次重启后swap分区自己mount上了。

如果你想去掉就用swapoff swapfile

对于分区格式的swap,你可以分出一个分区来,用mkswap 分区, swapon 分区, 在fstab中把/root/swapfile 换成你的分区就可以了。

=====================

问题 案例:(解决)

在虚拟机里面安装oracle10g,发现默认的swap交换空间不满足最低要求,因为我分配的物理内存是1G,那么就按照要求需要2G的swap交换空间,默认只有1G的交换空间。

添加swap交换空间的步骤如下:


第一步:确保系统中有足够的空间来用做swap交换空间,我使用的是KVM,准备在一个独立的文件系统中添加一个swap交换文件,在/opt/image中添加2G的swap交换文件
第二步:添加交换文件并设置其大小为2G,使用如下命令
[root@sense image]# dd if=/dev/zero of=/opt/image/swap bs=1024 count=2048000

过段时间就返回如下结果:
2048000 0 records in
2048000 0 records out
2097152000 bytes (2.1 GB) copied, 272.867 seconds, 7.7 MB/s
第三步:创建(设置)交换空间,使用命令mkswap
[root@sense image]# mkswap /opt/image/swap
Setting up swapspace version 1, size = 2097147 kB
第四步:检查现有的交换空间大小,使用命令free
[root@sense image]# free -m
total used free shared buffers cached
Mem: 1011 989 21 0 1 875
-/ buffers/cache: 112 898
Swap: 1027 0 1027

或者检查meminfo文件
grep SwapTotal /proc/meminfo
第五步:启动新增加的2G的交换空间,使用命令swapon
[root@sense image]# swapon /opt/image/swap
第六步:确认新增加的2G交换空间已经生效,使用命令free
[[root@sense image]# free -m
total used free shared buffers cached
Mem: 1011 995 15 0 4 877
-/ buffers/cache: 113 897
Swap: 3027 0 3027

或者检查meminfo文件
grep SwapTotal /proc/meminfo
第七步:修改/etc/fstab文件,使得新加的2G交换空间在系统重新启动后自动生效
在文件最后加入:
/opt/image/swap    swap    swap    defaults 0 0

OK,系统的swap交换空间添加成功

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

总结:
Linux下察看swap分区大小的命令:
  top
  或者fdisk -l
  或者free -m

  SWAP分区一般大小为物理内存的2倍,但最大不超过2G;

       增加SWAP空间的方法有两个:增加另外一个SWAP分区,或通过创建一个SWAP文件来实现。
  一)增加一个SWAP分区:
  1)创建一个SWAP分区: fdisk -l /dev/cciss/c0d0 (m---p ---n --t (将分区格式转换成 82)--w)(如/dev/cciss/c0d0p6)

  2)格式化分区:mkswap -c v1 /dev/cciss/c0d06;

  3)修改/etc/fstab文件,增加
  /dev/cciss/c0d0p6 swap swap default 0 0

  4)激活swap分区:swapon -a /dev/cciss/c0d0p6;

  5) 查看swap 分区:swapon -s 或 free 或 cat /proc/swaps

  二)增加一个SWAP文件;
  1)dd if=/dev/zero of=/tmp/tmp.swap bs=1M count =100;( 建立一个100M的文件);

  2)mkswap /tmp/tmp.swap; (标识为SWAP文件)

  3)swapon /tmp/tmp.swap;(激活SWAP文件)

  4)修改/etc/fstab文件,增加以下内容:
  /tmp/tmp.swap swap swap default 0 0

  5)swapon -s 或free 或cat /proc/swaps 查看。

  三)删除SWAP分区:
  1) swapoff /dev/cciss/c0d0p6;

  2) 修改/etc/fstab文件。


阅读(1500) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

效益天使2010-06-08 17:23:55

很有用