磁盘分区

主分区、扩展分区、逻辑分区的关系

在Linux系统下(其他操作系统也有类似的规定),磁盘的分区大致可以分为三类,分别为主分区、扩展分区和逻辑分区等等。

Linux系统管理员在部署系统时,必须要对这三个分区进行一个合理的规划,否则的话会浪费宝贵的硬盘空间。

通常情况下,一个硬盘中最多能够分割四个主分区。因为硬盘中分区表的大小只有64Bytes,而分割一个分区就需要利用16Bytes空间来存储这个分区的相关信息。

由于这个分区表大小的限制,硬盘之能够分给为四个主分区。如果此时一块硬盘有120个G,而管理员划分了4个主分区,每个主分区的空间为20个G。

那么总共才用去了80G的空间。这块硬盘剩余的40G空间就将无法使用。这显然浪费了硬盘的空间。

 

为了突破这最多四个主分区的限制,Linux系统引入了扩展分区的概念。即管理员可以把其中一个主分区设置为扩展分区(注意只能够使用一个扩展分区)来进行扩充。

而在扩展分区下,又可以建立多个逻辑分区。也就是说,扩展分区是无法直接使用的,必须在细分成逻辑分区才可以用来存储数据。

通常情况下,逻辑分区的起始位置及结束位置记录在每个逻辑分区的第一个扇区,这也叫做扩展分区表。

在扩展分区下,系统管理员可以根据实际情况建立多个逻辑分区,将一个扩展分区划割成多个区域来使用。

 

MBR分区

MBR:Master Boot Record, MBR磁盘分区是一种使用最为广泛的分区结构,它应用于Windows系统平台,Linux系统平台和基于X86的UNIX等系统平台。

实现原理

使用位于磁盘的0号扇区(一扇区等于512字节),来表示整个磁盘的整体分区情况,整个0号扇区简称为MBR扇区。

从硬件角度讲,MBR分区是按柱面进行的,也就是说,磁盘上的同一柱面只能归于一个分区。但是,在CentOS 6.8上,同一柱面上的不同扇区可以属于不同分区。

MBR扇区组成

MBR扇区由引导代码、MBR分区表、MBR结束标志3部分构成,一共占用512个字节。

其中引导代码占用446个字节,MBR分区占用64个字节,MBR结束标志占用2个字节,MBR扇区一共占用512个字节。

引导代码:占MBR分区的前446字节,负责整个系统的启动。如果引导代码被破坏,系统将无法启动

MBR分区:占引导代码后面的64个字节,是整个硬盘的分区表。每个分区使用的字节为16个,所以这确定了MBR分区方式最多只有4个主分区(包含扩展分区在内)。

MBR结束标志:占用最后2个字节,一直为"55AA".

分区规则

1.一块磁盘上主分区和扩展分区的个数总和不能超过4个

2.一块磁盘上最多只能有1个扩展分区

3.扩展分区中可以创建逻辑分区,个数限制视磁盘类型而定

 

查看fdisk的帮助信息

Command (m for help): m                      

Command action

 

   d   delete a partition            删除一个分区

   m   print this menu               显示帮助菜单

   n   add a new partition           创建一个分区

   p   print the partition table     显示分区表

   q   quit without saving changes   退出不保存

   w   write table to disk and exit  保存并退出

 

 

添加一块100M的硬盘并把它永久挂载到/mnt上,写出详细的操作步骤
答:
#1)分区
[root@oldboyedu01-nb ~]# fdisk /dev/sdb
Command (m for help): p
Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 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

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-102, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-102, default 102): 
Using default value 102

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 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         102      104432   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
#2)通知系统/dev/sdb硬盘的磁盘分区表变化了
partprobe /dev/sdb
#3格式化创建文件系统
[root@oldboyedu01-nb ~]# #make filesystem
[root@oldboyedu01-nb ~]# mkfs.ext4 /dev/sdb1 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25896 inodes, 103424 blocks
5171 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1992 inodes per group
Superblock backups stored on blocks: 
    8193, 24577, 40961, 57345, 73729

Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

#4.关闭磁盘分区的自动检查
[root@oldboyedu01-nb ~]# tune2fs -c 0 -i 0 /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds

#-c 0 count   关闭每挂载多少次进行磁盘检查的功能
#-i 0 interval 关闭每个180天进行磁盘检查功能

#5.进行磁盘分区挂载
[root@oldboyedu01-nb ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  8.8G     0 100% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
[root@oldboyedu01-nb ~]# 
[root@oldboyedu01-nb ~]# mount /dev/sdb1 /mnt/ 

[root@oldboyedu01-nb ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  8.8G     0 100% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sdb1        94M  1.6M   88M   2% /mnt

#6.进行永久挂载(如何在开机的时候自动挂载)
###方法 1./etc/rc.local 
/bin/mount /dev/sdb1 /mnt/ 
###方法 2./etc/fstab 
UUID=6b8ba13d-2833-49be-8206-deb002d2d523 /          ext4    defaults        1 1
UUID=e01d5cbd-b233-44b9-832d-15225cc4d8ff /boot      ext4    defaults        1 2
UUID=7c5f5672-9c30-444c-a273-1350c6a06130 swap       swap    defaults        0 0
#/dev/sdb1               /mnt                    ext4    defaults        0 0

[root@oldboyedu01-nb ~]# umount /mnt 
[root@oldboyedu01-nb ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  8.8G     0 100% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot

 

GPT分区表介绍

GPT的全称是Globally Unique Identifier Partition Table,意即GUID分区表,它的推出是和UEFI BIOS相辅相成的,

鉴于MBR的磁盘容量和分区数量已经不能满足硬件发展的需求,GPT首要的任务就是突破了2.2T分区的限制,最大支持18EB的分区。

 

而在分区数量上,GPT会为每一个分区分配一个全局唯一的标识符,理论上GPT支持无限个磁盘分区,不过在Windows系统上由于系统的限制,最多只能支持128个磁盘分区,基本可以满足所有用户的存储需求。在每一个分区上,这个标识符是一个随机生成的字符串,可以保证为地球上的每一个GPT分区都分配完全唯一的标识符。

而在安全性方面,GPT分区表也进行了全方位改进。在早期的MBR磁盘上,分区和启动信息是保存在一起的。如果这部分数据被覆盖或破坏,事情就麻烦了。相对的,GPT在整个磁盘上保存多个这部分信息的副本,因此它更为健壮,并可以恢复被破坏的这部分信息。GPT还为这些信息保存了循环冗余校验码(CRC)以保证其完整和正确——如果数据被破坏,GPT会发觉这些破坏,并从磁盘上的其他地方进行恢复。

小结:所以对于新平台用户(Intel 6系以后/AMD 900系列以后和A系列)来说,都强烈推荐使用GPT分区表格式,目前包括Windows Vista、7、8、8.1、10已经都支持读取和使用GPT分区表。而对于使用Windows 8、8.1、10的用户,换用GPT后开机启动速度也可以进一步得到显著提升。

 

parted

p[rint] 显示磁盘分区表信息
mklabel 创建磁盘分区表
gpt
msdos(mbr)
mkpart 创建分区
rm 删除分区
q 退出不保存

 

创建分区表

root@znix ~]# parted /dev/sdc

GNU Parted 2.1

Using /dev/sdc

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) mklabel gpt   #创建GPT分区表                                                  

(parted) p                                                                

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdc: 107MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

 

Number  Start  End  Size  File system  Name  Flags

mkpart 可以使用的PART-TYPE类型

(parted) help mkpart                                                     

  mkpart PART-TYPE [FS-TYPE] START END     make a partition

    PART-TYPE is one of: primary, logical, extended

                        主分区 ,逻辑分区 ,扩展分区

对磁盘进行分区

(parted) mkpart primary 0 10

Warning: The resulting partition is not properly aligned for best performance.

        提示分区没有对齐,这个错误无视即可。

Ignore/Cancel? I       忽略/取消                                                  

(parted) p                                                               

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdc: 107MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

 

Number  Start   End     Size    File system  Name     Flags

 1      17.4kB  10.0MB  9983kB               primary

再创建一个分区

(parted) mkpart primary 10 20

(parted) p                                                               

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdc: 107MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

 

Number  Start   End     Size    File system  Name     Flags

 1      17.4kB  10.0MB  9983kB               primary

 2      10.5MB  19.9MB  9437kB               primary

注意:parted 创建分区实时生效,比较危险。

 

使用parted命令非交互式创建分区

[root@znix ~]# parted /dev/sdc mkpart primary 50 100

Information: You may need to update /etc/fstab.                          

 

[root@znix ~]# parted /dev/sdc print #显示磁盘的格式

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdc: 107MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

 

Number  Start   End     Size    File system  Name     Flags

 1      17.4kB  50.0MB  50.0MB               primary

 2      50.3MB  99.6MB  49.3MB               primary

 

posted @ 2019-02-20 17:19  虫儿飞_mustartk  阅读(547)  评论(0编辑  收藏  举报