一划分分区的意义
硬盘要使用就要划分分区了。
为什么分区?是否可以在一个硬盘上不划分分区直接使用?
划分分区之后就可以创建文件系统,如果没有这样的分区而直接使用分区,最终表现的是0101二进制。
读取上面的数据就不是读取文件了,那么也就没有文件名和目录结构。这样去访问上面的数据就很麻烦了。
没有分区就要以二进制的方式访问数据了。
[root@centos65 ~]# hexdump /dev/sda -C -n 500 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 e0 f0 04 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 5a c7 00 00 00 00 80 20 |........Z...... | 000001c0 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 00 aa |!...(....... ...| 000001d0 29 82 83 fe ff ff 00 08 20 00 00 80 1a 06 00 fe |)....... .......| 000001e0 ff ff 83 fe ff ff 00 88 3a 06 00 00 71 02 00 fe |........:...q...| 000001f0 ff ff 05 fe |....| 000001f4
[root@centos73 ~]# hexdump /dev/sda1 -C -n 500 00000000 58 46 53 42 00 00 10 00 00 00 00 00 00 04 00 00 |XFSB............| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 e7 6f fa 1a 91 69 42 d4 ad cc c6 bd bf ef d6 63 |.o...iB........c| 00000030 00 00 00 00 00 02 00 04 00 00 00 00 00 00 00 40 |...............@| 00000040 00 00 00 00 00 00 00 41 00 00 00 00 00 00 00 42 |.......A.......B| 00000050 00 00 00 01 00 01 00 00 00 00 00 04 00 00 00 00 |................| 00000060 00 00 0a 00 b4 b5 02 00 02 00 00 08 00 00 00 00 |................| 00000070 00 00 00 00 00 00 00 00 0c 09 09 03 10 00 00 19 |................| 00000080 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 ba |................| 00000090 00 00 00 00 00 03 7a 73 00 00 00 00 00 00 00 00 |......zs........| 000000a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| 000000b0 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 |................| 000000c0 00 00 00 00 00 00 00 01 00 00 01 8a 00 00 01 8a |................| 000000d0 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 000000e0 2c 50 1a 45 00 00 00 00 ff ff ff ff ff ff ff ff |,P.E............| 000000f0 00 00 00 01 00 00 0d db 00 00 00 00 00 00 00 00 |................| 00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001f0 00 00 00 00 |....| 000001f4
在有些极端情况下,直接把数据放到磁盘上。不分区,不创建文件系统,直接使用,这种叫做裸设备。
数据直接以二进制方式访问,虽然不好访问,但是效率高。
多个分区的意义:
1优化I/O性能。
2实现磁盘空间配额限制。限制分区的空间大小,和每栋楼的住房空间大小限制是一样的。
3提高修复速度。多个分区有助于对分区的管理和修复。
4隔离系统和程序。如果是只有一个分区,那么文件损坏了就可能影响分区里面所有的数据。多个分区有助于对分区的管理和修复。
也可以把不同的数据放到不同的分区,避免互相干扰。
5安装多个OS。
6采用不同文件系统。比如有的是xfs,有的是ext4,根据生产需求进行变化。
在硬盘安装Linux系统,建议要有的分区/,/boot/,swap,/app存放用户数据的分区
[root@centos73 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 50G 0 part / ├─sda3 8:3 0 20G 0 part /app ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sr0 11:0 1 4.2G 0 rom /mnt
二划分分区的方式——MBR
1MBR简介
两种分区方式:MBR,GPT
MBR: Master Boot Record,主引导记录。
创建于1982年,使用32位表示扇区数,也就是能够表达2^32个扇区的总容量。
一个扇区的大小是512字节,0.5K。总容量就是2^32x0.5K=2T。所以分区不超过2T
如何分区:按柱面
0磁道0扇区存储了硬盘的分区信息,从哪到哪。所以每个硬盘的第1个扇区,也就是0扇区就叫MBR。0磁道0扇区占用了512bytes的空间。
其中MBR分成了3部分:
446bytes: boot loader计算机启动的内容——启动加载器。
64bytes:分区表,包括从哪到哪是一个分区,分区的类型,分区的使用情况。
16bytes: 标识一个分区
2bytes: 55AA。 这是十六进制数,一个十六进制数占4位二进制数。4个就占用了16位二进制数,也就是两个字节。
2MBR分区结构
如果电脑上有两块硬盘,第1块硬盘是要引导计算机操作系统启动,另外一块硬盘纯粹就是用来存储数据的,那么在这块硬盘的0扇区的前446字节就是空的了。
显示前512字节
[root@centos65 ~]# hexdump /dev/sda -C -n 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 e0 f0 04 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 5a c7 00 00 00 00 80 20 |........Z...... | 000001c0 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 00 aa |!...(....... ...| 000001d0 29 82 83 fe ff ff 00 08 20 00 00 80 1a 06 00 fe |)....... .......| 000001e0 ff ff 83 fe ff ff 00 88 3a 06 00 00 71 02 00 fe |........:...q...| 000001f0 ff ff 05 fe ff ff 00 88 ab 08 00 78 54 10 55 aa |...........xT.U.| 00000200
[root@centos73 ~]# hexdump /dev/sda -C -n 512 00000000 eb 63 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |.c..............| 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 01 8b |.........|...t..| 00000040 4c 02 cd 13 ea 00 7c 00 00 eb fe 00 00 00 00 00 |L.....|.........| 00000050 00 00 00 00 00 00 00 00 00 00 00 80 01 00 00 00 |................| 00000060 00 00 00 00 ff fa 90 90 f6 c2 80 74 05 f6 c2 70 |...........t...p| 00000070 74 02 b2 80 ea 79 7c 00 00 31 c0 8e d8 8e d0 bc |t....y|..1......| 00000080 00 20 fb a0 64 7c 3c ff 74 02 88 c2 52 be 05 7c |. ..d|<.t...R..|| 00000090 b4 41 bb aa 55 cd 13 5a 52 72 3d 81 fb 55 aa 75 |.A..U..ZRr=..U.u| 000000a0 37 83 e1 01 74 32 31 c0 89 44 04 40 88 44 ff 89 |7...t21..D.@.D..| 000000b0 44 02 c7 04 10 00 66 8b 1e 5c 7c 66 89 5c 08 66 |D.....f..|f..f| 000000c0 8b 1e 60 7c 66 89 5c 0c c7 44 06 00 70 b4 42 cd |..`|f...D..p.B.| 000000d0 13 72 05 bb 00 70 eb 76 b4 08 cd 13 73 0d 5a 84 |.r...p.v....s.Z.| 000000e0 d2 0f 83 de 00 be 85 7d e9 82 00 66 0f b6 c6 88 |.......}...f....| 000000f0 64 ff 40 66 89 44 04 0f b6 d1 c1 e2 02 88 e8 88 |d.@f.D..........| 00000100 f4 40 89 44 08 0f b6 c2 c0 e8 02 66 89 04 66 a1 |.@.D.......f..f.| 00000110 60 7c 66 09 c0 75 4e 66 a1 5c 7c 66 31 d2 66 f7 |`|f..uNf.|f1.f.| 00000120 34 88 d1 31 d2 66 f7 74 04 3b 44 08 7d 37 fe c1 |4..1.f.t.;D.}7..| 00000130 88 c5 30 c0 c1 e8 02 08 c1 88 d0 5a 88 c6 bb 00 |..0........Z....| 00000140 70 8e c3 31 db b8 01 02 cd 13 72 1e 8c c3 60 1e |p..1......r...`.| 00000150 b9 00 01 8e db 31 f6 bf 00 80 8e c6 fc f3 a5 1f |.....1..........| 00000160 61 ff 26 5a 7c be 80 7d eb 03 be 8f 7d e8 34 00 |a.&Z|..}....}.4.| 00000170 be 94 7d e8 2e 00 cd 18 eb fe 47 52 55 42 20 00 |..}.......GRUB .| 00000180 47 65 6f 6d 00 48 61 72 64 20 44 69 73 6b 00 52 |Geom.Hard Disk.R| 00000190 65 61 64 00 20 45 72 72 6f 72 0d 0a 00 bb 01 00 |ead. Error......| 000001a0 b4 0e cd 10 ac 3c 00 75 f4 c3 00 00 00 00 00 00 |.....<.u........| 000001b0 00 00 00 00 00 00 00 00 10 4b 0d 00 00 00 80 20 |.........K..... | 000001c0 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 00 aa |!...(....... ...| 000001d0 29 82 83 fe ff ff 00 08 20 00 00 00 40 06 00 fe |)....... ...@...| 000001e0 ff ff 83 fe ff ff 00 08 60 06 00 00 80 02 00 fe |........`.......| 000001f0 ff ff 05 fe ff ff 00 08 e0 08 00 f8 1f 10 55 aa |..............U.| 00000200 [root@centos73 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 50G 0 part / ├─sda3 8:3 0 20G 0 part /app ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sr0 11:0 1 4.2G 0 rom /mnt
在6上加硬盘
创建了4块硬盘
使刚刚创建的硬盘生效
“- – -” 这三个-之间是有空格的
还是未发现新硬盘,把命令中的host2,替换为host0,host1
[root@centos65 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /mnt sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 48.8G 0 part / ├─sda3 8:3 0 19.5G 0 part /app ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] [root@centos65 ~]# echo '- - -' > /sys/class/scsi_host/host2/scan [root@centos65 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /mnt sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 48.8G 0 part / ├─sda3 8:3 0 19.5G 0 part /app ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sdb 8:16 0 100G 0 disk sdc 8:32 0 80G 0 disk sdd 8:48 0 60G 0 disk
在新硬盘的二进制表现形式是空的,因为还没有分区
[root@centos65 ~]# hexdump /dev/sda -C -n 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 e0 f0 04 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 5a c7 00 00 00 00 80 20 |........Z...... | 000001c0 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 00 aa |!...(....... ...| 000001d0 29 82 83 fe ff ff 00 08 20 00 00 80 1a 06 00 fe |)....... .......| 000001e0 ff ff 83 fe ff ff 00 88 3a 06 00 00 71 02 00 fe |........:...q...| 000001f0 ff ff 05 fe ff ff 00 88 ab 08 00 78 54 10 55 aa |...........xT.U.| 00000200 [root@centos65 ~]# hexdump /dev/sdb -C -n 512 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000200 [root@centos65 ~]# hexdump /dev/sdc -C -n 512 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000200 [root@centos65 ~]# hexdump -C -n 512 /dev/sdd 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000200
取其中的两行进行分析
eb就是一个字节,也就是0字节,第1个字节。
因为是十六进制数。一个十六进制数是4位二进制数,两个十六进制数就是8位二进制数,也就是一个字节。
一行就是16个字节。fb是16字节,使用的是十六进制数就是10了。
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 |...|.........!..|
27是十进制数,要转化成十六进制数
[root@centos65 ~]# bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 446/16 27 obase=16 27 1B说明446字节的最后一行在1B quit
[root@centos65 ~]# bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 27*16 432说明第27行的第1个字节是第433字节 446-432 14说明了446个字节最后一个字节是在第27行的第14字节
所以446字节的范围
[root@centos65 ~]# hexdump /dev/sda -C -n 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 e0 f0 04 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 5a c7 00 00 00 00 80 20 |........Z...... | 000001c0 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 00 aa |!...(....... ...| 000001d0 29 82 83 fe ff ff 00 08 20 00 00 80 1a 06 00 fe |)....... .......| 000001e0 ff ff 83 fe ff ff 00 88 3a 06 00 00 71 02 00 fe |........:...q...| 000001f0 ff ff 05 fe ff ff 00 88 ab 08 00 78 54 10 55 aa |...........xT.U.| 00000200
分区表一共是64个字节。因为每一个分区就要占16个字节,来表达这个分区是从哪开始哪结束。
所以只能分4个分区。
分区表的范围
80 20 |........Z...... | 000001c0 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 00 aa |!...(....... ...| 000001d0 29 82 83 fe ff ff 00 08 20 00 00 80 1a 06 00 fe |)....... .......| 000001e0 ff ff 83 fe ff ff 00 88 3a 06 00 00 71 02 00 fe |........:...q...| 000001f0 ff ff 05 fe ff ff 00 88 ab 08 00 78 54 10
分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,
共64字节为分区项1、分区项2、分区项3、分区项4。
分区表项里面的16个字节使用16格表示。分区表项的第1个字节如果是80就是活动分区,00就是非活动分区。
活动分区就是引导计算机启动的,而非活动分区就是存储数据的分区。
因为在同一时间引导计算机的操作系统只能是一个分区来引导,所以4个分区表里面只能有一个分区表的第1个字节是80活动分区。
因为80是十六进制数,正好表示的是一个字节。
分区表项里面的第2,3,4个格子也就是第2,3,4字节表示的是分区的起始点位置,CHS三维来描述起始点位置。
第2字节是磁头号,从第几个磁头开始的。
第3字节是扇区号,第3字节的低6位。
为什么是第6位?
柱面号是第3字节的高2位+第4字节,因为一个字节是8位,所以柱面数占10位,也就是可以表达2^10个柱面。
第5字节表示分区类型,0表示分区未使用。
第6,7,8字节表示结束位置的CHS标识。
C柱面,H磁头,S扇区。
3个字节也就是24位来表示起始点和结束点。最小的数就是24个0表示起始点,24个1表示的结束点。
最大的总容量是2^24个扇区,也就是8G,之前计算过了。
高于8G的容量就要使用到第9到第12字节。表示起始位置的LBA地址。使用4个字节也就是32位表示。
理论上就是2^32个扇区,2T容量。
2^10=1024=1K
2^20=1024k=1M
2^30=1024M=1G
2^32=4G=4G*0.5*1024=2T
以扇区为单位的,一个扇区是0.5K。
所以传统的MBR最大能够表示2T的容量。
扩展分区的表达不一样了,其里面还有逻辑分区。
如图所示,4个分区其中有一个扩展分区。扩展分区的分区表项是16个字节。
扩展分区的0号扇区记录了扩展分区的逻辑分区的信息。
整个硬盘的最前面是MBR,而扩展分区的最前面是EBR,也是512字节。
因为扩展分区没有引导记录,所以446个字节是没有使用的。
扩展分区的结构是参考了MBR的结构。
最后两个字节也是结束标志。
中间也是64个字节,分成了4个分区表项。
其中第1个16字节指向了第1个逻辑分区的位置,第2个16字节指向了下一个扩展分区的EBR。
每个逻辑分区的前面都有一个扇区叫做EBR。
所以第1,2个16字节就表示出来逻辑分区的位置,从哪开始到哪结束。
分区表的作用表示的从哪开始到哪结束是一个分区。
分区最大是2T大小是由其物理结构限制的。如果清除了分区表,也就是64个字节,那么就没有分区了,也就无法访问了。
数据还是在磁盘上存放着,就是不容易找到了。
就像到了人生地不熟的地方,没有地图等工具的导航。
对分区进行备份。
读数据生成到文件里面,读取的时候是1块块读的,1块是1个字节。
[root@centos65 ~]# dd if=/dev/sda of=/app/MBR bs=1 count=512 512+0 records in 512+0 records out 512 bytes (512 B) copied, 0.000549382 s, 932 kB/s [root@centos65 ~]# ll /app/MBR -rw-r--r-- 1 root root 512 Feb 20 17:39 /app/MBR [root@centos65 ~]# ll /app/MBR -h -rw-r--r-- 1 root root 512 Feb 20 17:39 /app/MBR
和备份前的是一样的。
[root@centos65 ~]# hexdump -C /app/MBR 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 e0 f0 04 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 5a c7 00 00 00 00 80 20 |........Z...... | 000001c0 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 00 aa |!...(....... ...| 000001d0 29 82 83 fe ff ff 00 08 20 00 00 80 1a 06 00 fe |)....... .......| 000001e0 ff ff 83 fe ff ff 00 88 3a 06 00 00 71 02 00 fe |........:...q...| 000001f0 ff ff 05 fe ff ff 00 88 ab 08 00 78 54 10 55 aa |...........xT.U.| 00000200
如果硬盘因为病毒或者什么原因被破坏了,利用上面的备份就可以还原。
现在模拟破坏,对中间的64字节进行破坏
[root@centos65 ~]# dd if=/dev/zero of=/dev/sda bs=1 count=64 skip=446 seek=446 64+0 records in 64+0 records out 64 bytes (64 B) copied, 0.000960943 s, 66.6 kB/s
[root@centos65 ~]# hexdump -C /dev/sda -n 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 e0 f0 04 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 5a c7 00 00 00 00 00 00 |........Z.......| 000001c0 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@centos65 ~]# hexdump -C /dev/sda -n 512 -v 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 e0 f0 04 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 5a c7 00 00 00 00 00 00 |........Z.......| 000001c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 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
磁盘的分区表清理了,但是内存还存储了一份分区表
lsblk查看的是内存的分区表
机器重启之后就看不到了。
[root@centos65 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /mnt sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 48.8G 0 part / ├─sda3 8:3 0 19.5G 0 part /app ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sdb 8:16 0 100G 0 disk sdc 8:32 0 80G 0 disk sdd 8:48 0 60G 0 disk
查看磁盘上的分区表
[root@centos65 ~]# fdisk -l /dev/sda Disk /dev/sda: 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: 0x0000c75a Device Boot Start End Blocks Id System
机器是不能重启,不能使用下面文件备份的,所以要先拷贝到其他的机器上。
[root@centos65 ~]# ls /app/MBR /app/MBR [root@centos65 ~]# ll /app/MBR -rw-r--r-- 1 root root 512 Feb 20 17:39 /app/MBR
重启机器
因为做了快照不好
在生产中拆下硬盘就可以了。
以光盘的方式启动
进入到救援模式
语言和键盘保持默认就可以了
备份文件是在另外一个主机72上,可以拷贝到U盘上,也可以使用网络远程传输文件
不配置IP地址,选择自动获取IP地址
注意要确保开启了DHCP服务。
选择skip
现在看到的根不是硬盘的根,是光盘加载了一个小Linux系统。
磁盘分区和正常时的不一样了
已经自动获取IP地址了
查看通过DHCP获取的IP地址
使用scp把文件传输到本地
硬盘是看不到的
恢复sda,因为只损坏了sda。
注意我后来恢复快照,使用干净的系统并且对其进行删除分区表,所以只有一块硬盘被损坏。
恢复分区表
因为损坏又恢复的操作是后来使用快照干净的系统,所以只存在一块硬盘。
[root@centos65 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 48G 1.4G 45G 4% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda3 20G 44M 19G 1% /app /dev/sda1 976M 30M 895M 4% /boot /dev/sr0 3.7G 3.7G 0 100% /mnt [root@centos65 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /mnt sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 48.8G 0 part / ├─sda3 8:3 0 19.5G 0 part /app ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP]
[root@centos65 ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:5E:62:DA inet addr:192.168.137.65 Bcast:192.168.137.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe5e:62da/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:78 errors:0 dropped:0 overruns:0 frame:0 TX packets:67 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:8639 (8.4 KiB) TX bytes:9437 (9.2 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:348 (348.0 b) TX bytes:348 (348.0 b) virbr0 Link encap:Ethernet HWaddr 52:54:00:3B:45:F6 inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
总结实验备份mbr和恢复
备份的命令
dd if=/dev/sda of=/app/mbr bs=1 count=64 skip=446 seek=446 scp /app/mbr remoteip:/root
最省事的方法就是对MBR进行完全备份
dd if=/dev/sda of=/app/mbr bs=1 count=512 scp /app/mbr remoteip:/root
要进入到救援模式是有技巧的。当重启机器,系统会显示下面的界面,存在时间非常,要马上按住左上角的Esc键,并且只能按下一次。
进入到救援模式选择自动获取IP地址,使用网络把文件拷贝回来。
建议最好是做快照,这样即使不能恢复要可以使用快照让系统变成正常的状态。
dd if=/dev/zero of=/dev/sda bs=1 count=512
#这个是删除MBR
rescue mode scp remoteip:/root/mbr / dd if=mbr of=/dev/sda
注意之前是下图的4块硬盘的,但是因为使用快照损坏又恢复就要重新把之前的硬盘创建起来。
[root@centos65 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /mnt sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 48.8G 0 part / ├─sda3 8:3 0 19.5G 0 part /app ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] [root@centos65 ~]# echo '- - -' > /sys/class/scsi_host/host2/scan [root@centos65 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /mnt sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 48.8G 0 part / ├─sda3 8:3 0 19.5G 0 part /app ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sdb 8:16 0 100G 0 disk sdc 8:32 0 80G 0 disk sdd 8:48 0 60G 0 disk
sdb硬盘没有分区,只恢复中间的64个字节。
skip跳过前446个字节。读写都要跳过前446个字节,所以要跳两处,一个是读的,一个是目标的。
skip 446,seek 446
因为我是使用快照,没有原来对sda的操作,就要重新执行,为的是给sdb创建分区
[root@centos65 app]# dd if=/app/MBR of=/dev/sdb bs=1 count=64 skip=446 seek=446 dd: opening `/app/MBR': No such file or directory [root@centos65 app]# dd if=/dev/sda of=/app/MBR bs=1 count=512 512+0 records in 512+0 records out 512 bytes (512 B) copied, 0.000648818 s, 789 kB/s
[root@centos65 app]# dd if=/app/MBR of=/dev/sdb bs=1 count=64 skip=446 seek=446 64+0 records in 64+0 records out 64 bytes (64 B) copied, 0.548617 s, 0.1 kB/s [root@centos65 app]# lsblk
#显示内存的 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /mnt sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 48.8G 0 part / ├─sda3 8:3 0 19.5G 0 part /app ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sdb 8:16 0 100G 0 disk sdc 8:32 0 80G 0 disk sdd 8:48 0 60G 0 disk [root@centos65 app]# fdisk -l /dev/sdb Disk /dev/sdb: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 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 -l /dev/sdb还是看不到分区表,因为少复制了2个字节,55aa
前446字节都跳过,后面的都要
如果创建的分区表是一样,那么直接复制就可以了
注意在工作中不能这么做。因为硬盘之间会存在差异,比如硬盘大小,分区策略。
而且只能备份主分区和扩展分区,逻辑分区是不能的。逻辑分区的信息是存放在扩展分区空间里面。
[root@centos65 app]# ls lost+found MBR [root@centos65 app]# dd if=/app/MBR of=/dev/sdb bs=1 count=66 skip=446 seek=446 66+0 records in 66+0 records out 66 bytes (66 B) copied, 0.0402675 s, 1.6 kB/s [root@centos65 app]# fdisk -l /dev/sdb Warning: invalid flag 0x0000 of partition table 5 will be corrected by w(rite) Disk /dev/sdb: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 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 Device Boot Start End Blocks Id System /dev/sdb1 * 1 131 1048576 83 Linux Partition 1 does not end on cylinder boundary. /dev/sdb2 131 6505 51200000 83 Linux /dev/sdb3 6505 9055 20480000 83 Linux /dev/sdb4 9055 26109 136985600 5 Extended [root@centos65 app]# pwd /app
所以把分区表复制到sdb时实际上只复制了sda一部分分区表的内容。没有复制逻辑分区
[root@centos65 app]# fdisk -l /dev/sda Disk /dev/sda: 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: 0x0000c75a Device Boot Start End Blocks Id System /dev/sda1 * 1 131 1048576 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 131 6505 51200000 83 Linux /dev/sda3 6505 9055 20480000 83 Linux /dev/sda4 9055 26109 136985600 5 Extended /dev/sda5 9055 9316 2097152 82 Linux swap / Solaris
如果硬盘大小不同,原来的硬盘已经对分区分完了,目标硬盘的空间更小,那么就容不下那么多的柱面了。
如果分区没有逻辑分区,目标硬盘空间比原来的硬盘大就可以使用这种方法进行分区,可以节省一部分命令,
但是工作中一般不用,在学习过程中可以使用这种方法加深对硬盘的理解。
上面是使用备份文件,也可以不使用备份文件,直接使用原来的分区表,对拷
这是原来的方法:
dd if=/app/MBR of=/dev/sdb bs=1 count=66 skip=446 seek=446
直接对拷:
dd if=/dev/sda of=/dev/sdb bs=1 count=66 skip=446 seek=446
二划分分区的方式——GPT分区策略
1GPT简介
GPT:GUID(Globals Unique Identifiers) 全局唯一标识符 partition table
支持128个分区,使用64位,支持8Z(512Byte/block )64Z ( 4096Byte/block)
使用128位UUID(Universally Unique Identifier) 表示磁盘和分区。
GPT分区表自动备份在头和尾两份,并有CRC校验位。
UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动。
UUID差不多的,GUID是windows微软实现UUID的技术。相当于苹果和水果的关系。
2UUID的介绍
UUID是由8位,3个4位,1个12位组成,总共是128位,使用的是十六进制数。
32位的十六进制数,一个十六进制数就是4个二进制数,所以32x4=128位,也就是128个二进制数。
UUID的作用就是唯一的标识一个资源,因为值太大了。因为发生冲突的情况几乎是不存在的。
生成UUID,使用命令uuidgen
[root@centos65 ~]# uuidgen 9e6201e7-8f0a-466c-9b3a-3458bf8a0790 [root@centos65 ~]# uuidgen 358bcaa2-f22e-4c0b-94de-abaea22d182f [root@centos65 ~]# uuidgen 2528dddd-ee40-4cce-8ea9-62298be938bb [root@centos65 ~]# uuidgen 1f9cbf60-466b-4725-a4c0-61847f52003d [root@centos65 ~]# uuidgen c8d64295-ee81-4000-b947-52b9ae97ee33 [root@centos65 ~]# uuidgen 16ea1fe6-7427-4cbd-a109-9c7203725aa7 [root@centos65 ~]# uuidgen f72f12d8-e3e8-43f0-b047-e3005b79a2f0
UUID的格式
[root@centos65 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed Jan 23 16:50:34 2019 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=10d2b40d-dcd8-4c16-aa81-511c520213f6 / ext4 defaults 1 1 UUID=e432b350-a9a6-429b-8f07-592058efc6e2 /app ext4 defaults 1 2 UUID=6bbd9da4-0c3d-4496-a4b1-44bf79912740 /boot ext4 defaults 1 2 UUID=b25a8a7e-40d8-485b-a5af-1b583698864d swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/cdrom /mnt iso9660 defaults 0 0
3GPT分区实例
为了突破分区大小是2T的限制就不能再使用MBR分区。
GPT特点就是所有的分区都是主分区。一个分区是2T以上就是GPT分区。
查看电脑使用的是MBR分区还是GPT分区,右键单击选择磁盘管理,右键单击磁盘0,选择属性,选择卷。
如果一个分区低于2T,不论采用哪种分区策略都没有本质的区别了。
4GPT的结构
最前面有一个0扇区,名称是保护MBR。
因为GPT分区和MBR分区是完全不同的,如果没有早期的MBR结构,一些较老的分区设备或者软件看到没有MBR,
没有55aa标记位就会认为是硬盘是没有分区的,就会把GPT分区已经分好的并且存放数据的内容破坏了。
也就是为了保护GPT分区而伪造了MBR分区。
EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域
接下来都是分区信息,分别是分区头部,分区表1-128,第几个分区的总空间。
还有备份区域。MBR要手工备份,也就是前面使用的命令dd......
如果在生产中机器不多可以互相备份。机器多就是使用批量化部署了,分区情况都一样,从其他机器上拷贝一份就可以了。
注意在生产中最重要是备份,最起码不会出大事。
GPT分区结构
老王说中关村有数据恢复公司,就是专门恢复硬盘或者扇区的公司,按照容量多少来付费的。
实际上也不难,使用专门的数据恢复软件,这个领域我觉得可以尝试一下,技多不压身。
对于固态硬盘就没戏了,机械硬盘还有机会恢复。
分区表项是128,也就可以分128个分区。
GPT结构,GPT头和分区表项
闪闪
字段长度是8个字节,那就是64位,2^64个扇区。
GPT:GUID(Globals Unique Identifiers) partition
table 支持128个分区,使用64位,支持8Z(512Byte/block )64Z ( 4096Byte/block)
要注意计算机的数据存储单位,至少要知道Z
换算单位
2进位的制度
MBR,GPT是和其他内容配合使用的
MBR配合老的BIOS,GPT配合UEFI。最新的电脑主板是UEFI,后者更方便,对硬件设置只要点击鼠标就可以了。
以GPT方式分区启动操作系统就要使用UEFI才可以。
wintel,也就是windows和intel一起赚老百姓的钱。
以后BIOS要淘汰了,生产中使用新技术往往会滞后一些。
在生产中很多机器是虚拟机,而且是最小化安装。除了要存储数据库的硬盘要很大,像其他的web服务并不需要多少空间。
涉及到大数据就要使用专门的存储设备了,而不是GPT了。
四管理分区
列出块设备
lsblk
创建分区使用:
fdisk 创建MBR分区
gdisk 创建GPT分区
parted 高级分区操作
partprobe-重新设置内存中的内核分区表版本
1查看磁盘上的分区
list partition table(s)
[root@centos65 ~]# fdisk -l Disk /dev/sda: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders 从这里就可以看出是CSH结构,也就是使用了MBR分区。 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: 0x0000c75a Device Boot Start End Blocks Id System /dev/sda1 * 1 131 1048576 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 131 6505 51200000 83 Linux /dev/sda3 6505 9055 20480000 83 Linux /dev/sda4 9055 26109 136985600 5 Extended /dev/sda5 9055 9316 2097152 82 Linux swap / Solaris Warning: invalid flag 0x0000 of partition table 5 will be corrected by w(rite) Disk /dev/sdb: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 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 Device Boot Start End Blocks Id System /dev/sdb1 * 1 131 1048576 83 Linux Partition 1 does not end on cylinder boundary. /dev/sdb2 131 6505 51200000 83 Linux /dev/sdb3 6505 9055 20480000 83 Linux /dev/sdb4 9055 26109 136985600 5 Extended Disk /dev/sdc: 85.9 GB, 85899345920 bytes 255 heads, 63 sectors/track, 10443 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: 64.4 GB, 64424509440 bytes 255 heads, 63 sectors/track, 7832 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
这是克隆了sda的分区表,512字节无法克隆数据。
硬盘没有分区就没有分区类型
2查看内存上的分区
法1
[root@centos65 ~]# ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5 /dev/sdb /dev/sdc /dev/sdd [root@centos65 ~]# ll /dev/sd* brw-rw----. 1 root disk 8, 0 Jan 23 22:50 /dev/sda brw-rw----. 1 root disk 8, 1 Jan 23 22:51 /dev/sda1 brw-rw----. 1 root disk 8, 2 Jan 23 22:51 /dev/sda2 brw-rw----. 1 root disk 8, 3 Jan 23 22:51 /dev/sda3 brw-rw----. 1 root disk 8, 4 Jan 23 22:50 /dev/sda4 brw-rw----. 1 root disk 8, 5 Jan 23 22:50 /dev/sda5 brw-rw----. 1 root disk 8, 16 Jan 23 23:27 /dev/sdb brw-rw----. 1 root disk 8, 32 Jan 23 23:00 /dev/sdc brw-rw----. 1 root disk 8, 48 Jan 23 23:00 /dev/sdd
看到数字出现了就说明是硬盘已经分区并且生效了,生效就是保存在内存里了。
分区表在两个地方有,磁盘和内存。下面的命令查看到的内容是来自内存。
只有内存里面保存了内存才可以对硬盘的数据处理,而如果只是放到硬盘上就无法处理了。
磁盘包括硬盘,是树林和树的关系。
法2:
[root@centos65 ~]# cat /proc/partitions major minor #blocks name 8 0 209715200 sda 8 1 1048576 sda1 8 2 51200000 sda2 8 3 20480000 sda3 8 4 1 sda4 8 5 2097152 sda5 8 16 104857600 sdb 8 32 83886080 sdc 8 48 62914560 sdd
法3:
[root@centos65 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /mnt sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 48.8G 0 part / ├─sda3 8:3 0 19.5G 0 part /app ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sdb 8:16 0 100G 0 disk sdc 8:32 0 80G 0 disk sdd 8:48 0 60G 0 disk
注意
上面的3种方法显示的内容都是一样,因为都是来自内存的分区表。
对磁盘上的文件进行修改都是先读取到内存中,在内存里面修改
当使用vim编辑器时修改文件就要w才可以保存在磁盘上。?
dd命令是直接在磁盘上把数据修改了,所以内存分区表和磁盘分区表有可能就不同步了。