Linux磁盘分区总结

本文聚焦Linux磁盘分区挂载,先介绍硬盘分区表基础概念及MBR和GPT分区表区别,接着阐述不同容量磁盘的分区挂载操作,包括不大于2T、大于2T小于等于16T、大于16T的磁盘,还补充了取消挂载和分区的命令,为运维人员提供实用指导。

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

前言


关于磁盘的分区操作,是运维的必备技能,fdisk也应该是大家最常用的命令。因为fdisk命令可以解决大多数的磁盘分区问题,它可以将不大于2T的硬盘进行分区,而我们在生产中最常用的硬盘大小不超过2个T(视公司规模而定),当然有的时候,我们也会有对更大容量的需求,因此我们就会使用更大空间的硬盘,但是如果是用fdisk对2T以上的硬盘进行分区就会出现问题。下面介绍的就是Linux的磁盘分区,包含2T以上的磁盘的分区方法。



磁盘分区常识



【1】硬盘分区表基础概念


硬盘分区表是支持硬盘正常工作的架构。其意义在于操作系统会根据硬盘的分区表把硬盘划分为若干个分区,然后再在每个分区里面创建文件系统,使系统可以写入数据。不同的硬盘分区表就像是对一个房子的不同的装修方案。

到现在这篇文章为止,主要磁盘分区使用的分区表有MBR和GPT两种。



【2】MBR和GPT分区表的区别


MBR分区表

  • 主引导记录分区方案,是传统的分区方案;

  • 只能记录4个分区的信息,硬盘主分区数目不能超过4个。(MBR扇区每个分区项使用16个字节存储,总共只有64个字节用于分区表);

  • 无法支持超过2TB容量的磁盘,对超过2T的硬盘分区只能使用2T空间。



GPT分区表(又称GUID分区表)

  • 全局唯一标识分区表,是较新的分区机制;

  • 理论上每个磁盘的分区个数和大小几乎没有限制;
    (Windows系统最多只允许划分128个分区,所以windows系统磁盘分区时使用此分区方案,最多128分区)

  • 支持超过2T的磁盘;

  • 可兼容MBR。

  • 分区表自带备份。
    (会在磁盘的首尾部分,分别保存了一份相同的分区表。其中一份被破坏后,可以通过另一份恢复)



磁盘分区挂载操作


注意:
由于使用虚拟机演示,磁盘显示为vd。
虚拟机的磁盘一般显示为似vda的类型,真实机磁盘显示为sda的类型
fdisk命令对应MBR分区表
parted命令对应GPT分区表


【1】不大于2T的磁盘分区


<1>查看硬盘信息

方法一:lsblk

这里写图片描述


方法二:fdisk -l

中文版
这里写图片描述


英文版
这里写图片描述



<2>创建新硬盘分区

右上方可知新磁盘为vdb,其空间为100G,不大于2T,所以使用fdisk对其分区
磁盘默认都在/dev下,可用Tab补全


{1}fdisk /dev/vdb

这里写图片描述


{2}输入m,列出菜单

这里写图片描述

a   toggle a bootable flag                    设置可启动标记
b   edit bsd disklabel                        设置一个bsd磁盘标记
c   toggle the dos compatibility flag         设置dos兼容标记
d   delete a partition                        删除一个分区
l   list known partition types                列出已知分区类型
m   print this menu                           列出菜单
n   add a new partition                       添加一个分区
o   create a new empty DOS partition table    新建一个空的DOS分区表
p   print the partition table                 显示该磁盘当前分区信息
q   quit without saving changes               不保存退出
s   create a new empty Sun disklabel          创建一个空的SUN磁盘标签
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)        额外的功能(专家模式)


{3}输入n,创建一个分区

这里写图片描述


{4}输入p,创建逻辑分区

这里写图片描述


Select (default p): p                                                         创建逻辑分区
Partition number (1-4, default 1): 1                                          划分逻辑分区1
First sector (2048-209715199, default 2048):                                  回车默认从第一个柱面开始划分(一般都使用默认,直接回车)
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):    划分分区大小(格式:+800M);直接回车,会默认将剩余空间全部划分给此分区
Using default value 209715199
Partition 1 of type Linux and of size 100 GiB is set

Command (m for help): p                                                       显示该磁盘当前分区信息

Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048   209715199   104856576   83  Linux

Command (m for help): w                                                       保存并退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

<3>创建后查看

lsblk

这里写图片描述

出现vdb1,即成功


<4>格式化分区

本次将其格式化为ext4的文件系统,可选其他文件系统


mkfs.ext4 /dev/vdb1

这里写图片描述


<5>挂载

可创建一个目录将其挂载,也可直接挂载到已有的目录
挂载方式有很多种,按需选择
本次,直接挂载到/mnt,使用永久挂载

挂载最好使用UUID,并进行永久挂载。可避免Linux系统重启后,磁盘设备名发生更导致的问题。


{1}写入文件
echo “/dev/vdb1 /mnt ext4 defaults 0 0” >>/etc/fstab

这里写图片描述


{2}刷新挂载并查看
mount -a
df -Th

这里写图片描述



【2】大于2T,小于等于16T的磁盘分区



<1>创建新硬盘分区

本次使用的是4T的磁盘演示,由于大于2T使用GPT分区表,使用parted 命令分区
如使用fdisk分区,将只有2T空间可用


parted /dev/sdb

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

(parted) mklabel gpt                                           创建分区表,磁盘类型为gpt

Warning: The existing disk label on /dev/sdx will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes                                                    选择yes,为清除磁盘原有信息;根据需求选择

(parted) unit TB                                               设置单位为TB

(parted) mkpart primary 0 4                                    创建4T的分区(0 4分别意为起始点和结束点)

(parted) print                                                 查看分区信息

Number  Start  End    Size   File system   标志
数字       开始   结束    大小  文件系统       标志

(parted) quit                                                  保存并退出


其查看磁盘、分区格式化、挂载操作都与小于2T的磁盘的操作是相同的,就不演示了,可参考上方的小于2T的磁盘格式化,挂载操作。

<2>分区及挂载后最终结果

lsblk 

这里写图片描述



【3】大于16T的磁盘分区



演示一种情况
由于cobbler错误的分区格式导致,16T以上的空间,在装完系统后,只能看到分区仅为16T,还有部分空间看不到且未分配
(避免误操作可先将文件备份到其他服务器)





<1>将剩余空间进行分区


parted /dev/sda 

GNU Parted 2.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                  #查看分区信息                                   
Model: DELL PERC H730P Mini (scsi)
Disk /dev/sda: 40.0TB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number   Start   End     Size    File system     Name    Flags
#分区编号 开始    结束     大小     文件系统         分区名   标志 
 1       1049kB  211MB   210MB   ext4
 2       211MB   108GB   107GB   ext4
 3       108GB   116GB   8590MB  linux-swap(v1)
 4       116GB   17.7TB  17.6TB  ext4


(parted)mkpart                   #创建分区
Partition name? []?  gpt2        #指定分区名称 
File system type? [ext2]? xfs    #指定分区文件格式(16T以上建议先使用xfs)
Start? 17.7TB                    #指定该分区开始位置 通常为上一个分区的End
End? -1                          #指定该分区结束位置  -1代表直到最后(最后的所有空间)
(parted)p                       #同print,打印分区信息
(parted)quit                    #保存并退出

因为直接在硬盘生效,调整分区要小心



<2>如果调整中弹出如下报错
分区后,lsblk看不到新的分区

Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (设备或资源忙).  As a result, it may not reflect all of your changes until after reboot.

这种情况可以使用partx命令,或重启服务器

partx -a /dev/sda


partx用来告诉内核当前磁盘的分区情况,对一个磁盘或者分区表类型,尝试解析分区表 。不同于fdisk,增加或删除分区对磁盘造成改变,只是告诉内核当前磁盘的分区情况

partprobe通常在RHEL 5中用来通知操作系统的磁盘上的分区表变化或更改。在RHEL 6中,只有当那些磁盘上任何分区都没有在使用的磁盘下(例如,mounted)它才会触发OS去更新磁盘的分区表。如果磁盘上的任何分区正在使用中,partprobe命令不会触发操作系统去更新分区表的信息。



<3>格式化
(如果可以看到新分区)

当磁盘空间大于16T使用mkfs格式化成ext4,会无法完全格式化,只能格式成xfs

vim /etc/mke2fd.conf

#vim /etc/mke2fs.conf

[fs_types]

ext3 = {undefined

features = has_journal

}

ext4 = {undefined

features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize

auto_64-bit_support = 1  #添加这一行

inode_size = 256

}
访问https://sourceforge.net/projects/e2fsprogs/files/e2fsprogs/下载软件 
 
git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git

cd e2fsprogs
./configure make && make install
mke2fs -O 64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize -i 2048  /dev/sda5


补充



【1】取消挂载命令


umount /mnt/

这里写图片描述



【2】fdisk取消分区命令


取消分区前该分区必先取消挂载


fdisk /dev//vdb

Command (m for help): d                                                删除分区(如果只有一个分区,就不会出现要删除的分区的选项) 

Command (m for help): p                                                列出此磁盘当前分区信息

Command (m for help): w                                                退出并保存 



【3】parted取消分区命令


取消分区前,该分区的数据如果有用,必须先备份,然后取消挂载,再调整分区


parted /dev/sdb

(parted)    rm                                                          删除 

Partition number? 3                                                    删除第三个分区

parted)    print                                                        查看当前分区情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漠效

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值