文件系统管理:命令 lsblk
, blkid
1. 理解文件系统的重要性
欢迎来到本课程的新讲座,今天我们将深入探索 Linux 文件系统的奇妙世界。我们会学习如何找到设备,了解它们的结构,并弄清楚上面安装了什么类型的文件系统。通过工具 lsblk
和 blkid
增加一些命令行的魔力。而且,我们还会聊聊为什么用编程来“挖掘”数据总是那么酷!
什么是文件系统?
如果操作系统是你电脑的“心脏”,那么文件系统就是它的“神经系统”。它负责组织和管理对存储设备(硬盘、SSD、USB 设备)上数据的访问。文件系统决定了数据是如何存储、读取和写入的。
你可能会遇到的一些文件系统示例:
- ext4 — 大多数 Linux 发行版的标准文件系统。
- NTFS — Windows 使用的文件系统。
- FAT32 — 常用于外部存储设备和 U 盘。
- XFS, btrfs — Linux 的更高级替代方案,支持快照等功能。
当你将磁盘或 U 盘连接到 Linux 时,文件系统需要被“挂载”,系统才能开始与其交互。我们会通过命令来管理这些(还有其他一些功能)。
2. 命令 lsblk
: 查看已连接的设备
lsblk
命令基础
Linux 提供了许多工具来管理设备和分区。其中一个非常有用的工具是 lsblk
命令。它的全称是 "list block devices",意思是列出块设备。
语法很简单:
lsblk
这个命令会列出系统中的所有块设备的表格信息,包括硬盘、SSD、USB 存储设备及其分区。
示例输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 50G 0 part /
├─sda2 8:2 0 200G 0 part /home
└─sda3 8:3 0 250G 0 part
sdb 8:16 1 16G 0 disk
└─sdb1 8:17 1 16G 0 part /media/usb
- NAME: 设备名称。比如
sda
,sdb
。字母 (a
,b
...) 表示设备被系统检测到的顺序。 - SIZE: 设备大小。
- TYPE: 设备类型。比如
disk
— 物理磁盘,part
— 它的分区。 - MOUNTPOINT: 设备在文件系统中挂载的位置。
有用的选项
lsblk
是一个灵活的命令。通过使用额外的参数,你可以获取更多信息:
lsblk -f
— 显示文件系统类型和每个设备的 UUID(唯一标识符)。lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT
— 仅显示感兴趣的列(比如名称、大小、文件系统、挂载点)。
示例:
lsblk -f
结果:
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 rootfs 1111-2222-3333-4444 /
├─sda2 ext4 home 5555-6666-7777-8888 /home
└─sda3 swap 9999-AAAA-BBBB-CCCC [SWAP]
sdb vfat USB_DISK AAAA-BBBB /media/usb
3. 命令blkid
:唯一标识的魔法
有时候你需要获取存储设备或其文件系统的详细信息。这时候命令blkid
就派上用场了。它的作用是根据文件系统和UUID识别设备。
命令blkid
的基础
在没有参数的情况下运行它:
blkid
输出示例:
/dev/sda1: UUID="1111-2222-3333-4444" TYPE="ext4"
/dev/sda2: UUID="5555-6666-7777-8888" TYPE="ext4"
/dev/sda3: UUID="9999-AAAA-BBBB-CCCC" TYPE="swap"
/dev/sdb1: UUID="AAAA-BBBB" TYPE="vfat" LABEL="USB_DISK"
- UUID: 分区的唯一标识符(即使设备重命名,例如从
sda
变成sdb
,它也不会改变)。 - TYPE: 文件系统的类型。
- LABEL: 分区的标签。
UUID的实际用途
UUID在Linux中特别重要,因为设备可能会在启动时动态更改其名称。例如,今天叫做/dev/sda
的设备,明天可能变成/dev/sdb
。借助UUID,你可以使用稳定的标识来挂载设备。在下一次讲座中,我们将更详细地讨论这一点,其中会涉及/etc/fstab
文件的操作。
4. 处理未挂载的设备
有时候你连接了磁盘或者U盘,但它并没有显示为已挂载。这可能是因为缺少有效的文件系统。用lsblk
和blkid
可以快速了解发生了什么。
假如你连接了一个USB存储设备,但lsblk
的输出是这样的:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 1 16G 0 disk
这意味着设备sdb
没有有效的分区。检查blkid
的输出,确认上面是否有文件系统:
blkid /dev/sdb
如果没有输出,这就说明:设备还未被格式化。这部分内容我们会在下一讲里讨论。
5. 比较 lsblk
和 blkid
这两条命令都很有用,但用法不同:
- 用
lsblk
来查看整个系统:什么在哪儿,哪些分区已挂载。 - 用
blkid
来精确查询文件系统的信息(类型、标签、UUID)。
比较表
命令 | 主要用途 | 输出 |
---|---|---|
lsblk |
显示设备、分区和挂载点 | NAME, SIZE, TYPE, MOUNTPOINT, FSTYPE 等等 |
blkid |
查询文件系统信息(UUID, LABEL, TYPE) | UUID, TYPE, LABEL |
6. 示例:从找到设备到了解其结构
任务
- 找到连接的 USB 设备。
- 确定其文件系统。
- 准备设备进行挂载。
步骤
连接设备并执行以下命令:
找到你的设备,比如,lsblk
sdb
。检查是否存在文件系统:
blkid /dev/sdb
如果没有文件系统,你会看到空输出。这意味着设备需要格式化。
如果存在文件系统,你会看到其类型和 UUID。现在可以用它来进一步操作(例如挂载)。
现在你已经掌握了在 Linux 中处理文件系统的知识。在下一讲中,我们将处理设备的格式化,创建文件系统并为其工作做好准备!准备好迎接这个把一个“原始”磁盘变成一个可以工作的工具的激动人心的过程吧。
GO TO FULL VERSION