Linux硬盘挂载与磁盘分区基础(一)(主分区、拓展分区、逻辑分区)
我们常用windows时,会区分C盘、D盘之类的(A、B盘是软盘)就是所谓的分区,这么做为了方便数据管理,比如扩容之类的。
本文采用Linux(Ubuntu20.04)来介绍分区,其它Linux系统基本一样的。
首先,我们需要熟悉几个概念:
硬盘:存储数据用的硬件,比如移动硬盘、固态硬盘、U盘等,有了硬盘,我们一般不能直接存储数据,需要进行分区,可以理解为数据管理,你数据存进去了,存在哪个位置,我们后续也会读取出来。而分区我们一般又分为主分区、拓展分区、逻辑分区。
主分区:可以理解为硬盘分出来的一部分区域,用于存储数据,比如我们的C盘,一般作为启动分区。主分区可以存在多个,但是至少需要一个。
拓展分区:分完主分区了,剩下的部分区域,一般就是拓展分区(除非你想浪费部分空间)。所以拓展分区最多只能有一个。
逻辑分区:逻辑分区依赖于拓展分区,因为硬盘不能直接使用来存储数据,而拓展分区时剩余的部分区域,也是不能直接使用的,想要使用,我们就必须在拓展分区上继续划分逻辑分区。拓展分区上的逻辑分区可以有多个。
分区表:创建了分区,分区容量、起始位置等分区信息就是存储在分区表,分区表常用有两种:MBR分区表、GPT分区表。
MBR分区表:在MBR分区表中最多4个主分区或者最多3个主分区+1个扩展分区,也就是说扩展分区只能有一个,其它的都是主分区,但是它们的总个数不能超过4个,且单个主分区的最大容量为2TB(=2048GB)。
GPT分区表:在GPT分区表中,主分区和拓展分区个数最多为128个,但是拓展分区最多只有1个,而且单个主分区的大小最大容量为18EB(=18432PB =18874368TB =19327352832GB)
了解了基本概念,现在我们可以来看在linux下怎么来进行分区操作(我这里是虚拟机):
创建分区与挂载
1、当前插上硬盘,如果linux系统可以识别,我们可以在/dev/
目录下看到有相应的设备文件,通常是sda、sdb、sdc、hda、hdb、hdc之类的,而像sda1、sda2、sdb1、sdb2之类的就是创建的分区:
或者我们可以通过fdisk
命令来查看:sudo fdisk -l
或者通过lsblk命令来查看,总之方式有很多,就是找到你对应的硬件设备,我这里是/dev/sdb
,可以看到它有10GB,但是我们需要进行分区挂载后才能使用
2、我们有两种分区方式:fdisk
和parted
fdisk是一个较老的分区表创建和管理工具,它可以用来创建、删除、调整分区大小等,支持MBR分区表(貌似最新版也在开始支持GPT分区表),也就是说fdisk创建的分区最大为2T。
parted是一个更现代的分区工具,功能比fdisk更丰富,支持MBR和GPT分区表。
fdisk
创建分区
开始分区:sudo fdisk /dev/sdb
,注意,这里/dev/sdb是我的设备
如果创建主分区,那么依次输入命令:
这样我们就创建了一个主分区,我们可以通过sudo fdisk -l /dev/sdb
来查看
如果要创建一个拓展分区,输入的命令类似,只是类型是拓展分区,这里演示我就是用来剩余的全部空间:
有了拓展分区,我们还可以创建逻辑分区:
parted
创建分区
开始分区:sudo parted /dev/sdb
,注意,这里/dev/sdb是我的设备。
输入print
打印分区表信息,可以看到分区表类型是msdos,也就是MBR分区表
输入mklabel gpt
修改分区表类型,然后输出信息,可以看到分区表类型变成了gpt,
注:因为拓展分区和逻辑分区对MBR分区表才有效,所以我这里演示也是用MBR分区表,和fdisk统一一下,执行mklabel msdos
修改分区表类型:
输入mkpart primary 0GB 5GB
创建主分区(mkpart
命令也可以通过百分比来指定,例如:mkpart primary 0% 50%
)
如果还需要拓展分区,可以输入mkpart extended 5GB 100%
创建一个拓展分区
有了mkpart logical 5GB 7GB
拓展分区,还可以创建逻辑分区,输入创建一个逻辑分区
注意,这里创建逻辑分区时,起始位置和截止位置必须在拓展分区内,它不是相对于拓展分区的起始位置
最后输入quit
命令退出parted
分区
3、分区创建好了,接下来就是格式化分区与挂载了,
注:我这里创建了三个分区:主分区/dev/sdb1
、拓展分区/dev/sdb2
、逻辑分区/dev/sdb5
,读者需要根据自己的真实情况来。
现在我们挂载分区,首先格式化分区,为分区创建文件系统,一般常用的有ext4和xfs两种:
注意:格式化会丢失分区里面的所有数据,所以请注意备份
# ext4是Linux中最常用的文件系统之一,它是ext文件系统的进化版本。它是许多Linux发行版的默认文件系统。
# 格式化成ext4文件系统,/dev/sdb1是我的分区名,它可以是主分区,也可以是逻辑分区
sudo mkfs.ext4 /dev/sdb1
sudo mkfs.ext4 /dev/sdb5
# 或者下面两个命令,和上面两个命令是等价的
sudo mkfs -t ext4 /dev/sdb1
sudo mkfs -t ext4 /dev/sdb5
# xfs是一种高性能的日志文件系统,适用于大容量存储和大文件,它具有快速的读写速度、高效的空间管理和稳定的性能,在处理大文件和大型数据集时效果显著。
# 格式化成xfs文件系统,下面两个命令是一样的,/dev/sdb1是我的分区名,它可以是主分区,也可以是逻辑分区
sudo mkfs.xfs /dev/sdb1
sudo mkfs.xfs /dev/sdb5
# 或者下面两个命令,和上面两个命令是等价的
sudo mkfs -t xfs /dev/sdb1
sudo mkfs -t xfs /dev/sdb5
为了演示,我这里对sdb1格式化成ext4文件系统,对sdb5格式化成xfs文件系统,即执行命令:
sudo mkfs.ext4 /dev/sdb1
sudo mkfs.xfs /dev/sdb5
如果我们需要查看一个分区的文件系统时什么类型,可以通过sudo lsblk -f /dev/sdb
命令查看
接着就可以挂载了
# 创建一个目录,目录名随意,建议在/mnt目录下创建
sudo mkdir -p /mnt/sdb1 /mnt/sdb5
# 挂载:mount [分区] [目录]
sudo mount /dev/sdb1 /mnt/sdb1
sudo mount /dev/sdb5 /mnt/sdb5
# 取消挂载
sudo umount /mnt/sdb1
sudo umount /mnt/sdb5
挂载后可以通过df -Th
命令查看挂载情况
到这里,我们就可以正常的访问了
但是为了开机自动挂,我们可以修配置:sudo vi /etc/fstab,在文件末尾加上:
/dev/sdb1 /mnt/sdb1 ext4 defaults 0 1
/dev/sdb5 /mnt/sdb5 xfs defaults 0 1
4、分区创建好了,接下来说说扩容。
所谓扩容,就是重新设置分区的起始扇区与截止扇区。
首先,我们应该要注意到了,上面在创建分区的时候,我们有输入一个起始扇区与截止扇区,这个可以理解为一块连续的区域,这块区域的大小就是分区的大小,而我们存储的数据就在这块分区内部,所以一般的,如果我们分区已经挂载并存储了数据,如果你不想存储的数据丢失,那么我们就必须把起始扇区保存一致,扩大截止扇区。这就引出了另外一个问题,比如文本,我们创建的主分区与拓展分区(逻辑分区)是相接的,也就是说想扩容,我们就必须压缩拓展分区,这个可以采用一些扩容软件进行压缩而释放部分空间来完成,但是本文只是基础介绍,所以我们只是演示一下,为此,我们可以先对逻辑分区进行扩容,扩容演示完成将逻辑分区与拓展分区删除,这样就有空间给我们的主分区了。
逻辑分区扩容
先说说逻辑分区,因为逻辑分区在拓展分区上,所以需要拓展分区有连续空间给到我们,正好我们这里拓展分区总共5G,但是逻辑分区只有2G,还有剩余的3G可供分配。
为了掩饰数据不丢失,我们可以创建一个文件,并输入内容:
# 切换root
sudo su root
# 创建一个log文件
echo aaaaa > /mnt/sdb5/log
# 输出内容
cat /mnt/sdb5/log
fdisk
扩容
使用fdisk进行扩容,我们可以这么做:先删除原来分区,然后创建相同名称的分区,并保持起始扇区不变,并将截止扇区扩大。
使用fdisk命令重新进入分区:sudo fdisk /dev/sdb
parted
扩容
使用parted扩容,我们也可以参照fdisk的做法,先删除再创建。
输入sudo parted /dev/sdb
进入分区
但是parted提供了一个很好用命令:resizepart
,我们进入parted分区后,使用resizepart 5 9GB
来直接改变分区的大小(5是分区编号)
到这里,使用fdisk或者parted进行分区大小调整就完成了,然后重启系统或者使用partprobe命令更新分区表
# 重启系统
sudo reboot
# 或者直接更新分区表
sudo partprobe /dev/sdb
最后调整文件系统:
# 如果是ext4,使用resize2fs命令,后面参数是分区
sudo resize2fs /dev/sdb5
# 如果是xfs,使用xfs_growfs命令,后面参数是挂载点
sudo xfs_growfs /mnt/sdb5
我这里sdb5是xfs文件系统,就是执行sudo xfs_growfs /mnt/sdb5
,但是sdb1是ext4文件系统,就是执行sudo resize2fs /dev/sdb1
然后我们可以查看空间扩容以及文件是否正常了:
主分区扩容
上面逻辑分区扩容完成了,我们现在可以把逻辑分区和拓展分区删除了,留出空间来演示主分区扩容:
首先我们卸载挂载点:sudo umount /mnt/sdb5
fdisk
删除分区
进入分区管理:sudo fdisk /dev/sdb
parted
删除分区
进入分区管理:sudo parted /dev/sdb
到这里,我们就只剩下一个主分区了,我们就可以为我们的主分区进行扩容了,和逻辑分区的操作一样,先删除分区,再创建相同编号、起始扇区的分区,但是截止扇区扩大了,或者用parted
的resizepart
命令来调整大小,注意不要移除文件系统签名,否则格式化会丢失数据。
总结
这里就写这么多吧,个人经验总结,也当是留个笔记,后面有空再写物理卷、卷组、逻辑卷相关的东西吧。
不过话说回来,一个系统的分区数据管理建议好好规划一下,不然后续如果硬盘不够了,可能会很麻烦,其次,一个很好的习惯就是:常备重要数据!