5.1.1 磁盘结构与分区

磁盘的结构

    因为linux中老生常谈的“一切皆文件”,所以对于一个文件来说。读写、打开、关闭都需要相应的函数来实现:open(), read(), write(), close()。设备也会被Linux认为成文件:块设备:block,存取单位“块”,磁盘

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

可以在 /dev 下查看所有系统自带的设备文件。设备文件拥有主次设备号

brw-rw----. 1 root disk 8, 1 Mar 31 06:03 /dev/sda1
crw-rw-rw-. 1 root root 1, 5 Mar 31 06:03 /dev/zero

常见的磁盘的接口有:SATA:6Gbps,  SAS:6Gbps,  USB:480MB/s

    从CentOS6开始,所有的接口类型的硬盘都被命名为sd[a..z][数字],虚拟磁盘命名为vb。

    在CentOS6中,新加的硬盘会被命名为第一块硬盘(sda),CentOS7则会跟随命名为最后的一块硬盘。

常见的磁盘的类型有:机械硬盘与固态硬盘。

    相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍

    相较于SSD,HDD在价格、容量、使用寿命上占有绝对优势


硬盘存储术语

    head:磁头、track:磁道、cylinder: 柱面、sector: 扇区(512bytes)

    磁头=盘面=盘片*2、磁道数=柱面数

因为磁道号小的扇区大,而磁道号大的扇区小,所以现在的机械硬盘使用ZBR(Zoned Bit Recording)


磁盘寻址方式有:CHS和LBA寻址

CHS
    采用24bit位寻址
    其中前10位表示cylinder,中间8位表示head,后面6位表示sector
    最大寻址空间8GB
LBA(logical block addressing)
    LBA采用48个bit位寻址
    最大寻址空间128PB

磁盘的分区

    分区方式

MBR: Master Boot Record(主引导记录)使用32位表示扇区数,分区不超过2T。按照扇区分区,在磁盘的0磁道0扇区的512字节中,保存着硬盘的MBR,详细我写在了文件系统基础中。

[root@CentOS6 ~]#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 70 13 05 00  00 08 fa 90 90 f6 c2 80  |....p...........|
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  |[email protected]........|
000000f0  88 f4 40 89 44 08 31 c0  88 d0 c0 e8 02 66 89 04  |[email protected]..|
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  89 1d 0b 00 00 00 80 20  |............... |
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 60 00 00 fe  |........`...`...|
000001f0  ff ff 05 fe ff ff 00 08  c0 06 00 f8 bf 05 55 aa  |..............U.|
00000200


GPT: GUID(Globals Unique Identifiers)partition table 支持128个分区,使用64位表示扇区数,支持最大分区为8Z(512Byte/block )或64Z(4096Byte/block)。使用128位UUID(Universally Unique Identifier) 表示磁盘和分区GPT分区表自动备份在头和尾两份,并有CRC校验位。


使用GPT分区的磁盘分为:EFI信息区(GPT头)、分区表、GPT分区、备份区域。

    管理分区

    lsblk命令用于列出所有可用块设备的信息,并且显示他们之间的依赖关系,但是它不会列出RAM盘的信息。

    语法:lsblk [选项] [设备]

[root@CentOS6 ~]# lsblk --fs
NAME   FSTYPE  LABEL UUID                                 MOUNTPOINT
sr0    iso9660 CDROM                                      /media/CDROM
sda                                                       
├─sda1 ext4          056668aa-7ecd-4235-8351-c8fb02372e3b /boot
├─sda2 ext4          481fa90c-b9f1-459b-ba67-f4f4c8d7942b /
├─sda3 ext4          b98328eb-21c7-4114-b3d5-93cd4aec6bc8 /data
├─sda4                                                    
├─sda5 swap          5a1eda5a-2e54-4d0c-b8ea-ef99b9ac3417 [SWAP]
└─sda6 ext4    /home 6caa3a45-0781-49bf-a167-9bfac5fa7fb5 

    选项

-a, --all     显示所有设备。
-f,             显示文件系统信息。
-m            显示权限信息。

-l, --list     使用列表格式显示。

    fdisk用于创建和维护MBR分区表;gdisk用于创建和维护GPT分区表。配置并不会即时生效,在保存后生效。

    语法:fdisk [-l] [磁盘]

    在CentOS6上使用fdisk管理MBR分区时,需要使用 -c 选项。

[root@CentOS6 ~]#fdisk -l

Disk /dev/sda: 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: 0x000b1d89

   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        6658    52428800   83  Linux
/dev/sda3            6658        7050     3145728   83  Linux
/dev/sda4            7050       13055    48233472    5  Extended
/dev/sda5            7050        7311     2097152   82  Linux swap / Solaris
/dev/sda6            7311        7572     2098730+  83  Linux
[root@CentOS6 ~]#fdisk /dev/sda

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): 

    子命令

p 分区列表
t 更改分区类型
n 创建新分区
d 删除分区
v 校验分区
u 转换单位
w 保存并退出

q 不保存并退出

    parted命令是高级的磁盘维护工具,可以管理与维护MBR和GPT分区的磁盘。直接输入"parted 磁盘"将会进入交互模式,parted 命令的操作结果即时生效

    语法:parted [磁盘] [命令]

[root@CentOS6 ~]#parted /dev/sda rm 6
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after
reboot.
Information: You may need to update /etc/fstab.                           

    子命令

mklabel:创建新的分区类型(分区表) 
mkfs :为指定标号的分区创建文件系统 
mkpart :创建一个分区 
mkpartfs:创建一个带有文件系统的分区 
name:为指定编号的分区命名 
print:打印分区表,或者分区 
quit:退出程序  

rm:删除指定编号的分区 

    同步分区

查看当前内核识别的分区:

[root@CentOS6 ~]#cat /proc/partitions 
major minor  #blocks  name

   8        0  104857600 sda
   8        1    1048576 sda1
   8        2   52428800 sda2
   8        3    3145728 sda3
   8        4          1 sda4
   8        5    2097152 sda5
[root@CentOS6 ~]#lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  5.8G  0 rom  /media/CDROM
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0   50G  0 part /
├─sda3   8:3    0    3G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    2G  0 part [SWAP]
[root@CentOS6 ~]#ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sda4  /dev/sda5
查看当前磁盘中已有的分区:
[root@CentOS6 ~]#fdisk -l

Disk /dev/sda: 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: 0x000b1d89

   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        6658    52428800   83  Linux
/dev/sda3            6658        7050     3145728   83  Linux
/dev/sda4            7050       13055    48233472    5  Extended
/dev/sda5            7050        7311     2097152   82  Linux swap / Solaris
/dev/sda6            7311        7572     2098730+  83  Linux

不同步的原因大部分为硬盘已经使用过一段时间造成的。

    CentOS 6可以使用 partx 命令来将内存中的分区表与硬盘进行同步。

    语法:partx 选项 磁盘

[root@CentOS6 ~]#partx -a /dev/sda
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3
BLKPG: Device or resource busy
error adding partition 4
BLKPG: Device or resource busy
error adding partition 5

    选项

-a:赠加分区

-d --nr N-M:减少分区

     CentOS 7可以使用 partprobe 命令进行同步。




猜你喜欢

转载自blog.csdn.net/M30_Miriam/article/details/80061040