美文网首页
Linux云计算学习笔记day30

Linux云计算学习笔记day30

作者: 我要笑 | 来源:发表于2019-05-13 19:07 被阅读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 用于加速或存放缓存

    相关文章

      网友评论

          本文标题:Linux云计算学习笔记day30

          本文链接:https://www.haomeiwen.com/subject/zifraqtx.html