Linux云计算学习笔记day30

创建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
is required unless -d name=xxx is given.
is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB),
xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB).
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 用于加速或存放缓存

你可能感兴趣的:(Linux云计算学习笔记day30)