Linux云计算学习笔记day30

2019-05-13  本文已影响0人  我要笑

创建1个 100k磁盘
第一个里程碑-创建100k点文件

[root@handsome-man ~]# dd  if=/dev/zero  of=/tmp/100k bs=1k count=100
dd: 打开"/tmp/100k" 失败: 是一个目录
[root@handsome-man ~]# ls -l /tmp/100k
总用量 0
[root@handsome-man ~]# rm -rf /tmp/100k
[root@handsome-man ~]# dd if=/dev/zero of=/tmp/100k bs=1k count=100
记录了100+0 的读入
记录了100+0 的写出
102400字节(102 kB)已复制,0.000689225 秒,149 MB/秒
[root@handsome-man ~]# ll -h /tmp/100k
-rw-r--r-- 1 root root 100K 5月  13 15:59 /tmp/100k
[root@handsome-man ~]# #第二个里程碑-格式化
[root@handsome-man ~]# file /tmp/100k 
/tmp/100k: data
[root@handsome-man ~]# mkfs.ext4 /tmp/100k 
mke2fs 1.42.9 (28-Dec-2013)
/tmp/100k is not a block special device.
无论如何也要继续? (y,n) y

文件系统小得无法记录日志
Discarding device blocks: 完成                            
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
16 inodes, 100 blocks
5 blocks (5.00%) reserved for the super user
第一个数据块=1
1 block group
8192 blocks per group, 8192 fragments per group
16 inodes per group

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Writing superblocks and filesystem accounting information: 完成

[root@handsome-man ~]# /tmp/100k is not a block special device./tmp/100k is not a block special device.
-bash: /tmp/100k: 权限不够
[root@handsome-man ~]# file /tmp/100k
/tmp/100k: Linux rev 1.0 ext2 filesystem data, UUID=5064e05e-c074-41dc-a88d-ee1c1cc449d5 (extents) (64bit) (huge files)
[root@handsome-man ~]# #第3个里程碑-挂载
[root@handsome-man ~]# mkdir -p /app/log
[root@handsome-man ~]# mount /tmp/100k   /app/log/
[root@handsome-man ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        19G  2.5G   17G   13% /
devtmpfs        476M     0  476M    0% /dev
tmpfs           487M     0  487M    0% /dev/shm
tmpfs           487M  7.7M  479M    2% /run
tmpfs           487M     0  487M    0% /sys/fs/cgroup
/dev/sda1       197M  133M   64M   68% /boot
tmpfs            98M     0   98M    0% /run/user/0
/dev/loop0       93K   14K   72K   17% /app/log
[root@handsome-man ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        19G  2.5G   17G   13% /
devtmpfs        476M     0  476M    0% /dev
tmpfs           487M     0  487M    0% /dev/shm
tmpfs           487M  7.7M  479M    2% /run
tmpfs           487M     0  487M    0% /sys/fs/cgroup
/dev/sda1       197M  133M   64M   68% /boot
tmpfs            98M     0   98M    0% /run/user/0
/dev/loop0       93K   14K   72K   17% /app/log

模拟inode满了

[root@handsome-man /app/log]# cd /app/log/
[root@handsome-man /app/log]# touch oldboy{01..10}.txt
touch: 无法创建"oldboy06.txt": 设备上没有空间
touch: 无法创建"oldboy07.txt": 设备上没有空间
touch: 无法创建"oldboy08.txt": 设备上没有空间
touch: 无法创建"oldboy09.txt": 设备上没有空间
touch: 无法创建"oldboy10.txt": 设备上没有空间
[root@handsome-man /app/log]# ls -l oldboy
ls: 无法访问oldboy: 没有那个文件或目录
[root@handsome-man /app/log]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        19G  2.5G   17G   13% /
devtmpfs        476M     0  476M    0% /dev
tmpfs           487M     0  487M    0% /dev/shm
tmpfs           487M  7.7M  479M    2% /run
tmpfs           487M     0  487M    0% /sys/fs/cgroup
/dev/sda1       197M  133M   64M   68% /boot
tmpfs            98M     0   98M    0% /run/user/0
/dev/loop0       93K   14K   72K   17% /app/log

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 

Linux文件删除原理:
Linux彻底删除1个文件的条件:
1.没有入口(rm 硬链接数为0) oldboy.txt /etc/hosts
2.没有人使用这个文件(进程调用数 为0) 重启这个服务

yum install lsof -y
lsof list open files 显示系统中所有被打开的文件(使用中)
[root@oldboyedu59 ~]# lsof |grep alex.txt
tail 14737 root 3r REG 8,3 0 134348620 /root/alex.txt
命令或服务 文件大小 inode 文件

[root@oldboyedu59 ~]# lsof |grep alex.txt
vim       14935         root    4u      REG                8,3       12288  134348621 /root/.alex.txt.swp

模拟文件没有被彻底删除导致磁盘空间不足

seq 500000000 >>/var/log/messages

df -h
du -sh /|sort -h
du -sh /var/
|sort -h
du -sh /var/log/*|sort -h
ll -h /var/log/messages
df -h
\rm -f /var/log/messages
df -h
ll /var/log/messages

此时完成故障模拟

排错

lsof |grep messages

rsyslog 系统日志服务

ll /var/log/messages /var/log/secure /var/log/cron

lsof |grep messages
df -h
systemctl restart rsyslog.service abrtd.service

lsof的delete标记说明

1个窗口 tail -f alex.txt

另外1个窗口

[root@oldboyedu59 ~]# lsof |grep alex.txt
tail      17302          root    3r      REG                8,3          0  134348620 /root/alex.txt
[root@oldboyedu59 ~]# rm -f alex.txt
[root@oldboyedu59 ~]# 
[root@oldboyedu59 ~]# 
[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
[root@oldboyedu59 ~]# lsof |grep alex.txt
tail      17302          root    3r      REG                8,3          0  134348620 /root/alex.txt (deleted)

No Space left on device 磁盘空间不足 故障系列:

原因 排查过程 解决
1.inode满了 df -h 没有满,df -i 整体哪里满了 找出系统中目录大于1MB的 然后确认之后删除下面的小文件
2.block正常 df -h 满了, du -sh 一层一层 排查 排查到具体的文件或目录时候 确认再删除
3.block(文件没有被彻底删除)df -h 满了, du -sh 没有满 ,lsof |grep delete 重启对应服务

1.inode满了 df -h 没有满,df -i 整体哪里满了 找出系统中目录大于1MB的 然后确认之后删除下面的小文件

[root@oldboyedu59 ~]# ll -hd guoav/
drwxr-xr-x 2 root root 1.2M May 13 11:49 guoav/
目录的block的大小 block里面存放的是文件名

[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, 5.14645 s, 102 MB/s


[root@oldboyedu59 ~]# mkswap /tmp/500m
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=6ba0befd-aeaf-4dd4-88b0-07cab2af6f61


[root@oldboyedu59 ~]# chmod 600 /tmp/500m
[root@oldboyedu59 ~]# swapon /tmp/500m 
[root@oldboyedu59 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        204M         76M        2.3M        1.7G        1.5G
Swap:          1.5G         32M        1.5G

Changes will remain in memory only, until you decide to write them.
你进行的修改默认存放在内存中,直到你决定保存这些修改的时候.
:wq

Be careful before using the write command.
保存之前小心点!

Device does not contain a recognized partition table
设备 没有 包含 磁盘分区表。

Building a new DOS disklabel with disk identifier 0x6df46197.

DPT= disk partition table 磁盘分区表

Invalid partition type `e'

mkfs.xfs /dev/sdb1
mkfs.xfs: /dev/sdb1 appears to contain an existing filesystem (ext4).
这个磁盘分区中 已经包含了1个文件系统(已经格式化过了)
mkfs.xfs: Use the -f option to force overwrite.
如果强制格式化使用-f

[root@cuihua ~]# mount /dev/sdb1 /mnt
mount: /dev/sdb1 is write-protected, mounting read-only
mount: unknown filesystem type '(null)'
       未知的文件系统(没有格式化)
       

5.
[root@guanggege ~]# mount  /dev/sdb1  /mnt/
mount: special device /dev/sdb1 does not exist
       特殊文件(设备文件)     不存在
       

6.

[root@oldboyedu59 ~]# mkfs.xfs /dev/sdb1
mkfs.xfs: /dev/sdb1 contains a mounted filesystem
sdb1磁盘分区 包含 1个已经挂载的文件系统 (磁盘分区已经挂载)
Usage: mkfs.xfs
/* blocksize / [-b log=n|size=num]
/
metadata / [-m crc=0|1,finobt=0|1,uuid=xxx]
/
data subvol / [-d agcount=n,agsize=n,file,name=xxx,size=num,
(sunit=value,swidth=value|su=num,sw=num|noalign),
sectlog=n|sectsize=num
/
force overwrite / [-f]
/
inode size / [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2,
projid32bit=0|1]
/
no discard / [-K]
/
log subvol / [-l agnum=n,internal,size=num,logdev=xxx,version=n
sunit=value|su=num,sectlog=n|sectsize=num,
lazy-count=0|1]
/
label / [-L label (maximum 12 characters)]
/
naming / [-n log=n|size=num,version=2|ci,ftype=0|1]
/
no-op info only / [-N]
/
prototype file / [-p fname]
/
quiet / [-q]
/
realtime subvol / [-r extsize=num,size=num,rtdev=xxx]
/
sectorsize / [-s log=n|size=num]
/
version */ [-V]
devicename
<devicename> is required unless -d name=xxx is given.
<num> is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB),
xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB).
<value> is xxx (512 byte blocks).

  1. [root@oldboy ~]# mkfs.xfs /dev/sdb1 -f
    agsize (2560 blocks) too small, need at least 4096 blocks
    磁盘分区太小了 无法格式化
    Usage: mkfs.xfs

[root@oldboyedu ~]# mount /dev/sdb1 /mnt/
mount: /dev/sdb1 is already mounted or /mnt busy
             磁盘分区 已经 挂载或/mnt正在使用中
             
       /dev/sdb1 is already mounted on /mnt

提示集合:

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 ~]# ls test/|wc -l
400000

/tmp/100k is not a block special device.

dd if=/dev/zero of=/tmp/100k bs=1k count=100
[root@oldboyedu59 ~]# file /tmp/100k
/tmp/100k: data
[root@oldboyedu59 ~]# mkfs.ext4 /tmp/100k
mke2fs 1.42.9 (28-Dec-2013)
/tmp/100k is not a block special device.
Proceed anyway? (y,n) y

No space left on device

[root@oldboyedu59 /app/log]# touch oldboy{01..10}.txt
touch: cannot touch ‘oldboy06.txt’: No space left on device

Cannot allocate memory

无法分配内存

[root@oldboy ~]# echo test1/{0..500000000}
-bash: fork: Cannot allocate memory

yum 故障 Resource temporarily unavailable

error: db5 error(11) from dbenv->open: Resource temporarily unavailable
error: cannot open Packages index using db5 - Resource temporarily unavailable (11)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

原因 :
yum的数据库缓存没了 重新建立
解决:
rpmdb --rebuilddb

No space left on device

[root@shenfan2hao1 ~]# yum install lsof -y
error: db5 error(28) from dbenv->open: No space left on device
error: cannot open Packages index using db5 - No space left on device (28)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

Error: rpmdb open failed

Device or resource busy

设备正忙
这个文件正在使用中 已经挂载或激活

[root@oldedu59 ~]# ll /tmp/500m 
-rw-r--r-- 1 root root 524288000 May 13 12:10 /tmp/500m
[root@oldedu59 ~]# swapon /tmp/500m
swapon: /tmp/500m: insecure permissions 0644, 0600 suggested.
[root@oldedu59 ~]# chmod 600 /tmp/500m 
[root@oldedu59 ~]# swapon /tmp/500m
swapon: /tmp/500m: swapon failed: Device or resource busy
[root@oldboyedu59 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        99G  4.2G   95G   5% /
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/sda1       197M  105M   93M  54% /boot
/dev/sdb1        98M  5.3M   93M   6% /data
tmpfs           199M     0  199M   0% /run/user/0
/dev/loop0       93K   14K   72K  17% /app/log
[root@oldboyedu59 ~]# mount /tmp/100k   /app/log/
mount: /tmp/100k is already mounted

文件系统:
装修风格---决定房屋怎么住人
文件系统: 文件在磁盘中如何存放 存放规则

硬盘 ---->分区-------->格式化 创建文件系统----->挂载
划分隔断 装修 安装门窗

常见的文件系统:
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 用于加速或存放缓存

上一篇下一篇

猜你喜欢

热点阅读