CentOS7下fdisk分区工具和LVM的简单使用

本文详细介绍了如何在CentOS7中使用fdisk进行分区操作,包括查看硬盘信息、创建和扩展分区,以及LVM的基础概念和使用,包括创建物理卷、卷组和逻辑卷,挂载和扩容逻辑卷。同时对比了fdisk与parted工具在MBR和GPT分区格式上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载,资料来自网络。

fdisk

fdisk 相关链接。

fdisk 分区,格式化,挂载。
https://blog.csdn.net/yangzhengquan19/article/details/83788277?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
fdisk 命令详解
https://www.cnblogs.com/xiaofengkang/archive/2011/06/06/2073579.html
合理规划硬盘分区
https://blog.csdn.net/weixin_33989780/article/details/89994386
扩展分区容量
https://blog.csdn.net/chengxuyuanyonghu/article/details/51746234

分区等基础 概念。

硬盘种类、物理几何结构
硬盘的种类主要是SCSI 、IDE 、以及现在流行的SATA等;任何一种硬盘的生产都要一定的标准;随着相应的标准的升级,硬盘生产技术也在升级;比如 SCSI标准已经经历了SCSI-1 、SCSI-2、SCSI-3;其中目前咱们经常在服务器网站看到的 Ultral-160就是基于SCSI-3标准的;IDE 遵循的是ATA标准,而目前流行的SATA,是ATA标准的升级版本;IDE是并口设备,而SATA是串口,SATA的发展目的是替换IDE; 硬盘的物理几何结构是由盘、磁盘表面、柱面、扇区组成,一个张硬盘内部是由几张碟片叠加在一起,这样形成一个柱体面;每个碟片都有上下表面;磁头和磁盘表 面接触从而能读取数据;

硬盘分区的划分标准

硬盘分区由主分区、扩展分区和逻辑分区组成

在一块硬盘上,如果是MBR分区方式,那么它的主分区最多只能有4个,或者3个主分区和1个扩展分区;在扩展分区上我们可以创建多个逻辑分区

分区编号:主分区1-4 ,逻辑分区5.。。。。。

LINUX规定:逻辑分区必须建立在扩展分区之上,而不是建立在主分区上

分区作用:

主分区:主要是用来启动操作系统的,它主要放的是操作系统的启动或引导程序,/boot分区最好放在主分区上
扩展分区不能使用的,它只是做为逻辑分区的容器存在的;我们真正存放数据的是主分区和逻辑分区,大量数据都放在逻辑分区中
如果你用的是GPT的分区方式,那么它没有限制主分区个数
注意:从MBR转到GPT分区或者说从GPT转到MBR会导致数据全部丢失

文件系统的一个使用流程

存储介质选择—》硬盘分区操作;创建分区来容纳文件系统;创建分区,这个分区可以是整个硬盘也可以是部分硬盘----》创建文件系统(我们在存储数据之前,你必须使用文件系统对其分区进行格式化)----》把它挂载到虚拟目录----》写入配置文件/etc/fstab

扩展分区也算作主分区,且一个硬盘基本只能有一个扩展分区。

合理的的分区方式
最合理的分区结构:主分区在前,扩展分区在后,然后在扩展分区中划分逻辑分区;主分区的个数+扩展分区个数要控制在四个之内;比如下面的分区是比较好的;

[主|分区1] [主|分区2] [主|分区3] [扩展分区]

[逻辑|分区5] [逻辑|分区6] [逻辑|分区7] [逻辑|分区8] ... ... 

[主|分区1] [主|分区2] [扩展分区]

[逻辑|分区5] [逻辑|分区6] [逻辑|分区7] [逻辑|分区8] ... ... 

[主|分区1] [扩展分区]

[逻辑|分区5] [逻辑|分区6] [逻辑|分区7] [逻辑|分区8] ... ...

不合理的分区结构: 主分区包围扩展分区;比如下面的

[主|分区1] [主|分区2] [扩展分区] [主|分区4] [空白未分区空间]

[逻辑|分区5] [逻辑|分区6] [逻辑|分区7] [逻辑|分区8] ... ... 

这样 [主|分区2] 和 [主|分区4] 之间的 [扩展分区] 是有自由度,但[主|分区4]后的[空白未分区空间]怎么办?除非把主分区4完全利用扩展分区后的空间,否则您想在主分区4后再划一个分区是不可能的,划分逻辑分区更不可能; 虽然类似此种办法也符合一个磁盘四个主分区的标准,但这样主分区包围扩展分区的分区方法不可取

fdisk - Partition table manipulator for Linux
fdisk linux下的分区工具

fdisk基础命令

fdisk -l 查看硬盘及分区信息
fdisk -l

在这里插入图片描述
可以看到有三个硬盘(使用的VMware Workstations创建的虚拟机),第一块硬盘 /dev/sda 是创建系统时自动划分的。/dev/sdb /dev/sdc是后来新增的两块硬盘。其中/dev/sdb 已经做了分区,一块主分区,一块扩展分区,扩展分区上又创建了一个逻辑分区。/dev/sdc 未创建分区。

单独看某一块硬盘 硬盘分区情况 如 /dev/sdb

fdisk -l /dev/sdb

查看某一硬盘分区情况
硬盘大小 21.5GB,(其实新增硬盘时时设置的了20G,显示21.5G应该是换算方式吧2010241024*1024/1000/1000/1000)。一共有4194304 个扇区,每个扇区 大小512 bytes。
Start 一个分区从 X扇区开始
End 一个分区到Y扇区结束。
Blocks 分区大小,单位K。
Id 感觉就是分区的类型Id,在创建分区时使用 l 命令可查看对应列表
System 分区类型

创建分区基本命令

现在,假设要对一个硬盘 /dev/sdb 进行操作,创建分区

fdisk /dev/sdb

会进入创建分区的命令行。输入m 查看帮助
分区界面

Command (m for help): m
Command action
   a   toggle a bootable flag									
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition	#删除一个分区
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types # 查看分区类型
   m   print this menu	# 查看帮助信息
   n   add a new partition	# 添加一个分区
   o   create a new empty DOS partition table
   p   print the partition table	# 查看分区表
   q   quit without saving changes	# 不保存修改退出
   s   create a new empty Sun disklabel
   t   change a partition's system id	# 改变分区类型ID 就是改变分区类型
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit	# 将分区表写入磁盘并退出
   x   extra functionality (experts only)

基本上常用的就是上面带有中文注释的几个命令。

创建,添加分区的例子。

已经知道,每个硬盘如果是MBR格式分区,那么最大只能有四个主分区(如果有扩展分区,扩展分区也算作主分区),如果是GPT格式,那么不受限制。parted 工具命令似乎可以设置分区格式,这个自行查阅。。。
现在准备将 /dev/sdc 进行分区,两个主分区,一个扩展分区。在扩展分区上创建两个逻辑分区。
进入创建分区命令

fdisk /dev/sdc

创建分区
使用p 命令查看分区情况
无任何分区
当前没有任何分区

n命令创建一个主分区
创建第一个主分区
输入命令n 表示创建一个分区。

Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended

现在有0个主分区 0个扩展分区 4个空闲分区。(空闲分区一词不准确,应该是可以再创建的主分区数为4.)

提示输入分区类型Select (default p) p 表示主分区,e 表示扩展分区,默认是主分区。
Partition number (1-4, default 1)输入分区编号 默认就好。自动会按照1,2,3,4顺序设置
First sector (2048-62914559, default 2048): 起始扇区,这个最好按默认设置,不然很容易造成空间浪费。
Last sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559):设置j结束扇区,默认是硬盘末尾扇区,就是占有硬盘剩余所有空间,也可以输入占用空间大小(要带上单位 K/M/G) 比如 +2G 就是该分区占用硬盘2G大小空间。fdisk会自动计算结束扇区位置。

设置完毕 用 p 命令查看一下分区情况 可以看到 已经有一个分区了。
再接着设置一个8G的主分区
创建第二个主分区
和创建第一个分区时类似。

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended

已经有一个主分区了,还可以再创建的主分区数为3。
可以看到第二个主分区创建时默认的起始扇区变成了4196352 恰好是第一个主分区结束扇区+1 。这样空间不会被浪费。

现在已经有两个主分区了。创建一个扩展分区。(扩展分区不可直接挂在,要先创建逻辑分区)。一般来说,逻辑分区是用来存放数据的地方,主分区之类更多用来存放系统相关。

n 命令用来创建分区
创建逻辑分区
这次选在分区类型时选择了e 表示创建扩展分区,且在 设置结束扇区时使用了默认值,表示硬盘剩余空间全部分给扩展分区。

保存设置 退出
现在已经在 /dev/sdc 上创建了两个主分区,一个扩展分区。可以将分区表写入磁盘。
使用 w 命令 写入硬盘并退出
如果感觉设置有误,放弃本次分区建立 使用 q 命令

w保存修改 并退出分区设置后。使用fdisk -l 查看一下分区情况。重点查看 /dec/sdc
重点看 sdc
可以看到 /dev/sdc 分区表已经写入硬盘。

修改分区表
现在想要修改分区表,建立三个主分区 一个扩展分区。三个主分区大小 2 3 5G。再建立两个逻辑分区。

按照上面的分区建议,扩展分区不应该被主分区包围,因此要先删除掉扩展分区和一个主分区,重新划分大小(只是为了试验一下删除分区操作,现实中别这么干,数据会丢失的。。。)
分区工具 操作 /dev/sdc

fdisk /dev/sdc

p 查看当前分区。
d 命令删除一个分区
删除分区
删除分区 d
Partition number (1-3, default 3): 输入要删除分区的序号 默认是最后一个。
删除了两个分区后。
重新再创建两个主分区,一个扩展分区
四个主分区
创建逻辑分区
创建逻辑分区
使用 n 命令,这时由于四个主存储全部占用,有一个扩展分区存在,
All primary partitions are in use
Adding logical partition 5
所以默认创建一个逻辑分区,分区号5 逻辑分区序号无法设置,从5开始递增。
w保存退出
硬盘总容量=主分区(包括扩展分区)总容量 + (硬盘未使用)
扩展分区容量=逻辑分区总容量 + 未使用(扩展分区未使用)

扩展分区未全部使用,只分配给了逻辑分区 5G。

测试分区挂载。

主分区和 逻辑分区都是可以格式化后挂载的。扩展分区不行。lsblk 也可以查看硬盘和分区情况
lsblk
查看硬盘分区情况,重点查看 sdc 可以看到三个主分区大小是 2G 3G 5G 扩展分区是 1K ,因为扩展分区是维护逻辑分区的表,不是用来真正存储数据的。
测试挂载 /dev/sdc1 和 /dev/sdc5 分别是一个主分区和一个逻辑分区。
格式化 分区 可以是 ext3, ext4, xfs,比如格式化成ext4。

mkfs.ext4 /dev/sdc1
mkfs.ext4 /dev/sdc5

创建挂载点

mkdir /mnt/sdc1
mkdir /mnt/sdc5

挂载

mount /dev/sdc1 /mnt/sdc1
mount /dev/sdc5 /mnt/sdc5

挂载成功

如果希望开机挂载就把它写入到 /etc/fstab 文件中。

vi /etc/fstab

加在末尾

/dev/sdc1  /mnt/sdc1  ext4 defaults 0 0
/dev/sdc5  /mnt/sdc5  ext4 defaults 0 0

快速挂载 /etc/fstab 中内容

mount -a
扩展逻辑分区。

这个,局限性很大,不能当做常规方法使用。 假设逻辑分区挂载到 /mnt/sdc5 然后分区空间不够用了。现在想要从5G扩容到10G。。。

取消sdc5 挂载

umount -l /mnt/sdc5

编辑 /dev/sdc 分区

fdisk /dev/sdc

p 查看分区情况,记住逻辑卷的初始扇区。
删除逻辑卷5
d
5
新建逻辑卷 5,初始扇区填写刚才查看到的, 分配10G 空间
w 保存退出

分区表重建

partprobe

调整分区

e2fsck -f /dev/sdc5 #检查分区信息
resize2fs /dev/sdc5 #调整分区大小

调整分区大小成功
成功扩容,尽管成功扩容,确实很大局限性,比如如果有第二个逻辑分区。。。所以一般在创建分区时尽量计算好大小之类。

关于更改分区类型的 t 等命令,可以自己试验一下

LVM

lvm 相关链接

https://www.cnblogs.com/diantong/p/10554831.html
https://www.cnblogs.com/zhouby/p/10683974.html

基本概念

(1).LVM的工作原理

LVM(Logical Volume Manager)逻辑卷管理,是在硬盘分区和文件系统之间添加的一个逻辑层,为文件系统屏蔽下层硬盘分区布局,并提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在硬盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越物理硬盘。当服务器添加了新的硬盘后,管理员不必将原有的文件移动到新的硬盘上,而是通过LVM直接扩展文件系统来跨越物理硬盘。

LVM就是通过将底层的物理硬盘封装,然后以逻辑卷的方式呈现给上层应用。当我们对底层的物理硬盘进行操作时,不再是针对分区进行操作,而是通过逻辑卷对底层硬盘进行管理操作。

(2).基础术语

物理存储介质(The physical media):LVM存储介质,可以是硬盘分区、整个硬盘、raid阵列或SAN硬盘。设备必须初始化为LVM物理卷,才能与LVM结合使用。

物理卷PV(physical volume):物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质比较却包含与LVM相关的管理参数,创建物理卷可以用硬盘分区,也可以用硬盘本身。

卷组VG(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,一个卷组VG由一个或多个物理卷PV组成。可以在卷组VG上建立逻辑卷LV。

逻辑卷LV(logical volume):类似于非LVM系统中的硬盘分区,逻辑卷LV建立在卷组VG之上。在逻辑卷LV之上建立文件系统。

物理块PE(physical Extent):物理卷PV中可以分配的最小存储单元,PE的大小可以指定,默认为4MB

逻辑块LE(Logical Extent):逻辑卷LV中可以分配的最小存储单元,在同一卷组VG中LE的大小和PE是相同的,并且一一相对。

LVM 常用命令

功能PV管理命令VG管理命令LV管理命令
scan 扫描pvscanvgscanlvscan
create 创建pvcreatevgcreatelvcreate
display 显示pvdisplayvgdisplaylvdisplay
remove 移除pvremovevgremovelvremove
extend 扩展vgextendlvextend
reduce 减少vgreducelvreduce

注意:查看命令有scan、display和s(pvs、vgs、lvs)。s是简单查看对应卷信息,display是详细查看对应卷信息。而scan是扫描所有的相关的对应卷。

LVM 环境

将fdisk测试创建的 分区全部删除。只留两个硬盘 /dev/sdb /dev/sdc 重新创建分区用于 lvm
LVM环境
使用 /dev/sdb 硬盘分区,作为lvm 的存储介质。
把/dev/sdb 分成3个主分区(各占2G),一个扩展分区,再创建两个逻辑分区(各占3G)。
sdb硬盘分区
分完区,最好设置一下分区的类型为8e 表示最为 Linux LVM。在较老的系统中,必须设置才能使用,新系统中不必一定设置成8e了,但设置一下看上去也更直观表明分区作用 使用 t 来设置分区格式。

创建物理卷 PV

物理卷PV(physical volume):物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质比较却包含与LVM相关的管理参数,创建物理卷可以用硬盘分区,也可以用硬盘本身。

已经准备好了分区作为lvm的存储介质。现在将这些分区,创建成PV 物理卷
先将三个主分区创建成 LVM物理卷 PV

pvcreate /dev/sdb1
pvcreate /dev/sdb2
pvcreate /dev/sdb3

创建物理卷PV
使用三个主分区创建物理卷PV。创建完成pvs 查看
查看详情

 pvdisplay

物理卷详情

创建卷组 VG

卷组VG(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,一个卷组VG由一个或多个物理卷PV组成。可以在卷组VG上建立逻辑卷LV。

卷名 PV组 可以在创建卷组的时候设置PE(LE) 大小。 只要加上 -s sizeM
比如vgcreate vg_test /dev/sdb1 /dev/sdb2 /dev/sdb3 -s 8M 即可将PE(LE)大小设置为 8M

vgcreate VG_new PV ...

创建一个卷组 名为 vg_test 由三个物理卷PV构成。

vgcreate vg_test /dev/sdb1 /dev/sdb2 /dev/sdb3

查看卷组信息

vgs
vgdisplay

vg卷组信息
可以看到卷组大小约为6G 因为是 三个2G的物理卷PV组成的。。。

创建逻辑卷LV。

现在有一个卷组了,无视掉centos,那个是系统分区时选择默认分区创建的,也是利用了lvm。不过和现在要学习的无关。。。
创建 一个逻辑卷

lv create -n Name -L Size| -l Number VG --type ?

这个lvm 逻辑卷 可以有多个种类比如 线性卷,条带卷(条带式存储),raidl等等。 在–type后注明即可。
默认不加–type 参数就是线性卷,最基础的。

在创建逻辑卷时指定逻辑卷大小的方式也有两种。
-L 指定卷组大小,后跟上卷组大小,比如 200M 2G。
-l 指定卷组占据的 PE(LE) 数目, 比如 100 2000 (如果PE大小是4M,那就是400M 8000M)
-l 还可以指定占据空闲 卷组容量的百分比 -l 100%FREE 表示占据剩余全部空间。

创建一个 卷名为 lv_test 大小为200M的卷。

lvcreate -n lv_test -L 200M vg_test

LV逻辑卷信息
LV Path 是/dev/vg_test/lv_test 可以看做设置,要使用时挂载该设备。
注 /dev/mapper/vg_test-lv_test和/dev/vg_test/lv_test和/dev/dm-? 是一个设备。

挂载创建好的逻辑卷,文件系统使用ext4。测试扩容,缩减。

如果不使用lvm -r无法动态扩容。需先卸载挂载,扩容完成再重新挂载

创建逻辑卷 分配100M 卷 卷名lv_ext4

lvcreate -n lv_ext4 -L 100M vg_test

设置逻辑卷的 文件系统格式

mkfs.ext4 /dev/vg_test/lv_ext4

创建挂载点

mkdir /mnt/test_ext4

挂载该逻辑卷

mount /dev/vg_test/lv_ext4 /mnt/test_ext4

ext4挂载成功
LV逻辑卷扩容 加上-r参数,直接将文件系统也进行扩容
当然 扩容也不能超过卷组大小
也可以使用 -L 或者 -l 两个设置大小方式,还增加了+ 不带+ 号表示扩容至XX大小,带+号表示原有基础上增加XX大小
逻辑卷扩容至200M

lvextend -L 200M /dev/vg_test/lv_ext4 -r

可以看到文件系统也增加值200M
LV逻辑卷缩减 加上-r参数,直接将文件系统也进行缩减
逻辑卷缩减前保证文件占用空间小于缩减后的大小

lvreduce -L 100M /dev/vg_test/lv_ext4 -r

缩小至100M
逻辑卷ext4缩减至100M
不加-r 参数,需要手动扩容文件系统。
先取消挂载

umount -l /mnt/test_ext4/

扩展 逻辑卷 大小 至300M

lvextend -L 300M /dev/vg_test/lv_ext4 
lvs

检查文件完整性

e2fsck -f /dev/vg_test/lv_ext4

调整文件系统大小

resize2fs /dev/vg_test/lv_ext4

重新挂载

mount /dev/vg_test/lv_ext4 /mnt/test_ext4/

在这里插入图片描述
可以看到 挂载大小 约为300M 为什么显示 287 换算问题。。。

不加-r 参数,需要手动缩减文件系统。
缩减时不加 -r 参数,我是没有成功。。。不知原因。
同 扩容时步骤一样
先取消挂载

umount -l /mnt/test_ext4/

缩减 逻辑卷 大小 至100M

lvreduce -L 100M /dev/vg_test/lv_ext4 
lvs

检查文件完整性

e2fsck -f /dev/vg_test/lv_ext4

这一步会出错,不管输入y或者n 都会失败。执行

resize2fs /dev/vg_test/lv_ext4

会有各种错误。。。
无法完成文件系统 缩减大小。。。

最后只能重新将 逻辑卷扩容到 原来大小,重新检查文件完整性,再调整文件系统大小,重新挂载

lvextend -L 300M /dev/vg_test/lv_ext4
e2fsck -f /dev/vg_test/lv_ext4
resize2fs /dev/vg_test/lv_ext4
mount /dev/vg_test/lv_ext4 /mnt/test_ext4/

尽管手动调整文件系统缩减失败了,但是 ext4 文件系统是支持 lvm逻辑卷缩减的,加上-r参数更加方便,不用手动设置,除了xfs文件系统,其他的应该都可以缩减

挂载创建好的逻辑卷,文件系统使用xfs。测试扩容,缩减。

只能扩容 无法缩减,可以动态扩容

创建逻辑卷 lv_xfs 大小100M

lvcreate -n lv_xfs -L 100M vg_test

设置逻辑卷文件系统 为 xfs 这会格式化硬盘。所以能从ext4格式转成xfs但是数据会全部丢失。

mkfs.xfs /dev/vg_test/lv_xfs 

创建挂载点

mkdir /mnt/test_xfs

挂载

mount /dev/vg_test/lv_xfs /mnt/test_xfs/

逻辑卷lv_xfs
LV逻辑卷扩容 加上-r参数,直接将文件系统也进行扩容
扩容至200M

lvextend -L 200M /dev/vg_test/lv_xfs -r

xfs扩容至200M成功
LV逻辑卷扩容 加上-r参数,直接将文件系统也进行扩容,xfs文件系统会失败

lvreduce -L 100M /dev/vg_test/lv_xfs -r

xfs文件系统缩减失败
至于不加-r 参数,手动修改。。。和ext4一样。
xfs不支持缩减

物理卷PV的创建删除。

物理卷创建 删除。
创建 将两个 逻辑分区创建成 物理卷

pvcreate /dev/sdb5
pvcreate /dev/sdb6

逻辑分区创建成物理卷
物理卷删除
只能删除 未被卷组使用的物理卷

pvremove /dev/sdb5
pvremove /dev/sdb5

删除物理卷PV

卷组的 扩容缩减删除。

卷组是由 物理卷PV 组成的。因此卷组容量增缩 只用增减 PV即可。
卷组 扩容
卷组名 未使用的物理卷PV

vgextend VG PV ...

先将 两个逻辑分区再创建成物理卷

pvcreate /dev/sdb5
pvcreate /dev/sdb6

卷组扩容。

vgextend vg_test /dev/sdb5
vgextend vg_test /dev/sdb6

VG卷组扩容
VG卷组缩减,去除掉PV 就可以。但是为了保证数据完整,去除掉的PV上要没有数据存在。
pvs
可以看到现在卷组vg_test 有5个PV组成,数据存放在 /dev/sdb1 这个PV中。
删减最后增加的两个PV

vgreduce vg_test /dev/sdb5 /dev/sdb6

缩减卷组
尝试去除 /dev/sdb1 PV。

vgreduce vg_test /dev/sdb1

去除物理卷失败
物理卷 /dev/sdb1 在使用中。。。
要想从卷组vg_test 中移除 物理卷 /dev/sdb1 需要先将 /dev/sdb1数据移到其他卷组 比如 /dev/sdb2

pvmove /dev/sdb1 /dev/sdb2

时间耗费挺长。完成后就可以移除 /dev/sdb2了

vgreduce vg_test /dev/sdb1

关于 物理卷数据移出,可以移到多个物理卷(当然,好像 还是会尽可能转移到第一个物理卷中,第一个卷空间不够了,会使用第二个。。。)

fdisk和parted工具的一些区别。

MBR格式的分区最多支持2TB,最多4个主分区(包括扩展分区)
GPT格式最大支持18PE,理论上分区不受限制。Windows操作系统可能会支持128个分区。注,GPT格式是没有主分区和逻辑分区之分的。都可以算作主分区。

fdisk通常用作MBR格式分区,但是也可以用来操作 GPT格式的分区划分。parted也是,主要用作GPT格式的分区。 fdisk 的操作,只有最后输入w才真正写入磁盘改变磁盘的分区表,而parted 操作是即时的。

测试fdisk 设置GPT分区格式并创建分区。

没有太大的硬盘空间,随便给虚拟机一个新增一块30G硬盘测试使用。/dev/sdc

fdisk /dev/sdc
m

查看操作帮助

fdisk /dev/sdc
1 表示 当前磁盘没有分区表,默认创建了一个 DOS分区表,这样才能展示改磁盘的数据,当然,这个分区表是没有真正写入磁盘的。只有真正创建分区并w保存后才会写入磁盘。MBR格式使用fdisk工具分区,表示应该是DOS。
2 表示 使用g 命令创建一个空的 GPT 分区表。o命令创建一个空的DOS分区表。
创建GPT分区表
使用g命令创建GPT分区表。只创建分区表,不真正创建分区的话即使输入w也是不会把空表写入磁盘的。

如果使用 l 查看分区类型,可以发现,GPT与DOS分区的可设置类型也不太一样。比如GPT分区31是Linux LVM,而DOS中是8e。

创建分区的命令和 使用操作DOS 表一致 n
创建第一个GPT分区
w保存,可以使用fdisk -l 查看。或者lsblk 查看。
lsblk
可以看到已经有一个2G的分区 sdc1了。可以测试一下挂载。
先设置分区的文件系统。

mkfs.ext4 /dev/sdc1

创建挂载点

 mkdir /mnt/test_fdisk_gpt/

挂载

mount /dev/sdc1 /mnt/test_fdisk_gpt/

fdisk 挂载GPT格式分区

parted 设置MBR格式分区并挂载。

再重新添加一个硬盘10G /dev/sdd 测试。。。parted也是分区工具,可以设置MBR格式分区的。
交互式操作,和fdisk工具一致。

parted /dev/sdd

parted
parted 分区设置一个裸硬盘时,不会默认设置一个 分区表。因为parted的操作都是即时生效的。
输入 help 查看帮助
parted help
可以看到 print 是描述磁盘分区表,可用空间等,mklabel/mktable 设置磁盘分区表,mkpart 设置分区。。。等等等等。可以使用help+命令查看命令使用帮助 如

help mklabel

分区表类型
可以设置的 有不少,主要还是看 gpt 和 msdos 。gpt不用多说,msdos就是fdisk中显示的 dos 格式,也是MBR格式分区。
在真正分区前一定要设置分区表,否则会报错

Error: /dev/sdd: unrecognised disk label

设置硬盘分区表格式 为msdos

mklabel msdos

parted MBR
查看分区命令帮助。

help mkpart         
(parted) help mkpart                                                      
  mkpart PART-TYPE [FS-TYPE] START END     make a partition

	PART-TYPE is one of: primary, logical, extended
        FS-TYPE is one of: btrfs, nilfs2, ext4, ext3, ext2, fat32, fat16, hfsx, hfs+, hfs, jfs, swsusp, linux-swap(v1),
        linux-swap(v0), ntfs, reiserfs, hp-ufs, sun-ufs, xfs, apfs2, apfs1, asfs, amufs5, amufs4, amufs3, amufs2, amufs1,
        amufs0, amufs, affs7, affs6, affs5, affs4, affs3, affs2, affs1, affs0, linux-swap, linux-swap(new), linux-swap(old)
        START and END are disk locations, such as 4GB or 10%.  Negative values count from the end of the disk.  For example, -1s
        specifies exactly the last sector.
        
        'mkpart' makes a partition without creating a new file system on the partition.  FS-TYPE may be specified to set an
        appropriate partition ID.
(parted)      

可以看到 创建一个分区,需要设置 分区类型,可选设置文件格式,起始位置,可以是大小 或者 百分比。
注,这个是分区表 为MBR格式下 来说的,如果是GPT格式分区表,是没有设置分区类型一说的,第一个参数应该是分区名字
只输入 mkpart 命令,一步一步设置

mkpart

创建第一个分区
依次让输入

(parted) mkpart 
Partition type?  primary/extended? 	# 输入分区类型 选择 主分区 primary                   
File system type?  [ext2]? 			# 没什么用,选择不输入                                   
Start? 0  							# 起始位置 输入0                                                    
End? 2GB              				# 分区结束位置输入 2GB                                                    
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore 	# 这是一个警告 分区未调整好,无视 输入Ignore

毕竟parted 更适合用作 gpt 格式的分区,用作 MBR 确实感觉不太好用。。。或者更深入理解一下分区表,分区表默认也是要占用空间的,因此start 可以设置成1M 之类的,给分区表 留出一定空间。具体多大,我对分区表理解不够。就不胡说了

刚才使用mkpart 命令,依次输入选项。创建了一个主分区 占据2GB大小
现在使用一条指令创建 第二个主分区

mkpart primary 2GB 5GB

创建第二个分区
没有指定 FS-TYPE ,似乎指定了也没什么效果,应该是因为分区表是msdos(MBR)格式的原因。

创建扩展分区 占据剩余空间

mkpart extended 5GB 100%

创建逻辑分区

(parted) mkpart                                                           
Partition type?  primary/logical? logical                                 
File system type?  [ext2]?                                                
Start? 5GB                                                                
End? 7GB                                                                  
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdd: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system  Flags
 1      512B    2000MB  2000MB  primary   ext4
 2      2001MB  5000MB  2999MB  primary
 3      5000MB  10.7GB  5738MB  extended               lba
 5      5001MB  7000MB  2000MB  logical

lsblk /dev/sdd
至于挂载什么的,和fdisk 分区后一致,先设置文件系统,创建挂载点。然后进行挂载,只有主分区和逻辑分区可以进行挂载。
大致如此。不过使用fdisk设置MBR格式分区 感觉更加方便一点

parted 工具设置 gpt格式分区。

首先,还是用 /dev/sdd 硬盘做实验。

parted /dev/sdd

设置成gpt 格式分区,由一个分区格式转换成另一个,会清空上面所有数据,因为原分区表被覆盖了。

(parted) mklabel gpt                                                      
Warning: The existing disk label on /dev/sdd will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes 

创建分区 命令依然是 mkpart。依旧是直接执行mkpart 不加任何指令

mkpart
        appropriate partition ID.
(parted) mkpart                                                           
Partition name?  []? p1                                                   
File system type?  [ext2]?                                                
Start? 0                                                                  
End? 1GB                                                                  
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore                                                     
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdd: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      17.4kB  1000MB  1000MB               p1

(parted)                                   

和MBR格式分区不同的是第一个让输入的不是分区类型,而是分区名。这个分区名也可以不设置,可以为空。。。
因为gpt是不分主分区与扩展分区的。而且理论可以设置无限个主分区。由于操作系统限制可能达不到,但是也远超MBR格式分区。
删除原分区

rm 1

测试创建10个 分区
mkpart [分区名] start end

mkpart p1 1MG 1GB
mkpart p2 1GB 2GB
mkpart p3 2GB 3GB
mkpart p4 3GB 4GB
mkpart p5 4GB 5GB
mkpart p6 5GB 6GB
mkpart p7 6GB 7GB
mkpart p8 7GB 8GB
mkpart p9 8GB 9GB
mkpart p10 9GB 100%

查看分区

print

查看分区
可以使用lsblk 查看 该硬盘的分区情况

[root@lvmtest1 ~]# lsblk /dev/sdd                                         
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdd       8:48   0   10G  0 disk 
├─sdd1    8:49   0  953M  0 part 
├─sdd2    8:50   0  953M  0 part 
├─sdd3    8:51   0  954M  0 part 
├─sdd4    8:52   0  954M  0 part 
├─sdd5    8:53   0  953M  0 part 
├─sdd6    8:54   0  954M  0 part 
├─sdd7    8:55   0  954M  0 part 
├─sdd8    8:56   0  953M  0 part 
├─sdd9    8:57   0  954M  0 part 
└─sdd10   8:58   0  1.6G  0 part 

测试挂载其中一个 比如 /dev/sdd6
创建挂载点

mkdir /mnt/test_parted_gpt

设置文件系统

mkfs.ext4 /dev/sdd6

测试挂载

mount /dev/sdd6 /mnt/test_parted_gpt/

挂载成功

综合上面来看,fdisk也可以用来设置 gpt格式分区,应该是近几年新增的。个人感觉fdisk分区工具更好用一点。虽然无法设置 分区名,但是感觉分区的分区名本来就不怎么重要。。。
### CentOS7 手动分区教程 #### 标准分区方法 在CentOS7中,标准分区是最基础也是最常用的磁盘划分方式之一。这种方式允许用户将物理硬盘分割成若干个逻辑单元,即分区,每个分区能够被单独挂载并用于不同的目的。 对于初次接触Linux系统的用户来说,在创建新分区时需要注意的是,除了交换(SWAP)分区外,其他类型的文件系统分区都应采用ext4或其他适合的格式[^1]。具体到实际操作层面: - 使用`fdisk`工具来管理磁盘分区。 - 对于一块新的未分配空间(假设为/dev/sda),可以通过命令`sudo fdisk /dev/sda`进入交互模式。 - 输入字母'n'新建一个分区,并按照提示设置起始位置以及结束位置或指定具体的大小。 - 完成分区定义后,通过't'选项更改分区ID号以适应特定用途,比如设定为主引导记录(MBR)/EFI系统分区、根目录(/)或者/home等。 - 最后保存修改退出(`w`)即可完成基本的标准分区配置过程[^2]。 ```bash # 查看当前磁盘情况 sudo fdisk -l # 开始对目标磁盘进行分区 sudo fdisk /dev/sdX # 将sdX替换为你想要操作的具体设备名称 Command (m for help): n # 新建分区 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p # 选择p表示这是一个主分区 Partition number (1-4, default 1): First sector (2048-41943039, default 2048): Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): Created a new partition X of type 'Linux' and of size Y GB. ``` #### LVM分区方法 LVM(Logical Volume Manager),即逻辑卷管理器,提供了更加灵活高效的存储资源管理模式。它使得管理员可以在不停止服务的情况下动态调整各个逻辑卷的空间大小,而无需担心底层硬件的变化带来的影响。 为了实现这一点,首先要建立物理卷(PV),接着组合这些PV形成卷组(VG),最后再从VG里面切割出所需的逻辑卷(LV)[^3]。以下是简单的步骤说明: - 首先利用`pvcreate`指令初始化裸盘作为物理卷; - 接着运用`vgcreate`构建一个新的卷组并将之前准备好的PV加入其中; - 然后再借助`lvcreate`根据需求规划LV的数量及其各自的尺寸; - 不忘给每一个LV指派合适的文件系统类型(ext4/xfs)并通过mkfs.*系列命令对其进行格式化处理; ```bash # 初始化物理卷 sudo pvcreate /dev/sdb # 创建卷组名为my_vg sudo vgcreate my_vg /dev/sdb # 在卷组内创建5GB大小的逻辑卷命名为data_lv sudo lvcreate -L 5G -n data_lv my_vg # 给这个新的逻辑卷添加ext4文件系统 sudo mkfs.ext4 /dev/my_vg/data_lv ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值