❶ redhat linux swap分区扩展的三种方法详解
redhat linux swap分区扩展的三种方法
swap 介绍:
当物理内存占用完了后,当系统还需要更多的物理内存时,物理内存中inactive pages ,就move到swap空间。swap 空间是在位于硬盘上的,因此访问速度较物理内存慢。
当机器的物理内存发生变化时,swap 分区也要做相应的扩展:
有三种方法可以对swap 分区进行扩展:
一、扩展正在使用的swap 分区的逻辑卷(推荐使用此种方式)
二、新建swap 分区,
三、新建swap file,
具体步骤如下:
一、扩展正在使用的swap 分区的逻辑卷
设定用作swap 分区的逻辑卷为:/dev/VolGroup00/LogVol01
Disable swapping for the associated logical volume:
# swapoff -v /dev/VolGroup00/LogVol01
Resize the LVM2 logical volume by 256 MB:
# lvm lvresize /dev/VolGroup00/LogVol01 -L +256M
Format the new swap space:
# mkswap /dev/VolGroup00/LogVol01
Enable the extended logical volume:
# swapon -va
Test that the logical volume has been extended properly:
# cat /proc/swaps 或者# free
二、新建swap 分区
设定新建的swap 分区的逻辑卷为:/dev/VolGroup00/LogVol02
Create the LVM2 logical volume of size 256 MB:
# lvm lvcreate VolGroup00 -n LogVol02 -L 256M
Format the new swap space:
# mkswap /dev/VolGroup00/LogVol02
Add the following entry to the /etc/fstab file:
/dev/VolGroup00/LogVol02 swap swap defaults 0 0
Enable the extended logical volume:
# swapon -va
Test that the logical volume has been extended properly:
# cat /proc/swaps 或者# free
三、新建swapfile
通过此种方式进行swap 的扩展,首先要计算出block的数目。具体为根据需要扩展的swapfile的大小,以M为单位。block=swap分区大小*1024, 例如,需要扩展64M的swapfile,则:block=64*1024=65536.
然后做如下步骤:
dd if=/dev/zero of=/swapfile bs=1024 count=65536
Setup the swap file with the command:
mkswap /swapfile
To enable the swap file immediately but not automatically at boot time:
swapon /swapfile
To enable it at boot time, edit /etc/fstab to include the following entry:
/swapfile swap swap defaults 0 0
After adding the new swap file and enabling it, verify it is enabled by viewing the output of the command cat /proc/swaps 或者 free.
总结:三种方法都能对swap 分区进行扩展,但是推荐使用第一种方法。
❷ Linux中swap交换分区的创建和容量调整的教程
我们都知道在安装Linux系统时在分区时可以分配swap分区,而系统安装后(在运行中)如何建立或调整swap分区呢?
在装完Linux系统之后,建立Swap分区有两种方法。
1.新建磁盘分区作为swap分区;
2.用文件作为swap分区 (操作更简单,我更常用)。
下面介绍这两种方法:(都必须用root权限,操作过程应该小心谨慎。)
一、新建磁盘分区作为swap分区
1.以root身份进入控制台(登录系统),输入
复制代码
代码如下:
# swapoff -a #停止所有的swap分区2. 用fdisk命令(例:# fdisk /dev/sdb)对磁盘进行分区,添加swap分区,新建分区,在fdisk中用t命令将新添的分区id改为82(Linux swap类型),最后用w将操作实际写入硬盘(没用w之前的操作是无效的)。
3.
复制代码
代码如下:
# mkswap /dev/sdb2 #格式化swap分区,这里的sdb2要看您加完后p命令显示的实际分区设备名4.
复制代码
代码如下:
# swapon /dev/sdb2 #启动新的swap分区5. 为了让系统启动时能自动启用这个交换分区,可以编辑/etc/fstab,加入下面一行
复制代码
代码如下:
/dev/sdb2 swap swap defaults 0 0二、调整swap分区大小
有的时候,我们要增加swap的大来,例如,安装oracle。下面说一下如何来增加交换分区的大小。
复制代码
代码如下:
root@ubuntu:/home/zhangying# free -m复制代码
代码如下:
root@ubuntu:/home/zhangying# mkdir swap记录了100000+0 的读入
记录了100000+0 的写出
902400000字节(902 MB)已复制,12.5008 秒,72.2 MB/秒
复制代码
代码如下:
root@ubuntu:/home/zhangying/swap# mkswap swaptmp这种只是临时的,如果重起电脑的话,交换分区的大小还是还原成原来的,如果不重起想还原成原来的,看下面的方法。
复制代码
代码如下:
root@ubuntu:/home/zhangying/swap# swapoff swaptmp还有一种情况是这种临时的swap,变成非临时的。
复制代码
代码如下:
nano /etc/fstab注释:这种启动的时候自动加载,根加载windows下的硬盘是一样的,如果swaptmp文件丢失,也无法增加swap的大小。
三、用文件作为Swap分区
1.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)。
复制代码
代码如下:
# dd if=/dev/zero of=/root/swapfile bs=1M count=10242.格式化为交换分区文件:
复制代码
代码如下:
# mkswap /root/swapfile #建立swap的文件系统3.启用交换分区文件:
复制代码
代码如下:
# swapon /root/swapfile #启用swap文件4.使系统开机时自启用,在文件/etc/fstab中添加一行:
复制代码
代码如下:
/root/swapfile swap swap defaults 0 0新建和增加交换分区用到的命令为:mkswap、swapon等,而想关闭掉某个交换分区则用swapon /dev/sdb2这样的命令即可。
下面的操作命令演示了用文件作为Swap的操作过程(包括前后的一些检查)。
复制代码
代码如下:
[root@jay-linux ~]# free -m复制代码
代码如下:
[root@jay-linux ~]# cat /etc/fstab复制代码
代码如下:
[root@jay-linux ~]# dd if=/dev/zero of=/root/swapfile bs=1M count=1024复制代码
代码如下:
[root@jay-linux ~]# swapon /root/swapfile复制代码
代码如下:
[root@jay-linux ~]# swapoff /dev/sda3复制代码
代码如下:
[root@jay-linux ~]# swapoff /root/swapfile复制代码
代码如下:
[root@jay-linux ~]# swapon /dev/sda3复制代码
代码如下:
[root@jay-linux ~]# free -m复制代码
代码如下:
[root@jay-linux ~]# cat /etc/fstab复制代码
代码如下:
[root@jay-linux ~]# dd if=/dev/zero of=/root/swapfile bs=1M count=1024复制代码
代码如下:
[root@jay-linux ~]# swapon /root/swapfile复制代码
代码如下:
[root@jay-linux ~]# swapoff /dev/sda3复制代码
代码如下:
[root@jay-linux ~]# swapoff /root/swapfile复制代码
代码如下:
[root@jay-linux ~]# swapon /dev/sda3❸ Linux - Swap
首先,swap是硬盘上的一块空间。
其次,当内存没有多余空间的时候,可以将一部分数据交换到swap空间。也就是将内存中的一部分数据放到硬盘中,并释放内存空间。这样,释放出的内存空间就又可以被利用来存储其他数据了。
这样,本来只有4G的内存,如果swap有2G的话,可使用的内存可以认为是6G。
但是,硬盘的速度比内存慢太多太多了。因此swap只是对内存的一种补充,是在内存不足时对内存的扩充,但是不能代替内存使用。
内存不足时, 操作系统 会选择 最久没被使用的内存数据 ,交换到swap空间。
注意,交换操作是由操作系统来进行的。
系统在什么情况或条件下才会使用Swap分区的空间呢? 其实是Linux通过一个参数swappiness来控制的。当然还涉及到复杂的算法。
这个参数值可为 0-100,控制系统 swap 的使用程度。
0告诉内核尽可能的不要将内存数据移到swap中,也即只有在迫不得已的情况下才这么做,而100告诉内核只要有可能,尽量的将内存中不常访问的数据移到swap中。默认值为 60。注意:这个只是一个权值,不是一个百分比值,涉及到系统内核复杂的算法
查看当前系统中swappiness的值
修改当前系统中swappiness的值
上面通过sysctl修改的swappiness值在系统重启后会失效,要想重启后继续生效,需要修改配置文件/etc/sysctl.conf,将下面这行修改成10,如果文件中找不到这行的话,在文件末位加上这行就可以了
既然配置swap对桌面系统有帮助,那么配置多少大小的swap比较合适呢?下面是ubuntu给出的建议:
Linux下有两种类型的swap空间,swap分区和swap文件,他们有各自的特点:
swap分区上面由于没有文件系统,所以相当于内核直接访问连续的磁盘空间,效率相对要高点,但由于swap分区一般安装系统时就分配好了了,后期要缩减空间和扩容都很不方便。
swap文件放在指定分区的文件系统里面,所以有可能受文件系统性能的影响,但据说2.6版本以后的内核可以直接访问swap文件对应的物理磁盘地址,相当于跳过了文件系统直接访问磁盘,不过如果swap文件在磁盘上的物理位置不连续时,还是会对性能产生不利影响,但其优点就是灵活,随时可以增加和移除swap文件。
如果配置有多个swap分区或者文件的话,这里将会有多行,每行代表一个正在被系统使用的swap分区或文件,下面是每个字段的意思:
并不是swap空间占用多就一定性能下降,真正影响性能是swap in和out的频率,频率越高,对系统的性能影响越大,我们可以通过vmstat命令来查看swap in/out的频率
在添加swap分区前,首先得有一个空闲的分区,如果是一块新的磁盘,可以用fdisk来创建一个新的分区用于swap。
添加swap文件就简单多了,也没有分区操作那么有风险。
通过如下命令,能查看所有进程的使用swap情况
查看某个进程swap占用内存大小脚本:
查看所有进程使用swap情况脚本: