【RHCSA 问答题】第 13 章 访问 Linux 文件系统
目录
- 存储设备是什么?怎么理解分区和格式化?
- 文件系统是什么?
- 挂载是什么?挂载点是什么?
- 怎么理解块设备?
- 在 SATA 附加存储中,第一磁盘上的第一个分区和第二磁盘的第二个分区分别对应哪个块设备文件?
- 请比较 df 和 du 命令及-h 和-H 选项的作用。
- lsblk 命令和 lsblk -fp 命令有什么用?
- 有哪两种手动挂载的方式?举例说明。
- 方式一:使用 mount 命令临时挂载(重启后失效)
- 方式二:通过 /etc/fstab 永久挂载(开机自动挂载)
- 使用 umount 卸载文件系统时需要注意什么?
- 搜索文件时, locate 和 find 命令各有哪些优点?
- 如何搜索/usr/bin 目录中文件大小超过 50KB 的所有文件?
存储设备是什么?怎么理解分区和格式化?
存储设备是用于保存数据的硬件
,比如硬盘(HDD)、固态硬盘(SSD)、U盘等。这些设备提供了存储空间
,可以用来保存文件和数据
。
分区是将一个物理存储
设备划分成若干个逻辑区域
,每个分区可以独立管理和使用,相当于给硬盘切块,方便系统组织和保护数据。
格式化是对分区
进行初始化,创建文件系统
(如 ext4、NTFS),使操作系统能够识别、存储和访问文件。
文件系统是什么?
文件系统(File System) 是操作系统
用于管理存储设备上数据
的机制和结构。它将底层的存储块组织成文件和目录
,提供高效的文件创建、读取、查找和删除
等操作方法。
每个文件系统对应一个已格式化的存储区域
,使操作系统能够识别和访问数据。常见的文件系统有 Linux 的 ext4、Windows 的 NTFS 以及通用的 FAT32 等。
挂载是什么?挂载点是什么?
挂载是将存储设备或分区的文件系统
与操作系统的目录树
关联起来,使得该目录成为访问存储设备数据的入口。
挂载点就是Linux文件系统中的目录
,作为存储设备内容在系统中的入口。当在挂载点上访问文件或目录时,实际上是在访问被挂载的文件系统中的数据
。
怎么理解块设备?
块设备从硬件角度
来看,是能够以固定大小的数据块为单位进行随机读写的存储设备,如硬盘(HDD)、固态硬盘(SSD)和 U 盘;
从操作系统
角度,它被抽象为块设备文件
,为上层应用程序和用户提供了简化的接口,使数据的读写变得更加便捷。 通过这种抽象,操作系统能够管理不同类型的块设备,让用户可以在不同的块设备上创建文件系统,并通过挂载点来访问数据。
在 SATA 附加存储中,第一磁盘上的第一个分区和第二磁盘的第二个分区分别对应哪个块设备文件?
第一磁盘上的第一个分区是/dev/sda1
。
第二磁盘上的第二个分区是/dev/sdb2
。
sda 代表第一个 SATA 磁盘,sdb 代表第二个 SATA 磁盘,
数字 1、2 表示对应的分区号。
请比较 df 和 du 命令及-h 和-H 选项的作用。
df
命令用于显示整个文件系统
的磁盘空间使用情况
,主要关注磁盘分区的总容量和剩余空间;
du
命令用于查看文件或目录的磁盘使用量
,更细致地查看某个路径下的数据大小。
-h
和 -H
选项都能让命令输出更易读,
-h
使用二进制换算(1K=1024字节),
-H
使用十进制换算(1K=1000字节)。
df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 389M 1.6M 388M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 97G 8.4G 84G 10% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda2 2.0G 212M 1.6G 12% /boot
/dev/loop1 64M 64M 0 100% /snap/core20/2501
/dev/loop4 92M 92M 0 100% /snap/lxd/32662
/dev/loop2 92M 92M 0 100% /snap/lxd/29619
/dev/loop5 51M 51M 0 100% /snap/snapd/24505
tmpfs 389M 0 389M 0% /run/user/1000
/dev/loop6 50M 50M 0 100% /snap/snapd/24792
/dev/loop3 64M 64M 0 100% /snap/core20/2599
df -H
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 408M 1.7M 407M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 105G 9.0G 90G 10% /
tmpfs 2.1G 0 2.1G 0% /dev/shm
tmpfs 5.3M 0 5.3M 0% /run/lock
tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
/dev/sda2 2.1G 223M 1.7G 12% /boot
/dev/loop1 67M 67M 0 100% /snap/core20/2501
/dev/loop4 97M 97M 0 100% /snap/lxd/32662
/dev/loop2 97M 97M 0 100% /snap/lxd/29619
/dev/loop5 54M 54M 0 100% /snap/snapd/24505
tmpfs 408M 0 408M 0% /run/user/1000
/dev/loop6 52M 52M 0 100% /snap/snapd/24792
/dev/loop3 67M 67M 0 100% /snap/core20/2599
du -h
8.0K ./.gnupg
4.0K ./snap/lxd/32662
4.0K ./snap/lxd/29619
4.0K ./snap/lxd/common
16K ./snap/lxd
20K ./snap
4.0K ./.ssh
4.0K ./.cache
9.6M .
du -H
8 ./.gnupg
4 ./snap/lxd/32662
4 ./snap/lxd/29619
4 ./snap/lxd/common
16 ./snap/lxd
20 ./snap
4 ./.ssh
4 ./.cache
9824 .
lsblk 命令和 lsblk -fp 命令有什么用?
都用来查看块设备结构和信息
lsblk 命令用于列出系统中的块设备信息,包括它们的设备名、主/次设备号(供内核识别)、是否为可移除设备(如U盘)、设备大小、是否只读、设备类型(如磁盘、分区、LVM)、挂载点。
lsblk -fp 命令则显示完整路径名、文件系统类型、卷标(如有)、UUID、可用空间、使用率、挂载点,更关注的是每个块设备的文件系统属性。
-f
选项显示文件系统的类型
(如 ext4、xfs)、UUID
(唯一标识符)和卷标
(Label)等;
-p
选项(path)显示设备的完整路径
(如 /dev/sda1)。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop1 7:1 0 63.8M 1 loop /snap/core20/2501
loop2 7:2 0 91.9M 1 loop /snap/lxd/29619
loop3 7:3 0 63.8M 1 loop /snap/core20/2599
loop4 7:4 0 91.9M 1 loop /snap/lxd/32662
loop5 7:5 0 50.9M 1 loop /snap/snapd/24505
loop6 7:6 0 49.3M 1 loop /snap/snapd/24792
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 198G 0 part└─ubuntu--vg-ubuntu--lv 253:0 0 99G 0 lvm /
sr0 11:0 1 1024M 0 rom
lsblk -fp
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
/dev/loop1 squashfs 0 100% /snap/core20/2501
/dev/loop2 squashfs 0 100% /snap/lxd/29619
/dev/loop3 squashfs 0 100% /snap/core20/2599
/dev/loop4 squashfs 0 100% /snap/lxd/32662
/dev/loop5 squashfs 0 100% /snap/snapd/24505
/dev/loop6 squashfs 0 100% /snap/snapd/24792
/dev/sda
├─/dev/sda1
├─/dev/sda2 ext4 e5fd5d6a-1231-4118-a5d9-5212f9a149c1 1.6G 11% /boot
└─/dev/sda3 LVM2_member uHkEeN-zSro-6xX1-SzgG-Yi04-3lwq-tR0yD9└─/dev/mapper/ubuntu--vg-ubuntu--lvext4 d493b37e-f347-4316-ac18-9c33a10197bc 83.6G 9% /
/dev/sr0
有哪两种手动挂载的方式?举例说明。
方式一:使用 mount 命令临时挂载(重启后失效)
- 创建挂载点目录(如果还没有)
mkdir -p /mnt/data
- 使用设备名挂载
mount /dev/vdb1 /mnt/data
或:使用 UUID 挂载(推荐)
先查看 UUID(找出对应 /dev/vdb1 的 UUID)
lsblk -fp
假设 UUID 为 46f5-23bf,则挂载命令为:
mount UUID="46f5-23bf" /mnt/data
方式二:通过 /etc/fstab 永久挂载(开机自动挂载)
- 打开
/etc/fstab
文件:vim /etc/fstab - 添加以下一行(使用设备名方式):
/dev/vdb1 /mnt/data ext4 defaults 0 2
或者(推荐使用 UUID):
先查看 UUID(找出对应 /dev/vdb1 的 UUID)
lsblk -fp
在 /etc/fstab 中添加:
UUID=46f5-23bf /mnt/data ext4 defaults 0 2
块设备名/UUID ,挂载点 ,文件系统类型,常用挂载选项,是否使用 dump(一般设为 0),fsck 检查顺序(根分区为 1,其他为 2) - 修改完 /etc/fstab 后,立即加载并验证配置是否正确
mount -a
使用 umount 卸载文件系统时需要注意什么?
使用 umount 卸载文件系统时,需要确保挂载点及其子目录没有被任何进程访问,且当前工作目录不能位于该挂载点或其子目录下。同时,建议先执行sync
命令确保数据已写入磁盘,防止数据丢失。
卸载时可以使用挂载点路径或设备名,但若发现挂载点被占用,可以用lsof
或fuser
命令查找并终止相关进程。切勿强制卸载或直接拔出设备,以避免数据损坏。
搜索文件时, locate 和 find 命令各有哪些优点?
locate 的优点是搜索速度非常快
,因为它基于预先构建的文件名数据库(通常每天自动更新一次),直接查询数据库即可,不需要实时扫描磁盘。
但缺点是数据库不是实时更新
,可能找不到最近新建或移动的文件。
find
的优点是可以实时搜索
并且可以按照多种条件来定制搜索
,如大小、时间、权限等。功能强大且灵活。
但实时扫描整个目录可能比较慢
,特别是在大目录或整个文件系统中搜索时。
如何搜索/usr/bin 目录中文件大小超过 50KB 的所有文件?
使用 find /usr/bin -size +50K