Linux中关于磁盘的一些常见问题小记

1.程序导致内存不够用

程序导致内存不够用
如果内存满则系统会自动杀死占用内存最高的进程来保护系统正常运行
什么原因导致内存满:
1.大量用户访问服务器(正常情况) 需要我们添加内存
2.由于程序导致内存满,而不是大量用户访问导致(找开发解决)
3.由于网络的波动导致内存满 需要使用swap解决
4.公司内部业务(测试服务器) 需要使用swap解决
swap作用: 当内存不够用时,磁盘分区临时充当内存使用


查看swap分区:
[root@centos ~]# free -h
total used free shared buff/cache available
Mem: 1.9G 129M 1.7G 9.5M 104M 1.7G
Swap: 1.0G 0B 1.0G


创建swap分区:
1.安装系统划分的分区
2.可以安装完系统后创建


第一步: 生成一个200M的空间 把200M的空间当做swap空间
[root@centos ~]#dd if=/dev/zero of=/tmp/200m bs=1M count=200
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 0.350556 s, 598 MB/s
[root@centos ~]#ll /tmp/200m
-rw-r--r--. 1 root root 209715200 Mar 16 11:45 /tmp/200m
[root@centos ~]#ll -h /tmp/200m
-rw-r--r--. 1 root root 200M Mar 16 11:45 /tmp/200m



第二步: 格式化为swap分区格式
[root@centos ~]#mkswap /tmp/200m
Setting up swapspace version 1, size = 204796 KiB
no label, UUID=da389f2b-9b1c-4dc7-92f8-ba1abe2b50a2



第三步: 挂载使用swap
[root@centos ~]#swapon /tmp/200m
swapon: /tmp/200m: insecure permissions 0644, 0600 suggested.
[root@centos ~]#free -h
total used free shared buff/cache available
Mem: 1.9G 131M 1.5G 9.5M 310M 1.7G
Swap: 1.2G 0B 1.2G


查看swap分区的组成:
[root@centos ~]#swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 1048572 0 -2
/tmp/200m file 204796 0 -3


卸载swap分区
[root@centos ~]#swapoff /tmp/200m
[root@centos ~]#free -h
total used free shared buff/cache available
Mem: 1.9G 129M 1.5G 9.5M 310M 1.7G
Swap: 1.0G 0B 1.0G

2.磁盘无法写入数据

2.1.磁盘不够 用找出大文件备份或者删除

查找系统中的大文件
[root@centos ~]#du -h /var/log/*|awk '/G/'|xargs -i mv {} /data
[root@centos ~]#find / -type f -size +1G|xargs rm

2.2.找出系统中小文件多的目录备份或者删除

df -i 查看inode使用信息
[root@centos ~]#find / -type d -size +70k
/usr/share/man/man3
/oldboy
[root@centos ~]#
[root@centos ~]#
[root@centos ~]#du -h /oldboy
400K /oldboy

2.3.使用软链接解决磁盘不过够用

[root@centos ~]#ll -h /var/log/10G
-rw-r--r--. 1 root root 9.8G Mar 16 11:57 /var/log/10G
1.添加磁盘
2.格式化
3.挂载
mount /dev/sdc /data
4.将大文件移动到新磁盘(服务日志没有输出 业务低谷期 禁止用户写入内容(DB)锁库锁表)
[root@centos ~]#ln -s /data/10G /var/log/10g
[root@centos ~]#ll /var/log/10g
lrwxrwxrwx. 1 root root 9 Mar 16 12:16 /var/log/10g -> /data/10G
[root@centos ~]#
[root@centos ~]#
[root@centos ~]#df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.5M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda3 19G 2.4G 17G 13% /
/dev/sdc 2.0T 9.8G 2.0T 1% /data
/dev/sda1 197M 110M 88M 56% /boot
tmpfs 199M 0 199M 0% /run/user/0

3.删除文件后磁盘空间不释放

真正的删除一个文件硬链接和软链接数为0 并且没有被进程调用
第一步: 模拟文件被进程所调用:
[root@centos ~]#tail /data/10G



第二步: 删除文件 磁盘空间不释放
[root@centos /data]#rm -rf 10G
[root@centos /data]#df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.5M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda3 19G 2.4G 17G 13% /
/dev/sdc 2.0T 9.8G 2.0T 1% /data
/dev/sda1 197M 110M 88M 56% /boot
tmpfs 199M 0 199M 0% /run/user/0



第三步: 查看进程调用 lsof
[root@centos /data]#yum -y install lsof
[root@centos /data]#lsof |grep 10G
tail 3407 root 3r REG 8,32 10485760000 67 /data/10G (deleted)



第四步: 结束进程或者加载服务
[root@centos /data]#kill -9 3407
[root@centos /data]#
[root@centos /data]#df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.5M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda3 19G 2.4G 17G 13% /
/dev/sdc 2.0T 33M 2.0T 1% /data
/dev/sda1 197M 110M 88M 56% /boot
tmpfs 199M 0 199M 0% /run/user/0
posted @ 2024-01-20 22:48  只为心情愉悦  阅读(25)  评论(0编辑  收藏  举报