• Linux学习-38-硬盘分区命令fdisk介绍


    10.4 硬盘分区命令fdisk介绍
    • 在安装操作系统的过程中已经对系统硬盘进行了分区,对于新添加了一块硬盘,需要使用 Linux 中的分区命令 fdisk 和 parted进行分区也叫分割硬盘。其中 fdisk 命令较为常用,但不支持大于 2TB 的分区;如果需要支持大于 2TB 的分区,则需要使用 parted 命令,当然 parted 命令也能分配较小的分区。使用 fdisk 命令进行分区格式。

    在搭建在虚拟机上的linux挂载时,首先要增加硬盘,然后格式化硬盘,在硬盘上创建分区,创建目录,然后才是挂载。

    • 语法:
    #列出系统分区
    [root@CncLucZK ~]# fdisk [-l] 装置名称		#-l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
    
    • 1
    • 2

    注意,千万不要在当前的硬盘上尝试使用 fdisk,这会完整删除整个系统,一定要再找一块硬盘,或者使用虚拟机。

    举个例子:列出整个系统内所有分区信息

    [root@CncLucZK ~]# fdisk -l
    #查询本机可以识别的硬盘和分区
    Disk /dev/sda:32.2 GB, 32212254720 bytes
    #硬盘文件名和硬盘大小
    255 heads, 63 sectors/track, 3916 cylinders
    #共255个磁头、63个扇区和3916个柱面
    Units = cylinders of 16065 *512 = 8225280 bytes				#柱面大小 = 磁头数 * 扇区 * 单个扇区大小
    Sector size (logical/physical): 512 bytes/512 bytes
    #每个扇区的大小
    I/O size (minimum/optimal): 512 bytes/512 bytes
    Disk identifier: 0x0009e098
    Device 		Boot 		Start 	End 	Blocks 	ld 	System
    /dev/sda1	 * 			1 		26 		204800 	83 	Linux
    /dev/sda2 	  		 	26	   281	    2048000 82 Linux swap / Solaris
    /dev/sda3 				281 	3917 	29203456 83 Linux
    #设备文件名启动分区 起始柱面 终止柱面容量 ID 系统
    
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes #第二个硬盘被识别,列出这个硬盘的大小,但是没有可分区。
    255 heads, 63 sectors/track, 2610 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes/512 bytes Disk identifier: 0x00000000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    磁盘顺序读取时是从一个磁头换到另一个磁头(磁头不用移动位置),而不是由一个磁柱换到另一个磁柱。

    • 使用 “fdisk -l” 查看分区信息,能够看到我们添加的两块硬盘(/dev/sda 和 /dev/sdb)的信息。我们解释一下这些信息,其上半部分态是硬盘的整体状态,/dev/sda 硬盘的总大小是 32.2 GB,共有 3916 个柱面,每个柱面由 255 个磁头读/写数据,每个磁头管理 63 个扇区。每个柱面的大小是 8225280 Bytes,每个扇区的大小是 512 Bytes。
    • 信息的下半部分是分区的信息,共 7 列,含义如下:
      • Device:分区的设备文件名。
      • Boot:是否为启动引导分区,在这里 /dev/sda1 为启动引导分区。
      • Start:起始柱面,代表分区从哪里开始。
      • End:终止柱面,代表分区到哪里结束。
      • Blocks:分区的大小,单位是 KB。
      • id:分区内文件系统的 ID。在 fdisk 命令中,可以 使用 “i” 查看。
      • System:分区内安装的系统是什么。
    • 以硬盘 /dev/vda为例来做练习,命令如下:

    注意这里的分区命令是 “fdisk /dev/vda”,这是因为硬盘并没有分区,使用 fdisk 命令的目的就是建立分区。

    #找出系统中的根目录所在磁盘,并查阅该硬盘内的相关信息
    [root@CncLucZK ~]# df -l /		
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/vda1       51539404 8847432  40494728  18% /
    
    [root@localhost ~]# fdisk /dev/sda			#不要加上数字,加数字的已经分区完毕
    #给/dev/sda分区
    Welcome to fdisk (util-linux 2.32.1).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    The old ext4 signature will be removed by a write command.
    
    Device does not contain a recognized partition table.
    Created a new DOS disklabel with disk identifier 0x2786972b.
    
    Command (m for help): m
    #交互界面的等待输入指令的位置,输入 m 得到帮助
    Command action
    #可用指令
    Help:
    #在 fdisk 交互界面中输入 m 可以得到帮助,帮助里列出了 fdisk 可以识别的交互命令:
      DOS (MBR)
       a   toggle a bootable flag					#设置可引导标记
       b   edit nested BSD disklabel				#编辑 bsd 磁盘标签
       c   toggle the dos compatibility flag		#设置 DOS 操作系统兼容标记
    
      Generic
       d   delete a partition						#删除一个分区
       F   list free unpartitioned space
       l   list known partition types				#显示已知的文件系统类型。82 为 Linux swap 分区,83 为 Linux 分区
       n   add a new partition						#新建分区
       p   print the partition table				#显示分区列表
       t   change a partition type					#改变一个分区的系统 ID
       v   verify the partition table				#验证分区表
       i   print information about a partition
    
      Misc
       m   print this menu							#显示帮助菜单
       u   change display/entry units				#改变显示记录单位
       x   extra functionality (experts only)		#附加功能(仅专家)
    
      Script
       I   load disk layout from sfdisk script file
       O   dump disk layout to sfdisk script file	
    
      Save & Exit
       w   write table to disk and exit				#保存退出
       q   quit without saving changes				#不保存退出
    
      Create a new label
       g   create a new empty GPT partition table						#建立空白 GPT 分区表
       G   create a new empty SGI (IRIX) partition table				#建立空白 SGI(IRIX) 分区表
       o   create a new empty DOS partition table						#建立空白 DOS 分区表
       s   create a new empty Sun partition table						#新建空白 SUN 磁盘标签
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 使用 p 可以列出目前这颗磁盘的分割表信息,这个信息的上半部在显示整体磁盘的状态。
    Command (m for help): p  #显示分区列表,目前磁盘的状态
    
    Disk /dev/sdb: 41.1 GB, 41174138880 bytes        <==这个磁盘的文件名与容量
    255 heads, 63 sectors/track, 5005 cylinders      <==磁头、扇区与磁柱大小
    Units = cylinders of 16065 * 512 = 8225280 bytes <==每个磁柱的大小
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1          13      104391   83  Linux
    /dev/sda2              14        1288    10241437+  83  Linux
    /dev/sda3            1289        1925     5116702+  83  Linux
    /dev/sda4            1926        5005    24740100    5  Extended
    /dev/sda5            1926        2052     1020096   82  Linux swap / Solaris
    # 装置文件名 启动区否 开始磁柱    结束磁柱  1K大小容量 磁盘分区槽内的系统
    
    Command (m for help): q				#q不储存离开,w保存离开,需要慎重操作
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 从fdisk -l命令检测到的还未创建分区的硬盘sdb创建和删除主分区、扩展分区和逻辑分区
    [root@localhost ~]# fdisk /dev/sdb			#给/dev/sdb分区
    Welcome to fdisk (util-linux 2.32.1).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    The old ext4 signature will be removed by a write command.
    
    Device does not contain a recognized partition table.
    Created a new DOS disklabel with disk identifier 0x2786972b.
    
    Command (m for help): n
    
    Command action
    
    e   extended                //扩展分区
    
    p   primary partition (1-4)  //主分区
    
    p
    
    Selected partition 4
    
    #有扩展分区和主分区,逻辑分区在扩展分区中建立。注意到括号中的1-4,最多只能建四个主分区(包括扩展分区)。先建一个主分区:
    
    Command (m for help): n				#输入n,新建一个分区;
    
    Command action
    
    e  extended
    
    p  primary partition (1-4)
    
    p #建主分区							  #再输入p,分区类型为主分区(如果想添加扩展分区,就按e);创建一个分区,如果默认敲回车的话他就会创建一个主分区 , 主分区就是使用默认的 MBR-Main Boot Record(主引导记录) 来创建四个主分区 .
      
    Partition number (1-4): 1 			#然后输入1,选择分区号(这里注意一下,加上扩展分区,主分区只能有四个,所以只能选择1-4,一般按顺序输入分区号);默认回车就是设置为 1 , 我们也可以设置为 2 或 3 或 4.
    
    First cylinder (1-2610, default 1): #提示输入起始扇区,直接回车默认从第一个柱面开始划分或2048开始
    
    Using default value 1
    
    Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G #输入第一个分区的大小,这里是加了2G,输入+2G(不要忘记+号);此时就是来设置它的结束扇区 , 如果此时直接回车的话就是将这整块硬盘作为一个分区了 ;还有一种方法就是对扇区进行一个计算 , 一个扇区是占 512字节 , 那个1个G的话就需要自己来算1个G有多少个扇区(512字节) 。
    #加空间大小,这里有很多种选择:+后面单位可以接M,G,K(记得要大写)表示划分你所加的空间,也可以是柱面数。不管怎样都不能超过该磁盘剩余的空间否则无效。
    									#分区大小选择好后,会包含一个签名,询问是否要移除该签名,如果不移除的话,此时的分区格式就是ntfs,这里我们需要ntfs格式的分区,所以不移除,输入N;
    
    Command (m for help): p 			#分好后查看分区信息,刚所做的所有一目了然。
    
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes
    
    255 heads, 63 sectors/track, 2610 cylinders
    
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Sector size (logical/physical): 512 bytes / 512 bytes
    
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    
    Disk identifier: 0xfaa2aa49
    
    Device Boot      Start        End      Blocks  Id  System
    
    /dev/sdb1              1        262    2104483+  83  Linux
    
    同上所述建立扩展分区:
    
    Command (m for help): n
    
    Command action
    
    e  extended
    
    p  primary partition (1-4)
    
    e #建立扩展分区
    
    Partition number (1-4): 4
    
    First cylinder (263-2610, default 263):
    
    Using default value 263
    
    Last cylinder, +cylinders or +size{K,M,G} (263-2610, default 2610): +4G
    
    Command (m for help): p
    
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes
    
    255 heads, 63 sectors/track, 2610 cylinders
    
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Sector size (logical/physical): 512 bytes / 512 bytes
    
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    
    Disk identifier: 0xfaa2aa49
    
    Device Boot      Start        End      Blocks  Id  System
    
    /dev/sdb1              1        262    2104483+  83  Linux
    
    /dev/sdb4            263        785    4200997+  5  Extended
    
    扩展分区建好我们就可以在扩展分区建立逻辑分区了
    
    Command (m for help): n
    
    Command action
    
    l  logical (5 or over)
    
    p  primary partition (1-4)
    
    l #建逻辑分区
    
    First cylinder (263-785, default 263):
    
    Using default value 263
    
    Last cylinder, +cylinders or +size{K,M,G} (263-785, default 785): +2G
    
    Command (m for help): p
    
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes
    
    255 heads, 63 sectors/track, 2610 cylinders
    
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Sector size (logical/physical): 512 bytes / 512 bytes
    
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    
    Disk identifier: 0xfaa2aa49
    
    Device Boot      Start        End      Blocks  Id  System
    
    /dev/sdb1              1        262    2104483+  83  Linux
    
    /dev/sdb4            263        785    4200997+  5  Extended
    
    /dev/sdb5            263        524    2104483+  83  Linux
    
    上面显示已经建好一个主分区,一个逻辑分区,但是这些现在还没有生效我们需要保存退出。
    
    Command (m for help): w #保存退出
    
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    
    Syncing disks.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 内核重新读取新的分区表 , 让Linux内核对sdb硬盘重新读取了一下分区表 .立即生效
    [root@CncLucZK ~]# partprobe /dev/sdb
    
    • 1
    • 若在虚拟机上面无法立即生效,重启机器。
    shutdown -r now
    reboot
    
    • 1
    • 2

    参考文献:
    linux用fdisk创建分区,在Linux下用fdisk创建分区
    Linux fdisk命令详解:给硬盘分区

    下一篇:Linux学习-39-创建分区parted命令用法
  • 相关阅读:
    【数据库09】数据库系统体系结构
    K8S之Flannel的vxlan网络模式初步源码解析
    SpringBoot基于AOP实现RocketMQ发送与消费
    Java 遍历字符串 和 截取码点
    玩转MySQL:定位排查解决突发Bug
    【前端系列】pnpm 与 npm:现代 JavaScript 包管理工具的比较
    使用vLLM和ChatGLM3-6b批量推理
    Brain Teaser计算类 - 双败淘汰制
    微信小程序控制元素显示隐藏
    信息化项目验收的依据、内容和验收测评报告
  • 原文地址:https://blog.csdn.net/weixin_42045639/article/details/127895540