2019-05-13磁盘内容补充

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/

你可能感兴趣的:(2019-05-13磁盘内容补充)