• 简要概述磁盘相关概念


    一。 磁盘物理结构

        磁盘是永久存储数据的物理介质

        内部结构图如下(图片和物理结构引用自http://soysauce93.blog.51cto.com/7589461/1715655):

        



    •  磁头(head)数:每个盘片一般有上下两面,分别对应1个磁头,共2个磁头,实现数据的存取 (也就是盘片正反面都能存储)
    •  磁道(track):当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道,从外边缘的0开始        编号,根据磁化方向来存数数据0和1 (判断最外面的一圈就是0号磁道)
    • 柱面(cylinder):不同盘片的相同编号的磁道构成的圆柱面就被称之为柱面,磁盘的柱面数与一个盘面上的磁道数是相等的
    • 扇区(sector):每个磁道都别切分成很多扇形区域,每个磁道的扇区数量相同,每个扇区大小为512字节
    • 圆盘(platter):就是硬盘的盘片,为实现大容量,一般都是多个

        硬盘的容量=圆盘数×磁道数×磁头数×扇区数×512(字节数)

    二。 磁盘逻辑结构

       每台计算机拥有多个磁盘 每个磁盘使用前必须分区即定义好文件的组织形式  目前磁盘分区的两种格式为 MBR和GPT 分区是由 逻辑快组成  

    每个快都是由1个或者多个扇区组成

      1》MBR(Master Boot Record) 磁盘的开头部分定义分区表 该分区表为 64字节 每个分区的参数为16字节 所以最多能
    定义 64/16=4个分区 4个分区在window体现为 window磁盘 盘符(CDEF) Linux体现为几个文件系统(挂载到目录) 四个分区
    有时很难满足日常所需 将分区分为 主分区和拓展分区  主分区实际上就是已经确定好的分区盘符 拓展分区是不能直接使用的空间
    必须将他拆分成多个独立的逻辑分区 才能使用 这里拆出来的逻辑分区和主分区 对于用户来说都是一样的
       一般在之前的32位系统上 磁盘分区 基本使用MBR 在主分区安装操作系统时 一般会在主分区磁盘下 有个Boot.ini文件 使用BIOS引导
        MBR的缺点:只能存在4个主分区,分区表只有一份 如果损坏磁盘就挂了
     
      2》GPT(GUID分区表)在64上渐渐取代了MBR 每一个分区上都有一个唯一的GUID 可以支持无线的主分区 不再需要拓展分区 GPT会保存
     分区表的多个备份 一旦损坏 使用备份自动还原 在分区安装操作系统 一般使用的是UEFI引导 UEFI系统引导文件会存在一个单独的主分区上

     

    window磁盘 可以使用 PartitionMagic等软件

    linux上可以使用 fdisk(2T以下分区)或者parted命令(2T以上)

     3》文件系统

       通过分区将不同的磁盘拆分为不同物理盘 不同盘之间互不响应  每一个物理盘 都必须要格式化为特定的文件系统 文件系统表示文件的存储和归档格式

     比如window常用的FAT32和NTFS  linux (EXT2,EXT3,EXT4,XFS)等

        window下 NTFS对比与FAT32优点  通过标准事务日志功能与恢复技术确保卷的一致性。如果系统出现故障,NTFS能够使用日志文件与检查点信息来恢复文件系统的一致性,碎片少、性能佳、安全性强、可压缩NTFS里所有文件、设定权限、配额、支持单个文件大于4GB等

       linux下 centos7.0开始默认文件系统是xfs,centos6是ext4,centos5是ext3,xfs是一种非常优秀的日志文件系统,它是SGI公司设计的。xfs被称为业界最先进的、最具可升级性的文件系统技术

     4》分区常用命令演示

    》》fdisk分区命令演示

        通过虚拟机模拟添加磁盘

        虚拟机右键 设置-添加 -磁盘

        

      重新启动虚拟机 后  

       fdisk -l

    [root@ha1 ~]# fdisk -l
    
    Disk /dev/sda: 85.9 GB, 85899345920 bytes, 167772160 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: 0x0007d8da
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048      616447      307200   83  Linux
    /dev/sda2          616448     4812799     2098176   82  Linux swap / Solaris
    /dev/sda3         4812800   167772159    81479680   83  Linux
    
    Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 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  分别为  /dev/sda 和 /dev/sdb(新增加的磁盘  为 2G) 

    可以看到 sda被分成了三个分区 sdb还没有任何分区  

    通过 Sector size (logical/physical): 512 bytes / 512 bytes     知道 扇区的大小为 512字节 明显是MBR分区

                                                                                                               如果扇区的大小为4K 表示是GPT分区

    可以看到对应的挂载目录

    [root@ha1 ~]# df -T
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/sda3       81439896 3177912  78261984   4% /
    devtmpfs          925136       0    925136   0% /dev
    tmpfs             934328       0    934328   0% /dev/shm
    tmpfs             934328    8788    925540   1% /run
    tmpfs             934328       0    934328   0% /sys/fs/cgroup
    /dev/sda1         303788  108712    195076  36% /boot
    tmpfs             186868       0    186868   0% /run/user/0
    开始对新增的/dev/sdb 进去分区 假设分为两个分区

    fdisk /dev/sdb

    常用命令

    p 打印所有的分区

    n 新建一个分区

    Command (m for help): n  
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)  主分区 自动重建4个
       e   extended                                 拓展分区 可以创建逻辑分区
    Select (default p): p
    Partition number (1-4, default 1):              分区编号 分区命名是 磁盘名+编号 比如sda1
    First sector (2048-4194303, default 2048): 0    第一个删除的编号 默认从 2048开始
    Value out of range.
    First sector (2048-4194303, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): 2100000   结束的扇区 比如最大 4194303/2就是一半空间
    
    Partition 1 of type Linux and of size 1 GiB is set    大概就是1G了
    
    Command (m for help): n                   再次创建一个主分区
    Partition type:
       p   primary (1 primary, 0 extended, 3 free)
       e   extended
    Select (default p): p
    Partition number (2-4, default 2): 
    First sector (2100001-4194303, default 2101248): 2100001   从上一次的20000001下一个扇区开始
    Last sector, +sectors or +size{K,M,G} (2100001-4194303, default 4194303): 直接回车就是讲所有的剩余空间给第二个分区
    Using default value 4194303
    Partition 2 of type Linux and of size 1022.6 MiB is set
    
    Command (m for help): n
    Partition type:
       p   primary (2 primary, 0 extended, 2 free)
       e   extended
    Select (default p): p
    Partition number (3,4, default 3): 
    No free sectors available     创建第三个分区时 没有剩余空间了
    w  保存分区写入磁盘  并且退出 fdisk命令
    d  删除输入的分区编号指定的分区
    m 帮助命令
    o 创建空的dos头 可以显示所有的磁盘大小等信息
    l 列表显示所有的分区类型 我这里不支持 比如FAT32 等
    t 转换分区的类型为 l列表显示的编号 即可修改分区
    g 将磁盘转换为GPT分区格式


    分区后的磁盘需要格式化为指定文件系统才能进行文件存储  linux格式化命令:mkfs

    查看mkfs支持的文件系统类别

    [root@ha1 ~]# whereis mkfs
    mkfs: /usr/sbin/mkfs /usr/sbin/mkfs.cramfs /usr/sbin/mkfs.minix /usr/sbin/mkfs.xfs /usr/sbin/mkfs.btrfs /usr/sbin/mkfs.ext2 /usr/sbin/mkfs.ext3 /usr/sbin/mkfs.ext4 /usr/share/man/man8/mkfs.8.gz
    明显有mkfx.xfs  mkfx.ext2  mkfx.ext3  mkfx.ext4

    执行命令  mkfx.文件系统名  分区名称

    [root@ha1 ~]# mkfs.xfs /dev/sdb1
    meta-data=/dev/sdb1              isize=256    agcount=4, agsize=131007 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=0        finobt=0
    data     =                       bsize=4096   blocks=524027, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
    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

    访问分区 必须挂载到目录  如果直接访问

    [root@ha1 ~]# cd /dev/sdb1
    -bash: cd: /dev/sdb1: Not a directory
    [root@ha1 ~]# mkdir /sdb1
    [root@ha1 ~]# mount /dev/sdb1 /sdb1
    可以直接访问 /sdb1
    
    查看剩余空间和挂载的目录
    [root@ha1 sdb1]# df -Thl
    Filesystem     Type      Size  Used Avail Use% Mounted on
    /dev/sda3      xfs        78G  3.1G   75G   4% /
    devtmpfs       devtmpfs  904M     0  904M   0% /dev
    tmpfs          tmpfs     913M     0  913M   0% /dev/shm
    tmpfs          tmpfs     913M  8.6M  904M   1% /run
    tmpfs          tmpfs     913M     0  913M   0% /sys/fs/cgroup
    /dev/sda1      xfs       297M  107M  191M  36% /boot
    tmpfs          tmpfs     183M     0  183M   0% /run/user/0
    /dev/sdb1      xfs       2.0G   33M  2.0G   2% /sdb1
    》》parted分区命令演示

    parted 磁盘路径 进入parted命令

    常用命令

    help 显示所有的命令
    print 打印当前分区信息
    mklabel 分区类型  比如 mklable gpt|msdos 
    删除分区  rm 输入分区编号
    创建分区 mkpart 输入主分区还是拓展分区 输入文件系统类型 同时输入开始的大小的位置和结束位置的大小

    (parted) mkpart
    Partition type?  primary/extended? primary                                
    File system type?  [ext2]? ext4                                           
    Start?                                                                    
    Start? 0                                                                  
    End? 2100M                                                                
    Warning: The resulting partition is not properly aligned for best performance.
    Ignore/Cancel? i                                                          
    (parted) print                                                            
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 3221MB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    
    Number  Start  End     Size    Type     File system  Flags
     1      512B   2100MB  2100MB  primary
    fdisk查看

    [root@ha1 ~]# fdisk -l                                                    
    
    Disk /dev/sdb: 3221 MB, 3221225472 bytes, 6291456 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: 0x00078785
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1     4101562     2050781   83  Linux
    /dev/sdb2         4102144     6291455     1094656   83  Linux

    格式化分区和挂载 同fdisk方式

    》》lvm分区命令演示

      什么是LVM?LVM(Logical Volume Manager)逻辑卷管理 是通过一个抽象的磁盘管理层 来管理物理磁盘或者分区   管理层管理的物理磁盘或者分区对用户

    不可见  管理层 可以将这些物理的磁盘分区 进行逻辑拆分为新的分区  这个逻辑分区当容量不足时 lvm可以动态扩容

      图示(图片来源于jb51):

       


    概念理解:

    1. PV(Physical Volume):物理卷,处于LVM最底层,可以是物理硬盘或者分区。     
    2. PE(Physical Extend):物理区域,PV中可以用于分配的最小存储单元,可以在创建PV的时候指定,如1M, 2M, 4M, 8M, 32M, 64M…组成同一VG中所有PV的PE大小应该相同。     
    3.VG(Volume Group):卷组,建立在PV之上,可以含有一个到多个PV。    
    4. LV(Logical Volume):逻辑卷,建立在VG之上,相当于原来分区的概念。不过大小可以动态改变。

    lvm安装

       加载device-mapper模块   modprobe dm_mod

       yum安装  yum install lvm2

    环境测试

    创建一个VG有多个PV组成

       假设有sdb设备分为两个区  sdb1 sdb2 (parted分区  mkfs格式化)

       PV 就是 sdb1 和sdb2 两个  使用pvcreate创建

    [root@ha1 /]# pvcreate /dev/sdb1
    WARNING: ext4 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y
      Wiping ext4 signature on /dev/sdb1.
      Physical volume "/dev/sdb1" successfully created.
    [root@ha1 /]# pvcreate /dev/sdb2
    WARNING: ext4 signature detected on /dev/sdb2 at offset 1080. Wipe it? [y/n]: y
      Wiping ext4 signature on /dev/sdb2.
      Physical volume "/dev/sdb2" successfully created.

       VG 就是 两个pv组成

        将上面两个pv放在同一个VG中 VG就可以逻辑分区了

    [root@ha1 /]# vgcreate myvg /dev/sdb1 /dev/sdb2
      Volume group "myvg" successfully created
      从VG是从sbd1和sdb2组成的实际物理大小就是sdb1+sdb2大小之和

      开始创建LV

      

    [root@ha1 /]# lvcreate -L 300M -n mylv myvg   从myvg的卷组中 分出一个逻辑卷 名称为mylv
      Logical volume "mylv" created.
    格式化挂载同fdisk

    [root@ha1 /]# fdisk -l
    
    Disk /dev/mapper/myvg-mylv: 314 MB, 314572800 bytes, 614400 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@ha1 /]# mkfs.ext4 /dev/mapper/myvg-mylv
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    76912 inodes, 307200 blocks
    15360 blocks (5.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=33947648
    38 block groups
    8192 blocks per group, 8192 fragments per group
    2024 inodes per group
    Superblock backups stored on blocks: 
            8193, 24577, 40961, 57345, 73729, 204801, 221185
    
    Allocating group tables: done                            
    Writing inode tables: done                            
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done 
    
    [root@ha1 /]# mount /dev/mapper/myvg-mylv /mylv

    其他lvm命令

    lvremove :删除一个 LV !
    vgremove 删除vg
    pvremove 删除pv
    lvscan  查看所有的逻辑卷
    vgscan 查看所有的卷组
    pvsan   查看所有的物理卷
    lvm 后输入help查看所有命令






  • 相关阅读:
    整合Grafana
    Prometheus环境搭建
    RocketMQ单机部署
    记二进制搭建k8s集群完成后,部署时容器一直在创建中的问题
    接口重复提交解决方案
    记一次生产环境nginx图片上传不了的问题
    怎么进行中间件的学习
    MongoDB学习笔记之文档
    MongoDB学习笔记
    根据端口杀掉指定进程
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331201.html
Copyright © 2020-2023  润新知