主要内容:
磁盘相关命令和故障案例
文件系统相关内容
一、磁盘相关命令和故障案例
NO Space Left on Device--->磁盘空间不足
1.block满了 文件没有彻底删除 磁盘空间不足
1>原因:
(1)Linux彻底删除文件的条件
1.文件硬链接数为0 (没有入口)
2.文件进程调用数为0(重启服务)
2>排除流程:
(1)df -h 满了 du -sh /* 没有满
(2)lsof |grep delete(lsof 后面的的delete表示硬链接数为0,但是这个文件正在被使用中)
(3)重启服务
2.block满了:
1>.排查流程:
(1)df -h 查看整体情况
[root@oldedu59 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 2.3G 17G 12% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.7M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sdb1 98M 5.3M 93M 6% /data
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/loop1 93K 14K 72K 17% /app/log
(2)du -sh一层一层查找 找出那个文件或目录比较大
du命令:查看目录占用空间
参数:-h--->以人类可读方式显示
-s--->让du只显示总共有多大 如果不加则显示目录下所有目录的大小
sort命令:排序
参数:
-r--->逆序 倒序
-n--->按数字顺序正序排列
-h--->以人类 可读的形式排列
-k+数字--->按照第几列排列
注意:-n与-h两者不要同时用,会发生冲突
排序例子:
[root@oldedu59 ~]# seq 20 |sort -nr
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
(3)找出那个目录或文件比较大
[root@oldedu59 ~]# du -sh /usr/*|sort -h
0 /usr/etc
0 /usr/games
0 /usr/local
0 /usr/tmp
18M /usr/include
39M /usr/sbin
59M /usr/src
77M /usr/libexec
111M /usr/bin
212M /usr/lib64
373M /usr/share
475M /usr/lib
(4)确认之后再删除
(5)详细过程(找到的最大文件在du -sh /usr/lib/firmware目录下)
df -h|sort -h
du -sh /|sort -h
du -sh /usr/|sort -h
du -sh /usr/lib/*|sort -h
du -sh /usr/lib/firmware/|sort -h
3.Inode满了
1>原因:磁盘inode满了
2>排查:df -h没有满,df -i 满了
[root@oldedu59 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/loop1 93K 14K 72K 17% /app/log
[root@oldedu59 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/loop1 16 16 0 100% /app/log
第一步 创建100k的文件
[root@oldedu59 ~]# dd if=/dev/zero of=/tmp/100k bs=1k count=100
100+0 records in
100+0 records out
102400 bytes (102 kB) copied, 0.000742283 s, 138 MB/s
##第二步 格式化
[root@oldedu59 ~]# mkfs.ext4 /tmp/100k
mke2fs 1.42.9 (28-Dec-2013)
/tmp/100k is not a block special device.
Proceed anyway? (y,n) y
Filesystem too small for a journal
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
16 inodes, 100 blocks
5 blocks (5.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
16 inodes per group
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
##第3个里程碑-挂载到 /app/log目录(默认不存在)
[root@oldedu59 /]# mount /tmp/100k /app/log/
[root@oldedu59 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.8G 18G 10% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.7M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sdb1 98M 5.3M 93M 6% /data
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/loop0 93K 14K 72K 17% /mnt
/dev/loop1 93K 14K 72K 17% /app/log
[root@oldedu59 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/loop1 16 11 5 69% /app/log
[root@oldedu59 ~]# ##模拟inode满了
[root@oldedu59 ~]# cd /app/log/
[root@oldedu59 /app/log]# touch oldboy{01..10}.txt
touch: cannot touch ‘oldboy06.txt’: No space left on device
touch: cannot touch ‘oldboy07.txt’: No space left on device
touch: cannot touch ‘oldboy08.txt’: No space left on device
touch: cannot touch ‘oldboy09.txt’: No space left on device
touch: cannot touch ‘oldboy10.txt’: No space left on device
[root@oldedu59 /app/log]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/loop1 93K 14K 72K 17% /app/log
3>
4.Linux下面删除大量小文件解决流程
命名不支持文件,文件名字过多
可用ls或find+|xargs进行删除或处理
删除文件所在目录(记录号权限、所有者)
5.Java故障案例
1>原因:Java大量占用内存,占用swap
2>如何增加swap
(1)查看swap的使用情况:free -h(查看内存以及swap)
(2)流程:
第一步 创建指定的大小的文件:dd if=/dev/zero of=/tmp/500m bs=1M count=500
[root@oldboyedu59 ~]# dd if=/dev/zero of=/tmp/500m bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 27.9287 s, 18.8 MB/s
第二部 称为swap (相当于格式化)
mkswap +文件
[root@oldboyedu59 ~]# mkswap /tmp/500m
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=4b5d1107-da9b-4957-b1c3-0a29cd1d088f
第三步 激活(相当于挂载)
chmod 修改权限
swap +文件
[root@oldboyedu59 ~]# chmod 600 /tmp/500m
[root@oldboyedu59 ~]# swapon /tmp/500m
第四步 永久挂载
1./etc/fstab
CentOS7中通过dd创建文件 增加swap无法使用
除了CentOS7其他均可使用
2./etc/rc.local (CentOS 临时增加swap推荐)
第五步 检查最后的结果
[root@oldboyedu59 ~]# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 1048572 0 -2
/tmp/500m file 511996 0 -3
[root@oldboyedu59 ~]# free -h
total used free shared buff/cache available
Mem: 1.9G 94M 1.2G 9.6M 635M 1.7G
Swap: 1.5G 0B 1.5G
二、文件系统相关内容
1.常见的文件系统
CentOS 7 默认的文件系统xfs
CentOS 6 默认的文件系统ext4
CentOS 5 默认的文件系统ext3
交换分区 swap
内存文件系统 tmpfs 存放的数据是在内存中 用于加速或存放缓存
SUSE reiserFS
2.文件系统的应用场景
reiserfs大量小文件业务首选reiserfs(100K以内), 单独安装。
xfs有的门户的数据库MySQL业务会选择xfs。
ext4 视频下载,流媒体,数据库,小文件业务也OK,可以用默认的。
ext2 没有日志(不是messages cron secure),蓝汛、网宿的cache业务,CDN 网站加速服务的。
swap 交换分区 内存不足临时充当内存
tmpfs 用于加速或存放缓存
3.CDN是什么
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。