zoukankan      html  css  js  c++  java
  • 第二十八章 磁盘管理

    一、磁盘基础介绍

    1.什么是磁盘?

    磁盘是指利用磁记录技术存储数据的存储器,是所有硬式存储的统称,如最早出现的软盘,现在的硬盘,都是磁盘中的一部分。

    2.什么是软盘?

    磁盘开始指的是1.44MB的3.5英寸磁盘,这是很早时候的电脑储存盘,也叫软盘。

    软盘在如今已经很少被使用了,使用软盘需要安装软盘驱动。软盘容量小,容易损坏。随着数据的大量增长,软盘已经不满足日益所需的数据存储需求,所以,硬盘便被研发了出来。

    3.什么是硬盘?

    硬盘就是一种最为常见的外存储器,它好比是数据的外部仓库一样。电脑除了要有"工作间",还要有专门存储东西的仓库。是计算机中的最大的存储装置了,我们会将磁盘的储存片装到硬质金属盒子里,这样就可以得到更好的保护,而且在使用寿命上也比软盘优越得多,只有低格的时候才会对硬盘有很大的伤害。

    4.磁盘与软盘硬盘的关系

    磁盘是一种统称,即是一开始的软盘,又是现如今的硬盘,但是在现在,说起磁盘,都指的是硬盘。

    二、磁盘的根本结构

    1.盘片

    盘片是硬盘中承载数据存储的介质。硬盘盘片是以坚固耐用的材料为盘基,将磁粉附着在铝合金(新材料也有用玻璃)圆盘片的表面上,表面被加工的相当平滑。这些磁粉被划分成为磁道的若干个同心圆,在每个同心圆的磁道上就好像有无数的任意排列的小磁铁,它们分别代表着0和1的状态。当这些小磁铁受到来自磁头的磁力影响时,其排列的方向会随之改变。

    利用磁头的磁力控制指定的一些小磁铁方向,使每个小磁铁都可以用来储存信息。硬盘是由多个盘片叠加在一起,互相之间由垫圈隔开。

    硬盘中一般会有多个盘片,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头(Head,简写为H)。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。盘片的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片就编号为2面和3面。

    2.磁道

    当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。

    每个盘片的盘面在出厂的时候被划分出了多个同心圆环,数据就存储在这样的同心圆环上面,每个盘面可以划分多个磁道,但是肉眼不可见。通常一块盘面有成千上万个磁道。

    磁盘上的磁道是一组记录密度不同的同心圆。磁表面存储器是在不同形状(如盘状、带状等)的载体上。

    3.扇区

    在硬盘出厂时会对磁盘进行一次低级格式化,其实就是再将每个磁道划分为若干个弧段,每个弧段就是一个扇区(Sector)。若干个扇区就组成整个盘片,硬盘的读写以扇区为基本单位。这种以簇为最小分配单位的机制,使硬盘对数据的管理变得相对容易。现在每个扇区可存储512字节数据,已经成了业界的约定。

    低级格式化就是将空白的磁盘划分出柱面和磁道,再将磁道划分为若干个扇区,每个扇区又划分出标识部分ID、间隔区GAP和数据区DATA等。

    硬盘低级格式化的功用:硬盘低级格式化是对硬盘最彻底的初始化方式,经过低格后的硬盘,原来保存的数据将会全部丢失,所以一般来说低格硬盘是非常不可取的,只有非常必要的时候才能低格硬盘。而这个所谓的必要时候有两种,一是硬盘出厂前,硬盘厂会对硬盘进行一次低级格式化;另一个是当硬盘出现某种类型的坏道时,使用低级格式化能起到一定的缓解或者屏蔽作用。

    4.柱面

    柱面实际上就是我们抽象出来的一个逻辑概念,简单来说就是处于同一个垂直区域的磁道称为柱面,即各盘面上面相同位置的集合,这样数据如果存储到相同半径磁道上的同一扇区,这样可以实现并行读取,主要是减少磁头寻道时间。

    5.磁头

    磁头是硬盘中最昂贵的部件,也是硬盘技术中最重要和最关键的一环。主要作用是读取磁盘磁道上面的金属块,负责读或写入数据。

    三、磁盘的相关概念

    1.磁盘的接口

    IDE SCSI     #淘汰了


    SATA III SAS   #企业级


    SSD( SATA III PCIE )


    M2    超极本的接口标准    MSATA

    2.机械硬盘和固态硬盘的区别

    机械硬盘    HDD ·        固态硬盘    SSD

    容量大价格低            容量小价格贵

    抗击打能力弱           抗击打能力强

    读写速度慢             读写速度快

    数据损坏恢复易           数据恢复难

    寿命一直使用            使用期限有一定限制

    3.磁盘的命名方式:

    /dev/sda1       #第一块物理硬盘的第一个分区

    /dev/sdb3        #第二块物理硬盘的第三个分区

    /dev/vdc5        #第三块虚拟硬盘的第5个分区


    sd      #物理硬盘


    vd     #虚拟硬盘


    4.磁盘的相关单位和术语

    尺寸: 2.5英寸 3.5英寸

    数据大小: bit B KB MB GB TB PB EB

    单位换算: 1024 1B=8b

    转速: RPM 转/每分钟 5400 7200 10k 15k

    IOPS    衡量磁盘读写   IO的单位    每秒的输入输出


    5.两个分区表:

    MBR 适用于2TB 只能有4个主分区 扩展分区(逻辑分区 )


    3个主分区 + 1个扩展分区( 逻辑分区...... )

    MBR的位置: 0磁头0磁道1扇区 512字节

    446字节 MBR引导记录

    64字节4个主分区

    2字节分区结束标识符

    GPT 适用于2TB 128个主分区

    6.分区工具:

    fdisk      #适用于2TB的分区

    gdisk     #适用于2TB以上

    四、Fdisk分区

    [root@jindada ~]# ll /dev/sd*
    brw-rw---- 1 root disk 8, 0 Aug 3 09:34 /dev/sda
    brw-rw---- 1 root disk 8, 1 Aug 3 09:34 /dev/sda1
    brw-rw---- 1 root disk 8, 2 Aug 3 09:34 /dev/sda2
    brw-rw---- 1 root disk 8, 3 Aug 3 09:34 /dev/sda3
    [root@jindada ~]# lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 100G 0 disk
    ├─sda1 8:1 0 500M 0 part /boot
    ├─sda2 8:2 0 2G 0 part [SWAP]
    └─sda3 8:3 0 97.5G 0 part /
    sr0 11:0 1 4.3G 0 rom /mnt


    [root@jindada ~]# lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 100G 0 disk
    ├─sda1 8:1 0 500M 0 part /boot
    ├─sda2 8:2 0 2G 0 part [SWAP]
    └─sda3 8:3 0 97.5G 0 part /
    sdb 8:16 0 100G 0 disk
    sdc 8:32 0 3T 0 disk
    sr0 11:0 1 4.3G 0 rom

     


    [root@jindada ~]# ll /dev/sd*
    brw-rw---- 1 root disk 8, 0 Aug 3 17:38 /dev/sda
    brw-rw---- 1 root disk 8, 1 Aug 3 17:38 /dev/sda1
    brw-rw---- 1 root disk 8, 2 Aug 3 17:38 /dev/sda2
    brw-rw---- 1 root disk 8, 3 Aug 3 17:38 /dev/sda3
    brw-rw---- 1 root disk 8, 16 Aug 3 17:38 /dev/sdb
    brw-rw---- 1 root disk 8, 32 Aug 3 17:38 /dev/sdc

     

    #显示某块磁盘的分区信息

    [root@jindada ~]# fdisk -l /dev/sdb

    Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes

    [root@jindada ~]# fdisk -l /dev/sda

    Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000ae9a7

    Device Boot Start End Blocks Id System
    /dev/sda1 * 2048 1026047 512000 83 Linux
    /dev/sda2 1026048 5220351 2097152 82 Linux swap / Solaris
    /dev/sda3 5220352 209715199 102247424 83 Linux
    [root@jindada ~]#

     

    #1. 进行分区 创建分区

    [root@jindada ~]# fdisk /dev/sdb
    Welcome to fdisk (util-linux 2.23.2).

    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.

    Device does not contain a recognized partition table
    Building a new DOS disklabel with disk identifier 0x5b8d3e75.

    Command (m for help): m

    Command action
    a toggle a bootable flag                #切换分区启动标记
    b edit bsd disklabel                  #编辑sdb磁盘标签
    c toggle the dos compatibility flag        #切换dos兼容模式
    d delete a partition                #删除分区
    l list known partition types             #显示分区类型
    m print this menu                #显示帮助菜单
    n add a new partition                  #新建分区
    o create a new empty DOS partition table      #创建新的空白分区表
    p print the partition table             #显示分区表的信息
    q quit without saving changes               #不保存退出
    s create a new empty Sun disklabel           #创建新的Sun磁盘标签
    t change a partitions system id              #修改分区ID,可以通过l查看id
    u change display/entry units             #修改容量单位,磁柱或扇区
    v verify the partition table                  #检验分区表
    w write table to disk and exit             #保存退出
    x extra functionality (experts only)            #拓展功能

    Command (m for help):

    Command (m for help): l

    0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
    1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
    2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
    3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
    4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
    5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
    6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
    7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
    8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
    9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
    a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
    b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
    c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
    e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
    f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
    10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
    11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
    12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
    14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
    16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
    17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
    18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
    1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
    1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
    1e Hidden W95 FAT1 80 Old Minix

     

    Command (m for help): n    #创建分区 #主分区的编号是1-4 逻辑分区从5开始
    Partition type:
    p primary (0 primary, 0 extended, 4 free)
    e extended

    Select (default p): p    #创建主分区
    Partition number (1-4, default 1): 1    #主分区的编号
    First sector (2048-209715199, default 2048):    #扇区的起始位置
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +10G   #扇区的结束位置
    Partition 1 of type Linux and of size 10 GiB is set


    Command (m for help): p

    Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x5b8d3e75

    Device Boot Start End Blocks Id System
    /dev/sdb1 2048 20973567 10485760 83 Linux

     

    Command (m for help): n #再次创建一个分区
    Partition type:
    p primary (1 primary, 0 extended, 3 free)
    e extended
    Select (default p):
    Using default response p
    Partition number (2-4, default 2):
    First sector (20973568-209715199, default 20973568):
    Using default value 20973568
    Last sector, +sectors or +size{K,M,G} (20973568-209715199, default 209715199): +10G
    Partition 2 of type Linux and of size 10 GiB is set

    Command (m for help): p

    Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x5b8d3e75

    Device Boot Start End Blocks Id System
    /dev/sdb1 2048 20973567 10485760 83 Linux
    /dev/sdb2 20973568 41945087 10485760 83 Linux


    Command (m for help): d #删除分区
    Partition number (1,2, default 2): 2 #指定分区编号
    Partition 2 is deleted

    Command (m for help): p

    Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x5b8d3e75

    Device Boot Start End Blocks Id System
    /dev/sdb1 2048 20973567 10485760 83 Linux


    #创建扩展分区

    Command (m for help): n
    Partition type:
    p primary (1 primary, 0 extended, 3 free)
    e extended
    Select (default p): e
    Partition number (2-4, default 2):
    First sector (20973568-209715199, default 20973568):
    Using default value 20973568
    Last sector, +sectors or +size{K,M,G} (20973568-209715199, default 209715199): +50G
    Partition 2 of type Extended and of size 50 GiB is set

    Command (m for help): p

    Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x5b8d3e75

    Device Boot Start End Blocks Id System
    /dev/sdb1 2048 20973567 10485760 83 Linux
    /dev/sdb2 20973568 125831167 52428800 5 Extended

     

    #创建一个逻辑分区

    Command (m for help): n
    Partition type:
    p primary (1 primary, 1 extended, 2 free)
    l logical (numbered from 5)
    Select (default p): l
    Adding logical partition 5
    First sector (20975616-125831167, default 20975616):
    Using default value 20975616
    Last sector, +sectors or +size{K,M,G} (20975616-125831167, default 125831167): +20G
    Partition 5 of type Linux and of size 20 GiB is set

    Command (m for help): p

    Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x5b8d3e75

    Device Boot Start End Blocks Id System
    /dev/sdb1 2048 20973567 10485760 83 Linux
    /dev/sdb2 20973568 125831167 52428800 5 Extended
    /dev/sdb5 20975616 62918655 20971520 83 Linux

     

    Command (m for help): w #保存退出
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.


    #检查

    [root@jindada ~]# lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 100G 0 disk
    ├─sda1 8:1 0 500M 0 part /boot
    ├─sda2 8:2 0 2G 0 part [SWAP]
    └─sda3 8:3 0 97.5G 0 part /
    sdb 8:16 0 100G 0 disk
    ├─sdb1 8:17 0 10G 0 part
    ├─sdb2 8:18 0 1K 0 part
    └─sdb5 8:21 0 20G 0 part
    sdc 8:32 0 3T 0 disk
    sr0 11:0 1 4.3G 0 rom


    [root@jindada ~]# ll /dev/sd*
    brw-rw---- 1 root disk 8, 0 Aug 3 2020 /dev/sda
    brw-rw---- 1 root disk 8, 1 Aug 3 2020 /dev/sda1
    brw-rw---- 1 root disk 8, 2 Aug 3 2020 /dev/sda2
    brw-rw---- 1 root disk 8, 3 Aug 3 2020 /dev/sda3
    brw-rw---- 1 root disk 8, 16 Aug 3 09:53 /dev/sdb
    brw-rw---- 1 root disk 8, 17 Aug 3 09:53 /dev/sdb1
    brw-rw---- 1 root disk 8, 18 Aug 3 09:53 /dev/sdb2
    brw-rw---- 1 root disk 8, 21 Aug 3 09:53 /dev/sdb5
    brw-rw---- 1 root disk 8, 32 Aug 3 2020 /dev/sdc


    #2. 创建文件系统 格式化


    [root@jindada ~]# mkfs.xfs /dev/sdb1
    meta-data=/dev/sdb1 isize=512 agcount=4, agsize=655360 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=1 finobt=0, sparse=0
    data = bsize=4096 blocks=2621440, imaxpct=25
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0 ftype=1
    log =internal log bsize=4096 blocks=2560, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0


    #3. 创建挂载点

    [root@jindada ~]# mkdir /fdisk01


    #4. 挂载使用

    [root@jindada ~]# mount /dev/sdb1 /fdisk01
    [root@jindada ~]# df -h | grep '/fdisk01'
    /dev/sdb1 10G 33M 10G 1% /fdisk01

    #测试是否可用
    [root@jindada ~]# dd if=/dev/zero of=/fdisk01/test.log bs=10M count=100
    100+0 records in
    100+0 records out
    1048576000 bytes (1.0 GB) copied, 10.8088 s, 97.0 MB/s
    [root@jindada ~]# df -h | grep '/fdisk01'
    /dev/sdb1 10G 1.1G 9.0G 11% /fdisk01

     


    #5. 实现永久挂载

    [root@jindada ~]# tail -1 /etc/fstab
    /dev/sdb1 /fdisk01 xfs defaults 0 0
    [root@jindada ~]#

    [root@jindada ~]# mount -a #重新挂载/etc/fstab文件中的挂载列表
    [root@jindada ~]#

     

    #数据是跟着设备走的 目录只是一个挂载点 就是入口

    [root@jindada ~]# ll /fdisk01/
    total 1024000
    -rw-r--r-- 1 root root 1048576000 Aug 3 09:59 test.log
    [root@jindada ~]# umount /dev/sdb1
    [root@jindada ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 98G 5.5G 92G 6% /
    devtmpfs 980M 0 980M 0% /dev
    tmpfs 991M 0 991M 0% /dev/shm
    tmpfs 991M 9.5M 981M 1% /run
    tmpfs 991M 0 991M 0% /sys/fs/cgroup
    /dev/sda1 497M 120M 378M 25% /boot
    tmpfs 199M 0 199M 0% /run/user/0
    [root@jindada ~]# ll /fdisk01/
    total 0
    [root@jindada ~]# mount -a
    [root@jindada ~]# ll /fdisk01/
    total 1024000
    -rw-r--r-- 1 root root 1048576000 Aug 3 09:59 test.log

    五、Gdisk分区

    [root@jindada ~]# yum install -y gdisk


    [root@jindada ~]# lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 100G 0 disk
    ├─sda1 8:1 0 500M 0 part /boot
    ├─sda2 8:2 0 2G 0 part [SWAP]
    └─sda3 8:3 0 97.5G 0 part /
    sdb 8:16 0 100G 0 disk
    ├─sdb1 8:17 0 10G 0 part /fdisk01
    ├─sdb2 8:18 0 1K 0 part
    └─sdb5 8:21 0 20G 0 part
    sdc 8:32 0 3T 0 disk
    sr0 11:0 1 4.3G 0 rom


    [root@jindada ~]# gdisk -l /dev/sdc
    GPT fdisk (gdisk) version 0.8.10

    Partition table scan:
    MBR: not present
    BSD: not present
    APM: not present
    GPT: not present

    Creating new GPT entries.
    Disk /dev/sdc: 6442450944 sectors, 3.0 TiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): 2BF39D49-315B-42C3-9C9C-C5A98D1EBB71
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 6442450910
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 6442450877 sectors (3.0 TiB)

    Number Start (sector) End (sector) Size Code Name


    #2. 创建分区

    [root@jindada ~]# gdisk /dev/sdc
    GPT fdisk (gdisk) version 0.8.10

    Partition table scan:
    MBR: not present
    BSD: not present
    APM: not present
    GPT: not present

    Creating new GPT entries.

    Command (? for help): m
    b back up GPT data to a file                  #将GPT数据备份到文件中
    c change a partition's name                  #更改分区的名称
    d delete a partition                      #删除分区
    i show detailed information on a partition             #显示分区的详细信息
    l list known partition types                   #列出已知的分区类型
    n add a new partition                        #添加一个新的分区
    o create a new empty GUID partition table (GPT)         #创建一个新的空GUID分区表(GPT)
    p print the partition table                   #打印分区表
    q quit without saving changes                  #没有保存更改就退出
    r recovery and transformation options (experts only)       #恢复和转换选项(仅限专家使用)
    s sort partitions                        #年代分类分区
    t change a partition's type code                 #不要更改分区的类型代码
    v verify disk                         #验证磁盘
    w write table to disk and exit                   #将表写入磁盘并退出
    x extra functionality (experts only)                #额外功能(仅限专家使用)
    ? print this menu                        #打印菜单

    Command (? for help):

     

    Command (? for help): n #创建分区
    Partition number (1-128, default 1): #分区编号
    First sector (34-6442450910, default = 2048) or {+-}size{KMGTP}: #扇区起始位置
    Last sector (2048-6442450910, default = 6442450910) or {+-}size{KMGTP}: #扇区结束位置
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): #选择分区类型
    Changed type of partition to 'Linux filesystem'

    Command (? for help): p #打印分区表信息
    Disk /dev/sdc: 6442450944 sectors, 3.0 TiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): 2E58E6D9-4971-4B2F-A455-16D3A5115002
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 6442450910
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 2014 sectors (1007.0 KiB)

    Number Start (sector) End (sector) Size Code Name
    1 2048 6442450910 3.0 TiB 8300 Linux filesystem

    Command (? for help):


    Command (? for help): w #保存退出

    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!

    Do you want to proceed? (Y/N): y #是否确认
    OK; writing new GUID partition table (GPT) to /dev/sdc.
    The operation has completed successfully.
    [root@jindada ~]#


    #3. 格式化,创建文件系统

    [root@jindada ~]# lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 100G 0 disk
    ├─sda1 8:1 0 500M 0 part /boot
    ├─sda2 8:2 0 2G 0 part [SWAP]
    └─sda3 8:3 0 97.5G 0 part /
    sdb 8:16 0 100G 0 disk
    ├─sdb1 8:17 0 10G 0 part /fdisk01
    ├─sdb2 8:18 0 1K 0 part
    └─sdb5 8:21 0 20G 0 part
    sdc 8:32 0 3T 0 disk
    └─sdc1 8:33 0 3T 0 part
    sr0 11:0 1 4.3G 0 rom


    [root@jindada ~]# mkfs.xfs /dev/sdc1
    meta-data=/dev/sdc1 isize=512 agcount=4, agsize=201326527 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=1 finobt=0, sparse=0
    data = bsize=4096 blocks=805306107, imaxpct=5
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0 ftype=1
    log =internal log bsize=4096 blocks=393215, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0

     

    #4. 创建挂载点,进行挂载
    [root@jindada ~]# mkdir /gdisk01
    [root@jindada ~]# mount /dev/sdc1 /gdisk01
    [root@jindada ~]# df -h | grep '/gdisk01'
    /dev/sdc1 3.0T 33M 3.0T 1% /gdisk01
    [root@jindada ~]# cp /fdisk01/test.log /gdisk01/
    [root@jindada ~]# df -h | grep '/gdisk01'
    /dev/sdc1 3.0T 1.1G 3.0T 1% /gdisk01
    [root@jindada ~]#


    #5. 永久挂载
    [root@jindada ~]# tail -1 /etc/fstab
    /dev/sdc1 /gdisk01 xfs defaults 0 0
    [root@jindada ~]# mount -a
    [root@jindada ~]#

     

    六、磁盘的挂载方式

    在Linux系统中,所有的设备必须挂载才能使用

    mount #挂载的命令

    选项:

    -t #指定文件系统 网络协议 nfs

    -o #指定挂载的参数

    -a #重新挂载/etc/fstab文件中的挂载列表

    [root@jindada ~]# mount -t xfs /dev/sdb1 /fdisk01/
    [root@jindada ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 98G 5.5G 92G 6% /
    devtmpfs 980M 0 980M 0% /dev
    tmpfs 991M 0 991M 0% /dev/shm
    tmpfs 991M 9.5M 981M 1% /run
    tmpfs 991M 0 991M 0% /sys/fs/cgroup
    /dev/sda1 497M 120M 378M 25% /boot
    tmpfs 199M 0 199M 0% /run/user/0
    /dev/sdb1 10G 1.1G 9.0G 11% /fdisk01
    [root@jindada ~]# lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 100G 0 disk
    ├─sda1 8:1 0 500M 0 part /boot
    ├─sda2 8:2 0 2G 0 part [SWAP]
    └─sda3 8:3 0 97.5G 0 part /
    sdb 8:16 0 100G 0 disk
    ├─sdb1 8:17 0 10G 0 part /fdisk01
    ├─sdb2 8:18 0 1K 0 part
    └─sdb5 8:21 0 20G 0 part
    sdc 8:32 0 3T 0 disk
    └─sdc1 8:33 0 3T 0 part
    sr0 11:0 1 4.3G 0 rom
    [root@jindada ~]# blkid
    /dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
    /dev/sda1: UUID="70df4a5b-091c-4aaa-9cc7-d745201ec394" TYPE="xfs"
    /dev/sda2: UUID="6aefd444-30dc-4c0e-9a8d-75a8b1d9856b" TYPE="swap"
    /dev/sda3: UUID="4aa02e85-ffe1-4783-9886-a328f923bee8" TYPE="xfs"
    /dev/sdb1: UUID="0668e9f1-7d37-42eb-9e79-980f6352c342" TYPE="xfs"
    /dev/sdc1: UUID="60d9a87f-fa86-4fdc-a1c9-2a88df756a24" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="71869797-d467-4293-807e-7c6f917c7422"
    [root@jindada ~]#


    [root@jindada ~]# mount -o ro /dev/sdb1 /fdisk01/
    [root@jindada ~]# cp /etc/hosts /fdisk01/
    cp: cannot create regular file ‘/fdisk01/hosts’: Read-only file system


    umount #卸载

    选项:

    -l #强制卸载

    [root@jindada ~]# umount /dev/sdb1
    [root@jindada ~]# df -h | grep '/dev/sdb1'
    [root@jindada ~]# mount /dev/sdb1 /fdisk01/
    [root@jindada ~]# cd /fdisk01/
    [root@jindada fdisk01]# umount /fdisk01 #不能在挂载的目录中进行卸载
    umount: /fdisk01: target is busy.
    (In some cases useful info about processes that use
    the device is found by lsof(8) or fuser(1))
    [root@jindada fdisk01]# umount /dev/sdb1
    umount: /fdisk01: target is busy.
    (In some cases useful info about processes that use
    the device is found by lsof(8) or fuser(1))
    [root@jindada fdisk01]# umount -l /dev/sdb1
    [root@jindada fdisk01]# cd
    [root@jindada ~]# mount /dev/sdb1 /fdisk01/
    [root@jindada ~]# umount /fdisk01/
    [root@jindada ~]# df -h | grep '/dev/sdb1'
    [root@jindada ~]#

     

    #通过UUID进行挂载

    [root@jindada ~]# blkid
    /dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
    /dev/sda1: UUID="70df4a5b-091c-4aaa-9cc7-d745201ec394" TYPE="xfs"
    /dev/sda2: UUID="6aefd444-30dc-4c0e-9a8d-75a8b1d9856b" TYPE="swap"
    /dev/sda3: UUID="4aa02e85-ffe1-4783-9886-a328f923bee8" TYPE="xfs"
    /dev/sdb1: UUID="0668e9f1-7d37-42eb-9e79-980f6352c342" TYPE="xfs"
    /dev/sdc1: UUID="60d9a87f-fa86-4fdc-a1c9-2a88df756a24" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="71869797-d467-4293-807e-7c6f917c7422"
    [root@jindada ~]# mount UUID="0668e9f1-7d37-42eb-9e79-980f6352c342" /fdisk01/
    [root@jindada ~]# df -h | grep 'fdisk'
    /dev/sdb1 10G 1.1G 9.0G 11% /fdisk01
    [root@jindada ~]#


    [root@jindada ~]# tail -1 /etc/fstab
    UUID=0668e9f1-7d37-42eb-9e79-980f6352c342 /fdisk01/ xfs defaults 0 0
    [root@jindada ~]# mount -a


    [root@jindada ~]# tail -4 /etc/fstab
    UUID=4aa02e85-ffe1-4783-9886-a328f923bee8 / xfs defaults 0 0
    UUID=70df4a5b-091c-4aaa-9cc7-d745201ec394 /boot xfs defaults 0 0
    UUID=6aefd444-30dc-4c0e-9a8d-75a8b1d9856b swap swap defaults 0 0
    UUID=0668e9f1-7d37-42eb-9e79-980f6352c342 /fdisk01/ xfs defaults 0 0


    #以空白字符为分隔符,分为6列:
    [root@jindada ~]# cat /etc/fstab
    #设备名称 挂载的位置 文件系统类型 挂载的参数 是否备份 是否检查

    /dev/sdb1 /data xfs defaults 0 0


    第一列: 挂载的设备 挂载的地址 网络设备地址

    第二列: 挂载点 挂载的目录 空目录

    第三列: 文件系统的类型 xfs 7默认的 ext4 6默认的 nfs gfs

    第四列: 挂载的参数 defaults

    第五列: 是否允许dump进行备份

    0 #不备份

    1 #每天备份

    2 #不定期备份

    第六列: 是否通过fsck命令检查磁盘

    0 #不检查

    1 #检查 检查顺序 先检查 /

    2 #检查顺序

    #建议挂载时使用UUID

    #1.怎样获取磁盘分区的UUID,使用blkid命令获取
    [root@jindada ~]# blkid|grep sdc1
    /dev/sdc1: UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b"

    #2.手动测试是否能正常的挂载
    [root@jindada ~]# mount UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b" /datac


    #3.将信息写入到/etc/fstab文件中,保证下次启动系统自动挂载
    UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b" /datac xfs defaults 0 0


    #4.卸载/datac挂载信息, 然后使用mount -a检查/etc/fstab文件是否ok
    [root@jindada ~]# mount -a


    PS: 如果不检查写错了直接重启, 会导致系统无法启动.

    七、swap的虚拟内存


    Out of memory

    OOM #内存溢出 内存不足


    [root@jindada ~]# free -m
    total used free shared buff/cache available
    Mem: 1980 133 1625 9 221 1672
    Swap: 2047 0 2047
    [root@jindada ~]# swapoff -a
    [root@jindada ~]# free -m
    total used free shared buff/cache available
    Mem: 1980 132 1627 9 220 1673
    Swap: 0 0 0

     

    虚拟内存


    #添加一个swap分区


    #创建一个1G的分区

    [root@jindada ~]# fdisk /dev/sdb
    Welcome to fdisk (util-linux 2.23.2).

    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.


    Command (m for help): n
    Partition type:
    p primary (1 primary, 1 extended, 2 free)
    l logical (numbered from 5)
    Select (default p): p
    Partition number (3,4, default 3):
    First sector (125831168-209715199, default 125831168):
    Using default value 125831168
    Last sector, +sectors or +size{K,M,G} (125831168-209715199, default 209715199): +1G
    Partition 3 of type Linux and of size 1 GiB is set

    Command (m for help): p

    Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x5b8d3e75

    Device Boot Start End Blocks Id System
    /dev/sdb1 2048 20973567 10485760 83 Linux
    /dev/sdb2 20973568 125831167 52428800 5 Extended
    /dev/sdb3 125831168 127928319 1048576 83 Linux
    /dev/sdb5 20975616 62918655 20971520 83 Linux

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.

    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.


    [root@jindada ~]# partprobe #通知内核,系统分区表发生变化


    #将这个分区变为swap分区

    [root@jindada ~]# mkswap /dev/sdb3
    Setting up swapspace version 1, size = 1048572 KiB
    no label, UUID=8a9c926b-de0d-4b49-bcb8-39a9c0b834a8


    #把这个分区加入到swap

    [root@jindada ~]# free -m
    total used free shared buff/cache available
    Mem: 1980 77 1819 0 84 1774
    Swap: 2047 69 1978
    [root@jindada ~]# swapon -s
    Filename Type Size Used Priority
    /dev/sda2 partition 2097148 71168 -2
    [root@jindada ~]# swapon /dev/sdb3
    [root@jindada ~]# free -m
    total used free shared buff/cache available
    Mem: 1980 78 1818 0 84 1773
    Swap: 3071 69 3002
    [root@jindada ~]# swapon -s
    Filename Type Size Used Priority
    /dev/sda2 partition 2097148 70912 -2
    /dev/sdb3 partition 1048572 0 -3


    #移除swap

    [root@jindada ~]# swapoff /dev/sdb3
    [root@jindada ~]# free -m
    total used free shared buff/cache available
    Mem: 1980 78 1818 0 84 1773
    Swap: 2047 69 1978

    #禁用swap
    [root@jindada ~]# swapoff -a
    [root@jindada ~]# free -m
    total used free shared buff/cache available
    Mem: 1980 128 1759 9 92 1715
    Swap: 0 0 0

    #启用swap

    [root@jindada ~]# swapon -a
    [root@jindada ~]# free -m
    total used free shared buff/cache available
    Mem: 1980 129 1758 9 92 1713
    Swap: 2047 0 2047

     

    #生成一个大文件 作为swap


    [root@jindada ~]# dd if=/dev/zero of=/root/swap.txt bs=100M count=10
    10+0 records in
    10+0 records out
    1048576000 bytes (1.0 GB) copied, 8.33166 s, 126 MB/s
    [root@jindada ~]# ll
    total 1024000
    -rw-r--r-- 1 root root 1048576000 Aug 3 11:21 swap.txt
    [root@jindada ~]# mkswap swap.txt
    Setting up swapspace version 1, size = 1023996 KiB
    no label, UUID=51e07b8a-971a-47ec-972e-36f8273ec3cd
    [root@jindada ~]# ll
    total 1024000
    -rw-r--r-- 1 root root 1048576000 Aug 3 11:22 swap.txt
    [root@jindada ~]# file swap.txt
    swap.txt: Linux/i386 swap file (new style), version 1 (4K pages), size 255999 pages, no label, UUID=51e07b8a-971a-47ec-972e-36f8273ec3cd


    [root@jindada ~]# chmod 600 swap.txt


    [root@jindada ~]# swapon /root/swap.txt

    [root@jindada ~]# free -m
    total used free shared buff/cache available
    Mem: 1980 132 727 9 1120 1663
    Swap: 3047 0 3047


    [root@jindada ~]# swapoff swap.txt
    [root@jindada ~]# free -m
    total used free shared buff/cache available
    Mem: 1980 130 729 9 1120 1665
    Swap: 2047 0 2047

     

    八、RAID介绍


    磁盘阵列技术

    做磁盘阵列的好处:

    1. 获得更高的容量

    2. 获得更高的性能

    3. 让数据更安全 冗余


    如何做RAID:


    软件实现 软RAID 不推荐 mdadm


    硬件RAID RAID卡实现的 推荐


    做RAID什么时候做:

    在装系统之前做


    RAID的级别:

    级别 别名 硬盘数量 容量 性能 容错性

    RAID0 条带卷 至少两块 N*单块 读写最快 0

    RAID1 镜像卷 只能两块 损失一半 写慢 读一般 50%

    RAID5 校验卷 至少3块 浪费一块 读写一般 N分之一 只能坏一块

    RAID10 镜像阵列条带卷 至少4块 浪费一半 读写很快 50%

     

    九、LVM概述

    1. 什么是LVM?

    LVM是Logical Volume Manager (逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。又译为逻辑卷宗管理器、逻辑扇区管理器、逻辑磁盘管理器,是Linux核心所提供的逻辑卷管理(Logical volume management)功能。它在硬盘的分区之上,又创建一个逻辑层,以方便系统管理硬盘分区系统。
    最先由IBM开发,在AIX系统上实现,OS/2 操作系统与 HP-UX也支持这个功能。在1998年,Heinz Mauelshagen 根据在 HP-UX 上的逻辑卷管理器,写作出第一个 Linux 版本的逻辑卷管理器。

    2. LVM解决了什么问题

    当我们刚开始安装Linux操作系统是遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。
    普通的磁盘分区好之后就无法改变其大小,而遇到出现某个分区空间耗尽时,解决的方法可以是符号链接,或者调整分区大小的工具,但这只是暂时解决方法,没有从根本上解决问题。
    随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户可以在无需停机的请款下可以方便的调整各个分区大小。

    3. LVM基本概念

    物理卷(PV):(physical volume),把常规的磁盘设备通过pvcreate命令对其进行初始化,形成了物理卷。其实就是硬盘或分区。(面粉)

    卷组(VG):(volume group),把多个物理卷组成一个逻辑的整体,这样卷组的大小就是多个硬盘之和。或者理解就是由一个或多个PV组成的整体。(面团)

    逻辑卷(LV):(logical volume),从卷组中划分需要的空间大小出来。用户仅需对其格式化然后即可挂载使用。从VG中切割出的空间用于创建文件系统。(切成馒头)

    基本单元(PE):(physical extend),分配的逻辑大小的最小单元,默认为4MB的基本块。(假设分配100MB逻辑空间,则需要创建25个PE)

    4. 逻辑卷实践

    1)创建物理卷,将普通磁盘转换为物理卷。
    2)创建卷组,将物理卷加入到卷组中。
    3)在卷组中划分逻辑卷,然后挂载使用。

    1. 准备物理磁盘,如果是虚拟机需要关闭添加磁盘,以便更好的实验

    [root@jindada ~]# lsblk
    sdb 8:16 0 20G 0 disk
    sdc 8:32 0 20G 0 disk

    2. 将磁盘转换为物理卷


    #下载安装软件包
    [root@jindada ~]# yum install -y lvm2


    [root@jindada ~]# pvcreate /dev/sdb

    3. 将/dev/sdb物理卷加入卷组(资源池)-->名字lvm_test


    [root@jindada ~]# vgcreate lvm_test /dev/sdb


    #检查卷组
    [root@jindada ~]# vgs

    4. 创建逻辑卷,分配名称,以及大小,指定卷组


    选项:
    -L #逻辑卷大小
    -n #逻辑卷名字

    [root@jindada ~]# lvcreate -L 100M -n lv1 lvm_test ##将lvm_test分配給lv1

    5. 格式化逻辑卷


    [root@jindada ~]# mkfs.xfs /dev/lvm_test/lv1

    6. 挂载使用


    [root@jindada ~]# mkdir /lv1


    [root@jindada ~]# mount /dev/lvm_test/lv1 /lv1/


    [root@jindada ~]# cp /etc/services /lv1/

    02. 卷组管理,如何扩展卷组大小,如何删除卷组

    1. 如何扩大VG卷组


    #1.新硬盘加入pv
    [root@jindada ~]# pvcreate /dev/sdc


    #2.先检查当前的vg卷组大小
    [root@oldboyedu ~]# vgs
    VG #PV #LV #SN Attr VSize VFree
    lvm_test 1 1 0 wz--n- 1020.00m 920.00m


    #3.使用vgextend扩展卷组
    [root@jindada ~]# vgextend lvm_test /dev/sdc
    Volume group "lvm_test" successfully extended


    #4.再次检查,发现卷组已经扩大
    [root@oldboyedu ~]# vgs
    VG #PV #LV #SN Attr VSize VFree
    lvm_test 2 1 0 wz--n- 1.99g 1.89g

     

    2. 假设想移除/dev/sdb磁盘,建议先将sdb磁盘数据先迁移到sdc磁盘,然后在移除。(同一卷组的磁盘才可以进行在线迁移),(注意卷组的名称---)


    #1.检查当前逻辑卷VG中PV使用情况
    [root@jindada ~]# pvs
    PV VG Fmt Attr PSize PFree
    /dev/sdb vg1 lvm2 a -- 2.00g 1.76g
    /dev/sdc vg1 lvm2 a -- 2.00g 2.00g


    #2.pvmove在线数据迁移,将sdb的数据迁移至sdc
    [root@jindada ~]# pvmove /dev/sdb
    /dev/sdb: Moved: 100.00%


    #3.检查是否将sdb数据迁移至sdc
    [root@jindada ~]# pvs
    PV VG Fmt Attr PSize PFree
    /dev/sdb vg1 lvm2 a -- 2.00g 2.00g
    /dev/sdc vg1 lvm2 a -- 2.00g 1.76g


    #4.从卷组中移除sdb磁盘
    [root@jindada ~]# vgreduce lvm_test /dev/sdb
    Removed "/dev/sdb" from volume group "lvm_test"

     

    3. 逻辑卷管理,动态的调整逻辑卷大小

    01. 逻辑卷的扩展,是取决于vg卷中是否还有剩余的容量,注意扩展逻辑卷不能超过卷组VG的总大小


    [root@jindada ~]# vgs
    VG #PV #LV #SN Attr VSize VFree
    datavg 1 1 0 wz--n- 1020.00m 920.00m


    #1.扩展lv逻辑卷,增加800M分配给逻辑卷 {注意: 800M +800M 不一样}
    [root@jindada ~]# lvextend -L +800M /dev/lvm_test/lv1


    #或者可以选择分配磁盘池中多少百分比给逻辑卷
    [root@jindada ~]# lvextend -l +50%FREE /dev/lvm_test/lv1


    #2.扩展逻辑卷后需要更新fs文件系统
    [root@jindada ~]# xfs_growfs /dev/lvm_testvg/lv1 #xfs文件格式扩容

    02. 缩小逻辑卷,不要去操作,因为线上在使用的磁盘真的敢操作吗?

    03. 删除逻辑卷,如果不想使用逻辑卷可以选择删除。


    [root@jindada ~]# umount /dev/lvm_test/lv1


    [root@jindada ~]# lvremove /dev/lvm_test/lv1
    Do you really want to remove active logical volume lvm_test/lv1?
    Logical volume "lv1" successfully removed

    注意:LVM如果有一个磁盘损坏,整个lvm都坏了, lvm只有动态扩展作用,底层用RAID + 上层LVM = 既有冗余又有动态扩展

    十、硬盘故障

    01. 磁盘block满故障

    [root@jindada ~]# fdisk /dev/sdb
    Welcome to fdisk (util-linux 2.23.2).

    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.


    Command (m for help): n
    Partition type:
    p primary (2 primary, 1 extended, 1 free)
    l logical (numbered from 5)
    Select (default p):
    Using default response p
    Selected partition 4
    First sector (127928320-209715199, default 127928320):
    Using default value 127928320
    Last sector, +sectors or +size{K,M,G} (127928320-209715199, default 209715199): +2G
    Partition 4 of type Linux and of size 2 GiB is set

    Command (m for help): p

    Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x5b8d3e75

    Device Boot Start End Blocks Id System
    /dev/sdb1 2048 20973567 10485760 83 Linux
    /dev/sdb2 20973568 125831167 52428800 5 Extended
    /dev/sdb3 125831168 127928319 1048576 83 Linux
    /dev/sdb4 127928320 132122623 2097152 83 Linux
    /dev/sdb5 20975616 62918655 20971520 83 Linux

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.

    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.
    [root@jindada ~]#


    #准备2G的分区


    [root@jindada ~]# dd if=/dev/zero of=/opt/test.log bs=100M count=21
    dd: error writing ‘/opt/test.log’: No space left on device
    21+0 records in
    20+0 records out
    2099183616 bytes (2.1 GB) copied, 3.34918 s, 627 MB/s


    [root@jindada ~]# echo "123" >> /opt/file.txt
    -bash: echo: write error: No space left on device #磁盘空间不足


    #解决:

    检查磁盘空间

    [root@jindada ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 98G 6.4G 92G 7% /
    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/sda1 497M 120M 378M 25% /boot
    tmpfs 199M 0 199M 0% /run/user/0
    /dev/sdb1 10G 1.1G 9.0G 11% /fdisk01
    /dev/sdb4 2.0G 2.0G 20K 100% /opt


    #找到这个大文件 确认好之后在删

    [root@jindada ~]# du -sh /opt/* | grep 'G'
    2.0G /opt/test.log

    一级一级往下找
    注意:如果该文件存在硬链接,一定要把硬链接文件删除。


    02. 磁盘inode满故障

    [root@jindada ~]# echo "123" >>/opt/test.txt
    -bash: /opt/test.txt: No space left on device
    [root@jindada ~]#


    [root@jindada ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 98G 6.4G 92G 7% /
    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/sda1 497M 120M 378M 25% /boot
    tmpfs 199M 0 199M 0% /run/user/0
    /dev/sdb1 10G 1.1G 9.0G 11% /fdisk01
    /dev/sdb4 2.0G 582M 1.5G 29% /opt


    [root@jindada ~]# df -i
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/sda3 51123712 46093 51077619 1% /
    devtmpfs 250786 417 250369 1% /dev
    tmpfs 253511 1 253510 1% /dev/shm
    tmpfs 253511 774 252737 1% /run
    tmpfs 253511 16 253495 1% /sys/fs/cgroup
    /dev/sda1 256000 326 255674 1% /boot
    tmpfs 253511 1 253510 1% /run/user/0
    /dev/sdb1 5242880 4 5242876 1% /fdisk01
    /dev/sdb4 1048576 1048576 0 100% /opt

     

    [root@jindada ~]# find /opt/ -type d -size +2M | xargs ls -lhd
    drwxr-xr-x 2 root root 3.8M Aug 3 12:27 /opt/test/test01
    drwxr-xr-x 2 root root 3.8M Aug 3 12:27 /opt/test/test02
    drwxr-xr-x 2 root root 3.8M Aug 3 12:27 /opt/test/test03
    drwxr-xr-x 2 root root 3.8M Aug 3 12:27 /opt/test/test04
    drwxr-xr-x 2 root root 3.7M Aug 3 12:27 /opt/test/test05


    [root@jindada ~]# find /opt/ -type d -size +1M | xargs ls -lhd
    drwxr-xr-x 2 root root 1.2M Aug 3 12:25 /opt/test/data01
    drwxr-xr-x 2 root root 1.2M Aug 3 12:25 /opt/test/data02
    drwxr-xr-x 2 root root 1.2M Aug 3 12:25 /opt/test/data03
    drwxr-xr-x 2 root root 1.2M Aug 3 12:25 /opt/test/data04
    drwxr-xr-x 2 root root 1.2M Aug 3 12:25 /opt/test/data05
    drwxr-xr-x 2 root root 3.8M Aug 3 12:27 /opt/test/test01
    drwxr-xr-x 2 root root 3.8M Aug 3 12:27 /opt/test/test02
    drwxr-xr-x 2 root root 3.8M Aug 3 12:27 /opt/test/test03
    drwxr-xr-x 2 root root 3.8M Aug 3 12:27 /opt/test/test04
    drwxr-xr-x 2 root root 3.7M Aug 3 12:27 /opt/test/test05


    [root@jindada ~]# ll /opt/test/data01 | wc -l
    50001


    #找到之后,确认在删除


    [root@jindada ~]# find /opt/test/data01 -type f -delete


    [root@jindada ~]# rm -f /opt/test/test01/*
    -bash: /usr/bin/rm: Argument list too long


    [root@jindada ~]# ll /opt/test/test01/ | wc -l
    150001

     

  • 相关阅读:
    解决Warning: Cannot modify header information headers already sent b...
    C#获取文件路径的几种方法
    C#反射技术之一读取和设置类的属性
    WPF中,在WebBrowser中操作源代码
    WPF 的 TabControl 绑定不同的窗口集合
    C#_在VS2010下进行单元测试
    Mvvm Light Toolkit for wpf/silverlight系列之Command和Events
    VS2005和VS2008快捷键大全(转)
    nchar,char,varchar 与nvarchar区别
    处理问题:windows server 2016由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系...
  • 原文地址:https://www.cnblogs.com/jhno1/p/13427081.html
Copyright © 2011-2022 走看看