磁盘管理之磁盘分区,主引导分区表修复

磁盘管理:


I/O Ports: I/O设备地址

一切皆文件:

open(), read(), write(), close()

设备类型:

块设备:block,存取单位“块”,磁盘

字符设备:char,存取单位“字符”,键盘

设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信

设备号码:

主设备号:major number, 标识设备类型

次设备号:minor number, 标识同一类型下的不同设备


磁盘设备的设备文件命名:/dev/DEV_FILE

IDE: /dev/hd

SCSI, SATA, SAS, USB: /dev/sd

不同设备:a-z

/dev/sda, /dev/sdb, …

同一设备上的不同分区:1,2, …

/dev/sda1, /dev/sda5


硬盘存储术语:

head:磁头

track:磁道

cylinder: 柱面

secotr: 扇区,512bytes


分区:

两种分区方式:MBR,GPT

MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T

如何分区:按柱面

0磁道0扇区:512bytes

446bytes: boot loader

64bytes:分区表

16bytes: 标识一个分区

2bytes: 55AA

4个主分区;3主分区+1扩展(N个逻辑分区)


wKiom1e9gyjCeuY3AAMdOYNANMo928.jpg


分区表备份及修复

[root@localhost ~]# hexdump -C -n 512 /dev/sda       #查看主分区表的前512字节

00000000  eb 48 90 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |.H…………..|

00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |…|………!..|

00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |….8.u……..u|

00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 03 02  |………|…t..|

00000040  80 00 00 80 fc 82 00 00  00 08 fa 90 90 f6 c2 80  |…………….|

00000050  75 02 b2 80 ea 59 7c 00  00 31 c0 8e d8 8e d0 bc  |u….Y|..1……|

00000060  00 20 fb a0 40 7c 3c ff  74 02 88 c2 52 f6 c2 80  |. ..@|<.t…R…|

00000070  74 54 b4 41 bb aa 55 cd  13 5a 52 72 49 81 fb 55  |tT.A..U..ZRrI..U|

00000080  aa 75 43 a0 41 7c 84 c0  75 05 83 e1 01 74 37 66  |.uC.A|..u….t7f|

00000090  8b 4c 10 be 05 7c c6 44  ff 01 66 8b 1e 44 7c c7  |.L…|.D..f..D|.|

000000a0  04 10 00 c7 44 02 01 00  66 89 5c 08 c7 44 06 00  |….D…f.\..D..|

000000b0  70 66 31 c0 89 44 04 66  89 44 0c b4 42 cd 13 72  |pf1..D.f.D..B..r|

000000c0  05 bb 00 70 eb 7d b4 08  cd 13 73 0a f6 c2 80 0f  |…p.}….s…..|

000000d0  84 f0 00 e9 8d 00 be 05  7c c6 44 ff 00 66 31 c0  |……..|.D..f1.|

000000e0  88 f0 40 66 89 44 04 31  d2 88 ca c1 e2 02 88 e8  |..@f.D.1……..|

000000f0  88 f4 40 89 44 08 31 c0  88 d0 c0 e8 02 66 89 04  |..@.D.1……f..|

00000100  66 a1 44 7c 66 31 d2 66  f7 34 88 54 0a 66 31 d2  |f.D|f1.f.4.T.f1.|

00000110  66 f7 74 04 88 54 0b 89  44 0c 3b 44 08 7d 3c 8a  |f.t..T..D.;D.}<.|

00000120  54 0d c0 e2 06 8a 4c 0a  fe c1 08 d1 8a 6c 0c 5a  |T…..L……l.Z|

00000130  8a 74 0b bb 00 70 8e c3  31 db b8 01 02 cd 13 72  |.t…p..1……r|

00000140  2a 8c c3 8e 06 48 7c 60  1e b9 00 01 8e db 31 f6  |*….H|`……1.|

00000150  31 ff fc f3 a5 1f 61 ff  26 42 7c be 7f 7d e8 40  |1…..a.&B|..}.@|

00000160  00 eb 0e be 84 7d e8 38  00 eb 06 be 8e 7d e8 30  |…..}.8…..}.0|

00000170  00 be 93 7d e8 2a 00 eb  fe 47 52 55 42 20 00 47  |…}.*…GRUB .G|

00000180  65 6f 6d 00 48 61 72 64  20 44 69 73 6b 00 52 65  |eom.Hard Disk.Re|

00000190  61 64 00 20 45 72 72 6f  72 00 bb 01 00 b4 0e cd  |ad. Error…….|

000001a0  10 ac 3c 00 75 f4 c3 00  00 00 00 00 00 00 00 00  |..<.u………..|

000001b0  00 00 00 00 00 00 00 00  4a 63 05 00 00 00 80 20  |……..Jc….. |

000001c0  21 00 83 9f 06 19 00 08  00 00 00 40 06 00 00 9f  |!……….@….|

000001d0  07 19 8e fe ff ff 00 48  06 00 00 00 80 07 00 00  |…….H……..|

000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |…………….|

000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |…………..U.|

00000200


备份分区表:

[root@localhost ~]# dd if=/dev/sda of=/root/mbr bs=1 count=512


备份好的分区表可以放到u盘等地方


恢复分区表:

[root@localhost ~]# dd if=mbr of=/dev/sda

1+0 records in

1+0 records out

512 bytes (512 B) copied, 0.000361271 s, 1.4 MB/s





GPT分区:

GPT:GUID patition table 支持128个分区,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)

使用128位UUID 表示磁盘和分区GPT分区表自动备份在头和尾两份,并有CRC校验位

UEFI (统一扩展固件接口)硬件支持GPT

wKioL1e9hN7TVMffAAJeN_1T8nE393.jpg


管理分区:

列出块设备

blkid

例:

[root@localhost ~]# blkid

/dev/sdb1: UUID="8d1f5a4f-afc1-4056-bfb6-508acc88abe1" TYPE="ext4" 

/dev/sdb2: UUID="EN4Pe9-Pt0z-Xg8b-Th5l-CEd1-8LH5-1IR7EJ" TYPE="LVM2_member" 

/dev/mapper/vg0-root: UUID="6155dbd1-9d2a-42ce-9ec4-1a2bdc13d585" TYPE="ext4" 

/dev/mapper/vg0-swap: UUID="72877876-9119-45a2-bf82-195ed41ad51f" TYPE="swap" 

/dev/mapper/vg0-usr: UUID="c2741397-ff83-41b8-9cc5-caaa5727f486" TYPE="ext4" 

/dev/mapper/vg0-var: UUID="6a187221-b4fe-442d-ac15-1fa5b060f6a4" TYPE="ext4" 


添加分区后不用重启系统,添加硬盘

[root@localhost ~]# echo "- – -" > /sys/class/scsi_host/host2/scan


[root@localhost ~]# fdisk -l

#sdd和sde为新添加的硬盘

Disk /dev/sda: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 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



Disk /dev/sdb: 214.7 GB, 214748364800 bytes

255 heads, 63 sectors/track, 26108 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: 0x0005634a


   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1   *           1          26      204800   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sdb2              26        7859    62914560   8e  Linux LVM


Disk /dev/sdc: 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


Disk /dev/sdd: 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



Disk /dev/sde: 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




创建分区使用:

fdisk创建MBR分区,也支持GPT,对于一块硬盘,最多只能管理15分区

gdisk创建GPT分区

GNU parted高级分区操作(创建、复制、调整大小等等)

partprobe-重新设置内存中的内核分区表版本

fdisk /dev/sdb

gfisk /dev/sdb

# fdisk -l [-u] [device…]

子命令:

p 分区列表

t 更改分区类型

n 创建新分区

d 删除分区

w 保存并退出

q 不保存并退出



查看内核是否已经识别新的分区:

# cat /proc/partations

通知内核重新读取硬盘分区表

新增分区用

partx-a -n M:N /dev/DEVICE

kpartx-a /dev/DEVICE -f: force

删除分区用

partx-d -n M:N /dev/DEVICE

centos6: –nrN-M

CentOS 5,7: 使用partprobe

partprobe[/dev/DEVICE]



例:

给磁盘sdd分区

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

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel with disk identifier 0x55380c6d.

Changes will remain in memory only, until you decide to write them.

After that, of course, the previous content won't be recoverable.


Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)


WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

         switch off the mode (command 'c') and change display units to

         sectors (command 'u').


Command (m for help): n

Command action

   e   extended                                  #扩展分区

   p   primary partition (1-4)                   #主分区

p

Partition number (1-4): 1                        #分区号

First cylinder (1-2610, default 1):              #默认为1

Using default value 1                     

Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +1000   #默认以柱面为单位,一个柱面大小为8M,添加1000个柱面,比8G小一点。


 Device Boot      Start         End      Blocks   Id  System

/dev/sdd1               1        1001     8040501   83  Linux

/dev/sdd2            1002        1133     1060290   83  Linux

/dev/sdd3            1134        1265     1060290   83  Linux

/dev/sdd4            1266        2610    10803712+   5  Extended

/dev/sdd5            1266        1919     5253223+  83  Linux

/dev/sdd6            1920        2610     5550426   83  Linux


Command (m for help): w

The partition table has been altered!


fdisk -l 查看分区是否写入分区表,如果没有写入分区表,用以下命令进行写入:


查看内核是否已经识别新的分区:

# cat /proc/partitions



通知内核重新读取硬盘分区表

新增分区用

partx-a -n /dev/DEVICE

kpartx-a /dev/DEVICE -f: force



删除分区用

partx-d -n M:N /dev/DEVICE

centos6: –nr N-M

CentOS 5,7: 使用partprobe

partprobe[/dev/DEVICE]

原创文章,作者:zebra930,如若转载,请注明出处:http://www.178linux.com/40038

(0)
zebra930zebra930
上一篇 2016-08-25 10:09
下一篇 2016-08-25 10:09

相关推荐

  • Linux基础之计算机的组成及其功能

    1、描述计算机的组成及其功能: 答:计算机由 1.1、CPU(运算器、控制器)进行逻辑运算跟控制运算,寄存器、缓存 1.2、输入单元(键盘、鼠标、手写板等)、输出单元(屏幕、打印机) 1.3、存储器(内存、硬盘) 2、按系列罗列linux的发行版,并描述不同发行版之间的联系与区别。 答:debian(ubuntu、mint、knopix)、slackware…

    2017-09-11
  • 第二周博客作业

    1.Linux上的文件管理类命令都有那些,其常用的使用方法及其相关示例演示。
    2.Bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
    3.请使用命令行展开功能来完成以下的练习。
    4.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
    5.如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
    6.显示/var目录下所有以1开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其他字符)的文件或目录。
    7.显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
    8.显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件或目录。
    9.在/tmp目录下创建以tgile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22
    10.复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    11.复制/etc目录下所有以.d结尾的文件或目录到/tmp/mytest2目录中。
    12.复制/etc目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    2018-03-22
  • 第九周加密及DNS

    1、简述常见加密算法及常见加密算法原理,最好使用图例解说
    2、搭建apache或者nginx并使用自签证书实现https访问,自签名证书的域名自拟
    3、简述DNS服务器原理,并搭建主-辅服务器
    4、搭建并实现智能DNS

    Linux干货 2018-01-29
  • 第六周

    请详细总结vim编辑器的使用并完成以下练习题 基本模式: 编辑模式,命令模式 输入模式 末行模式 内置的命令行接口 打开文件: # vim [options] [file ..] +#:打开文档后,直接让光标处于第#行的行首 +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首   模式转换: 编辑模式:默认模式 编…

    Linux干货 2017-05-13
  • bash编程函数select语句的使用

    £select             select循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示PS3提示符,等待用户的输入,用户输入菜单列表中的某个数字,执行相应的命令,用户输入被保存在变量REPLY中。 select是个…

    Linux干货 2016-08-24
  • M20-1 8月5日 文本查看工具以及文本处理工

    一、文本查看工具:  cat,tac,rev cat用法:cat [option]..[FILE]..   cat选项:    -E:显示行结束符$    -n:对显示出的每一行进行编号    -A:显示所有控制符    -b:非空行编号   &nb…

    Linux干货 2016-08-08

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-26 09:52

    文章都是一些对知识点的罗列,而没有通过自己的文字总结成通顺的话语,这是不合适的,建议以后尝试通过自己的语言将内容的知识点进行总结与梳理,写出优秀的1博客。