Linux面试题及详细答案 120道(61-75)-- 文件系统与存储
《前后端面试题
》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。
文章目录
- 一、本文面试题目录
- 61. Linux支持哪些常见的文件系统?(如ext4、xfs、btrfs等)
- 62. ext4和xfs文件系统的主要区别是什么?各自的优势是什么?
- 63. 什么是swap分区?它的作用是什么?如何创建和启用swap分区?
- 64. 如何挂载(`mount`)和卸载(`umount`)文件系统?`/etc/fstab` 的作用是什么?
- 65. `mount` 命令中,`-o` 选项可以指定哪些常用挂载参数?(如 `ro`、`rw`、`noatime`)
- 66. 什么是UUID?在 `/etc/fstab` 中使用UUID而非设备名的优势是什么?
- 67. 如何查看文件系统的磁盘块大小?如何检查文件系统的完整性?(如 `fsck`)
- 68. 什么是逻辑卷管理(LVM)?它的主要组件(PV、VG、LV)是什么?
- 69. LVM相比传统分区有什么优势?如何创建和扩展LVM逻辑卷?
- 70. 什么是RAID?常见的RAID级别(如RAID0、RAID1、RAID5、RAID10)有什么特点?
- 71. 如何查看文件的inode号?当inode耗尽时会出现什么问题?
- 72. 什么是稀疏文件(Sparse File)?它有什么特点和用途?
- 73. 什么是临时文件系统(tmpfs)?它通常挂载在哪个目录?
- 74. 如何查找系统中的大文件(如超过100MB)?
- 75. 什么是文件属性(如 `chattr` 命令设置的 `i`、`a` 属性)?如何查看和修改?
- 二、120道Linux面试题目录列表
一、本文面试题目录
61. Linux支持哪些常见的文件系统?(如ext4、xfs、btrfs等)
- 原理说明:文件系统是操作系统管理文件和数据存储的方式,Linux支持多种文件系统以适应不同场景(如本地存储、网络存储、移动设备等)。
- 常见文件系统及特点:
- ext4:第四代扩展文件系统,Linux默认的本地文件系统,支持大文件(最大16TB)和大分区(最大1EB),稳定性高,兼容ext2/ext3。
- xfs:高性能日志文件系统,擅长处理大文件和高吞吐量,支持动态扩展,常用于企业级存储。
- btrfs:新一代 Copy-on-Write(COW)文件系统,支持快照、动态卷管理、校验和等高级功能,适合需要数据完整性的场景。
- tmpfs:临时文件系统,基于内存和swap,速度快,重启后数据丢失,通常挂载在
/tmp
。 - vfat:兼容Windows的文件系统,支持FAT32格式,用于移动设备(如U盘、SD卡)。
- nfs:网络文件系统,用于跨网络共享文件。
- iso9660:光盘镜像文件系统,用于CD/DVD。
- 示例代码:查看系统支持的文件系统类型
cat /proc/filesystems # 查看内核支持的文件系统 lsblk -f # 查看已挂载的文件系统
62. ext4和xfs文件系统的主要区别是什么?各自的优势是什么?
- 原理说明:ext4和xfs是Linux中两种主流的日志型文件系统,设计目标不同,适用于不同场景。
- 主要区别及优势:
特性 ext4 xfs 设计目标 兼容性和稳定性优先 高性能和大文件处理优先 最大文件大小 16TB 8EB(远大于ext4) 最大分区大小 1EB 8EB 文件系统检查速度 较慢(随分区大小增加而变慢) 较快(日志恢复机制更高效) 动态扩展 支持,但需离线扩展(未挂载时) 支持在线扩展(挂载状态下) 删除大文件性能 较慢(需逐个释放块) 较快(批量处理块) 兼容性 支持大多数Linux发行版,兼容ext2/ext3 主流发行版支持,但兼容性略逊于ext4 - 适用场景:
- ext4:个人电脑、小型服务器、需要高兼容性的场景。
- xfs:大型服务器、数据中心、需要处理大文件或高吞吐量的场景(如数据库、媒体服务器)。
63. 什么是swap分区?它的作用是什么?如何创建和启用swap分区?
- 原理说明:swap分区(交换分区)是Linux中用于临时存储内存中不活跃数据的磁盘空间,当物理内存不足时,系统会将部分内存数据转移到swap分区,释放物理内存给活跃进程。
- 作用:
- 缓解物理内存不足的压力,防止系统因内存耗尽而崩溃。
- 支持休眠功能(将内存数据写入swap分区后关机,重启时恢复)。
- 创建和启用swap分区的步骤:
- 创建swap分区(假设分区为
/dev/sdb1
):mkswap /dev/sdb1 # 格式化分区为swap类型
- 启用swap分区:
swapon /dev/sdb1 # 临时启用
- 设置开机自动挂载:
编辑/etc/fstab
,添加如下行(UUID可通过blkid /dev/sdb1
获取):UUID=xxx-xxx-xxx /swap swap defaults 0 0
- 验证swap状态:
free -h # 查看swap使用情况 swapon --show # 查看已启用的swap设备
- 创建swap分区(假设分区为
- 注意:swap分区大小建议为物理内存的1-2倍(内存较大时可适当减小)。
64. 如何挂载(mount
)和卸载(umount
)文件系统?/etc/fstab
的作用是什么?
- 原理说明:挂载(mount)是将存储设备(如硬盘分区、U盘)关联到Linux目录树的过程,卸载(umount)则是解除关联。
/etc/fstab
是开机自动挂载配置文件,记录了需要随系统启动自动挂载的文件系统信息。 - 挂载(
mount
)命令:mount /dev/sdb1 /mnt/usb # 将设备/dev/sdb1挂载到/mnt/usb目录 mount -t ext4 /dev/sdb1 /mnt/usb # 指定文件系统类型为ext4 mount -o ro /dev/sdb1 /mnt/usb # 以只读方式挂载
- 卸载(
umount
)命令:umount /mnt/usb # 通过挂载点卸载 umount /dev/sdb1 # 通过设备名卸载 umount -l /mnt/usb # 强制卸载(即使设备正被使用)
/etc/fstab
的作用:
存储文件系统的静态挂载信息,系统启动时会自动读取并挂载其中的设备,格式如下(每行对应一个挂载项):<设备> <挂载点> <文件系统类型> <挂载选项> <dump> <fsck> UUID=xxx-xxx-xxx /home ext4 defaults 0 2
dump
:是否使用dump备份(0=不备份)。fsck
:开机时fsck检查顺序(0=不检查,1=优先检查,2=次优先)。
65. mount
命令中,-o
选项可以指定哪些常用挂载参数?(如 ro
、rw
、noatime
)
- 原理说明:
-o
选项用于在挂载文件系统时指定额外参数,控制文件系统的读写权限、时间记录、缓存策略等。 - 常用挂载参数:
ro
:只读模式挂载(无法修改文件)。rw
:读写模式挂载(默认值)。noatime
:不更新文件的访问时间(可减少磁盘I/O,提升性能)。nodiratime
:不更新目录的访问时间(配合noatime
使用)。sync
:强制同步I/O(数据立即写入磁盘,不经过缓存,安全性高但性能低)。async
:异步I/O(数据先写入缓存,再批量写入磁盘,性能高但断电可能丢失数据,默认值)。remount
:重新挂载已挂载的文件系统(用于修改挂载参数,如从ro
改为rw
)。defaults
:默认参数集合(rw, suid, dev, exec, auto, nouser, async
)。
- 示例代码:
# 以只读和不更新访问时间的方式挂载/dev/sdb1 mount -o ro,noatime /dev/sdb1 /mnt/usb# 重新挂载根分区为读写模式 mount -o remount,rw /
66. 什么是UUID?在 /etc/fstab
中使用UUID而非设备名的优势是什么?
- 原理说明:UUID(Universally Unique Identifier,通用唯一标识符)是一个128位的唯一标识符,用于唯一标识存储设备(如硬盘分区)。设备名(如
/dev/sda1
)可能因硬件插拔顺序或系统配置变化而改变,而UUID始终不变。 - 在
/etc/fstab
中使用UUID的优势:- 稳定性:设备名可能随硬件检测顺序变化(如新增硬盘后原
/dev/sda1
可能变为/dev/sdb1
),而UUID固定,避免挂载错误。 - 唯一性:即使设备被移动到其他系统,UUID仍保持不变,确保挂载配置的一致性。
- 稳定性:设备名可能随硬件检测顺序变化(如新增硬盘后原
- 示例代码:
blkid /dev/sda1 # 查看分区的UUID(如:UUID="5f2b2d8a-xxxx-xxxx-xxxx-xxxxxxxxxxxx")# 在/etc/fstab中使用UUID挂载 UUID=5f2b2d8a-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 2
67. 如何查看文件系统的磁盘块大小?如何检查文件系统的完整性?(如 fsck
)
- 原理说明:磁盘块大小是文件系统存储数据的最小单位,影响文件存储效率;
fsck
(File System Check)是用于检查和修复文件系统错误的工具,通常在系统异常关机后使用。 - 查看磁盘块大小:
# 方法1:通过tune2fs(适用于ext系列文件系统) tune2fs -l /dev/sda1 | grep "Block size" # 输出:Block size: 4096# 方法2:通过stat(查看某个文件所在文件系统的块大小) stat -f /home | grep "Block size" # 输出:Block size: 4096
- 检查文件系统完整性(
fsck
):# 注意:检查的文件系统必须未挂载(或挂载为只读) fsck /dev/sda1 # 检查ext系列文件系统(自动选择对应工具,如e2fsck) fsck.xfs /dev/sdb1 # 检查xfs文件系统(xfs需用专用工具)# 自动修复错误(谨慎使用,可能导致数据丢失) fsck -y /dev/sda1
68. 什么是逻辑卷管理(LVM)?它的主要组件(PV、VG、LV)是什么?
- 原理说明:LVM(Logical Volume Manager)是一种磁盘管理技术,通过将物理磁盘分区抽象为逻辑卷,实现动态调整存储空间大小、合并多个磁盘等功能,比传统分区更灵活。
- 主要组件:
- PV(Physical Volume,物理卷):
底层物理存储设备(如硬盘分区、整个硬盘),经过pvcreate
初始化后成为LVM的基本存储单元。 - VG(Volume Group,卷组):
由一个或多个PV组成的存储池,可动态添加/移除PV,作为LV的“容器”。 - LV(Logical Volume,逻辑卷):
从VG中划分出的逻辑存储空间,可直接格式化并挂载使用,大小可动态调整。
- PV(Physical Volume,物理卷):
- 示例代码:
# 创建PV pvcreate /dev/sdb1 /dev/sdc1# 创建VG(名为vg_data,包含上述PV) vgcreate vg_data /dev/sdb1 /dev/sdc1# 创建LV(名为lv_home,从vg_data中分配100GB) lvcreate -L 100G -n lv_home vg_data# 查看LVM组件状态 pvs # 查看PV vgs # 查看VG lvs # 查看LV
69. LVM相比传统分区有什么优势?如何创建和扩展LVM逻辑卷?
- LVM的优势:
- 动态调整大小:LV可在线扩展或缩小(需文件系统支持),无需重新分区。
- 合并分散存储:将多个物理磁盘的空间合并为一个逻辑卷,方便管理。
- 快照功能:支持创建LV的快照,用于备份或测试(修改快照不影响原数据)。
- 灵活命名:LV可自定义名称(如
lv_home
),比设备名(/dev/sda1
)更直观。
- 创建和扩展LVM逻辑卷的步骤:
- 创建LVM(续接68题):
# 格式化LV为ext4 mkfs.ext4 /dev/vg_data/lv_home# 挂载LV mkdir /home_new mount /dev/vg_data/lv_home /home_new
- 扩展LV(假设vg_data有足够空间):
# 扩展LV至150GB(增加50GB) lvextend -L 150G /dev/vg_data/lv_home# 扩展文件系统(ext4用resize2fs,xfs用xfs_growfs) resize2fs /dev/vg_data/lv_home # ext4 xfs_growfs /home_new # xfs(需指定挂载点)
- 创建LVM(续接68题):
70. 什么是RAID?常见的RAID级别(如RAID0、RAID1、RAID5、RAID10)有什么特点?
- 原理说明:RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)通过将多个物理磁盘组合为一个逻辑存储单元,提升存储性能或可靠性。
- 常见RAID级别及特点:
RAID级别 最少磁盘数 性能 冗余性(容错) 空间利用率 适用场景 RAID0 2 最高(读写并行) 无(单盘故障数据全丢) 100%(总容量=各盘之和) 追求速度,如视频编辑、临时存储 RAID1 2 读性能提升,写性能略降 有(镜像,单盘故障不丢数据) 50%(总容量=最小盘容量) 追求可靠性,如系统盘、数据库 RAID5 3 读性能好,写性能中等 有(单盘容错,通过校验恢复) (n-1)/n(n为磁盘数) 平衡性能与冗余,如文件服务器 RAID10 4 读写性能优秀 有(双盘容错,镜像+条带) 50%(总容量=偶数盘之和/2) 高要求场景,如数据库服务器 - 示例:RAID5由3块1TB磁盘组成,总容量为2TB(1TB用于校验),允许1块磁盘故障;RAID10由4块1TB磁盘组成,总容量为2TB(两两镜像),允许2块磁盘故障(每对镜像最多1块)。
71. 如何查看文件的inode号?当inode耗尽时会出现什么问题?
- 原理说明:inode是文件系统中用于存储文件元数据(如权限、时间、块位置)的数据结构,每个文件对应一个唯一的inode号。文件系统创建时会预分配固定数量的inode,与磁盘空间独立。
- 查看文件的inode号:
ls -i filename.txt # 查看单个文件的inode号(如:12345 filename.txt) stat filename.txt # 查看文件详细信息,包含inode号(Inode: 12345)
- inode耗尽的问题:
当inode耗尽时,即使磁盘仍有剩余空间,也无法创建新文件或目录(提示“No space left on device”),因为每个新文件需要一个inode。 - 查看inode使用情况:
df -i # 查看各分区的inode总数、已使用和剩余数量
72. 什么是稀疏文件(Sparse File)?它有什么特点和用途?
- 原理说明:稀疏文件是一种特殊文件,其中包含大量连续的空数据(零字节),文件系统会跳过这些空数据块,不实际分配磁盘空间,仅在写入非空数据时才分配块。
- 特点:
- 节省空间:空数据不占用磁盘空间,文件的“逻辑大小”远大于“实际占用空间”。
- 延迟分配:仅当写入非空数据时才分配磁盘块。
- 支持大部分文件系统:如ext4、xfs、btrfs等均支持。
- 用途:
- 虚拟机磁盘镜像(如VMware、QEMU镜像):初始时几乎为空,随数据写入动态占用空间。
- 日志文件或数据库:预留大空间但实际数据较少的场景。
- 示例代码:
# 创建稀疏文件(逻辑大小10GB,实际几乎不占空间) dd if=/dev/zero of=sparse.img bs=1G count=0 seek=10# 查看逻辑大小和实际占用空间 ls -lh sparse.img # 显示:10G -rw-r--r-- 1 user user 10G ...(逻辑大小) du -sh sparse.img # 显示:0B sparse.img(实际占用空间)
73. 什么是临时文件系统(tmpfs)?它通常挂载在哪个目录?
- 原理说明:tmpfs是一种基于内存和swap的临时文件系统,数据存储在内存中(部分不活跃数据可能被交换到swap),读写速度极快,但系统重启后数据会丢失。
- 特点:
- 高性能:内存读写速度远快于磁盘。
- 动态大小:根据实际存储的数据自动调整占用的内存空间。
- 易失性:数据在系统重启或断电后丢失。
- 默认挂载目录:
/tmp
和/run
(部分系统),用于存储临时文件(如程序缓存、会话数据)。 - 示例代码:
# 查看tmpfs挂载情况 mount | grep tmpfs # 输出:tmpfs on /tmp type tmpfs (rw,nosuid,nodev)# 手动挂载一个tmpfs(大小限制为1GB) mkdir /mnt/tmp mount -t tmpfs -o size=1G tmpfs /mnt/tmp
74. 如何查找系统中的大文件(如超过100MB)?
- 原理说明:通过
find
或du
命令结合大小筛选条件,可定位系统中占用空间较大的文件,用于清理磁盘或分析存储使用情况。 - 方法1:使用
find
命令(直接查找文件):# 查找根目录下大小超过100MB的文件(-type f表示普通文件) find / -type f -size +100M 2>/dev/null # 2>/dev/null忽略权限错误# 查找/home目录下超过1GB的文件,并显示大小(-exec执行ls -lh) find /home -type f -size +1G -exec ls -lh {} \; 2>/dev/null
- 方法2:使用
du
命令(按目录/文件大小排序):# 查找当前目录下超过100MB的文件/目录,按大小倒序排列 du -h --threshold=100M | sort -hr# 查看系统中最大的10个文件(结合find和sort) find / -type f -exec du -h {} \; 2>/dev/null | sort -hr | head -n 10
- 说明:
+100M
表示超过100MB,-100M
表示小于100MB;du
的--threshold
(或-t
)指定大小阈值。
75. 什么是文件属性(如 chattr
命令设置的 i
、a
属性)?如何查看和修改?
- 原理说明:文件属性是除权限(读/写/执行)外的额外控制标志,由
chattr
命令设置,用于限制文件的操作(如防止删除、仅允许追加),优先级高于普通权限。 - 常用文件属性:
i
(immutable,不可变):文件不能被删除、修改、重命名或链接,即使root用户也需移除该属性后才能操作。a
(append only,仅追加):文件只能被追加内容,不能删除、修改或截断,常用于日志文件。s
(secure delete,安全删除):文件删除后数据会被清零,防止恢复。u
(undeletable,可恢复):文件删除后数据仍保留,可通过debugfs
恢复。
- 查看文件属性:
lsattr filename.txt # 显示文件的扩展属性(如:----i--------- filename.txt)
- 修改文件属性:
# 设置i属性(禁止修改/删除) chattr +i filename.txt# 取消i属性 chattr -i filename.txt# 设置a属性(仅允许追加) chattr +a log.txt# 取消a属性 chattr -a log.txt
- 注意:
chattr
仅支持ext系列、xfs、btrfs等文件系统,且通常需要root权限操作。
二、120道Linux面试题目录列表
文章序号 | Linux面试题120道 |
---|---|
1 | Linux面试题及详细答案120道(01-15) |
2 | Linux面试题及详细答案120道(16-30) |
3 | Linux面试题及详细答案120道(31-45) |
4 | Linux面试题及详细答案120道(46-60) |
5 | Linux面试题及详细答案120道(61-75) |
6 | Linux面试题及详细答案120道(76-95) |
7 | Linux面试题及详细答案120道(96-110) |
8 | Linux面试题及详细答案120道(111-120) |