18 - Linux 磁盘管理

第一节 认识存储介质

一、存储介质的类型

★ 软盘(软盘片、磁性介质、机械旋转存取存储设备),属于磁性存储
在这里插入图片描述
★ 磁碟硬盘,简称:磁盘(硬盘片、磁性介质、机械旋转存取存储设备),属于磁性存储
在这里插入图片描述
★ U盘(芯片级存取<存储设备>),属于半导体存储
在这里插入图片描述
★ SSD固态硬盘(芯片级存取<存储设备>),属于半导体存储
在这里插入图片描述
★ 磁带机,属于磁性存储
在这里插入图片描述
★ 光盘,属于光刻存储
在这里插入图片描述

二、磁碟硬盘的构造

1.接口

★ IDE 接口(又称:PATA 并行接口),已被淘汰
在这里插入图片描述
★ SATA 串行接口,个人电脑广泛使用
在这里插入图片描述
★ SCSI 接口,服务器广泛使用
在这里插入图片描述
★ SAS 接口,是 STAT 和 SCSI 的结合
在这里插入图片描述

2.内部构造

★ 读写磁头、磁盘盘片、传动手臂、主轴
在这里插入图片描述
★ 扇面、磁道、扇区
在这里插入图片描述

磁盘的容量 = 磁头数 × 磁道(或 柱面)数 × 每磁道扇区数 × 每扇区字节数

● 圆盘(platter) :就是磁性盘片。
● 磁头(head)    :每个圆盘一般有上下两面,每个面均有1个磁头,共2个磁头。
● 磁道(track)   :在圆盘的每个盘面上,划分了很多同心圆,从外往内,依次为0磁道,1磁道 ...
                  (靠近主轴的同心圆,用于停靠磁头,不存储数据。)
● 柱面(cylinder):多个盘面上相同磁道所有构成的一个圆柱面。
● 扇区(sector)  :每个磁道都被划分成很多扇形区域,每个磁道的扇区数量相同。
                  (扇区为数据存储的最小单元,一般情况下,1个扇区 = 512Byte字节。)

簇 与 扇区 的关系:

● 簇(Cluster):也称为block数据块,一个簇可以包含多个扇区。
                每一个簇可以包括 2、4、8、16、32 或 64 个扇区。
                簇不是磁盘的物理特性,属于文件系统的概念。

                                           在这里插入图片描述

★ 0扇区

0扇区是指:物理磁盘0柱面→0磁头→1扇。
            这是MBR 分区表的存储位置,0扇区对于 系统启动磁盘 十分重要。

3.容量单位

在这里插入图片描述

三、存储介质的加载

★ IDE 不支持 热拔插
★ SATA 2.0 支持 热拔插(需要主板支持和相关驱动,不建议这种)
★ SCSI 完美支持 热拔插

1.了解:磁盘设备名称

★ Linux 一切皆文件
★ 磁盘块设备的文件目录是:/dev目录
在这里插入图片描述

2.列出:系统已识别的磁盘(lsblk 命令)

★ 了解:lsblk 命令

● 语法:lsblk [选项] [指定设备 ...]
       ## 常用选项:
       ##     -a, --all        表示:打印所有设备
       ##     -n, --noheadings 表示:不打印标题
       ##     -o               表示:输出指定的字段
       ##                      常用的<字段>如下:
       ##                       ♦ [+]            表示:添加输出<指定字段>,否则,便是仅输出<指定字段>
       ##                       ♦ [+]NAME        表示:块设备名
       ##                       ♦ [+]MHJ:MIN     表示:主设备号:次设备号
       ##                       ♦ [+]RM          表示:是否为可移动设备
       ##                                              1 表示:可移动(如:光驱、U盘)
       ##                                              0 表示:不可移动
       ##                       ♦ [+]SIZE        表示:块设备大小
       ##                       ♦ [+]RO          表示:是否是<只读设备>
       ##                                              1 表示:只读
       ##                                              0 表示:读写
       ##                       ♦ [+]TYPE        表示:块设备类型
       ##                       ♦ [+]MOUNTPOINT  表示:块设备的mount挂载点
       ##                       ♦ [+]HCTL        表示:SCSI设备的<Host:Channel:Target:Lun 地址标识符>

★ 示例学习:
(1) 列出:系统已识别的所有磁盘,并显示默认字段

lsblk

在这里插入图片描述
(2) 列出:系统已识别的所有磁盘,在显示默认字段的基础上,新增显示指定字段

lsblk -o +HCTL

在这里插入图片描述
(3) 列出:系统已识别的所有磁盘,仅显示指定字段

lsblk -o NAME,SIZE,TYPE,HCTL

在这里插入图片描述
(4) 列出:系统已识别的指定磁盘,并显示默认字段

lsblk /dev/sda

在这里插入图片描述

3.热插入:SCSI 磁盘

★ 注意:

<SCSI接口的硬盘>都支持<热插拔><IDE接口的硬盘>不支持<热插拔>

★ 方法1:手动在线扫描并添加<SCSI接口的硬盘>

## 搜索:SCSO总线扫描文件
find /sys/class/scsi_host -iregex .*/host.* -exec ls {}/scan \;

在这里插入图片描述

##在线手动扫描:<所有的新SCSI硬盘>
##              - - - 分别表示:SCSI通道、SCSI目标ID、SCSI逻辑单元LUN
##              - 破折号  表示:重新扫描一切
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

★ 方法2:工具在线扫描并添加<SCSI接口的硬盘>

yum install sg3_utils -y
scsi-rescan -a           ## 扫描:SCSI 设备,从而设别新插入的SCSI 设备

4.热拔出:SCSI 磁盘

(1) 首先:查看/dev/sdb 磁盘设备的SCSI 设备地址

lsblk -o +HCTL /dev/sdb

在这里插入图片描述
(2) 然后:在内核运行时中,清除该 SCSI 设备地址

echo "scsi remove-single-device 0 0 1 0" > /proc/scsi/scsi
lsblk -o +HCTL /dev/sdb

在这里插入图片描述
(3) 最后:手动热拔出第 0 号磁盘总线的第 2 块 SCSI 磁盘,OK

第二节 基本分区

一、MBR分区 与 GPT分区

1.MBR 分区

(1)什么是MBR 分区?

MBR 分区就是:基于MBR 分区表划分出来的磁盘分区。

(2)什么是MBR 分区表?

MBR 分区表就是:用来记录磁盘分区信息的一种古老数据结构。
              它记录着:磁盘的分区逻辑地址、分区扇区总数、活动状态标志符、文件系统标识、起止柱面号磁头号、扇区号等等信息。

★ 下图所示:标识为<80H>的就是活动分区,也称之为boot引导分区,可用于引导系统启动。
在这里插入图片描述在这里插入图片描述

(3)了解:MBR 分区表的保存位置

● 每块磁盘上,都有一个用于保存MBR 分区表的0扇区
● 由于MBR 分区表中活动状态的主分区可以引导服务器启动,因此0扇区也被称之为主引导扇区

(4)了解:MBR 分区的优缺点

● 优点:
   ♦ 这是一个古老成熟的技术,兼容性好,所有系统均可识别。
   ♦ 专用于划分boot 引导分区,从而引导服务器启动。
● 缺点:
   ♦  只有 4 个表记录行,因此,只能划分 4 个主分区,不能划分更多的主分区。
   ♦  可以借助扩展分区,来划分更多的逻辑分区。(注意:逻辑分区不是主分区)
   ♦  只能划分小于2TB磁盘分区= (232-1)×512Byte/扇区。

2.GPT 分区

(1)什么是GPT 分区?

● GPT 分区是:基于GPT 分区表划分出来的磁盘分区。

(2)什么是GPT 分区表?

● GPT 分区表就是:用来记录磁盘分区信息的一种新型数据结构。

(3)了解:GPT 分区表的保存位置

● 出于兼容性考虑,仍然保留0扇区,用于保存MBR分区表,我们称之为PMBR(保护性MBR分区表)。
● 从1扇区开始之后的连续扇区,可用于保存GPT分区表。
   ♦ GPT分区表最少也需占用1个扇区。
   ♦ Linux系统为了支持GPT 分区表,须创建一个 1MiB=1024KiB 的biosboot分区。

在这里插入图片描述

(4)了解:GPT 分区的优缺点

● 优点:
   ♦ 可划分更多的主分区(多于 4 个),针对 Linux 可划分多达 128 个的主分区。
   ♦ 可以划分大于等于2TB的磁盘分区。
● 注意:
   ♦ 当硬盘小于2TB,<操作系统>默认会使用<MBR分区表>来引导启动;
   ♦ 当硬盘大于2TB,<操作系统>会允许使用<GPT分区表>来引导启动,但需<Biosboot分区>的支持。
   ♦ 提前划分<Biosboot分区>,将允许我们直接使用<GPT分区表>来引导启动,但须修改<内核安装参数>

★ 采用<GPT分区>作为<启动分区>的方法如下:

※ 在安装菜单Install Centos7栏,按tab键,然后在行末尾输入内核参数:空格+输入inst.gpt+回车。
※ 如下图所示:

在这里插入图片描述

二、fdisk分区命令(适用于管理:小于2TB分区 = (232-1)×512Byte/扇区)

1.fdisk命令帮助

fdisk /dev/sdb    ## 在物理磁盘/dev/sdb上,进行分区管理操作。
      ## find命令的<交互式执行内容>如下:
      Command (m for help): m                      ## 显示:命令菜单。
      Command action
         a  toggle a bootable flag                 ## 设置:可引导标识。
         b  edit bsd disklabel
         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 ## 创建:新的DOS分区表。
         p  print the partition table              ## 显示:物理磁盘的分区信息。
         q  quit without saving changes            ## 退出:不保存。
         s  create a new empty Sun disklabel
         t  change a partition's system 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):

2.[任务1] 查看:磁盘分区情况

fdisk -l /dev/sdb    ## 查看:/dev/sdb 磁盘设备的分区情况

在这里插入图片描述

3.[任务2] 创建:磁盘主分区

fdisk /dev/sdb       ## ☚ 管理:/dev/sdb 磁盘设备的分区,创建磁盘主分区

在这里插入图片描述

4.[任务3] 创建:磁盘扩展分区

fdisk /dev/sdb       ## 管理:/dev/sdb 磁盘设备的分区,创建磁盘扩展分区

在这里插入图片描述

5.[任务4] 创建:磁盘逻辑分区

fdisk /dev/sdb       ## 管理:/dev/sdb 磁盘设备的分区,创建磁盘逻辑分区

在这里插入图片描述

三、parted/partx分区命令(适用于管理:大于等于2TB分区)

1.parted命令帮助

parted --help
       Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]
              Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run in interactive mode.
       OPTIONs:
         -h, --help                      displays this help message
         -l, --list                      lists partition layout on all block devices
         -m, --machine                   displays machine parseable output
         -j, --json                      displays JSON output
         -s, --script                    never prompts for user intervention
         -f, --fix                       in script mode, fix instead of abort when asked
         -v, --version                   displays the version
         -a, --align=[none|cyl|min|opt]  alignment for new partitions
       COMMANDs:
         align-check TYPE N                       check partition N for TYPE(min|opt) alignment
         help [COMMAND]                           print general help, or help on COMMAND
         mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
         mkpart PART-TYPE [FS-TYPE] START END     make a partition
         name NUMBER NAME                         name partition NUMBER as NAME
         print [devices|free|list,all]            display the partition table, or available devices, or free space, or all found partitions
         quit                                     exit program
         rescue START END                         rescue a lost partition near START and END
         resizepart NUMBER END                    resize partition NUMBER
         rm NUMBER                                delete partition NUMBER
         select DEVICE                            choose the device to edit
         disk_set FLAG STATE                      change the FLAG on selected device
         disk_toggle [FLAG]                       toggle the state of FLAG on selected device
         set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
         toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
         type NUMBER TYPE-ID or TYPE-UUID         type set TYPE-ID or TYPE-UUID of partition NUMBER
         unit UNIT                                set the default unit to UNIT
         version                                  display the version number and copyright information of GNU Parted
       Report bugs to bug-parted@gnu.org

2.partx命令帮助

partx --help
       Usage: partx [-a|-d|-s|-u] [--nr <n:m> | <partition>] <disk>
              Tell the kernel about the presence and numbering of partitions.
       Options:
        -a, --add            add specified partitions or all of them
        -d, --delete         delete specified partitions or all of them
        -u, --update         update specified partitions or all of them
        -s, --show           list partitions
        -b, --bytes          print SIZE in bytes rather than in human readable format
        -g, --noheadings     don't print headings for --show
        -n, --nr <n:m>       specify the range of partitions (e.g. --nr 2:4)
        -o, --output <list>  define which output columns to use
            --output-all     output all columns
        -P, --pairs          use key="value" output format
        -r, --raw            use raw output format
        -S, --sector-size <num>  overwrite sector size
        -t, --type <type>    specify the partition type
            --list-types     list supported partition types and exit
        -v, --verbose        verbose mode
        -h, --help           display this help
        -V, --version        display version
       Available output columns:
                NR  partition number
             START  start of the partition in sectors
               END  end of the partition in sectors
           SECTORS  number of sectors
              SIZE  human readable size
              NAME  partition name
              UUID  partition UUID
              TYPE  partition type (a string, a UUID, or hex)
             FLAGS  partition flags
            SCHEME  partition table type (dos, gpt, ...)
       For more details see partx(8).

3.[任务1] 查看:磁盘分区情况

parted /dev/sdb print    ## 查看:/dev/sdb 磁盘设备的分区情况
                         ##      print 子命令:打印输出分区情况

在这里插入图片描述

partx -s /dev/sdb          ## 查看:/dev/sdb 磁盘设备的分区情况
                           ##      -s 选项:打印输出分区情况

在这里插入图片描述

parted /dev/sdc print      ## 查看:/dev/sdc 磁盘设备的分区情况

在这里插入图片描述

partx -s /dev/sdc          ## 查看:/dev/sdc 磁盘设备的分区情况

在这里插入图片描述

4.[任务2] 创建:磁盘GPT 分区

parted -s /dev/sdc mklabel gpt          ## 设置:/dev/sdc 磁盘的分区表类型为GPT分区表
                                        ##      -s 选项:不提示用户
parted -s /dev/sdc mkpart gpt 2048s 2G  ## 创建:/dev/sdc 分区,起自2048扇区处,止于2GB处
parted -s /dev/sdc mkpart gpt 2G 5G     ## 创建:/dev/sdc 分区,起自2G处,止于5GB处
parted -s /dev/sdc mkpart gpt 5G 100%   ## 创建:/dev/sdc 分区,起自5G处,到全部的剩余空间
parted /dev/sdc print

在这里插入图片描述

partx -s /dev/sdc

在这里插入图片描述

5.[任务3] 删除:磁盘GPT 分区

partx -s /dev/sdc

在这里插入图片描述

parted -s /dev/sdc rm 3    ## 删除:/dev/sdc 磁盘的3号 分区
parted -s /dev/sdc rm 2    ## 删除:/dev/sdc 磁盘的2号 分区
parted -s /dev/sdc rm 1    ## 删除:/dev/sdc 磁盘的1号 分区

四、分区4K对齐

1.了解:<物理Sector扇区>和<逻辑Sector扇区>

★ 什么是<物理Sector扇区>?
   ♦ <物理Sector扇区>属于<硬盘数据存取><底层物理结构>,是<硬盘数据存取><最小物理单元>。
   ♦ 通常情况下<物理Sector扇区><512字节>,但是随着对硬盘容量要求的不断增加,硬盘厂商往往会增大<物理Sector扇区大小>,从而提高数据记录密度,因此就出现了<物理Sector扇区><4096字节>的硬盘。
★ 什么是<逻辑Sector扇区>?
   ♦ <逻辑Sector扇区>属于<硬盘数据存取><底层逻辑结构>,是<硬盘数据存取><最小逻辑单元>,这就是常说的<Sector扇区>。
   ♦ <逻辑Sector扇区>统一设定为<512字节>。
     ※ 由于不同大小的<大物理Sector扇区>会带来<兼容性问题>,会造成<系统或软件>无法适应,因此,为了解决<兼容性问题>,在硬盘内部,会将<物理Sector扇区>划分为多个<逻辑Sector扇区><逻辑Sector扇区>统一设定为<512字节><硬盘固件程序>仅对<上层(系统或软件)>通告<逻辑Sector扇区>信息,从而达成对<上层>屏蔽<下层>物理差异的效果,并且<硬盘固件程序>还负责在<逻辑Sector扇区><物理Sector扇区>之间进行转换。
★ <逻辑Sector扇区><物理Sector扇区>的关系
  ♦ 一个<物理Sector扇区>可能包含着:一个或多个<逻辑Sector扇区>。
    ※ <物理Sector扇区>是:<硬盘>实际<存取操作><最小物理单元>。
    ※ <逻辑Sector扇区>是:<硬盘>接收<存取指令><最小逻辑单元>。
♦ 当要读写某个<逻辑Sector扇区>时,<硬盘固件程序>在实际操作时,则会读写<逻辑Sector扇区>所在的整个<物理Sector扇区>

2.了解:分区未对齐

在这里插入图片描述
▲ 上图显示:分区未对齐

♦ 在读写<0>时,<硬盘固件程序><实际读写操作>必须跨越<两个物理扇区:0和1>;
♦ 在读写<1>时,<硬盘固件程序><实际读写操作>必须跨越<两个物理扇区:1和2>;
♦ 在读写<2>时,<硬盘固件程序><实际读写操作>必须跨越<两个物理扇区:2和3>;
♦ 以此类推 ......
显而易见:这样会造成<读写性能>严重下降。

3.了解:分区对齐

▼ 分区对齐:是指<逻辑Sector扇区>与<物理Sector扇区>的<起始位置>对齐。

♦ 强烈建议:<硬盘第一个分区><起始逻辑扇区><第2048个逻辑扇区>,从而满足几乎所有硬盘的<4K对齐>要求。

在这里插入图片描述
▲ 上图显示:分区已对齐

♦ 在读写<0>时,<硬盘固件程序><实际读写操作>仅仅涉及<一个物理扇区:0>;
♦ 在读写<1>时,<硬盘固件程序><实际读写操作>仅仅涉及<一个物理扇区:1>;
♦ 在读写<2>时,<硬盘固件程序><实际读写操作>仅仅涉及<一个物理扇区:2>;
♦ 以此类推 ......
显而易见:这样不会造成<读写性能>下降。

4.确保:硬盘分区的<4K对齐>要求

★ <fdisk命令>可以自动对齐磁盘,因此,<4K对齐>通常用于<parted命令>。

##
## 计算:<4K对齐>的<起始扇区>
##
a=`cat /sys/block/sdd/queue/optimal_io_size`      ## 获取:<当前硬盘>报告的<最佳IO大小(字节)>
b=`cat /sys/block/sdd/alignment_offset`           ## 获取:<当前硬盘>报告的<对齐偏移量(字节)>
c=`cat /sys/block/sdd/queue/physical_block_size`  ## 获取:<当前硬盘>报告的<逻辑Sector扇区大小(字节)>
d=$(((a+b)/c))                                    ## 计算:<起始扇区>的<个数>,如果小于2048个,则直接采用2048个
if [[ "$d" -lt 2048 ]]; then
   d="2048"
fi
##
## 划分:<4K对齐>的<硬盘分区>
##
parted -s /dev/sdd mklabel gpt
parted -s /dev/sdd mkpart gpt ${d}s 100%

第三节 LVM 卷(分区)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值