LINUX硬盘分区查看、创建跟MBR

1.Linux查看硬盘信息命令
2.MBR
3.硬盘分区创建
4.破坏MBR实例

1.Linux查看硬盘信息命令

[[email protected] ~]# fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes------------硬盘的设备文件是以sd开头的,第一块是a,第二块是b......
255 heads, 63 sectors/track, 6527 cylinders-------255个磁头,磁道上有63个扇区,6527个柱面
Units = cylinders of 16065 * 512 = 8225280 bytes----------一个柱面的大小=512*63*255=8225280字节
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000876f3

   Device Boot      Start         End      Blocks   Id  System-------------分区的信息
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26         230     1638400   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             230        6528    50584576   83  Linux
[[email protected] ~]# parted 
GNU Parted 2.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print---------------------------需要输入print打印出来查看硬盘信息
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags----------------分区的信息
 1      1049kB  211MB   210MB   primary  ext4            boot
 2      211MB   1888MB  1678MB  primary  linux-swap(v1)
 3      1888MB  53.7GB  51.8GB  primary  ext4

2.MBR
MBR:Master Boot Record:主引导记录
每个硬盘都有MBR,如果操作系统没有装在硬盘里,就没有主引导程序数据
硬盘的0柱面、0磁头、1扇区称为主引导扇区,不属于任何分区
MBR大小512字节(因为一个扇区默认大小为512字节),分为三个部分
1.主引导程序:446字节(引导操作系统正常启动,被破坏系统不能启动)
2.硬盘分区表DPT:64字节(主分区和扩展分区占用16字节的空间,因此不多于四个,扩展分区不可以直接存储文件,可以添加多个逻辑分区)
3.分区结束标记也叫硬盘有效标志 :2字节,固定为55AA
LINUX硬盘分区查看、创建跟MBR

3.硬盘的分区

DPT:磁盘分区表
DPT大小64字节
分区类型:(1)主分区(2)扩展分区(3)逻辑分区
每个主分区信息要占用16个字节
扩展分区信息也要占用16个字节的主分区空间
分区顺序以数字表示,逻辑分区一定是从5开始表示的

fdisk:查看分区信息和建立分区(只支持小容量硬盘<=2T)
格式:fdisk  [磁盘设备]      建立分区 
交互模式中的常用指令
w:保存分区设置并退出
q:放弃分区设置并退出
m:查看帮助
p:查看分区信息
n:新建分区
t:变更分区表类型
parted命令创建分区(分大容量硬盘>2T)
格式:parted 磁盘或分区(不需要保存退出)
mkpart:创建新的分区表
print:查看当前分区
rm:删除分区
quit:退出
mklabel:创建新的类型的分区表,用parted命令创建gpt类型的分区表,相当于将原先msdos类型的分区表全部删除

partprobe--------------手工通知内核,读取新的分区表
修改磁盘分区之后不用重启,使用partprobe更新磁盘分区的变化 
fdisk 在分区之后是自动调用函数去识别的,但是当硬盘的某个分区被挂载,正在使用中时,当在分区时,是不能自动识别的,所以需要手工调用函数partprobe

分区表的类型:msdos、gpt
fdisk 支持小容量硬盘 ,只支持msdos类型的分区表,有主分区和逻辑分区
gpt:没有主分区和逻辑分区的区分,没有四个主分区的限制

4.破坏MBR实例

MBR存放的数据很重要,要备份
dd命令:从底层复制硬盘的数据(不指定的话,从最小的字节开始复制)
格式:dd if=输入文件 of=输出文件 bs=单位大小 count=数目

备份MBR: dd if=/dev/sda of=mbr.bak bs=512 count=1(一次抽取512字节,抽取一次,因此备份了MBR的数据) 还原MBR: dd if=mbr.bak of=/dev/sda bs=512 count=1

跳过某些字节
bs=ibs +obs
seek=BLOCKS skip BLOCKS obs-sized blocks at start of output(从输入文件跳过blocks个快后再开始复制)
skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input

实例:在执行实例之前,首先将MBR的所有数据备份到另外一块硬盘中
破坏MBR(破坏之前要备份,备份到其他硬盘)
1.破坏400字节(系统不能启动不能从硬盘启动Linux)
2.只破坏56字节(系统可以启动,找不到分区,找不到内核程序)

[[email protected] opt]# mkfs.ext4 /dev/sdb1
[[email protected] opt]# mount /dev/sdb1 /opt/test
[[email protected] test]# dd if=/dev/sda of=/opt/test/test.bak bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000511116 s, 1.0 MB/s
[[email protected] opt]# dd if=/dev/zero of=/dev/sdb bs=512  count=1

LINUX硬盘分区查看、创建跟MBR
LINUX硬盘分区查看、创建跟MBR
救援环境会找硬盘里面的Linux,找到后挂载到光盘里面的/mnt/sysimage,

LINUX硬盘分区查看、创建跟MBR
LINUX硬盘分区查看、创建跟MBR
之后启动shell

LINUX硬盘分区查看、创建跟MBR
2.

[[email protected] opt]# fdisk -l /dev/sdb  (硬盘分区)

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  83  Linux
[[email protected] opt]/s# mkfs.ext4 /devdb1    (硬盘格式化)
[[email protected] opt]# mkdir test         
[[email protected] opt]# mount /dev/sdb1 /opt/test  (挂载分区到/opt/test目录下)
[[email protected] opt]# dd if=/dev/sdb of=/opt/test/test.bak bs=512 count=1  (备份)
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0128542 s, 39.8 kB/s
[[email protected] opt]# dd if=/dev/zero of=/dev/sdb seek=446 obs=1 ibs=64 count=1(破坏DBT)
[[email protected] opt]# fdisk -l /dev/sdb  (对比刚开始,分区已经识别不到了)

   Device Boot      Start         End      Blocks   Id  System
[[email protected] opt]# dd if=/opt/test/test.bak of=/dev/sdb seek=64 obs=1 ibs=64 count=1 (恢复DBT)
1+0 records in
64+0 records out
64 bytes (64 B) copied, 0.000596968 s, 107 kB/s
[[email protected] opt]# fdisk -l /dev/sdb
Device Boot      Start         End      Blocks   Id  System