linux磁盘分区是将物理硬盘划分为多个逻辑区域以方便管理,主要使用fdisk和parted两个工具。1. fdisk适用于mbr分区表,支持小于2tb的磁盘,最多4个主分区;2. parted支持mbr和gpt分区表,适合大于2tb的磁盘,支持更多分区。分区完成后需格式化并挂载:1. 使用mkfs命令选择文件系统(如ext4、xfs、btrfs等)进行格式化;2. 通过mount命令临时挂载或编辑/etc/fstab文件实现永久挂载。合理分区可提升数据安全、系统稳定性及管理效率。
Linux磁盘分区,简单来说,就是把一块物理硬盘划分为一个或多个逻辑区域,方便管理和使用。在Linux世界里,我们通常会用到两个核心工具来完成这项任务:
fdisk和
parted。前者更传统,主要用于MBR分区表;后者则更为现代,能处理MBR和GPT分区表,尤其在处理大容量硬盘时显得更为灵活和强大。正确的分区策略,不仅关乎系统性能,更影响数据安全与管理便利性。
进行Linux磁盘分区,无论是使用
fdisk还是
parted,核心步骤都围绕着识别磁盘、创建分区、写入更改这几步。这里我们分别介绍这两种工具的典型用法,并提醒,任何分区操作都可能导致数据丢失,请务必提前备份重要数据!
使用 fdisk
进行分区 (主要针对MBR分区表)
fdisk是一个基于命令行的交互式工具,适用于小于2TB的磁盘,并且通常用于MBR(Master Boot Record)分区表。
识别目标磁盘: 首先,你需要知道你要分区的磁盘设备名,例如
/dev/sda、
/dev/sdb等。可以使用
lsblk或
fdisk -l命令来查看当前系统中的磁盘及其分区情况。
lsblk # 或者 sudo fdisk -l
找到你想要操作的磁盘,例如
/dev/sdb。
进入 fdisk
交互模式:
sudo fdisk /dev/sdb
进入后,你会看到
Command (m for help):的提示。
查看当前分区表 (可选): 输入
p,然后回车,可以打印出当前磁盘的分区表信息。这有助于确认磁盘状态。
删除现有分区 (如果需要): 如果你想重新分区,可能需要先删除旧分区。输入
d,然后回车,会提示你选择要删除的分区号。重复此步骤直到所有旧分区被删除。
创建新分区: 输入
n,然后回车。
p代表主分区 (primary),
e代表扩展分区 (extended)。一个MBR磁盘最多只能有4个主分区,或者3个主分区加1个扩展分区。如果你需要更多分区,就必须创建扩展分区,然后在扩展分区内创建逻辑分区。
+大小单位,例如
+10G表示创建10GB的分区,
+512M表示512MB。如果你想使用所有剩余空间,直接回车即可。 重复此步骤以创建所需的所有分区。
更改分区类型 (可选): 输入
t,然后回车,选择分区号,再输入对应的十六进制代码来更改分区类型。例如,
83代表 Linux 文件系统,
82代表 Linux swap。
写入更改并退出:这是最关键的一步。 在你确认所有分区设置无误后,输入
w,然后回车。
fdisk会将你的更改写入磁盘的分区表。一旦写入,这些更改就生效了,并且是不可逆的。 如果你想放弃所有更改,不写入磁盘,则输入
q。
通知内核更新分区表: 有时,系统内核不会立即识别新的分区表。你可以尝试运行
sudo partprobe命令,或者直接重启系统来确保新分区被识别。
使用 parted
进行分区 (支持MBR和GPT分区表)
parted是一个更强大的分区工具,它支持GPT(GUID Partition Table),这使得它能够处理大于2TB的磁盘,并且在GPT下可以创建更多的分区。
识别目标磁盘: 同
fdisk,使用
lsblk或
sudo parted -l来确认目标磁盘。
进入 parted
交互模式:
sudo parted /dev/sdb
设置分区表类型: 在进行任何分区操作之前,建议先设置分区表类型。
mklabel gpt
mklabel msdos注意: 这会清除磁盘上现有的所有分区和数据!
查看当前分区表 (可选): 输入
创建新分区: 输入
mkpart,然后回车。
primary(主分区)。
parted记录,实际格式化需另行操作):例如
ext4、
xfs。
1MiB(推荐从1MiB开始,为SSD对齐或GPT头预留空间)。
10GB或
100%(表示使用所有剩余空间)。 示例:
mkpart primary ext4 1MiB 10GB(创建一个10GB的ext4主分区)
mkpart primary 10GB 100%(创建一个从10GB开始到磁盘末尾的主分区)
删除分区 (如果需要): 输入
rm,然后输入要删除的分区号。
调整分区大小 (可选): 输入
resizepart,然后输入分区号,再输入新的结束位置。注意: 调整已使用分区的大小通常需要先卸载分区,且文件系统本身也需要支持在线或离线调整。
退出 parted
:
输入
quit,
parted会自动保存并退出。
通知内核更新分区表: 同
fdisk,运行
sudo partprobe或重启系统。
说实话,这其实是个老生常谈的问题,但它的重要性怎么强调都不为过。对Linux磁盘进行分区,远不止是为了把硬盘空间切开那么简单,它背后蕴含着系统管理、数据安全、性能优化等诸多考量。在我看来,这就像是你建造一栋房子,不是简单地堆砌砖块,而是要规划好卧室、厨房、客厅、卫生间,各司其职,互不干扰。
分区的好处:
/var分区(通常存放日志文件、Web服务器数据等)因为某个应用日志失控而迅速填满,整个根分区
/也会因此而满,导致系统崩溃或无法启动。但如果
/var是一个独立分区,那么即使它满了,根分区和其他关键分区依然可以正常运行,大大降低了系统崩溃的风险。
/home分区的数据,而无需备份整个操作系统,这既节省了时间,也减少了存储空间。系统损坏时,也只需重新安装系统分区,而用户数据得以保留。
例如,你可能希望 /tmp分区使用
tmpfs这种基于内存的文件系统来提高临时文件读写速度,或者将数据库文件放在
xfs分区上以获得更好的大文件I/O性能。分区允许你为不同用途的数据选择最合适的文件系统。
noexec(不允许执行程序)或
nodev(不允许设备文件),这对于
/tmp或
/var/tmp这样的分区来说,能有效防止恶意代码的执行,提升系统安全性。
常见分区场景:
/(根分区):存放操作系统核心文件和程序。
/boot:存放引导加载器和内核文件(尤其在使用UEFI引导时,通常需要一个独立的EFI系统分区,即ESP)。
/home:存放用户的主目录,用户数据。
/var:存放经常变化的数据,如日志、邮件、Web服务器数据等。
/tmp:存放临时文件。
/opt:存放第三方应用程序。
swap:交换空间,作为物理内存的补充。
/和
/home,有时也会有独立的
swap分区。
/data或
/mnt/backup。
在我看来,分区策略没有绝对的“最佳实践”,只有最适合你需求的方案。它需要你对系统未来的用途、数据增长趋势、以及潜在的风险有一个大致的预判。
在Linux世界里,
fdisk和
parted就像是两位各有专长的“工匠”,都负责磁盘分区,但使用的工具和处理的材料却有所不同。理解它们的区别,能帮助你选择最合适的工具来完成任务。
fdisk
:传统与MBR的守护者
fdisk是一个历史悠久、基于文本界面的分区工具,它主要设计用于管理 MBR (Master Boot Record) 分区表。
n创建、
d删除、
w写入)来操作。
fdisk简单直接。
parted
:现代与GPT的拥抱者
parted是一个更现代、功能更强大的分区工具。它不仅支持MBR分区表,更重要的是,它原生支持 GPT (GUID Partition Table) 分区表。
parted也是交互式的,但其命令更接近自然语言(如
mklabel、
mkpart、
rm)。它还支持在非交互模式下运行,这使得它更适合脚本自动化。
parted还能进行一些
fdisk无法完成的操作,比如在线调整分区大小(虽然这通常需要文件系统工具的配合,并且对于已挂载的分区仍需谨慎)。
parted和 GPT,这更符合现代硬件和系统的趋势。
总结选择:
简单来说,如果你处理的是老旧系统、小容量硬盘,或者明确需要MBR分区表,
fdisk仍然是可行的选择。但如果你面对的是新硬件、大容量硬盘,或者需要利用UEFI的特性,那么
parted结合GPT分区表无疑是更明智、更未来的选择。在实际工作中,我发现大部分新的部署都会选择
parted。
分区完成,这只是万里长征的第一步。分区本身只是划分出了一块未经组织的原始空间,就像你把一块地圈了起来,但里面还是荒芜一片。要让这块地真正能种庄稼、盖房子,你就需要对其进行“耕耘”——也就是格式化,然后才能“住进去”——也就是挂载。
1. 格式化:赋予分区生命
格式化(或称创建文件系统)是让操作系统能够识别并管理分区内数据的前提。不同的文件系统有不同的特性,适用于不同的场景。
创建文件系统: 使用
mkfs系列命令。
ext4(第四代扩展文件系统): 这是Linux中最常用、最成熟、最稳定的文件系统之一。它适合大多数通用场景,包括根分区、用户主目录、以及大多数数据分区。
sudo mkfs.ext4 /dev/sdb1 # 假设 /dev/sdb1 是你刚分好的区
xfs: 高性能日志文件系统,特别适合处理大文件、大目录以及高并发的I/O操作。常用于
/var(日志、数据库)、
/home(用户数据)、以及存储服务器。
sudo mkfs.xfs /dev/sdb2
Btrfs(B-tree文件系统): 提供了许多高级特性,如写时复制(CoW)、快照、多设备管理(RAID)、数据校验、透明压缩等。功能强大,但相对复杂,在生产环境使用需要更深入的理解。
sudo mkfs.btrfs /dev/sdb3
swap(交换分区): 专门用于作为虚拟内存,不存储常规文件。
sudo mkswap /dev/sdb4
激活交换分区:
sudo swapon /dev/sdb4
选择文件系统的考量:
2. 挂载:让分区可访问
格式化后的分区,就像一块准备好的地,但操作系统还不知道怎么去“访问”它。挂载就是将这个分区连接到文件系统树中的某个特定目录(挂载点),使其内容变得可访问。
临时挂载: 你可以创建一个目录作为挂载点,然后手动挂载。
sudo mkdir /mnt/mydata sudo mount /dev/sdb1 /mnt/mydata
这样,
/dev/sdb1的内容就会在
/mnt/mydata目录下显示。这种挂载方式在系统重启后会失效。
永久挂载: 要实现开机自动挂载,你需要编辑
/etc/fstab文件。这是Linux系统启动时读取的配置文件,它定义了哪些文件系统应该被挂载,以及它们挂载到哪里。
编辑 /etc/fstab
的关键信息:
在编辑
/etc/fstab之前,强烈建议使用分区的 UUID (Universally Unique Identifier) 来代替设备名(如
/dev/sdb1)。设备名在系统启动时可能会发生变化(例如,插入新的硬盘后,
/dev/sdb1可能变成
/dev/sdc1),而UUID是固定不变的,这能确保系统正确地挂载分区。
获取分区的UUID:
sudo blkid /dev/sdb1 # 或者 lsblk -f
你会看到类似
UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"的输出。
**`/