系统目录扩容、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倍

posted @   凡人半睁眼  阅读(435)  评论(0编辑  收藏  举报
编辑推荐:
· 使用 .NET Core 实现一个自定义日志记录器
· [杂谈]如何选择:Session 还是 JWT?
· 硬盘空间消失之谜:Linux 服务器存储排查与优化全过程
· JavaScript是按顺序执行的吗?聊聊JavaScript中的变量提升
· [杂谈]后台日志该怎么打印
阅读排行:
· 2000 Star,是时候为我的开源项目更新下功能了
· 面试官:DNS解析都整不明白,敢说你懂网络?我:嘤嘤嘤!
· [WPF UI] 为 AvalonDock 制作一套 Fluent UI 主题
· 基于.NET WinForm开发的一款硬件及协议通讯工具
· 内网穿透之http代理服务器

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示