day31:磁盘管理补充

主要内容:

磁盘相关命令和故障案例

文件系统相关内容

一、磁盘相关命令和故障案例

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网络拥挤的状况,提高用户访问网站的响应速度。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容