一 问题描述:
在Linux系统下安装Oracle 10g时发现swap分区过小的情况,需要手动去扩展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分区
1.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)。
# dd if=/dev/zero of=/root/swapfile bs=1M count=1024
2.格式化为交换分区文件:
# mkswap /root/swapfile #建立swap的文件系统
3.启用交换分区文件:
# swapon /root/swapfile #启用swap文件
4.使系统开机时自启用,在文件/etc/fstab中添加一行:
/root/swapfile swap swap defaults 0 0
三、扩swap对应的LV修改swap交换分区大小
[root@xzzfgsptap01 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_oraclelinx6-LogVol01
ext4 38G 4.0G 32G 12% /
tmpfs tmpfs 7.6G 0 7.6G 0% /dev/shm
/dev/sda1 ext4 488M 83M 370M 19% /boot
/dev/mapper/vg_oraclelinx6-weblogic_lv
ext4 50G 3.3G 44G 7% /weblogic
swap空间[root@xzzfgsptap01 ~]# free -g
total used free shared buffers cached
Mem: 15 0 14 0 0 0
-/+ buffers/cache: 0 15
Swap: 0 0 0
[root@xzzfgsptap01 ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Oct 25 12:58:25 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_oraclelinx6-LogVol01 / ext4 defaults 1 1
UUID=37c8b0b0-f0d9-4ef8-8fa7-3596783ab7f8 /boot ext4 defaults 1 2
/dev/mapper/vg_oraclelinx6-LogVol00 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/mapper/vg_oraclelinx6-weblogic_lv /weblogic ext4 defaults 0 0
cat /proc/swaps
Filename Type Size Used Priority
/dev/mapper/VolGroup00-LogVol01 partition 1048568 0 -1
lvextend -L +16G /dev/mapper/vg_oraclelinx6-LogVol00swapoff /dev/mapper/vg_oraclelinx6-LogVol00
[root@xzzfgsptap01 ~]# resize2fs /dev/mapper/vg_oraclelinx6-LogVol00
resize2fs 1.43-WIP (20-Jun-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/mapper/vg_oraclelinx6-LogVol00
Couldn't find valid filesystem superblock.
上面执行的结果报错,原因是交换分区不包含有效的文件系统,不能被同步,需要重建。
[root@xzzfgsptap01 ~]# mkswap -f /dev/mapper/vg_oraclelinx6-LogVol00
Setting up swapspace version 1, size = 17825788 KiB
no label, UUID=2ccb4646-20f2-45c1-ac1a-3f00779c6e54
或者/dev/mapper/vg_oraclelinx6-LogVol00: Device or resource busy
需要swapoff -f /dev/mapper/vg_oraclelinx6-LogVol00
然后
mkswap -f /dev/mapper/vg_oraclelinx6-LogVol00
swapon -f /dev/mapper/vg_oraclelinx6-LogVol00
[root@centos01 ~]# swapon -a
最后可以看到swap空间为16G[root@xzzfgsptap01 ~]# free -g
total used free shared buffers cached
Mem: 15 0 14 0 0 0
-/+ buffers/cache: 0 15
Swap: 16 0 16
---------------
推广 也可以增加和减少对应的LV
lvreduce /dev/VolGroup00/LogVol01 -L -512M
lvextend /dev/VolGroup00/LogVol00 -L +512M