Skip to main content

1.分区和文件系统

磁盘分区

在Linux系统中,分区是硬盘被划分成独立区域的一部分,每个分区可以包含文件系统或用于特定的系统用途。分区的目的包括数据隔离、提供更好的性能、系统备份和灾难恢复等。

一块新硬盘要经过的常规流程:物理插入服务器>使用GPT或MBR格式建分区表>新建文件系统(ext, xfs, btrfs等)>将设备挂载到主机具体目录>写入数据

不过存储服务器和云实例的硬盘使用流程和方式还是有些差别的,这里不具体描述了。

分区表格式

  • MBR(Master Boot Record): MBR是一种旧的分区表格式,用于BIOS引导的系统。它支持最多4个主分区或3个主分区和1个扩展分区。
  • GPT(GUID Partition Table): GPT是一种新的分区表格式,用于UEFI引导的系统。它支持更多的分区,提供更大的磁盘容量支持,并提供数据完整性校验,是主流分区格式。

分区表格式区别

GPT(GUID Partition Table)磁盘和MBR(Master Boot Record)磁盘的区别:

  1. 分区数量:
    • MBR: 支持最多4个主分区,或3个主分区和1个扩展分区(扩展分区可以包含多个逻辑分区)。
    • GPT: 支持更多的分区,最多可达128个。
  2. 分区标识:
    • MBR: 使用4个字节(32位)的分区标识来标识分区类型。
    • GPT: 使用64位的分区表项,使用GUID(全局唯一标识符)来标识分区类型,这样能够支持更多的分区类型。
  3. 磁盘容量:
    • MBR: 每个分区表项的最大表示容量为2TB(2^32个扇区,每个扇区为512字节)。对于2TB以下的硬盘容量,MBR是足够的。但超过2TB的磁盘,MBR可能无法正确处理。
    • GPT: 每个分区表项的最大表示容量为18.8EB(2^64个扇区,每个扇区为512字节)。支持超过2TB的磁盘。
  4. 启动方式:
    • MBR: 使用主引导记录(Master Boot Record)来启动操作系统。
    • GPT: 需要UEFI(统一扩展固件接口)来启动操作系统。
  5. 兼容性:
    • MBR: 在较老的计算机系统上有更好的兼容性。
    • GPT: 适用于较新的UEFI系统,提供更先进的功能和性能。

其他内容

MBR(Master Boot Record):

  • MBR使用16字节(128位)来记录一个分区的信息。
  • MBR的分区表项中,4个字段分别记录分区的起始扇区、分区的扇区数量、分区类型和引导标志。
  • MBR分区表最多包含4个分区表项,每个表项占用16字节。因此,MBR的整个分区表大小为4 * 16字节 = 64字节。

GPT(GUID Partition Table):

  • GPT使用64字节来记录一个分区的信息。
  • GPT的分区表项中包含许多字段,如分区的GUID、分区的起始和结束位置、分区名称等。
  • GPT分区表的大小取决于分区数量,但每个分区表项的大小是64字节。

那GPT分区表是不是可以无限大?

虽然GPT(GUID Partition Table)理论上支持极大的分区容量,但由于实际硬件和操作系统的限制,GPT分区表并不是真的可以无限大。

GPT使用64位的分区项来表示分区的大小,最大值为18.8EB(艾字节,1EB = 1024PB)。这在当前技术水平下几乎是无穷大的容量,超过了当前硬盘技术的极限。实际上,目前市面上常见的硬盘容量远未达到GPT分区表的上限。

主分区(Primary Partition)

主分区可以马上被使用但不能再分区。扩展分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么由扩充分区再分下去的是就是 逻辑分区 (logical partion),况且 逻辑分区没有数量上限制 。MBR分区表最多支持4个主分区。每个主分区都是一个独立的数据容器。

Linux 规定了 主分区 (或者扩展分区)占用 1 至 16 号码中的 前 4 个号码 。以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 sda1、sda2、sda3、sda4,而逻辑分区占用了 sda5 到 sda16 等 12 个号码。

扩展分区(Extended Partition)和 逻辑分区(Logical Partition)

一个扇区是512字节,其中有64个字节存储的是分区表,一条分区信息占16个字节,因此磁盘最多只能分四个分区,这时候就有了扩展分区。扩展分区可以包含多个逻辑分区,允许克服MBR的主分区限制。

逻辑分区是可以进行格式化的。扩展分区把逻辑分区的分区信息在扩展分区中找了一个位置给存起来。假如说p4扩展分区划分了三个逻辑分区那么第1个逻辑分区命名为sda5、第2个为sda6、第3个sda7,以此类推。一个磁盘被分为四个分区,第四个分区被设置为扩展分区,第一个逻辑分区为sda5。总结一下,就是不论磁盘有几个主分区,第一个逻辑分区一定是从sda5开始。

分区工具

常用的工具有:

  • fdisk
  • parted

fdisk

  • 用于创建、删除和管理分区。

显示分区表信息

这会列出系统上所有磁盘的分区表信息,包括分区类型、起始扇区、结束扇区等。

fdisk -l

新建磁盘分区

#打开磁盘进行分区操作
fdisk /dev/sdX #将 /dev/sdX 替换为实际的磁盘标识符,例如 /dev/sda。

# 列出现有分区,在 fdisk 命令提示符下,输入 p:
Command (m for help): p

#创建新分区
在 fdisk 命令提示符下,输入 n:
Command (m for help): n
#然后选择是创建主分区 (p) 还是逻辑分区 (l)。接着按照提示输入分区号、起始扇区和结束扇区。

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

修改分区类型

Command (m for help): t
#然后选择要修改的分区号,并输入新的分区类型代码。

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

查看帮助信息

Command (m for help): m

parted

  • 是一个强大的磁盘分区管理工具,提供了比 fdisk 更丰富的功能,包括支持 GPT 分区表、在线调整分区大小等。
  • 支持的文件系统类型包括 ext2、ext3、ext4、fat16、fat32、hfs、hfs+、jfs、linux-swap、ntfs、reiserfs、ufs 等

列出现有分区

#打开磁盘进行分区操作
parted /dev/sdX

#在 parted 命令提示符下,输入 print:
(parted) print

新建磁盘分区

#在 parted 命令提示符下,输入 mkpart:
(parted) mkpart primary ext4 0% 50G

这将创建一个新的主分区,文件系统类型为 ext4,大小为 50GB。可以根据需求更改参数。

删除分区

(parted) rm 1			#删除第一个分区,可以根据需要更改分区号

调整分区大小

(parted) resizepart 1 100%	#这会将第一个分区的大小调整为最大

设置分区标志

(parted) set 1 boot on		#设置第一个分区为启动分区

退出

#退出并保存分区表更改
(parted) quit
  • 对磁盘进行分区操作是一个敏感的任务,请确保你知道你在做什么,并在操作前备份重要的数据。
  • 分区操作需要在超级用户(root)权限下运行,可以使用 sudo
  • 在使用 fdisk /parted 进行分区操作后,可能需要重新启动系统或使用 partprobe 命令来更新内核中的分区表信息。

硬盘分区后,就可以创建文件系统了。

扩展

Swap(交换空间)

是一种在操作系统中用于扩展物理内存的机制。当物理内存(RAM)不足以容纳系统运行所需的数据和程序时,操作系统会将不常用的数据移动到硬盘上的 Swap 空间,以便为当前需要的数据腾出物理内存。Swap 的引入提高了系统的稳定性,防止了由于内存耗尽而导致的系统崩溃或性能下降。

Swap 分区 和 Swap 文件
  • Swap 分区: 在安装操作系统时,可以选择创建一个专门的 Swap 分区。这个分区通常是一个磁盘上的特殊分区,大小可以根据系统需求进行调整。
  • Swap 文件: 也可以在运行时创建一个文件作为 Swap 空间,使得可以在不重新分区的情况下动态调整 Swap 的大小。

启用和禁用

#已有swap的话,如果没有,需要新建一个swap
swapon /dev/sdXn # 启用 Swap
swapoff /dev/sdXn # 禁用 Swap

新建swap文件

#创建一个用于存放 swap 文件的文件
#使用dd命令创建swap交换分区文件/swap,大小为2G:
dd if=/dev/zero of=/swap bs=1M count=2048
#或者使用fallocate
fallocate -l 2G /swap # 2G 是文件大小

#设置文件权限
chmod 600 /swap
#格式化为 swap 文件系统
mkswap /swap
#启用 swap 文件
swapon /swap
#验证 swap 文件是否启用,有相应的文件名输出,说明启用成功
swapon -s
#设为开机自动启用,更新 /etc/fstab 文件:
echo '/swap swap swap defaults 0 0' | sudo tee -a /etc/fstab

新建swap分区

swap分区一般安装系统时设置,下面演示如何在系统已经安装完后设置swap分区。

下面演示操作需要磁盘有未使用的空间,然后新建一块分区,具体新建分区操作查看上面的文档操作,这里不做演示。

#查看当前系统的分区信息
fdisk -l

#选择一个分区进行 swap 设置,比如 /dev/sdXn
fdisk /dev/sdX
  • 使用 n 创建新分区。
  • 选择分区类型为 t,然后选择 82 表示 Linux Swap。
#格式化为 Swap 文件系统:
mkswap /dev/sdXn

#启用新的 Swap 分区:
swapon /dev/sdXn

#设为开机自动启用:
echo '/dev/sdXn swap swap defaults 0 0' | sudo tee -a /etc/fstaba

其他注意点:

安装系统时,分几个区和大小

  • EFI 系统分区(仅适用于 UEFI 引导):100M,以rockylinux为例,系统使用 UEFI 引导,需要一个 EFI 分区。通常 100 MB 的空间足够。
  • /boot 分区:512M,/boot 包含用于启动系统的引导文件。500 MB 的分区大小足够。但在某些情况下,如使用多个内核版本或启用加密时,可能需要更多空间。rockylinux系统中,/boot最小是512M
  • 根分区(/):剩下的空间可以全部分到根分区
  • swap交换分区:1-8G足够了。

安装系统时,一般有EFI, /BOOT和根分区,这3个分区就行了,swap不是必须的。

新增磁盘后不识别磁盘的问题

新增磁盘后lsblk查不到磁盘的解决方法,此法适用于vmware和部分云主机实例添加额外磁盘后,磁盘无法显示的问题

echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

文件系统

是一种用于在硬盘或其他存储设备上组织和存储数据的结构。文件系统负责管理文件和目录的布局,提供对文件的读写和访问权限控制。一般情况下,文件系统会建立在物理卷(如硬盘分区)或逻辑卷上。

常见文件系统

  • Ext4: 是Linux上最常用的文件系统,提供了较高的性能和可靠性。
  • XFS: 用于大型文件系统,支持大文件和高性能。
  • Btrfs: 具有高级功能的文件系统,包括快照、检查和压缩。

创建文件系统命令

  • mkfs: 用于创建文件系统。
mkfs.ext4 /dev/sdX1
#或
mkfs -t ext4 /dev/sdX1

LVM(Logical Volume Manager)

  • 是一种用于管理磁盘存储的软件工具,它提供了更灵活的磁盘空间管理方式。
  • 使用 LVM,可以动态地调整逻辑卷(Logical Volumes)的大小、合并多个物理卷(Physical Volumes)成一个逻辑卷,以及在不中断系统运行的情况下进行磁盘操作。
  • LVM 并不是文件系统。它是一种用于管理磁盘存储的逻辑卷管理器,提供了对物理卷、卷组和逻辑卷的抽象和管理。
  • LVM 允许你在逻辑层面上创建、调整和管理存储卷,而不涉及底层的文件系统。
  • 在使用 LVM 时,可以在逻辑卷上创建文件系统,这样文件系统就可以利用 LVM 提供的灵活性和管理功能。
  • LVM 还提供了更多高级功能,如快照、迁移、镜像等。

功能分类

  • 创建和扩展卷

    • 对物理卷、卷组和逻辑卷创建和扩展。
  • 在线容量调整(Extend Volumes)

    • 不中断系统运行的情况下调整逻辑卷的大小
  • 数据快照(Snapshot)

    • 支持创建快照,即在文件系统的某个时间点上创建一个可读写的副本。快照对于备份和测试非常有用。
  • 数据迁移(Data Migration)

    • 允许用户将数据从一个物理卷迁移到另一个物理卷,这有助于实现负载均衡和更好的性能。
  • 动态调整存储层次(Dynamic Storage Tiering)

    • 支持存储层次(Storage Tiering),允许将数据分配到不同性能和容量的存储介质中,以提高性能。

关键概念

物理卷(Physical Volume,PV):

  • 物理卷是物理硬盘或硬盘分区上的 LVM 标记。它们作为 LVM 的基本构建块,可以包括整个硬盘、分区或软RAID 设备。

卷组(Volume Group,VG):

  • 卷组是由一个或多个物理卷组成的逻辑容器。卷组是 LVM 分配存储的单元,逻辑卷是从卷组中划分出来的。

逻辑卷(Logical Volume,LV):

  • 逻辑卷是卷组中的一个虚拟卷,可以看作是一个虚拟分区。逻辑卷可以动态地调整大小,而不会影响其他逻辑卷。

物理扩展(Physical Extent,PE):

  • 物理扩展是 LVM 的基本分配单元,通常为 4MB。逻辑卷和卷组都由物理扩展组成。

LVM基本使用

创建新卷组

#创建物理卷
pvcreate /dev/sdX

#创建卷组, 卷组包含两个物理卷, 卷组名是vg_test
vgcreate vg_test /dev/sdX1 /dev/sdX2

#创建逻辑卷, 逻辑卷lv_test, 大小是10G
lvcreate -L 10G -n lv_test vg_test # 创建一个逻辑卷

#格式化逻辑卷
mkfs -t ext4 /dev/vg_test/lv_test

#挂载逻辑卷
mount /dev/vg_test/lv_test /mnt # 挂载逻辑卷

#验证新逻辑卷的挂载情况
df -h

#调整逻辑卷大小, 增加2G空间
lvresize -L +2G /dev/vg_test/lv_test

#删除逻辑卷、卷组和物理卷
umount /mnt # 卸载逻辑卷
lvremove /dev/vg_test/lv_test # 删除逻辑卷
vgremove vg_test # 删除卷组
pvremove /dev/sdX # 删除物理卷

加入卷组

#将物理卷/dev/sdY 加入 vg_test卷组
vgextend vg_test /dev/sdY

常用命令

物理卷管理命令

pvscan			#扫描系统中的物理卷
pvmove /dev/sdX #移动物理卷上的数据到同一卷组中的其他物理卷上
pvdisplay #显示物理卷详细信息
pvs #显示物理卷简要信息
pvcreate /dev/sdX #创建一个物理卷
pvdisplay #显示物理卷的详细信息
pvremove /dev/sdX #从物理卷中删除 LVM 标记
pvck /dev/sdX #检查物理卷的一致性

卷组管理命令

vgcreate myvg /dev/sdX1 /dev/sdX2	#创建一个名为myvg卷组
vgdisplay #显示卷组的详细信息
vgextend myvg /dev/sdY #将一个或多个物理卷添加到卷组
vgreduce myvg /dev/sdY #从卷组中删除一个或多个物理卷
vgck myvg #检查卷组的一致性
vgmerge myvg1 myvg2 #合并两个卷组
vgexport myvg #导出一个卷组配置

逻辑卷管理命令

lvscan					#扫描系统以获取逻辑卷和卷组的信息
lvs #显示逻辑卷的汇总信息
lvcreate -L 10G -n mylv myvg #创建一个名为mylv逻辑卷,大小10G
lvdisplay #显示逻辑卷的详细信息
lvresize -L +5G /dev/myvg/mylv #调整逻辑卷的大小
lvremove /dev/myvg/mylv #删除一个逻辑卷
lvrename myvg/oldlv myvg/newlv #重命名逻辑卷
lvchange -a y /dev/myvg/mylv #修改逻辑卷的属性:激活逻辑卷
lvchange -p r /dev/myvg/mylv #修改逻辑卷的权限
lvconvert --type mirror myvg/mylv #转换逻辑卷的类型,转换成镜像卷

LVM快照和备份

快照原理

LVM(Logical Volume Manager)快照是一种在逻辑卷上创建的虚拟卷,用于记录原始卷上数据的变化,从而实现快速备份和恢复的目的。快照采用了写时复制(Copy-On-Write)的原理。以下是LVM快照的工作原理详解:

  1. 写时复制(Copy-On-Write):

    快照卷的工作原理基于写时复制技术。在创建快照时,LVM并不立即复制原始卷上的数据到快照卷上,而是创建一个指向原始卷的元数据结构,用于记录数据的变化。这样,原始卷和快照卷在创建时共享相同的数据块。当对原始卷进行写操作时,LVM会将被修改的数据块复制到快照卷上,并更新元数据结构,以指向快照卷上的新数据块,而不会影响原始卷上的数据。

  2. 快照卷结构:

    快照卷的结构包括元数据和数据块。元数据用于记录快照卷与原始卷的关系以及数据变化的情况,而数据块则用于存储原始卷上发生变化的数据。快照卷的元数据结构包括快照起始块、快照大小、原始卷的起始块等信息。

  3. 数据变化追踪:

    当对原始卷进行写操作时,LVM会将被修改的数据块复制到快照卷上,并更新元数据结构以反映数据变化的情况。这样,快照卷就记录了原始卷上数据的变化历史。通过追踪数据变化,快照卷可以保持与原始卷的一致性,并提供快速的备份和恢复功能。

  4. 使用快照卷:

    快照卷可以像普通逻辑卷一样挂载到文件系统上,用于备份、恢复、测试或其他目的。在挂载快照卷后,用户可以对其中的数据进行操作,而不会影响原始卷上的数据。当不再需要快照时,可以将其删除,并释放空间。

快照卷可以像普通逻辑卷一样挂载到文件系统上,用于备份、恢复、测试或其他目的。然而,需要注意快照卷的性能开销和容量使用情况。变化数据大于快照大小时,快照会失效。

应用场景

系统备份和恢复:

  • 场景 :定期备份系统数据是防止数据丢失的关键措施。通过创建LVM快照,可以在系统运行时快速备份文件系统,而无需停机。
  • 操作 :创建LVM快照后,可以将快照卷挂载到另一个位置,然后使用备份工具(如 rsynctar等)备份数据。如果需要恢复数据,可以使用备份数据来还原系统状态。

数据库备份和恢复:

  • 场景 :在生产环境中,数据库的持续运行对业务至关重要。通过创建LVM快照,可以在不中断数据库运行的情况下备份数据库文件,并确保数据库的完整性。
  • 操作 :通过创建数据库目录的LVM快照,可以将快照卷挂载到另一个位置,并使用数据库备份工具(如 mysqldumppg_dump等)备份数据库。如果需要恢复数据库,可以使用备份数据来还原数据库状态。

测试和开发环境:

  • 场景 :在测试和开发环境中,经常需要创建数据快照来测试新的软件版本或进行实验。通过创建LVM快照,可以在不影响原始数据的情况下创建测试环境,并且可以随时恢复到原始状态。
  • 操作 :创建LVM快照后,可以将快照卷挂载到测试环境中,进行各种实验和测试。如果需要恢复到原始状态,可以删除快照卷,或者简单地卸载快照卷。

系统升级和维护:

  • 场景 :在进行系统升级或维护时,往往需要备份系统数据以防止意外情况。通过创建LVM快照,可以在升级或维护过程中备份系统数据,并在需要时轻松地恢复系统状态。
  • 操作 :在进行系统升级或维护之前,创建系统根目录的LVM快照。如果升级或维护过程中出现问题,可以随时回滚到原始状态,而无需担心数据丢失。

相关命令

创建快照

使用 lvcreate命令创建快照卷。

lvcreate -L <大小> -s -n <快照名称> <原始卷名称>

示例:

lvcreate -L 1G -s -n lv_snapshot /dev/vg_data/lv_data
  • /dev/vg_data/卷组下创建一个名为 lv_snapshot的1GB快照卷,作为 lv_data原始卷的快照。

挂载快照卷

使用 mount命令挂载快照卷到一个目录,以便备份其中的数据。

mount /dev/vg_data/lv_snapshot /mnt/snapshot

执行备份

使用rsync备份。使用 rsync命令备份快照卷中的数据到另一个位置。

rsync -avz /mnt/snapshot/ /backup/data_backup/	#将备份快照卷中的数据到/backup/data_backup/目录

使用tar备份。使用 tar命令备份快照卷中的数据到一个归档文件。

tar -cvf /backup/data_backup.tar /mnt/snapshot/*	#使用tar命令创建一个名为data_backup.tar的归档文件,其中包含快照卷中的数据。

恢复数据

卸载快照卷。在恢复数据之前,需要卸载快照卷。

umount /mnt/snapshot

删除快照卷。如果备份完成并且数据已经安全地备份到另一个位置后,可以删除快照卷以释放空间。

lvremove /dev/vg_data/lv_snapshot

示例

操作步骤:

  1. 查看现有逻辑卷和卷组信息

    使用 lvdisplayvgdisplay命令查看现有逻辑卷和卷组的信息,确定要备份的目标逻辑卷和卷组。

    lvdisplay
    vgdisplay
  2. 创建快照

    假设要备份的逻辑卷为 /dev/vg_data/lv_database,创建一个名为 lv_database_snapshot的快照卷,大小为1GB。使用以下命令创建快照:

    lvcreate -L 1G -s -n lv_database_snapshot /dev/vg_data/lv_database
  3. 挂载快照卷

    将快照卷挂载到一个临时目录中,以便备份其中的数据。首先创建一个临时目录,然后挂载快照卷。例如:

    mkdir /mnt/snapshot
    mount /dev/vg_data/lv_database_snapshot /mnt/snapshot
  4. 备份数据

    使用任何备份工具(如 rsynctar等)将快照卷中的数据备份到另一个位置,如外部存储设备或远程服务器。例如,使用 rsync备份数据到 /backup目录:

    rsync -avz /mnt/snapshot/ /backup/database_backup/
  5. 卸载快照卷

    备份完成后,卸载快照卷。

    umount /mnt/snapshot
  6. 删除快照卷

    备份完成并且数据已经安全地备份到另一个位置后,可以删除快照卷以释放空间。使用以下命令删除快照卷:

    lvremove /dev/vg_data/lv_database_snapshot

注意事项

  • 在创建快照之前,请确保有足够的可用空间。
  • 在挂载快照卷之前,请确保目标挂载点不存在任何重要数据。
  • 在删除快照之前,请确保备份数据已经成功,并且不再需要快照卷中的数据。

挂载

挂载点(Mount Point)

每个分区都可以在系统中指定一个挂载点,决定了该分区的数据在文件系统中的位置。

常见挂载点如下:

  • /(根分区): 包含整个文件系统的根目录。
  • /home: 用户的家目录通常位于此。
  • /boot: 包含引导加载程序和内核的文件。
  • /var: 包含变化的数据,如日志文件和数据库。
  • /swap: 用于存储暂时不使用的内存页面。它类似于Windows系统的页面文件。

挂载限制

  • 根目录是必须挂载的,而且一定要先于其他mount point被挂载。因为mount是所有目录的跟目录,其他目录都是由根目录 /衍生出来的。
  • 挂载点必须是已经存在的目录。
  • 挂载点的指定可以任意,但必须遵守必要的系统目录架构原则
  • 所有挂载点在同一时间只能被挂载一次
  • 所有分区在同一时间只能挂载一次
  • 若进行卸载,必须将工作目录退出挂载点(及其子目录)之外。

挂载命令

mount: 用于挂载文件系统。重启后失效,想要挂载永久生效的话,参考下面的自动挂载。

挂载磁盘

#挂载
sudo mount /dev/sdX1 /mnt
#被挂载的目录需要存在

#取消挂载
sudo umount /dev/sdX1

挂载ISO和U盘

#挂载
#ISO
sudo mount -o loop /path/to/your.iso /mnt/iso #/path/to/your.iso为实际的ISO文件路径
#U盘
sudo mount /dev/sdX /mnt/usb

#卸载
sudo umount /mnt/iso
sudo umount /mnt/usb

自动挂载

Linux系统通常在 /etc/fstab 文件中配置自动挂载。该文件包含系统启动时要挂载的分区信息。

echo "mount /dev/sdX1 /mnt default 0 0" >> /etc/fstab

/etc/fstab文件简介

cat /etc/fstab
# Device Mount point filesystem parameters dump fsck
/dev/mapper/rl-root / xfs defaults 0 0
UUID=58c77d64-9165-495e-ac6c-016d424dd860 /boot xfs defaults 0 0
UUID=0886-BA39 /boot/efi vfat umask=0077,shortname=winnt 0 2
/dev/mapper/rl-swap none swap defaults 0 0
/dev/sdc1 /data2_hdd ext4 defaults 0 0

参数简介:

  • Device:挂载的设备的标识符。可以是设备文件路径、UUID 或卷标。

  • Mount point:设备的挂载点

  • filesystem:磁盘文件系统的格式,包括ext2、ext3、reiserfs、nfs、vfat等

  • parameters:文件系统的参数,如下:

    • async/sync:设置是否为同步方式运行,默认为async
    • auto/noauto:当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
    • rw/ro:是否以只读或者读写模式挂载
    • exec/noexec:限制此文件系统内是否能够进行"执行"的操作
    • user/nouser:是否允许用户使用mount命令挂载
    • suid/nosuid:是否允许SUID的存在
    • usrquota:启动文件系统支持磁盘配额模式
    • grpquota:启动文件系统对群组磁盘配额模式的支持
    • defaults:同时具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置
  • dump:能否被dump备份命令作用。dump是一个用来作为备份的命令。通常这个参数的值为0或者1。

    • 0:不做dump备份
    • 1:每天备份
    • 2:每周备份
  • fsck:文件系统检查次序(是否检验扇区)。开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)。

    • 0:不检验
    • 1:在根文件系统之后检查
    • 2:在其他文件系统之后检查(1级别检验完成之后进行检验)

查看分区的label和uuid

关键概念

  • 设备名(Device Name):

    • 设备名是系统中分配给硬盘和分区的名称,通常以 /dev/ 开头,例如 /dev/sda 表示第一个 SATA 硬盘。设备名可能会因为硬件更改、重新安排磁盘等原因而发生变化。因此,不建议将其用作持久的标识符。
  • 标签(Label):

    • 标签是用户为文件系统或分区指定的人类可读的标识符。标签通常通过工具如 e2label(用于ext2/3/4文件系统)或 xfs_admin(用于XFS文件系统)来设置。标签对于用户更容易记忆和管理,而不受硬件变化的影响。
  • UUID(Universally Unique Identifier):

    • UUID 是一个全局唯一的标识符,用于识别文件系统或分区。每个文件系统或分区都有一个独特的UUID。UUID的生成算法保证了其全球唯一性。UUID通常以 UUID= 的形式在 /etc/fstab 等配置文件中使用。

区别总结:

  • 设备名是系统内核分配的名称,可能会因为硬件变化而发生变化,不稳定。
  • 标签是用户为文件系统或分区指定的人类可读的标识符,更容易记忆,但需要用户设置。
  • UUID是一个全球唯一的标识符,通过文件系统或分区的UUID可以确保在不同系统、不同时间和硬件环境中的唯一性。

提示:

使用设备名称(/dev/sdx)来挂载分区时,一旦磁盘的插槽顺序发生了变化,就会出现名称不对应的问题。因为这个名称(/dev/sdx)关联的是插槽顺序。

在实际使用中,推荐使用UUID作为持久标识符,不容易受到硬件变化的影响。

常用查看命令

可以通过查看一个分区的superblock中的信息找到UUID和Label name。

  • dumpe2fs
  • blkid

dumpe2fs

信息很全。

dumpe2fs -h /dev/sdc1
dumpe2fs 1.45.6 (20-Mar-2020)
Filesystem volume name: <none>
Last mounted on: /data2_hdd
Filesystem UUID: 5a16858c-d895-48f2-b4e7-440e448981c6
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags: signed_directory_hash
Default mount options: user_xattr ac
。。。

blkid

信息简短,只有一行

blkid /dev/sdc1
/dev/sdc1: UUID="5a16858c-d895-48f2-b4e7-440e448981c6" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="cadfc28e-f5d8-0845-af4b-4346e23074a5"

查询过滤UUID命令

sudo blkid | awk -F'"' 'NR==2{ print $2 }'

Reference link

#文章内容参考以下链接

https://github.com/shiguangwl/Linux_Note

#分区,文件系统相关

https://www.cnblogs.com/liugp/p/16417652.html

https://blog.csdn.net/qq_38350702/article/details/120512419