无/swap交换分区分区的解决办法(用文件替代swap分区)
遇到一个可能不太熟悉linux的机房技术人员装的系统。分区给我分得乱糟糟的,首先第一块硬盘和第二块硬盘搞反了,接着将swap交换分区给我分成了一个普通分区,只是名字为swap而已:
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sdb2 ext3 7.6G 555M 6.7G 8% /
/dev/sda1 ext3 466G 453G 13G 98% /home1
/dev/sdb7 ext3 4.8G 149M 4.4G 4% /tmp
/dev/sdb6 ext3 4.8G 1.6G 3.0G 35% /var
/dev/sdb5 ext3 5.7G 140M 5.3G 3% /swap
/dev/sdb3 ext3 5.7G 2.1G 3.4G 39% /usr
/dev/sdb1 ext3 99M 18M 77M 19% /boot
/dev/sdb8 ext3 437G 175G 262G 41% /home2
tmpfs tmpfs 2.0G 2.2M 2.0G 1% /dev/shm
swap交换分区就根本用不了,由于此服务器已经在跑业务了,不能随便停机,更不能重装系统。
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 3910 3886 23 0 16 1652
-/ buffers/cache: 2217 1692
Swap: 0 0 0
解决方法:
#制作一个swapfile文件,需要root权限
su
dd if=/dev/zero of=/swap/swapfile bs=4096 count=1310720
#说明:其中bs参数制定每次读取及输入多少个字节。因为硬盘存取的最小单位为扇区,所以设置bs参数就相当于设置每个扇区的大小。我这里设置为4096即4k。参数count则主要是用来设置可以使用扇区的数量。所以这个文件所占用的空间就是以上连个参数的乘积。这里需要注意的是,如果要增加swap文件容量,一般是通过调整count参数来实现的,bs参数一般不动。看到我的/swap分区完全没被使用,有5.3G剩余空间,所有我建立了一个5G的swapfile文件。
#格式化swapfile,同样需要root权限
mkswap /swap/swapfile
#启用swap
swapon /swap/swapfile
#不想每次重启后手动启用swap就可以将挂载写入/etc/fstab中 (因为我这个分区比较特殊,分区名称相同,为保险起见,我没写入到fstab里面)
/swap/swapfile swap swap defaults 0 0
#用free -m查看一下,swap设定已经生效了:
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 3910 3885 25 0 21 1639
-/ buffers/cache: 2224 1686
Swap: 5119 0 5119
顺利搞定。
当你实在不需要使用swap交换分区时 可是释放掉swapfile
swapoff /swap/swapfile
rm -f /swap/swapfile