磁盘相关命令和磁盘故障案例
No Space Left on Device
磁盘空间不足
block满了 文件没有彻底删除 磁盘空间不足
原因
Linux彻底删除文件
1.文件硬链接数为0 (没有入口)
2.文件进程调用为0(重启服务)
排查过程
df -h 满了 du -sh /* 没有满
lsof |grep delete
lsof标记表示 :硬链接数为0 进程调用数不为0
重启服务
Block
原因
排查流程
df -h 查看磁盘整体情况
du -sh 一层一层查找
du 查看目录占用的空间
-h 人类可读大小进行显示
-s 让du只显示总共多大 如果不加 则显示目录下面所有目录的大小
soft
-r
逆序
-n
按数字顺序排列
排序例子
seq 20 |soft -rn
查找到某个文件或目录(比较大)
确认之后再删除
Inode
原因
磁盘inode用光了
排查
df -h没满 df -i 满了
排查流程.
du -sh 一层一层查找
du 查看目录占用的空间
-h 人类可读大小进行显示
-s 让du只显示总共多大 如果不加 则显示目录下面所有目录的大小
特殊: 注意: 用了 -h 就不能用 -n 会冲突
soft 相同的数字位先排序
-rn
按数字顺序逆序
-r
按数字顺序正序排列
排序例子
seq 20 |soft -rn
df -h 是目前文件系统的空间整体使用情况 df -i 参数指的是inode
#创建1个 100k磁盘
##第1个里程碑-创建100k的文件
[root@oldboyedu-59 ~]# 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.0010836 s, 94.5 MB/s
dd if=/dev/zero of=/tmp/100k bs=1k count=100
input file output file block size 数量
从哪里获取数据 输出文件 每次复制多大(10k 1M)
/dev/zero #白洞 源源不断输出
/dev/null #黑洞
/dev/urandom #生成随机数
##第2个里程碑-格式化
[root@oldboyedu-59 ~]# 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
[root@oldboyedu-59 ~]# file /tmp/100k
/tmp/100k: Linux rev 1.0 ext2 filesystem data, UUID=a80758ff-2f86-4285-b905-20bdc16e170d (extents) (64bit) (huge files)
##第3个里程碑-挂载到 /app/log目录(默认不存在) 挂载后用df -h 查看
[root@oldboyedu-59 ~]# #第3个里程碑-挂载到 /app/log目录(默认不存在) 挂载后用df -h 查看
[root@oldboyedu-59 ~]# mkdir -p /app/log
[root@oldboyedu-59 ~]# mount /tmp/100k /app/log/
[root@oldboyedu-59 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 20G 1.9G 18G 10% /
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/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/loop1 93K 14K 72K 17% /app/log
[root@oldboyedu-59 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 9973248 63084 9910164 1% /
devtmpfs 250786 394 250392 1% /dev
tmpfs 253511 1 253510 1% /dev/shm
tmpfs 253511 713 252798 1% /run
tmpfs 253511 16 253495 1% /sys/fs/cgroup
/dev/sda1 102400 326 102074 1% /boot
tmpfs 253511 1 253510 1% /run/user/0
/dev/loop1 16 11 5 69% /app/log
Inode
原因
磁盘inode用光了
排查
df -h没满 df -i 满了**
[root@oldboyedu-59 /app/log]# #模拟inode满了
[root@oldboyedu-59 /app/log]# rm -rf oldboy{01..10}.txt
[root@oldboyedu-59 /app/log]# rm -rf oldboy{01..10}.txtcd
[root@oldboyedu-59 /app/log]#
[root@oldboyedu-59 /app/log]# cd
[root@oldboyedu-59 ~]#
[root@oldboyedu-59 ~]# #模拟inode满了
[root@oldboyedu-59 ~]# cd /app/log/
[root@oldboyedu-59 /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@oldboyedu-59 /app/log]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 20G 1.9G 18G 10% /
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/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/loop1 93K 14K 72K 17% /app/log
[root@oldboyedu-59 /app/log]# touch oldboy.txt
touch: cannot touch ‘oldboy.txt’: No space left on device
[root@oldboyedu-59 /app/log]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 9973248 63084 9910164 1% /
devtmpfs 250786 394 250392 1% /dev
tmpfs 253511 1 253510 1% /dev/shm
tmpfs 253511 713 252798 1% /run
tmpfs 253511 16 253495 1% /sys/fs/cgroup
/dev/sda1 102400 326 102074 1% /boot
tmpfs 253511 1 253510 1% /run/user/0
/dev/loop1 16 16 0 100% /app/log
Linux下面删除大量小文件(文件)Argument list too long 解决流程
命令不支持文件名字过多
ls或find / |xargs 进行删除或处理
删除文件所在目录(记号权限和所有者)
#Linux下面删除大量小文件(文件) Argument list too long 解决流程
[root@oldboyedu59 ~]# mkdir test
[root@oldboyedu59 ~]# touch test/{1..400000}
-bash: /usr/bin/touch: Argument list too long
[root@oldboyedu59 ~]# ls test/
[root@oldboyedu59 ~]# echo test/{1..400000}|xargs touch
##报错
[root@oldboyedu59 ~]# ls test/|wc -l
400000
[root@oldboyedu59 ~]# \rm test/*
-bash: /usr/bin/rm: Argument list too long
##解决
ls或find +|xargs rm -f
即 ls test/ |xargs rm -f
find test/* -type f |xargs rm – f
block满了 文件没有彻底删除 磁盘空间不足
原因
Linux彻底删除文件
1.文件硬链接数为0 (没有入口)
2.文件进程调用为0(重启服务)
排查过程
df -h 满了 du -sh /* 没有满
lsof |grep delete
lsof标记表示 :硬链接数为0 进程调用数不为0
重启服务
yum install -y lsof
lsof list open files 显示系统中所有被打开的文件(使用中)
#模拟文件没有被彻底删除导致磁盘空间不足
可以用vim alex.txt 或者 tail -f alez.txt
进程调用
#在一个新的窗口 打开实时监控 lsof的delete标记说明
[root@oldboyedu-59 ~]# touch alex.txt
[root@oldboyedu-59 ~]# tail -f alex.txt
#在另一个窗口
[root@oldboyedu-59 ~]# lsof |grep alex.txt
tail 16472 root 3r REG 8,3 0 34987689 /root/alex.txt
[root@oldboyedu-59 ~]# rm -f alex.txt
[root@oldboyedu-59 ~]# ls -l alex.txt
ls: cannot access alex.txt: No such file or directory
[root@oldboyedu-59 ~]# lsof |grep alex.txt
tail 16472 root 3r REG 8,3 0 34987689 /root/alex.txt (deleted)
只要有(deleted) 这个标记,就表示这个文件就没有被彻底删除
dd 既能创建文件,还能测速
Java故障案例
Java大量占用内存,占用swap
如何增加swap
查看swap
第1个里程碑-创建指定的大小文件 500m
dd if=/dev/zero of=/tmp/500m bs=1M count=500
第2个里程碑-称为swap(格式化)
mkfs (make filesystem)格式化
mkswap
mkswap /tmp/500m
第3个里程碑-激活(挂载)
chmod 600 /tmp/500m
swapon /tmp/500m
第4个里程碑-永久挂载
1./etc/fstab
在CentOS7中通过dd创建文件 增加swap 无法使用
除了CentOS7 其他可以正常使用
2./etc/rc.local (CentOS 临时增加swap推荐)
#第1个里程碑-创建指定的大小文件 500m
[root@oldboyedu-59 ~]# dd if=/dev/zero of=/tmp/500m bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.60953 s, 326 MB/s
#第2个里程碑-称为swap(格式化)
[root@oldboyedu-59 ~]# mkswap /tmp/500m
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=8d1c1880-f3ea-4883-8253-40e56c957081
#第3个里程碑-激活(挂载)
[root@oldboyedu-59 ~]# swapon /tmp/500m 卸载命令 swapoff
swapon: /tmp/500m: insecure permissions 0644, 0600 suggested.
[root@oldboyedu-59 ~]# chmod 600 /tmp/500m
[root@oldboyedu-59 ~]# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 819196 0 -2
/tmp/500m file 511996 0 -3
#第4个里程碑-永久挂载
[root@oldboyedu-59 ~]# #1./etc/fstab在CentOS7中通过dd创建文件 增加swap 无法使用,除了CentOS7 其他可以正常使用
[root@oldboyedu-59 ~]# #2./etc/rc.local (CentOS 临时增加swap推荐)
[root@oldboyedu-59 ~]# # dd创建文件,把创建的文件vim加入到/etc/rc.local中 来增加swap
[root@oldboyedu-59 ~]# vim /etc/rc.local
文件系统
常见文件系统
文件系统应用场景
CDN是啥?
文件系统:
装修风格—决定房屋怎么住人
文件系统: 文件在磁盘中如何存放 存放规则
硬盘 ---->分区-------->格式化 创建文件系统----->挂载
划分隔断 装修 安装门窗
常见的文件系统:
CentOS 7 默认的文件系统xfs
CentOS 6 默认的文件系统ext4
CentOS 5 默认的文件系统ext3
交换分区 swap
内存文件系统 tmpfs 存放的数据是在内存中 用于加速或存放缓存
SUSE reiserFS
应用场景
reiserfs大量小文件业务首选reiserfs(100K以内), 单独安装。
xfs有的门户的数据库MySQL业务会选择xfs。
ext4 视频下载,流媒体,数据库,小文件业务也OK,可以用默认的。
ext2 没有日志(不是messages cron secure),蓝汛、网宿的cache业务,CDN 网站加速服务的。
swap 交换分区 内存不足临时充当内存
tmpfs 用于加速或存放缓存
CDN是啥?