linux 使用fdisk分区扩容

本文介绍如何使用fdisk工具进行磁盘分区管理,包括查看当前分区信息、创建及挂载新分区,并演示了对现有磁盘剩余空间及新增磁盘的操作流程。

概述  

我们管理的服务器可能会随着业务量的不断增长造成磁盘空间不足的情况,在这个时候我们就需要增加磁盘空间,本章主要介绍如何使用fdisk分区工具创建磁盘分区和挂载分区,介绍两种情况一种是对原有的磁盘的剩余空间增加分区,第二种是对新添加的磁盘进行分区操作。

 

扩展空间

复制代码
fdisk: invalid option -- '-'

Usage:
 fdisk [options] <disk>    change partition table
 fdisk [options] -l <disk> list partition table(s)
 fdisk -s <partition>      give partition size(s) in blocks

Options:
 -b <size>                 sector size (512, 1024, 2048 or 4096)
 -c                        switch off DOS-compatible mode
 -h                        print help
 -u <size>                 give sizes in sectors instead of cylinders
 -v                        print version
 -C <number>               specify the number of cylinders
 -H <number>               specify the number of heads
 -S <number>               specify the number of sectors per track
复制代码

 

查看当前分区信息

fdisk -l

 上图的红色标记显示当前sda总共有3916个柱面,而目前只使用了2611个柱面,现在就将剩下的柱面创建分区。

创建分区

使用:fdisk 磁盘文件

fdisk /dev/sda

 1.输入m查看帮助。

 

复制代码
a :设置可引导标记
b :修改bsd的磁盘标签
c :设置DOS操作系统兼容标记
d :删除一个分区
l :显示已知的分区类型,其中82为Linux swap分区,83为Linux分区
m :显示帮助信息
n :增加一个新的分区
o :创建一个新的空白的DOS分区表
p :显示磁盘当前的分区表
q :退出fdisk程序,不保存任何修改
s :创建一个新的空白的Sun磁盘标签
t :改变一个分区的系统号码(比如把Linux Swap分区改为Linux分区)
u :改变显示记录单位
v :对磁盘分区表进行验证
w :保存修改结果并退出fdisk程序
x :特殊功能
复制代码

2.输入n创建分区

询问我们是要创建主分区还是扩展分区,主分区最多只能创建4个,如果创建了扩展分区那么扩展分区需要占用一个主分区。

这里我们创建扩展分区,输入e

需要我们输入起始柱面,默认是2611开始,这里可以输入2611也可以直接enter。

最后输入3916,这样就创建好了扩展分区。

3.创建逻辑分区

输入p,查看分区创建情况

 可以发现sda4的文件系统类型是扩展分区,扩展分区是无法使用的,必须在扩展分区的基础上创建逻辑分区

输入n创建逻辑分区,因为这里只剩下刚才创建的逻辑分区需要创建,所以不需要选择输入开始和结束柱面即可。

 再输入p显示所有分区,可以看到创建了sda5这个逻辑分区

4.输入w保存

当然刚才也可以直接创建主分区,不创建逻辑分区。

5.格式化逻辑分区

如果是使用虚拟机,需要重启才可以对分区进行格式化,否则会提示找不到分区文件。

mkfs -t ext3 /dev/sda5

6.挂载分区

先创建分区挂载的文件夹

mkdir /newpar

将sda5挂载到/newpar文件下

mount /dev/sda5 /newpar

7.查看挂载情况

df -h

 这个挂载只是临时的,重启服务器之后又需要重新挂载,通过修改/etc/fstab文件使挂载永久有效

8.永久挂载

在编写的时候可以使用tab键写下一项。

概念

通过前面的预热,现在来讲概念理解起来会容易一点。

磁盘

在linux系统中所有的设备都会以文件的形式存储。设备一般保存在/dev目录下面,以sda、sda1、sda2 ...,sdb、sdb1...,hda,hdb。现在的设备一般都是sd命名,以前的很老的硬盘是以ha命名。

sda:第一块硬盘,如果对磁盘进行了分区会有sda1(第一个分区),sda2等。

sdb:第二个硬盘,同样对硬盘分区后有sdb1,sdb2等。

分区

分区的目的就是便于管理,比如在windows系统我们一般会分C盘,D盘,E盘等。

在讲主分区和扩展分区前先看张图片。

 这是我的当前windows系统的分区情况,从这里可以很好的理解主分区和扩展分区的概念,同时也有柱面的概念,当前主分区是C盘,扩展分区包括D盘、E盘、F盘。同时D盘、E盘、F盘也叫逻辑分区。

其实我们也可以不创建扩展分区,在windows里面如果不创建扩展分区的话对程序的管理会不方便,只有一个分区。但是在linux中如果刚才在创建分区的是有留言会发现linux只能创建4个主分区,如果需要创建更多的分区那么久必须创建逻辑分区,其中逻辑分区需要占用一个主分区。

文件系统

linux中的文件系统也就是分区类型,在windows中有NTEF,FAT32等,linux中常见的有Ext2、Ext3、Ext4、Linux swap、proc、sysfs、tmpfs等,可以通过mount命名查看当前已挂载的文件系统。

格式化

在前面创建完分区后有一步是要对分区进行格式化,其实在windows系统中也是一样,在创建好一个分区后也需要将分区格式化,只有格式化成具体的文件类型才能使用。

挂载

在windows中分区格式化后就可以使用,但是在linux系统中必须将分区挂载到具体的路径下才可以。

 

接下来演示增加一个新磁盘的完整过程。 

新增硬盘

 在当前虚拟机中增加一块20G的硬盘

1.使用fdisk -l查询当前系统分区情况

 可以看到新增加的sdb磁盘还没有分区

2.创建主分区

fdisk /dev/sdb

输入n

在输入结束柱面的这里如果你不知道该输入多大的数字,你可以输入+然后输入你要设的大小。这里我设置5G的主分区。

输入p查看分区信息,可以看到刚创建的sdb1主分区,接下来创建逻辑分区。

3.创建扩展分区

图片上通过红色标注了操作步骤。可以看到当前已创建了sdb2扩展分区,柱面从655-2610,即将剩下的所有空间创建为扩展分区。

4.创建逻辑分区

 总共创建了两个逻辑分区,逻辑分区默认从5开始,第一个逻辑分区大小2G,用来做交换分区用,剩下全部给sdb6.

5.修改文件类型ID

因为默认分区id都是83即linux文件类型,现在将sdb5的文件类型ID改成82即交换分区。

6.保存退出

 

7.格式化分区

接下来要对sdb的每一个分区进行格式化,

注意:扩展分区不需要进行格式

输入mkfs.ext3 /dev/sdb1

swap分区格式化要使用

mkswap /dev/sdb5

加载文件
swapon /dev/sdb5

查看是否生效
swapon -s

可以看到sda3,和sdb5这两个swap分区

 8.挂载分区

 这里直接使用修改文件的方式永久挂载

创建挂载文件路径
mkdir sdb1 sdb6

9.立即生效

partprobe 

在我的虚拟机上面无法立即生效,重启机器。

shutdown -r now

 

 重启之后会发现,sdb1,sdb6都已经生效了,而且swap也变成了6G(sda3+sdb5)

 

补充

格式化分区还可以使用带参数的mke2fs命令

复制代码
mke2fs [-c|-l filename] [-b block-size] [-f fragment-size]
    [-i bytes-per-inode] [-I inode-size] [-J journal-options]
    [-G meta group size] [-N number-of-inodes]
    [-m reserved-blocks-percentage] [-o creator-os]
    [-g blocks-per-group] [-L volume-label] [-M last-mounted-directory]
    [-O feature[,...]] [-r fs-revision] [-E extended-option[,...]]
    [-T fs-type] [-U UUID] [-jnqvFKSV] device [blocks-count]
复制代码
复制代码
-b:指定区块大小,单位为字节。
-c:检查是否有损坏的区块。
-f:指定不连续区段的大小,单位为字节。
-F:不管指定的设备为何,强制执行mke2fs。
-i:指定"字节/inode"的比例。
-N:指定要建立的inode数目。
-l:从指定的文件中,读取文件西中损坏区块的信息。
-L:设置文件系统的标签名称。
-m:指定给管理员保留区块的比例,预设为5%-M:记录最后一次挂入的目录。
-q:执行时不显示任何信息。
-r:指定要建立的ext2文件系统版本。
-R:设置磁盘阵列参数。
-S:仅写入superblock与group descriptors,而不更改inode able inode bitmap以及block bitmap。
-v:执行时显示详细信息。
-V:显示版本信息。
-T:指定文件系统类型
复制代码

 dumpe2fs命令

查看分区的详细信息
dumpe2fs /dev/sdb1

图中只截取了一部分信息,该命令可以查看指定分区的详细信息,很详细。

 

总结

现在的文件系统建议使用ext4,上面只是测试使用ext3,生产环境还行使用逻辑卷比较好。

 

<think> 首先,用户的问题是关于“使用fdisk工具进行分区扩容的方法”。我需要基于提供的引用内容来构建一个结构清晰的回答。引用包括: - 引用[1]:提到在Linux使用fdisk扩展分区容量,适用于磁盘空间不足时,如共享文件服务器或分区不当的情况。 - 引用[2]:来自Ubuntu,描述了fdisk磁盘分区、挂载和扩容逻辑卷的步骤。 - 引用[3]:是一个转载的链接,内容类似于引用[1],提供Linux使用fdisk扩展分区的信息。 用户的问题具体是:“我想查找使用fdisk工具进行分区扩容的方法 请问使用fdisk进行分区扩容的方法”。所以,我需要专注于使用fdisk进行分区扩容的步骤。 现在,回顾系统级指令: - 所有行内数学表达式必须使用$...$格式,但在这个上下文中,可能没有数学表达式,所以我可以忽略。 - 独立公式使用$$...$$格式,但同样,这里可能不适用。 - LaTeX语法正确:确保任何数学部分正确,但这里主要是文本。 - 使用中文回答:整个回答要用中文。 - 生成相关问题:在回答末尾添加相关问题。 - 回答中引用的段落末尾自然地添加引用标识,如[^1]。引用的内容来自提供的引用[1]、[^2]、[^3],所以我需要适当地引用它们。 用户可见层指令:回答结构清晰,帮助用户逐步解决问题,保证回答真实可靠。 结构应该包括: 1. 介绍:简要解释fdisk是什么以及为什么需要分区扩容。 2. 步骤:详细描述使用fdisk进行分区扩容的步骤。基于引用[2],因为它有具体的步骤。 - 引用[2]提到:查看磁盘分区信息、分区、强制系统重新读取分区、格式化分区、创建挂载目录、设置开机自动挂载、验证并挂载、异常处理。 但用户的问题是“分区扩容”,这可能涉及调整现有分区的大小,而不是创建新分区。引用[1]和[3]提到“扩展分区容量”,但fdisk本身不是用于动态调整分区大小的工具;它更适合创建、删除分区。对于调整大小,通常使用像resize2fs或LVM的工具,但引用中提到了fdisk。 回顾引用: - 引用[1]:"在 Linux使用 fdisk 扩展分区容量。" - 引用[2]:"Ubuntu中fdisk磁盘分区并挂载、扩容逻辑卷"。它描述了分区和挂载,然后扩容逻辑卷,但逻辑卷管理(LVM)是另一个东西。 引用[2]的标题是“扩容逻辑卷”,但在步骤中是分区和挂载,然后提到扩容逻辑卷。所以,可能fdisk用于创建分区,然后LVM用于扩容。 用户的问题是“使用fdisk进行分区扩容”,但fdisk本身不能直接扩容分区;它需要分区被删除并重新创建,或者使用其他工具。在Linux中,扩展分区通常涉及: - 如果有未分配空间,可以调整分区大小。 - 标准工具如fdisk可以用于删除和重新创建分区,但数据会丢失,除非使用支持在线调整的工具。 在引用[2]中,它说“扩容逻辑卷”,意思是使用LVM来扩容,而不是fdisk直接扩容分区。 引用[1]说:“使用fdisk分区工具来动态调整分区的大小”,但这可能不准确,因为fdisk不是动态的;它需要卸载分区。 为了真实可靠,我应该基于标准知识:在Linux中,使用fdisk扩展分区通常涉及: 1. 备份数据(重要!)。 2. 使用fdisk删除现有分区(这会删除数据)。 3. 创建新分区更大的大小。 4. 格式化新分区。 5. 恢复数据。 或者,如果使用LVM,可以动态调整。 但引用[2]提到“扩容逻辑卷”,所以可能用户指的是扩展逻辑卷,但问题说“分区扩容”。 看用户问题:“使用fdisk工具进行分区扩容的方法”。在引用[1]和[3]中,它说“使用fdisk扩展分区容量”,但实际步骤可能包括fdisk来操作分区表。 为了回答,我将基于引用[2]的步骤,因为它更详细。 步骤从引用[2]: - 1.查看磁盘分区信息 - 2.分区使用fdisk) - 3.强制系统重新读取分区使用partprobe或类似) - 4.格式化分区 - 5.创建挂载目录 - 6.设置开机自动挂载(编辑/etc/fstab) - 7.验证并自动挂载 - 8.异常情况处理 然后,对于扩容逻辑卷,它有另一个部分。 但用户的问题聚焦在“分区扩容”,所以我会专注在扩展分区大小的部分。 在fdisk中,扩展分区大小通常不是直接的;你可能需要删除并重新创建分区。所以,在回答中,我需要解释这个过程,并强调数据丢失的风险。 结构回答: - **介绍**:解释fdisk分区扩容的概念。 - **前提条件**:备份数据,确保有未分配空间。 - **步骤**: 1. 查看当前磁盘分区使用 `fdisk -l`。 2. 启动fdisk:`sudo fdisk /dev/sdX`(X是磁盘)。 3. 删除现有分区(注意:这会导致数据丢失)。 4. 创建新分区,指定更大的大小。 5. 写入更改。 6. 强制重新读取分区表:`partprobe`。 7. 格式化新分区(如果扩展,可能需要调整文件系统大小,但fdisk后通常需要格式化)。 8. 挂载分区。 - **警告**:删除分区会丢失数据,所以建议使用LVM或其他工具进行无损调整。 基于引用,我可以引用相关部分。 最后,生成相关问题。 回答用中文。 添加引用标识:例如,在提到扩展分区时,添加[^1]。 完整回答结构: 1. 开头:回应用户问题。 2. 步骤分解。 3. 结尾:总结或注意事项。 4. 相关问题。 现在,草拟内容。 </think> ### 使用fdisk进行分区扩容的方法 在Linux系统中,`fdisk`是一个命令行磁盘分区工具,常用于创建、删除或调整分区。但需要注意:**`fdisk`本身不能直接“无损”扩展分区大小**。它通过删除现有分区并重新创建更大的分区来实现扩容,这会导致原始分区上的数据丢失。因此,在操作前必须备份所有重要数据。如果需无损扩容(如保留数据),建议使用逻辑卷管理(LVM)或工具如`resize2fs`(适用于ext文件系统)[^1][^2][^3]。以下是基于Ubuntu或常见Linux发行版的步骤指南(假设磁盘有未分配空间或通过添加新硬盘获得额外空间)。 #### 前提条件 - **备份数据**:操作前务必备份分区中的所有数据(例如使用`rsync`或`dd`命令),因为删除分区会清除数据[^1][^3]。 - **未分配空间**:确保磁盘末尾有足够的未分配空间(可通过添加新硬盘或缩小其他分区获得)。使用`fdisk -l`查看当前分区布局。 - **系统环境**:操作需root权限(使用`sudo`)。推荐在Live CD/USB环境下执行,以避免挂载冲突[^2][^3]。 #### 分区扩容步骤(以`/dev/sda`磁盘和第一个分区`/dev/sda1`为例) 以下步骤将删除现有分区并重新创建更大的分区。**警告:此过程会丢失数据!** 确保已备份。 1. **查看当前磁盘分区信息** 使用`fdisk -l`列出所有磁盘和分区,确认目标分区和未分配空间大小。 ```bash sudo fdisk -l ``` 输出示例: ``` Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors ... Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 2099199 2097152 1G 83 Linux /dev/sda2 2099200 209715199 207616000 99G 5 Extended ``` 这里,`/dev/sda1`当前大小为1GB,我们计划将其扩展到10GB(假设磁盘有足够未分配空间)[^1][^2]。 2. **启动fdisk工具** 针对目标磁盘(如`/dev/sda`)运行fdisk: ```bash sudo fdisk /dev/sda ``` 进入交互模式。 3. **删除现有分区** 在fdisk提示符下: - 输入`d`删除分区。 - 选择要删除的分区号(如`1`)。 这将移除分区,但不会立即生效(需写入更改)[^2][^3]。 4. **创建新分区(更大尺寸)** - 输入`n`创建新分区。 - 选择分区类型(通常选主分区或逻辑分区,保持与原分区一致)。 - 设置起始扇区:**必须与原分区相同**(例如`2048`),以避免启动问题。 - 设置结束扇区:输入新大小(如`+10G`表示增加10GB,或直接指定扇区号)。 示例: ``` Command (m for help): n Partition type: p (primary) First sector (2048-209715199, default 2048): 2048 # 保持原起始扇区 Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-209715199, default 209715199): +10G # 设置新大小 ``` 确保新分区范围覆盖原分区并扩展到未分配空间[^1][^3]。 5. **设置分区类型和标志** - 输入`t`更改分区类型(如原为Linux类型83,需保持一致)。 - 如果分区是启动分区,输入`a`设置可启动标志。 示例: ``` Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 83 # Linux类型 ``` 6. **写入更改并退出** - 输入`w`将更改写入磁盘分区表。 - fdisk将退出并应用更改。 **注意**:写入后,原分区被删除,新分区创建完成[^2][^3]。 7. **强制系统重新读取分区表** 避免重启系统,使用`partprobe`命令: ```bash sudo partprobe /dev/sda ``` 或重启系统以生效。 8. **格式化新分区** 新分区需要格式化(如果原文件系统需保留,此步骤可选,但通常必须格式化): ```bash sudo mkfs.ext4 /dev/sda1 # 以ext4为例 ``` 9. **挂载分区并恢复数据** - 创建挂载目录:`sudo mkdir /mnt/newpart`。 - 挂载分区:`sudo mount /dev/sda1 /mnt/newpart`。 - 恢复备份数据到新分区。 - 设置开机自动挂载:编辑`/etc/fstab`文件,添加条目(例如:`/dev/sda1 /mnt/newpart ext4 defaults 0 0`)[^2]。 10. **验证扩容** 使用`df -h`检查分区大小: ```bash df -h /mnt/newpart ``` 输出应显示新大小(如10GB)。 #### 注意事项和替代方案 - **数据丢失风险**:fdisk删除-重建方法会清除数据,仅适用于新分区或已备份场景。 - **无损扩容推荐**: - 如果使用LVM(逻辑卷管理),扩容更安全:先扩展物理卷(PV),再扩展逻辑卷(LV),最后调整文件系统(如`resize2fs`)[^2][^3]。 - 工具如`gparted`(图形界面)或`parted`支持在线调整某些文件系统大小(需分区未挂载)。 - **异常处理**:如果分区无法挂载,检查`dmesg | grep sda`日志;编辑`/etc/fstab`错误可能导致系统无法启动,需用Live CD修复[^2]。 通过以上步骤,您可以使用fdisk实现分区扩容,但强烈建议优先考虑无损方法以避免数据风险[^1][^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值