zoukankan      html  css  js  c++  java
  • linux基础学习-16.5-磁盘格式化(故障案例-swap空间不足)

    1、磁盘格式化

    [root@oldboy ~]# partprobe /dev/sdc 强制内核重新查找一次分区表 (分区完成后执行此命令)

    [root@oldboy ~]# mkfs.ext4 /dev/sdc1

    mke2fs 1.41.12 (17-May-2010)

    文件系统标签=

    操作系统:Linux

    块大小=1024 (log=0)

    分块大小=1024 (log=0)

    Stride=0 blocks, Stripe width=0 blocks

    2816 inodes, 11248 blocks

    562 blocks (5.00%) reserved for the super user

    第一个数据块=1

    Maximum filesystem blocks=11534336

    2 block groups

    8192 blocks per group, 8192 fragments per group

    1408 inodes per group

    Superblock backups stored on blocks:

    8193

    正在写入inode表: 完成

    Creating journal (1024 blocks): 完成

    Writing superblocks and filesystem accounting information: 完成

    This filesystem will be automatically checked every 31 mounts or

    180 days, whichever comes first. Use tune2fs -c or -i to override.

    [root@oldboy ~]# tune2fs -c -1 /dev/sdc1 取消文件系统自动检查

    tune2fs 1.41.12 (17-May-2010)

    Setting maximal mount count to -1

    2、partprobe /dev/sdc 报错

    Warning: WARNING: the kernel failed to re-read the partition table on /dev/sdb (Device or resource busy). As a result, it may not reflect all of your changes until after reboot

    解决方法:

    1、重启机器可以解决

    2、 lsof /dev/sdb 看一下是否有程式在使用中,如果有可以杀掉进程试试

    mkfs.ext4 -b 4096 -I 256 /dev/sdb1

    tune2fs -c 0 -i 0 /dev/sdb1

    [root@oldboy ~]# dumpe2fs /dev/sdb1 |egrep -i "(inode|block) size"

    dumpe2fs 1.41.12 (17-May-2010)

    Block size: 4096

    Inode size: 256

    3、xfs分区格式:

    yum install xfsprogs kmod-xfs xorg-x11-xfs xfsdump -y

    mkfs.xfs -f /dev/sdb1

    4、挂载

    [root@oldboy ~]# mount /dev/sdc1 /mnt/

    [root@oldboy ~]# df -h

    Filesystem Size Used Avail Use% Mounted on

    /dev/sda3 7.7G 1.5G 5.8G 20% /

    tmpfs 495M 0 495M 0% /dev/shm

    /dev/sda1 190M 36M 145M 20% /boot

    /dev/sdc1 9.7M 100K 9.0M 2% /mnt

    5、硬盘被分区后格式化过程

    硬盘被分区后,真正的格式化过程:

    1)格式化

    mkfs.ext4 /dev/sdb1

    mkfs -t ext3 /dev/sdb1

    mkfs -t ext3 -b 4096 -I 512 /dev/sdb1

    查看格式化后的文件系统信息dumpe2fs命令。

    2)取消文件系统自动检查(可选)

    tune2fs -c -1 /dev/sdb1

    3)挂载(临时挂载)

    mount -o rw,sync /dev/sdb1 /mnt

    4)查看挂载情况,及参数信息

    df -h

    cat /proc/mounts

    5)开机自动挂载

    把mount /dev/sdb1 /mnt 放入/etc/rc.local,适合网络文件系统,NFS,MFS,GFS。

    按照fstab的格式加入上述挂载信息。/etc/fstab,适合本地磁盘。

    要挂载的设备 挂载点 挂载类型 挂载选项 备份 磁盘检查

    UUID=4bc27c91-8cae-44fb-ba19-4213d1d47326 /mnt ext4 defaults 0 0

    /dev/sdb2 /opt ext3 defaults 0 0

    要挂载的设备可以是设备路径,也可以是对应的UUID。

    特别注意:执行mount -a测试挂载,否则开机可能导致系统起不来。

    [root@c66-mobban1 ~]# blkid

    /dev/sda1: UUID="88020ecf-caae-4f70-abd5-f01890594ebe" TYPE="ext4"

    /dev/sda2: UUID="d3a79fb3-e573-4380-a2f9-2ffa0edaca79" TYPE="swap"

    /dev/sda3: UUID="1dd4d340-204d-4ce1-b7b2-e1cefc61f466" TYPE="ext4"

    /dev/sdb1: UUID="4bc27c91-8cae-44fb-ba19-4213d1d47326" TYPE="ext4"

    /dev/sdb2: UUID="c8e8b094-166b-40ae-9155-ac29da06c80e" SEC_TYPE="ext2" TYPE="ext3"

    [root@c66-mobban1 ~]# tail -2 /etc/fstab

    UUID=4bc27c91-8cae-44fb-ba19-4213d1d47326 /mnt ext4 defaults 0 0

    /dev/sdb2 /opt ext3 defaults 0 0

    6、对损坏的磁盘做手动检查

    方法1:

    fsck -C -f -t ext4 /dev/sdb1

    方法2:

    [root@oldboy ~]# badblocks -sv /dev/sdb1

    Checking blocks 0 to 20479

    Checking for bad blocks (read-only test): done

    Pass completed, 0 bad blocks found.

    7、如何检查并修复/dev/hda5

    fsck -C -t msdos -a /dev/hda5

    e2fsck -p /dev/hda5

    作业:fstab被破坏了,导致系统无法启动,如何修复?

    使用光盘引导进入救援模式,或者在单用户模式下,使用mount / -o remount 重新挂载提权,然后修改/etc/fstab文件,修改正确后重启即可

    8、parted 分区

    不写单位默认为MB

    实验:100M盘

    parted /dev/sdb mklabel gpt Yes

    parted /dev/sdb mkpart primary 0 10 Ignore

    parted /dev/sdb mkpart primary linux-swap 11 21 Ignore

    parted /dev/sdb mkpart logical ext4 22 32 Ignore

    parted /dev/sdb p

    parted /dev/sdb rm 3

    fdisk 非交互式分区:

    parted /dev/sdb mklabel bsd yes 将硬盘分区表由gpt格式转换为bsd格式(MBR)

    vi fdisk.txt

    n 新建一个分区

    p primary分区

    1 分区编号

    起始扇区(可以不写)

    +100M 结束扇区 (可以直接写大小)

    p 打印分区表

    w 保存修改并退出

    fdisk /dev/sdb < fdisk.txt 执行分区

    ll /dev/sdb* 检查分区是否成功

    mkfs.ext4 /dev/sdb1 格式化分区

    mount /dev/sdb1 /mnt 挂载分区

    df -h |grep /dev/sdb1

    echo -e "n p 1 +10M n p 2 +10M w" |fdisk /dev/sdb

    partprobe

    注意: parted 的操作都是实时的,千万不能在生产环境中测试

    实验:100M盘

    parted /dev/sdb mklabel gpt Yes

    parted /dev/sdb mkpart primary 0 10 Ignore

    parted /dev/sdb mkpart primary linux-swap 11 21 Ignore

    parted /dev/sdb mkpart logical ext4 22 32 Ignore

    parted /dev/sdb p

    9、fdisk parted ext4 xfs {#222--fdisk--parted--ext4--xfs}

    传统的fdisk分区不支持2T以上的磁盘分区,而parted分区可以支持,而ext4格式不支持16T以上的磁盘空间分区,必须使用xfs分区

    2TB以上磁盘分区、制作文件系统:

    分为两个主分区(先创建磁盘标签mklable ,再创建分区mkpart分区类型)

    [root@localhost ~]# parted /dev/sdb # 使用parted来对GPT磁盘操作,进入交互式模式

    (parted) mklabel gpt # 将MBR磁盘格式化为GPT

    (parted) print #打印当前分区

    (parted) mkpart primary 0 4.5TB # 分一个4.5T的主分区

    (parted) mkpart primary 4.5TB 12TB # 分一个7.5T的主分区

    (parted) print #打印当前分区

    (parted) quit 退出

    Information: Don’t forget to update /etc/fstab, if necessary.

    
    通过parted工具来删除分区
    
    [root@jetsen ~]# parted /dev/sde
    
    GNU Parted 1.8.1
    
    Using /dev/sde
    
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    
    (parted) p
    
    Model: VMware, VMware Virtual S (scsi)
    
    Disk /dev/sde: 2190GB
    
    Sector size (logical/physical): 512B/512B
    
    Partition Table: gpt
    
    Number Start End Size File system Name Flags
    
    1 17.4kB 2190GB 2190GB gpt2t
    
    (parted) rm 1 ----删除1号分区
    
    (parted) p ----显示分区信息,看如下是没有分区的
    
    Model: VMware, VMware Virtual S (scsi)
    
    Disk /dev/sde: 2190GB
    
    Sector size (logical/physical): 512B/512B
    
    Partition Table: gpt
    
    Number Start End Size File system Name Flags
    
    (parted) q
    
    Information: Don't forget to update /etc/fstab, if necessary.
    
    #### 10、故障案例-swap空间不足
    
    日常运维工作过程中,我们经常会遇到swap空间不足的情况,甚至nagios都把swap监控作为一个基础的系统监控项,足以看出这个性能指标的重要性。
    
    一般是MySQL数据库机器比较容易发生swap空间不足,也有应用服务器高负载的情况下也会产生这现象。
    
    ##### 为什么会产生swap使用呢?
    
    假设我们的物理内存是32G,swap是4G。如果MySQL本身已经占用了24G物理内存,
    
    而同时其他程序或者系统模块又需要8G内存,这时候操作系统就可能把MySQL所拥有的一部分地址空间映射到swap上去。
    
    比如拷贝或压缩一个大文件,或用mysqldump导出一个很大的数据库的时候,文件系统往往会向Linux申请大量的内存作为cache,
    
    一不小心就会导致L使用swap。这个情景比较常见,以下是最简单的三个调整方法:
    
    ① /proc/sys/vm/swappiness的内容改成0(临时),/etc/sysctl.conf上添加vm.swappiness=0(永久)
    
    这个参数决定了Linux是倾向于使用swap,还是倾向于释放文件系统cache。在内存紧张的情况下,数值越低越倾向于释放文件系统cache。当然,这个参数只能减少使用swap的概率,并不能避免Linux使用swap。
    
    ② 修改MySQL的配置参数innodb\_flush\_method,开启O\_DIRECT模式。这种情况下,InnoDB的buffer pool会直接绕过文件系统cache来访问磁盘,但是redo log依旧会使用文件系统cache。值得注意的是,Redo log是覆写模式的,即使使用了文件系统的cache,也不会占用太多。
    
    ③ 添加MySQL的配置参数memlock,这个参数会强迫mysqld进程的地址空间一直被锁定在物理内存上,对于os来说是非常霸道的一个要求。必须要用root帐号来启动MySQL才能生效。还有一个比较复杂的方法,指定MySQL使用大页内存(Large Page)。Linux上的大页内存是不会被换出物理内存的,和memlock有异曲同工之妙。
    
    程序运行的一个必要条件就是足够的内存,而内存往往是系统里面比较紧张的一种资源。为了满足更多程序的要求,操作系统虚拟了一部分内存地址,
    
    并将之映射到 swap上。对于程序来说,它只知道操作系统给自己分配了内存地址,但并不清楚这些内存地址到底映射到物理内存还是swap。
    
    物理内存和swap在功能上是一样的,只是因为物理存储元件的不同(内存和磁盘),性能上有很大的差别。操作系统会根据程序使用内存的特点
    
    进行换入和换出,尽可能地把物理内存留给最需要它的程序。但是这种调度是 按照预先设定的某种规则的,并不能完全符合程序的需要。
    
    ##### 手动增加swap空间步骤 :
    
    首先我们必须增加一个虚拟磁盘,增加虚拟磁盘基本思路:建立swapfile-&gt;格式化swap格式-&gt;启用虚拟磁盘
    
    1)建立swapfile
    
    # dd if=/dev/zero of=tmp/newdisk bs=1M count=100
    
    (if指定源(一般为 /dev/zero ,它是unix下源源不断产生“0”的特有文件);of制定目标文件;bs指定块大小;count定义块的数量)
    
    6
    
    2)格式化为swap
    
    #mkswap -f /tmp/newdisk
    
    3)加载到现有磁盘上(注意留意swap空间大小变化  用命令 free -m查看)
    
    # swapon /tmp/newdisk          (把/tmp/newdisk 加载到先用磁盘)
    
    4)可按提示修改文件的权限
    
    chmod 600 /tmp/newdisk
    
    ![](/assets/23-25.png)
    
    5)卸载此磁盘
    
    swapoff /tmp/newdisk
    
    6)删除虚拟磁盘文件
    
    rm -f /tmp/newdisk
    
    #### 11、企业案例:java环境内存不够用,大量占用swap.临时增加swap.
    
    创建一个大文件作为swap.
    
    ```
    1.创建文件 
    [root@oldboyedu45-lnb data]# dd if=/dev/zero  of=/tmp/swap100  bs=1M  count=100 
    100+0 records in
    100+0 records out
    104857600 bytes (105 MB) copied, 0.143004 s, 733 MB/s
    [root@oldboyedu45-lnb data]# 
    [root@oldboyedu45-lnb data]# ll -h /tmp/swap100 
    -rw-r--r-- 1 root root 100M Mar  6 12:06 /tmp/swap100
    
    2.让这个文件变化为swap文件 
    
    [root@oldboyedu45-lnb data]# file /tmp/swap100 
    /tmp/swap100: data
    [root@oldboyedu45-lnb data]# mkswap /tmp/swap100 
    Setting up swapspace version 1, size = 102396 KiB
    no label, UUID=89271e7f-9625-48de-89a4-a5b8198a616d
    [root@oldboyedu45-lnb data]# file /tmp/swap100 
    /tmp/swap100: Linux/i386 swap file (new style) 1 (4K pages) size 25599 pages
    
    
    3.生效
    [root@oldboyedu45-lnb data]# swapon /tmp/swap100 
    [root@oldboyedu45-lnb data]# 
    [root@oldboyedu45-lnb data]# free -h
                 total       used       free     shared    buffers     cached
    Mem:          1.8G       1.5G       358M       244K        16M       795M
    -/+ buffers/cache:       691M       1.1G
    Swap:         867M         0B       867M
    
    
    4.永久生效
    
     法1 
     swapon /tmp/swap100 写入/etc/rc.local 
    
     法2 
     /etc/fstab
    
    [root@oldboyedu45-lnb ~]# tail -2 /etc/fstab 
    #/dev/sdb1               /data                   ext4    defaults        0 0
    #/tmp/swap100            swap                    swap    defaults        0 1
    ```
    
    #### 练习题:
    
    1、fstab被破坏了,导致系统无法启动,如何修复?
    
    2、故障案例-swap空间不足
    
    3、简述磁盘分区后格式化的过程
    

     

  • 相关阅读:
    Solr4:加入中文分词IKAnalyzer2012 FF
    Solr4:Hello World级别示范
    Solr4:Tomcat7下面配置Solr
    Java:XML篇,使用DOM读取并解析XML
    Solr4:加入中文分词mmseg4j
    Java:XML篇,使用SAX读取并解析XML数据
    SSIS包如何动态指定文件路径
    如何定时执行SSIS包
    用户控件使用事件
    用户控件使用事件与调用页面交互
  • 原文地址:https://www.cnblogs.com/Klanti/p/9143585.html
Copyright © 2011-2022 走看看