在CentOS 7系统中,磁盘管理是系统管理员的核心技能之一。fdisk
作为一款经典且强大的分区表操作工具,与UUID(通用唯一识别码)的结合使用,构成了现代Linux系统中稳定、可靠的磁盘管理基础,理解它们之间的关系和工作原理,对于确保数据安全和系统稳定性至关重要。
认识 fdisk
:磁盘分区的利器
fdisk
是一个基于命令行的交互式分区表操作工具,主要用于MBR(主引导记录)和GPT(GUID分区表)格式的磁盘分区,在CentOS 7中,它几乎是默认安装的,是进行磁盘分区查看、创建、删除等操作的首选工具之一。
要查看当前系统连接的所有磁盘及其分区结构,最常用的命令是:
sudo fdisk -l
执行该命令后,系统会列出类似以下的详细信息:
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 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: 0x000a8b56
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 41943039 20765696 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
...
从输出中,我们可以清晰地看到每块磁盘(如/dev/sda
、/dev/sdb
)的大小、扇区信息以及其上的分区列表,每个分区都有对应的设备名(如/dev/sda1
)、启动标志、起始和结束扇区、大小以及分区ID和系统类型(如83
代表Linux,8e
代表Linux LVM),通过fdisk /dev/sdb
进入交互模式后,可以使用n
创建新分区,d
删除分区,t
更改分区类型,最后用w
保存更改并退出。
UUID:为分区赋予不变的“身份证”
尽管/dev/sda1
这样的设备名非常直观,但它存在一个致命的缺陷:不稳定性,当您添加或移除硬盘,甚至在某些内核更新后,设备名可能会发生变化,原本的/dev/sdb
可能在重启后变成了/dev/sdc
,如果系统配置文件(如/etc/fstab
)中使用了设备名来挂载分区,那么这种变化将导致分区挂载失败,系统可能出现严重错误。
为了解决这个问题,Linux引入了UUID,UUID是一个128位的数字,通常表示为32个十六进制数字,以连字符分隔(f0b7b8e1-5e2c-4a0d-8f7a-6b9c0d3e2f1a
),它的最大特点是“全局唯一性”,在创建文件系统时生成,并作为该文件系统的一个永久属性,除非重新格式化,否则UUID不会改变。
获取分区的UUID非常简单,最常用的命令是blkid
(Block ID):
sudo blkid /dev/sda1
输出结果如下:
/dev/sda1: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="ext4" PARTUUID="..."
这里清晰地显示了/dev/sda1
分区的UUID和文件系统类型,使用ls -l /dev/disk/by-uuid/
命令也可以看到UUID到设备文件的符号链接。
实践:在 /etc/fstab
中使用UUID
/etc/fstab
文件是CentOS 7及其他Linux系统用于定义静态文件系统信息的核心配置文件,系统启动时会读取此文件,自动挂载其中定义的分区,使用UUID代替设备名是最佳实践。
下面是一个对比表格,清晰地展示了两种方法的优劣:
方法 | 示例 | 优点 | 缺点 |
---|---|---|---|
设备名 | /dev/sdb1 /data ext4 defaults 0 0 | 简单直观,易于记忆。 | 不稳定,可能因硬件变动而改变,导致挂载失败。 |
UUID | UUID="x1y2z3a4-b5c6-d7e8-f9g0-h1i2j3k4l5m6" /data ext4 defaults 0 0 | 极其稳定,唯一标识文件系统,不受设备名变化影响。 | 字符串较长,不易记忆和手动输入。 |
通过blkid
获取到新分区的UUID后,编辑/etc/fstab
文件,将新分区的挂载信息添加进去,要将一个新分区挂载到/data
目录:
- 使用
fdisk
创建分区(如/dev/sdb1
)。 - 格式化分区,
sudo mkfs.ext4 /dev/sdb1
。 - 创建挂载点
sudo mkdir /data
。 - 获取UUID
sudo blkid /dev/sdb1
。 - 将类似
UUID="..." /data ext4 defaults 0 0
的行添加到/etc/fstab
。 - 执行
sudo mount -a
来测试配置,若无错误则说明配置成功。
相关问答FAQs
解答:这取决于您是否已经保存了更改,在fdisk
的交互式界面中,所有的操作(如创建、删除分区)都仅在内存中暂存,如果您在退出前输入 w
并回车,更改将被写入磁盘分区表,此时无法通过fdisk
本身撤销,如果您想放弃所有更改,只需输入 q
并回车即可安全退出,不会对磁盘做任何修改,一旦更改已写入,唯一的“撤销”方法就是重新进行分区规划,但这会伴随着数据丢失的风险,因此操作前务必谨慎并备份重要数据。
问题2:UUID和PARTUUID有什么区别?
解答:UUID和PARTUUID都是唯一标识符,但它们针对的对象不同,UUID(文件系统UUID)是格式化分区时由文件系统工具(如mkfs.ext4
)生成的,它标识的是分区上的文件系统,而PARTUUID(分区UUID)是由分区表管理工具(如fdisk
或parted
)在创建分区时生成的,它标识的是分区本身,是GPT分区表的一个属性,即使分区上的文件系统被重新格式化,PARTUUID通常保持不变,而UUID则会改变,在/etc/fstab
中,我们通常使用UUID来挂载文件系统,因为它更直接地与我们要访问的数据相关。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复