fdisk分区详解【适用于2T以内的新硬盘分区】

玩转linux 专栏收录该内容
82 篇文章 2 订阅

磁盘结构介绍

  • 一个磁盘由盘片和磁道组成,磁道有无数个扇区,一个扇区512Byte
    注:硬盘最小单位才是扇区,并不是最小存储单位-block(4k)
    在这里插入图片描述

分区类型说明

  • 分区的类型为3类:

    • 主分区:从硬盘上直接划分出来的,可以直接格式化使用的分区
    • 扩展分区:直接从硬盘上划分,但是不直接格式化使用,而是在上面创建多个小分区
    • 逻辑分区:逻辑分区就是扩展分区创建的小分区
  • 分区表,只记录 主分区+扩展分区,每记录一个分区消耗16B

  • 主分区扩展分区<=4 且扩展分区<=1

  • 如果想划分多个分区,至少你得留一定的空间作为扩展分区,在上面划分更多个逻辑分区

  • MBR和GPT

    • MBR–>兼容性好,但是不能用于>2T硬盘
    • GPT–>可以有128个主分区,兼容性差一些,但是可以用大大于2T的硬盘
    • 决定使用MBR结构还是GPT结构,这个选择叫做“初始化磁盘标签”
      fdisk–>mbr结构
      gdisg–>gpt结构
      parted–>兼而有之

磁盘管理说明

如果输入fdisk -l命令没有找到新的磁盘,按下面步骤操作
1)进入到cd /sys/class/scsi_host/
2)echo "---" > host0/scan #接口扫描新加磁盘即可,如果输入命令还是没有找到则将host0改为host1、host2都试试

fdisk -l 参数详解

我们执行fdsikl -l的时候,会看到一个硬盘的全部信息如下:

[root@controll ccx]# fdisk -l
Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 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: 0x00068e46

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   419430399   208665600   8e  Linux LVM
  • 下面分开讲解前面4行内容:

    • 第一行:
      Disk /dev/sda【硬盘名称】: 214.7 GB【大小】, 214748364800 bytes【字节】, 419430400 sectors【扇区】
      其中一个扇区等于512个字节,我们硬盘的最小单位是扇区。上面的214其实是不准的,真实的硬盘大小为:214748364800/1024/1024/1024=200G【1G=1024M,1M=1024k,1K=1024bytes】
    • 第二行:
      Units = sectors of 1 * 512 = 512 bytes【柱面单元大小 (一个扇区作为一个柱面,一个扇区大小为512 bytes,即0.5KB】
    • 第三行:
      Sector size (logical/physical): 512 bytes / 512 bytes 【扇区大小 ,逻辑/物理都为 512 bytes】
    • 第四行:
      I/O size (minimum/optimal): 512 bytes / 512 bytes 【IO最小/最优 均为 512bytes 】
  • 注:下面boot中系统盘前面会有*,其他无内容
    最后一行 实际大小 是我自己新增的,用来展示换算单位

设备boot起始柱面结束柱面分区大小分区类型对分区类型的解析实际大小
/dev/sda1*20482099199104857683Linux1G
/dev/sda220992004194303992086656008eLinux LVM198.999G

分区大小转换计算方法

方式一

  • 以上面的/dev/sda1和/sda2为例
  • 直接以分区大小计算,这个大小显示的是扇区数据【Kb】,所以公式为:分区大小【Blocks】/1024/1024
  • 如上的/dev/sda1为:1048576/1024/1024=1【反过来换算就是:G*1024*1024=扇区大小【最简单的方式就是估算,小数点向前移动6位即为Gb大小】
  • 如上的/dev/sda2为:208665600/1024/1024=198.999【反过来换算就是:G*1024*1024=扇区大小【最简单的方式就是估算,小数点向前移动6位即为Gb大小】

方式二

  • 以上面的/dev/sda1和/sda2为例
  • 这个是以存储单位【bytes】计算,上面说过,一个扇区为512Bytes,所以公式为:结束扇区【end】-起始扇区【start】/1024/1024/1024*512【这种方式实用于新硬盘分区时硬盘容量大小(Gb)精确计算】
  • 如上的/dev/sda1为:2099199-2048/1024/1024/1024*512=0.99999【反过来换算就是:G*1024*1024*1024/512=Bytes大小【GxMxKxBytes÷扇区】
  • 如上的/dev/sda2为:419430399-2099200/1024/1024/1024*512=198.999【反过来换算就是:G*1024*1024*1024/512=Bytes大小【GxMxKxBytes÷扇区】

MBR分区管理

有2种分区方法,图形化和命令行(不建议用图形化分区)

图形化分区

点击菜单栏-工具-磁盘-点击新添加磁盘-设置中格式化
在这里插入图片描述
分区中-选择格式化为MBR格式还是GPT格式-选好后点击格式化即可;
在这里插入图片描述

命令行模式

命令格式化硬盘为gpt和mbr说明【了解就行】

  • 格式化为gpt格式:parted 硬盘设备名(lsblk查看) mklabel格式(gpt) , 会提示格式化后数据会丢失 输入yes即可:
    在这里插入图片描述

  • 如果不要提示 加上参数-s 即可:
    在这里插入图片描述

  • 取消之前格式化的格式: parted -s 硬盘设备名 mklabel loop:
    在这里插入图片描述

  • 如果要格式化大于2T的文件,参考文档:
    linux大于2T磁盘分区方法(parted分区方法说明)

  • 格式化为mbr格式:parted 硬盘设备名(lsblk查看) mklabel msdos , 会提示格式化后数据会丢失 输入yes即可:
    在这里插入图片描述

fdisk命令行分区

  • fdisk -l:查看所有磁盘信息
  • fdisk -l 硬盘设备名 :查看单独的磁盘信息 如:fdisk -l /dev/sdb2
  • mbr结构(DOS)创建分区fdisk 分区磁盘设备名, 输入m 获取帮助
    在这里插入图片描述

参数介绍

  • fdisk 分区磁盘设备名, 输入m回车 即可看到下列字母的详细介绍

    • d:删除一个分区
    • l(L):列出磁盘类型
    • m:显示当前菜单
    • n:新划一个分区
    • p:打印分区表
    • q:不保存退出
    • w:保存提出
    • t:转换类型
  • 如果没有新分区直接p打印分区表是空白的:
    在这里插入图片描述

创建分区【含扇区解释】

  • fdisk 分区磁盘设备名,如:fdisk /dev/sdb2
  • 开始新化分区 n
    • 选择主分区或逻辑分区,前3个一般选主分区,所以输入:p
    • 起始扇区默认回车即可【默认2048,也可以手动输入2048指定的】
    • 第二次就是容量扇区,直接输入+#G即可
      注:分区大小本身是以扇区来计算的,一个扇区0.5k,所以如果需要划分2G,就要慢慢推算扇区大小:2048(2g大小)+2(2g数量)*1024(M)*1024(k)*2(扇区)-1(起始位)【这仅仅是第一个分区的计算方式】,很麻烦,所以直接 +#G 即可
      在这里插入图片描述

我们划分区的时候,一般是默认起始扇区的(直接回车就是默认),所以建立多个之间并不会有空隙,如,第一块建了2G,第一块的结尾+1就是第二块的开始,但如果我们手动指定扇区了,就是并不是以第一块结尾+1为起始扇区,这里留了8个扇区(0.5*8=4k),这时候再建第三快分区的时候,如果是默认起始扇区,就是以第一次留下的扇区为起始扇区,在划分2个G,就会提示超出范围,因为这时候的扇区是第一块分区结束和第二块分区起始之间的空间,起始和结尾都直接回车(默认,如果结尾直接回车就是全部空间都给该分区),就会发现 实际只能分4K大小,所以,我们划分区手动指定扇区的时候,一定要注意起始扇区: (图中第一块扇区结尾有误:是4196351)
所以这时候就需要用p查看第二块的结尾扇区,然后+1 就是新的起始扇区。
在这里插入图片描述

主分区和扩展分区说明

  • 假如我们有一个20G的硬盘,我们4块都划分为2G的主分区,那么剩下的12G就没法使用了:
    在这里插入图片描述
    在这里插入图片描述
  • 所以我们需要把最后一块建成扩展分区 e (如果已经创建了4个主分区,d 删除第4个分区),并且全部空间都分给扩展分区(结束扇区直接回车即可),MBR总分区<=4,主分区<=4(就是可以全部分为主分区),扩展分区<=1:
    在这里插入图片描述
  • 从扩展分区中继续建的属于逻辑分区,逻辑分区是不询问输入p或e的,直接从5开始累加:
    在这里插入图片描述
    在这里插入图片描述

分区类型转换

  • 分区根据用途还可以进行一些分类:有的是普通的linux分区→不管是逻辑分区还是主分区都可以直接格式化使用 , 但有的分区作为交换分区,有的分区用来配置lv(逻辑分区),有的分区用来配置raid,有的分区用来做扩展分分区
  • 输入t 转换类型,L查看所有类型,如:现在把几个linux类型改为lv卷:
    在这里插入图片描述
  • L查看并记录好需要转换的类型id号后再次输入t,即可进入类型转换模式了:
    • 输入分区号,就是要给哪个分区修改类型
    • 然后输入类型id即可修改完成【需要给多个分区修改则重复上面步骤】
      在这里插入图片描述
      在这里插入图片描述

保存分区

  • 上面功能按需定义完以后输入 w回车即可保存成功
  • 然后输入 partprobe 分区设备名(刷新分区表):
    在这里插入图片描述

partprobe 分区设备名(刷新分区表)

  • 也可以直接执行 partprobe即可。
  • 在这单独说明,是证明这个很重要,做完分区w保存退出以后必须执行这个命令,不然fdisk -l看不到最新的分区信息。
  • 全部完成以后输入lsblk是看不出主分区或扩展分区等类型的,需要输入 fdisk -l 设备名 ,才能看到刚才定义的类型:
    在这里插入图片描述
    在这里插入图片描述

完整流程展示

  • 下面我创建了3个主分区和若干逻辑分区,为了更直观看出,我没有用空格,注意看后面解释内容。
  • 其实下面内容是我另外一个脚本中的部分摘抄罢了,更多的可以直接去看这篇博客哈:
    linux脚本用fdisk批量给主机硬盘分区
[root@controll ccx]# fdisk /dev/sdb  # 分区/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 (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p #选择主分区
Partition number (1-4, default 1): 1 # 第一个主分区
First sector (2048-41943039, default 2048): 2048 #起始扇区
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 6289408 #默认扇区,我是换算的单位,这可以直接+3G的
Partition 1 of type Linux and of size 3 GiB is set

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): 2 #第二个主分区
First sector (6289409-41943039, default 6291456): 6289409 #默认扇区,上一个结束扇区+1
Last sector, +sectors or +size{K,M,G} (6289409-41943039, default 41943039): 14678017
Partition 2 of type Linux and of size 4 GiB 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): 3
First sector (14678018-41943039, default 14680064): 14678018
Last sector, +sectors or +size{K,M,G} (14678018-41943039, default 41943039): 25163778
Partition 3 of type Linux and of size 5 GiB is set

Command (m for help): n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e
Selected partition 4
First sector (25163779-41943039, default 25165824): 25163779
Last sector, +sectors or +size{K,M,G} (25163779-41943039, default 41943039): +
Using default value 41943039
Partition 4 of type Extended and of size 8 GiB is set

Command (m for help): n
All primary partitions are in use
Adding logical partition 5
First sector (25165827-41943039, default 25167872): 25165827
Last sector, +sectors or +size{K,M,G} (25165827-41943039, default 41943039): 29360131
Partition 5 of type Linux and of size 2 GiB is set

Command (m for help): n
All primary partitions are in use
Adding logical partition 6
First sector (29362180-41943039, default 29364224): 29362180
Last sector, +sectors or +size{K,M,G} (29362180-41943039, default 41943039): 33554436
Partition 6 of type Linux and of size 2 GiB is set

Command (m for help): n
All primary partitions are in use
Adding logical partition 7
First sector (33556485-41943039, default 33558528): 33556485
Last sector, +sectors or +size{K,M,G} (33556485-41943039, default 41943039): +
Using default value 41943039
Partition 7 of type Linux and of size 4 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0x0ab2846a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     6289408     3143680+  83  Linux
/dev/sdb2         6289409    14678017     4194304+  83  Linux
/dev/sdb3        14678018    25163778     5242880+  83  Linux
/dev/sdb4        25163779    41943039     8389630+   5  Extended
/dev/sdb5        25165827    29360131     2097152+  83  Linux
/dev/sdb6        29362180    33554436     2096128+  83  Linux
/dev/sdb7        33556485    41943039     4193277+  83  Linux

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

Calling ioctl() to re-read partition table.
Syncing disks.
[root@controll ccx]# 

分区完成以后 需要格式化后才能正常使用

分完区以后的硬盘使用流程

格式化硬盘(指定块大小等)

  • 输入mkfs. 然后tab就可以查看所有支持的类型:(也可以mkfs -t 类型,如mkfs -t xfs…,但建议使用mkfs.**)(-t是指定类型,但一般用mkfs.类型,不用-t指定)
    在这里插入图片描述
  • 定义成什么,直接mkfs.**即可,以xfs为例:mkfs.xfs -f /dev/sdb1 (-f 是强制转换,如果之前已经定义了一次,不输入-f就会报错):
    在这里插入图片描述
    • 不加-f再次定义报错:
      在这里插入图片描述
  • 可以自定义block(默认是4k)mkfs.xfs -f -b size=大小 设备名 ,即可:
    在这里插入图片描述
  • ext4定义block:mkfs.ext4 -b 大小 设备名 ,即可:
    在这里插入图片描述
    格式定义完以后磁盘分区就完成了。

硬盘挂载(需格式化后)

  • 完成格式化要使用需要挂载呀? 挂载有2种:

    • 一种是临时挂载 mount 设备名 挂载文件(挂载文件可以mkdir新建到任何设备名中)
    • 第二种是永久挂载,把信息写进/etc/fstab中,永久挂载中有一栏需要知道 类型,类型查看有2种方法,第一种先临时挂载磁盘,然后df -Th即可, 第二种 直接blkid,后面有所有分区的类型:
      在这里插入图片描述
  • 如果/etc/fstab文件中类型错误会导致系统无法开机,如何识别是否正确写入,编辑完保存以后,mount -a如果磁盘能自动挂载便成功(如果使用的是网络设备挂载,建议用uuid的方式,因为网络设备有可能会发生磁盘的窜位,导致磁盘无法正常使用):
    在这里插入图片描述

查看uuid的2种方式

  • 一种是blkid【查看所有分区的uid】
  • 另外一种是xfs_admin -u 设备名 【查看单独一个分区的uuid】

修改uuid

uuidgen 生成一个随机id,然后xfs_admin -U 新uuid 设备名即可:
在这里插入图片描述
分区已经创建好以后,查看文件系统的属性:xfs_info 挂载设备名

  • 1
    点赞
  • 2
    评论
  • 5
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值