Linux磁盘概念及其管理工具fdisk

Stella981
• 阅读 559

Linux磁盘概念及其管理工具fdisk

[日期:2016-08-27]

来源:Linux社区  作者:chawan

[字体:大 中 小]

引言:冯诺依曼体系中的数据存储器就是我们常说的磁盘或硬盘,它是计算机不可缺少的一个组件,下面来看看Linux中磁盘的基础概念及管理工具fdisk

实验环境CentOS7.2 

磁盘概念

按磁盘属性分类有机械硬盘跟固态硬盘

(1)机械硬盘:内部真空

 磁盘:正反面含有磁性物质的盘片,由一个马达固定所有磁盘转动,固定角速度

   每个盘片正反面各有一个磁头,所有磁头固定在一个机械臂上

平均寻道时间:5400rpm, 7200rpm, 10000rpm, 15000rpm转速

track(磁道):每个盘片上出厂格式化

sector(扇区):512bytes单位

cylinder(柱面):不同盘面上同一编号的磁道组合在一起,分区划分按照柱面实现

越靠近较外部分区的柱面组成的分区,越快。Windows上c盘在最外面

(2)固态硬盘

 类似与多个并行U盘,工作模式上模拟机械硬盘的机制。

电器设备,速度个人笔记本是原来的3到5倍,读400个iops(io per second)、写200iops


在正式介绍Linux设备文件前需先了解一个概念:MBR

MBR(Master Boot Record):主引导分区,为一个编号为0的512字节的扇区

      446bytes:bootloader,引导加载器程序,主引导记录,引导启动操作系统的程序;

      64bytes:分区表,每16bytes标识一个分区,一共只能有4个分区

      2bytes:表示MBA是否有效;55AA为有效;

    注意:

         1) 主分区最多四个,扩展分区只能一个

         2) 扩展分区不能单独使用,要继续分成逻辑分区,逻辑分区可以由多个

         3) 一个分区就是一个独立的文件系统

         4) 主分区和扩展分区的标识:1-4;逻辑分区:5+

其在Linux中的创建新磁盘分区会涉及主分区与扩展分区内容


/dev

不管是机械硬盘还是固态硬盘对于Linux看来它都是属于**/dev**/下的文件

  设备文件名

  1)磁盘:IDE: /dev/hd[a-z]

     SCSI, SATA, USB, SAS: /dev/sd[a-z]

  2)分区:/dev/sda#:      /dev/sda1, ...

  注意:CentOS 6和7统统将硬盘设备文件标识为/dev/sd[a-z]#

  /dev设备文件介绍

  1)设备文件:关联至设备的驱动程序;设备的访问入口;

  2)设备号:

          major:主设备号,区分设备类型;用于标明设备所需要的驱动程序;

          minor:次设备号,区分同种类型下的不同的设备;是特定设备的访问入口;

          比如/dev/sd# :sd为主设备号,#为次设备号。

引用设备的方式:设备文件名,卷标,UUID


磁盘管理工具fdisk

fdisk

    创建查看分区

      (1)查看磁盘的分区信息:

命令使用格式:**fdisk -l [-u] [device...]**:列出指定磁盘设备上的分区情况;

      (2)管理分区

命令使用格式:fdisk /dev/sd# :创建,删除,保存磁盘分区配置。

fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘;直到使用w命令保存至磁盘上;

以下命令选项为m中的常用选项:

              n:创建新分区        d:删除已有分区

              t:修改分区类型      l:查看所有已经ID

              w:保存并退出        q:不保存并退出

              m:查看帮助信息      p:显示现有分区信息

命令演示

1、对已使用的磁盘设备,创建新分区,若没有可用空间则自动退出。

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

[root@localhost ~] # fdisk /dev/sda

欢迎使用  fdisk  (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

命令(输入 m 获取帮助):m

命令操作

a   toggle a bootable flag

b   edit bsd disklabel

c   toggle the dos compatibility flag

d   delete a partition

g   create a new empty GPT partition table

G   create an IRIX (SGI) partition table

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

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)

命令(输入 m 获取帮助):n

Partition  type :

p   primary (2 primary, 0 extended, 2  free )

e   extended

Select (default p): p

分区号 (3,4,默认 3):

No  free  sectors available

命令(输入 m 获取帮助):

2、对新添加的磁盘创建新分区。

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

[root@localhost ~] # fdisk /dev/sdb

欢迎使用  fdisk  (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

Device does not contain a recognized partition table

使用磁盘标识符 0xd391e822 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n

Partition  type :

p   primary (0 primary, 0 extended, 4  free )

e   extended

Select (default p): p

分区号 (1-4,默认 1):

起始 扇区 (2048-10485759,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+1G

分区 1 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):w

[root@localhost ~] # fdisk -l

磁盘  /dev/sda :21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I /O  大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x00036006

设备 Boot      Start         End      Blocks   Id  System

/dev/sda1    *        2048     1026047      512000   83  Linux

/dev/sda2          1026048    41943039    20458496   8e  Linux LVM

磁盘  /dev/sdb :5368 MB, 5368709120 字节,10485760 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I /O  大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xd391e822

设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1             2048     2099199     1048576   83  Linux

3、创建扩展分区,及删除已存在分区

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

[root@localhost ~] # fdisk /dev/sdb

欢迎使用  fdisk  (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

命令(输入 m 获取帮助):n

Partition  type :

p   primary (1 primary, 0 extended, 3  free )

e   extended

Select (default p): e

分区号 (2-4,默认 2):

起始 扇区 (2099200-10485759,默认为 2099200):

将使用默认值 2099200

Last 扇区, +扇区 or +size{K,M,G} (2099200-10485759,默认为 10485759):+1G

分区 2 已设置为 Extended 类型,大小设为 1 GiB

命令(输入 m 获取帮助):p

磁盘  /dev/sdb :5368 MB, 5368709120 字节,10485760 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I /O  大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xd391e822

设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1             2048     2099199     1048576   83  Linux

/dev/sdb2          2099200     4196351     1048576    5  Extended

扩展分区创建完毕,下面在扩展分区上创建逻辑分区,大家可以看到其标号从5开始

命令(输入 m 获取帮助):n

Partition  type :

p   primary (1 primary, 1 extended, 2  free )

l   logical (numbered from 5)

Select (default p): l

添加逻辑分区 5

起始 扇区 (2101248-4196351,默认为 2101248):

将使用默认值 2101248

Last 扇区, +扇区 or +size{K,M,G} (2101248-4196351,默认为 4196351):+100M

分区 5 已设置为 Linux 类型,大小设为 100 MiB

命令(输入 m 获取帮助):p

磁盘  /dev/sdb :5368 MB, 5368709120 字节,10485760 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I /O  大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xd391e822

设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1             2048     2099199     1048576   83  Linux

/dev/sdb2          2099200     4196351     1048576    5  Extended

/dev/sdb5          2101248     2306047      102400   83  Linux

保存退出后,将逻辑分区删除

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

命令(输入 m 获取帮助):w

The partition table has been altered!

Calling ioctl() to re- read  partition table.

正在同步磁盘。

[root@localhost ~] # fdisk -l

...

设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1             2048     2099199     1048576   83  Linux

/dev/sdb2          2099200     4196351     1048576    5  Extended

/dev/sdb5          2101248     2306047      102400   83  Linux

...

[root@localhost ~] # fdisk /dev/sdb

欢迎使用  fdisk  (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

命令(输入 m 获取帮助):d

分区号 (1,2,5,默认 5):5

分区 5 已删除

命令(输入 m 获取帮助):p

磁盘  /dev/sdb :5368 MB, 5368709120 字节,10485760 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I /O  大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xd391e822

设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1             2048     2099199     1048576   83  Linux

/dev/sdb2          2099200     4196351     1048576    5  Extended

命令(输入 m 获取帮助):w

The partition table has been altered!

Calling ioctl() to re- read  partition table.

正在同步磁盘。

[root@localhost ~] # fdisk -l

...

设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1             2048     2099199     1048576   83  Linux

/dev/sdb2          2099200     4196351     1048576    5  Extended

...

注意在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别

   通知内核强制重读磁盘分区表:

查看:cat  /proc/partitions

CentOS 5:partprobe [device]

CentOS 6,7:partx, kpartx

partx -a [device]

kpartx -af [device]

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这