当前位置: 首页 > news >正文

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中两种主流的日志型文件系统,设计目标不同,适用于不同场景。
  • 主要区别及优势
    特性ext4xfs
    设计目标兼容性和稳定性优先高性能和大文件处理优先
    最大文件大小16TB8EB(远大于ext4)
    最大分区大小1EB8EB
    文件系统检查速度较慢(随分区大小增加而变慢)较快(日志恢复机制更高效)
    动态扩展支持,但需离线扩展(未挂载时)支持在线扩展(挂载状态下)
    删除大文件性能较慢(需逐个释放块)较快(批量处理块)
    兼容性支持大多数Linux发行版,兼容ext2/ext3主流发行版支持,但兼容性略逊于ext4
  • 适用场景
    • ext4:个人电脑、小型服务器、需要高兼容性的场景。
    • xfs:大型服务器、数据中心、需要处理大文件或高吞吐量的场景(如数据库、媒体服务器)。

63. 什么是swap分区?它的作用是什么?如何创建和启用swap分区?

  • 原理说明:swap分区(交换分区)是Linux中用于临时存储内存中不活跃数据的磁盘空间,当物理内存不足时,系统会将部分内存数据转移到swap分区,释放物理内存给活跃进程。
  • 作用
    • 缓解物理内存不足的压力,防止系统因内存耗尽而崩溃。
    • 支持休眠功能(将内存数据写入swap分区后关机,重启时恢复)。
  • 创建和启用swap分区的步骤
    1. 创建swap分区(假设分区为/dev/sdb1):
      mkswap /dev/sdb1  # 格式化分区为swap类型
      
    2. 启用swap分区
      swapon /dev/sdb1  # 临时启用
      
    3. 设置开机自动挂载
      编辑/etc/fstab,添加如下行(UUID可通过blkid /dev/sdb1获取):
      UUID=xxx-xxx-xxx /swap swap defaults 0 0
      
    4. 验证swap状态
      free -h       # 查看swap使用情况
      swapon --show # 查看已启用的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 选项可以指定哪些常用挂载参数?(如 rorwnoatime

  • 原理说明-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
    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逻辑卷的步骤
    1. 创建LVM(续接68题)
      # 格式化LV为ext4
      mkfs.ext4 /dev/vg_data/lv_home# 挂载LV
      mkdir /home_new
      mount /dev/vg_data/lv_home /home_new
      
    2. 扩展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(需指定挂载点)
      

70. 什么是RAID?常见的RAID级别(如RAID0、RAID1、RAID5、RAID10)有什么特点?

  • 原理说明:RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)通过将多个物理磁盘组合为一个逻辑存储单元,提升存储性能或可靠性。
  • 常见RAID级别及特点
    RAID级别最少磁盘数性能冗余性(容错)空间利用率适用场景
    RAID02最高(读写并行)无(单盘故障数据全丢)100%(总容量=各盘之和)追求速度,如视频编辑、临时存储
    RAID12读性能提升,写性能略降有(镜像,单盘故障不丢数据)50%(总容量=最小盘容量)追求可靠性,如系统盘、数据库
    RAID53读性能好,写性能中等有(单盘容错,通过校验恢复)(n-1)/n(n为磁盘数)平衡性能与冗余,如文件服务器
    RAID104读写性能优秀有(双盘容错,镜像+条带)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)?

  • 原理说明:通过finddu命令结合大小筛选条件,可定位系统中占用空间较大的文件,用于清理磁盘或分析存储使用情况。
  • 方法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 命令设置的 ia 属性)?如何查看和修改?

  • 原理说明:文件属性是除权限(读/写/执行)外的额外控制标志,由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道
1Linux面试题及详细答案120道(01-15)
2Linux面试题及详细答案120道(16-30)
3Linux面试题及详细答案120道(31-45)
4Linux面试题及详细答案120道(46-60)
5Linux面试题及详细答案120道(61-75)
6Linux面试题及详细答案120道(76-95)
7Linux面试题及详细答案120道(96-110)
8Linux面试题及详细答案120道(111-120)
http://www.dtcms.com/a/415011.html

相关文章:

  • 韶关住房和城乡建设局网站气血不足做网站
  • 橱柜网站建设公司建设网站的收费
  • 融资路演 AI 速成 72 小时实战指南(抓风口→做PPT→补漏洞)
  • JUC并发编程:共享模型之管程与悲观锁(synchronized)详解
  • php基础-文件包含(第13天)
  • STM32智能加湿器
  • 网站开发管理nodejs网站开发教程
  • webrtc弱网-TrendlineEstimator类源码分析与算法原理
  • RocketMQ 消息堆积:快速定位、处理与预防方案
  • 深圳网站建设制作开发咨询邯郸网站建设
  • P3051题解
  • 想给孩子找点题做 都有什么网站化学课件
  • 【2026计算机毕业设计】基于Springboot的汉服交流的微信小程序
  • uutils coreutils - GNU coreutils 的 Rust 跨平台实现
  • 如何在阿里巴巴上做网站去哪网站备案吗
  • 软考中级-软件设计师(五)
  • 零基础学Docker(5)--容器数据卷
  • list列表
  • 团购网站做摄影网站编程开发
  • Kurt-Blender零基础教程:第4章:粒子篇
  • Qt常用控件之QTextEdit
  • ImageHash - Python 图像哈希库
  • 初识 Vue
  • 做网站销售水果上海建设安全协会网站
  • 正能量视频素材免费下载网站现代营销手段有哪些
  • Prj11-8088单板机C语言大综合(一)
  • 44.网络层
  • 肇庆网站制作软件郑州企业网络推广公司
  • ALLaM - 专为阿拉伯语设计的AI大语言模型
  • Docker Compose 停止命令对比