系统目录扩容、swap
一、缩减home分区给其他分区
起初服务器当初考虑不周,分区划分不太合理
将/home磁盘空间缩减 并将新的磁盘分区扩充到/根目录
卸载/home分区并压缩分区
卸载/home时 提示目标忙,fuser -m /home
查看谁用/home
时提示没有fuser
命令
# umount /home umount: /home:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以找到有关使用该设备的进程的有用信息)
fuser -m /home //继续查找谁在用/home 。。。 kill -9 11757 //停止进程 umount /home //卸载/home文件系统
压缩分区
resize2fs -p /dev/mapper/centos-home 100G
确认是xfs格式系统
cat /etc/fstab|grep centos-home
xfs文件系统扩容必须安装xfsdump
工具
yum install xfsdump -y
减少/home
空间到100GB,增大根目录,延伸/目录空间
然后重新挂载/home
# mount /home mount: /dev/mapper/centos-home:不能读超级块
必须格式化/home分区,才能挂载----所以缩减/home分区之前必须备份/home的内容(切记!!!)
重新挂载mount /home即可
二、增加交换分区的两种方式
方法一:
1. 准备分区(准备将/dev/sde磁盘,划分为1G分区) [root@server0 ~]# fdisk /dev/sde (t转换分区的ID 82) [root@server0 ~]# partprobe /dev/sde [root@server0 ~]# ll /dev/sde* brw-rw----. 1 root disk 253, 16 12月 6 10:18 /dev/sde brw-rw----. 1 root disk 253, 17 12月 6 10:18 /dev/sde1 2.格式化 [root@server0 ~]# mkswap /dev/sde1 3.挂载 [root@server0 ~]# blkid /dev/sde1(查看UUID号) /dev/sde1: UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" TYPE="swap" [root@server0 ~]# vim /etc/fstab(挂载) UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults 0 0 [root@server0 ~]# swapon -a (读取/etc/fstab) [root@server0 ~]# swapon -s Filename Type Size Used Priority /dev/vdb1 partition 524284 0 -1
方法二:
# dd if=/dev/zero of=/tmp/swap bs=1M count=8192 //创建8192M的文件块 # mkswap /tmp/swap //创建swap文件 # swapon /tmp/swap //激活swap文件 执行以上命令可能会出现:“不安全的权限 0644,建议使用 0600”类似提示,不要紧张,实际上已经激活了,可以忽略提示,也可以听从系统的建议修改下权限。 # swapon -s //查看swap 修改/etc/fstab文件,增加以下内容,让系统引导时自动启动 # vi /etc/fstab //在最后添加下面代码 /tmp/swap swap swap defaults 0 0
关闭交换分区
sync命令用于数据同步,sync命令是在关闭Linux系统时使用的。
Linux 系统中欲写入硬盘的资料有的时候为了效率起见,会写到 filesystem buffer 中,这个 buffer 是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer 中,而系统又突然断电的话,那么资料就会流失了,sync 指令会将存于 buffer 中的资料强制写入硬盘中。
sudo sync && sudo swapoff -a sudo sed '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
查询占用swap分区的进程
$ for i in $( cd /proc;ls |grep "^[0-9]"|awk ' $0 >100') ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null ; done | sort -k2nr | head -10 1635 0.253906M 1634 0.0429688M 1001 0M 101 0M 1018 0M 102 0M 103 0M 1043 0M ps -p 进程id
查看指定进程所使用的swap命令:
awk '/^Swap:/ {SWAP+=$2}END{print SWAP" KB"}' /proc/$(pid)/smaps
查看所有进程占用情况swap的脚本:
#!/bin/bash function getswap { SUM=0 OVERALL=0 for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do PID=`echo $DIR | cut -d / -f 3` PROGNAME=`ps -p $PID -o comm --no-headers` for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'` do let SUM=$SUM+$SWAP done echo "PID=$PID - Swap used: $SUM - ($PROGNAME )" let OVERALL=$OVERALL+$SUM SUM=0 done echo "Overall swap used: $OVERALL" } getswap #getswap|egrep -v "Swap used: 0"
vm.swappiness取值范围 0~100。值越大,swap用得越厉害。
1.临时修改:
sudo sysctl vm.swappiness=100
立即生效,不需要重启
设置/proc/sys/vm/swappiness=0,不过这就禁用了所有进程使用swap
2.永久修改:
打开sysctl.conf
sudo gedit /etc/sysctl.conf
查找vm.swappiness,如果找不到,则加入一行shu:
vm.swappiness=30
三、swap分区查看与调整
http://www.360doc.com/content/14/0725/06/11722185_396868770.shtml
四、对交换分区调优
1、关于swap优先级
swap分区的优先级(Priority)从高到低依次使用,最高32767,最低优先级是0
这样设置使得Linux并行的使用优先级相同的swap分区(Priority = 1的分区),这会大幅的提高对swap的读写。当这些分区满了,就会使用较低优先级swap分区(Priority = 0的分区)
2、设置swap优先级
多个交换分区分布在不同的磁盘
挂载时,使用相同的优先级
# vim /etc/fstab
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults,pri=1 0 0 UUID="ea5b1c77-e540-465c-9644-0d75457f8b45" swap swap defaults,pri=1 0 0
pri是优先级的意思,设置相同即可。
# swapon -a # swapon -s Filename Type Size Used Priority /dev/sdb1 partition 524284 0 1 /dev/sdc1 partition 524284 0 1
注:当内存不大(4G左右),交换分区应做成内存2倍