5.13笔记整理 磁盘内容补充
创建一个100K的磁盘
① 创建一个100k的文件
dd if=/dev/zero of=/tmp/100k bs=1k count=100
[root@guanggege ~]# 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.000686291 s, 149 MB/s
[root@guanggege ~]#
dd | if=/dev/zero | of=/tmp/100k | bs=1k | count=100 |
---|---|---|---|---|
- | input file | output file | block size | 数量 |
- | 从哪里获取数据 | 输出文件 | 每次复制多大(10k 1M) | 执行多少次 |
② 格式化文件
mkfs.ext4 /tmp/100k
[root@guanggege ~]# 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@guanggege ~]#
③ 挂载
创建一个挂载点mkdir -p /app/log
挂载mount /tmp/100k /app/log/
[root@guanggege ~]# mount /tmp/100k /app/log/
[root@guanggege ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 99G 2.5G 97G 3% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sdb1 200M 11M 190M 6% /data
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/loop0 93K 14K 72K 17% /app/log
[root@guanggege ~]#
Linux下删除大量小文件
报错:Argument list too long 解决流程
[root@oldboyedu59 ~]# touch test/{1..400000}
-bash: /usr/bin/touch: Argument list too long
命令不支持文件名字过多
① 可使用ls或find加|xargs 进行删除处理
ls或find |xargs rm -f
② 删除文件所在目录,在重新创建目录(提前记录好权限和所有者)
Java故障案例
Java占用大量内存,占用swap
如何增加swap
查看swap:free –h
[root@guanggege ~]# free -h
total used free shared buff/cache available
Mem: 1.9G 92M 1.7G 9.5M 115M 1.7G
Swap: 1.0G 0B 1.0G
① 创建指定的大小文件500m
dd if=/dev/zero of=/tmp/500m bs=1M count=500
[root@guanggege ~]# dd if=/dev/zero of=/tmp/500m bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 7.31567 s, 71.7 MB/s
[root@guanggege ~]#
② 成为swap(格式化) 一般格式化使用mkfs(make filesystem)
mkswap /tmp/500m
[root@guanggege ~]# mkswap /tmp/500m
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=252fd2fb-0857-4f3a-b39b-9434008858a6
[root@guanggege ~]#
③ 激活(挂载)
改权限为600 chmod 600 /tmp/500m
[root@guanggege ~]# chmod 600 /tmp/500m
[root@guanggege ~]#
挂载 swapon /tmp/500m
[root@guanggege ~]# swapon /tmp/500m
[root@guanggege ~]#
swapon -s 查看swap
[root@guanggege ~]# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 1048572 0 -2
/tmp/500m file 511996 0 -3
[root@guanggege ~]#
④ 永久挂载
1./etc/fstab 在centos7中通过dd创建文件增加的swap无法使用,除了centos7其他可以正常使用
2./etc/rc.local centos临时增加swap(推荐)
[root@guanggege ~]# vim /etc/rc.local centos
2 files to edit
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
swapon /tmp/500m
文件系统:文件在磁盘中的存放规则(文件在磁盘中如何存放)
常见的文件系统
Centos7 | xfs | 有的门户的数据库MySQL业务会选择 |
---|---|---|
Centos6 | ext4 | 视频下载,流媒体,数据库,小文件业务 |
Centos5 | ext3 | 没有日志,蓝汛,网宿的cache业务CDN网站加速服务 |
交换分区 | swap | 内存不足充当临时内存 |
内存文件系统 | tmpfs | 存放的数据在内存中,用于加速或存放缓存 |
SUSE | reiserFS | 大量小文件业务首选(100K以内),单独安装 |
磁盘空间不足解决方案
No space Left on Device
[root@oldboyedu59 /app/log]# touch oldboy{01..10}.txt
touch: cannot touch ‘oldboy06.txt’: No space left on device
Block 文件没有彻底删除
彻底删除文件的条件:
① 文件硬连接数为0--->没有入口
② 文件进程调用数为0--->没有人正在使用
情况一文件进程调用数不为0时(此情况常出现在文件删除,但磁盘空间扔被占用)
① df –h 满了 du -sh /* 没有满
[root@oldboyedu59 ~]# rm -f alex.txt
[root@oldboyedu59 ~]# lsof |grep alex.txt
tail 17302 root 3r REG 8,3 0 134348620 /root/alex.txt (deleted)
[root@oldboyedu59 ~]# ls -l alex.txt
ls: cannot access alex.txt: No such file or directory
② lsof |grep delete (lsof标记表示:硬链接为0,进程调用数不为0)
[root@oldboyedu59 ~]# lsof |grep alex.txt
tail 17302 root 3r REG 8,3 0 134348620 /root/alex.txt (deleted)
③ 重启服务或中断操作
重启日志收集服务或取消tail -f操作
[root@guanggege ~]# systemctl restart rsyslog.service abrtd.service
[root@guanggege ~]#
情况二某个文件或目录比较大
命令du查看目录占用的空间
-h 一人类可读大小进行显示
-s 让du只显示总共有多大,如果不加,则显示目录下面所有目录的大小
命令sort显示排序,默认是按照字符升序排列
-r 倒序排列
-n 按照数字顺序排序
使用du –sh /*|sort -h 一层层查找
[root@guanggege ~]# du -sh /*|sort -h
du: cannot access ‘/proc/7977/task/7977/fd/4’: No such file or directory
du: cannot access ‘/proc/7977/task/7977/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/7977/fd/4’: No such file or directory
du: cannot access ‘/proc/7977/fdinfo/4’: No such file or directory
0 /bin
0 /ceshi.txt
0 /data
0 /dev
0 /lib
0 /lib64
0 /lidao
0 /lidao.txt
0 /media
0 /mnt
0 /opt
0 /proc
0 /sbin
0 /srv
0 /sys
4.0K /pass.txt
8.0K /oldboy
8.0K /server
13K /app
152K /home
9.6M /run
15M /root
32M /etc
49M /backup
95M /boot
267M /var
501M /tmp
1.4G /usr
[root@guanggege ~]#
查找到某个文件或目录比较大,确认之后再删除
Inode满了
排查:df -h没有满 df -i 满了
目录的block的大小 block里面存放的是文件名
所以找出系统中目录大于1MB的,确认之后删除下面的小文件即可
[root@oldboyedu59 ~]# ll -hd guoav/
drwxr-xr-x 2 root root 1.2M May 13 11:49 guoav/