系统目录扩容、swap
一、缩减home分区给其他分区
起初服务器当初考虑不周,分区划分不太合理
将/home磁盘空间缩减 并将新的磁盘分区扩充到/根目录
卸载/home分区并压缩分区
卸载/home时 提示目标忙,fuser -m /home
查看谁用/home
时提示没有fuser
命令
1 2 | # umount /home umount: /home:目标忙。 |
(有些情况下通过 lsof(8) 或 fuser(1) 可以找到有关使用该设备的进程的有用信息)
1 2 3 4 5 6 | fuser -m /home //继续查找谁在用/home 。。。 kill -9 11757 //停止进程 umount /home //卸载/home文件系统 |
压缩分区
1 | resize2fs -p /dev/mapper/centos-home 100G |
确认是xfs格式系统
1 | cat /etc/fstab|grep centos-home |
xfs文件系统扩容必须安装xfsdump
工具
1 | yum install xfsdump -y |
减少/home
空间到100GB,增大根目录,延伸/目录空间
然后重新挂载/home
1 2 3 | # mount /home mount: /dev/mapper/centos-home:不能读超级块 |
必须格式化/home分区,才能挂载----所以缩减/home分区之前必须备份/home的内容(切记!!!)
重新挂载mount /home即可
二、增加交换分区的两种方式
方法一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 |
方法二:
1 2 3 4 5 6 7 8 | # 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 中的资料强制写入硬盘中。
1 2 | sudo sync && sudo swapoff -a sudo sed '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab |
查询占用swap分区的进程
1 2 3 4 5 6 7 8 9 10 11 | $ 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命令:
1 | awk '/^Swap:/ {SWAP+=$2}END{print SWAP" KB"}' /proc/$(pid)/smaps |
查看所有进程占用情况swap的脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #!/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
1 2 | 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是优先级的意思,设置相同即可。
1 2 3 4 5 | # swapon -a # swapon -s Filename Type Size Used Priority /dev/sdb1 partition 524284 0 1 /dev/sdc1 partition 524284 0 1 |
注:当内存不大(4G左右),交换分区应做成内存2倍