19 道存储、文件系统与备份练习题及答案
CompTIA Linux+ 认证考试练习的全部存储、文件系统与备份练习题,附正确答案和简短解析。
开始练习测验 →1. 管理员在服务器中装入一块未分区的 3 TB 磁盘,需要在上面划出八个独立分区。哪种做法可行?
- A.用 parted 或 gdisk 建立 GPT 标签,GPT 能寻址整块 3 TB 并提供远多于四个的分区条目✓ 答案
- B.用 fdisk 建立 MBR 标签,先建立四个主分区,再把其中一个细分为若干逻辑分区来凑够八个
- C.用 fdisk 建立 MBR 标签,因为 msdos 方案只要分区按 4096 字节对齐就能覆盖任意容量
- D.直接对 /dev/sdb 执行 mkfs.ext4 并改用八个目录,因为整盘文件系统没有容量上限
MBR(msdos)方案的寻址上限约为 2 TiB,而且只有四个主分区槽位,其中一个还必须让给扩展分区来容纳逻辑分区,所以一块需要八个分区的 3 TB 磁盘只能使用 GPT。gdisk 和 parted 都能写入 GPT 标签,而 fdisk 是面向 MBR 的传统工具。
编号 QB-PQ49DQ依据: man 8 parted and man 8 gdisk (GPT versus msdos disk labels); CompTIA Linux+ objectives, storage management: partitioning报告此题的问题
2. 在一台运行中的服务器上,管理员用 parted 在 /dev/sdb 上新增一个分区,而该磁盘上已有一个挂载中的文件系统。parted 报告成功,但 /dev/sdb4 始终没有出现,lsblk 也看不到它。原因是什么,又该如何解决?
- A.分区类型标志一直没有设置,必须先运行 parted set 4 lvm on,内核才会登记这个分区
- B.磁盘正在使用中,内核仍持有旧的分区表,执行 partprobe /dev/sdb 让内核重新读取该表✓ 答案
- C.分区的设备节点只在系统启动过程中生成,所以必须等到重启服务器之后该节点才会出现
- D.必须先有文件系统,执行 mkfs.ext4 /dev/sdb4 之后才会在 /dev 目录下生成缺失的设备节点
只要磁盘上还有分区在使用中,内核就无法换入新写入的分区表,只能继续使用缓存的旧副本,于是新的设备节点不存在。partprobe(或 partx)会请求内核重新读取分区表,之后节点就会出现;而创建文件系统或设置类型标志并不会生成设备节点。
编号 QB-88NR5S依据: man 8 partprobe and man 8 partx (re-reading the partition table on a disk in use)报告此题的问题
3. 团队询问为什么新服务器的存储采用 LVM 而不是普通分区。哪项说明准确描述了这一层?
- A.LVM 会自动把每次写入镜像到第二块磁盘,因此它省去了冗余磁盘阵列的需要
- B.卷组建立在某个逻辑卷之上,而物理卷才是最终被系统挂载的那些文件系统
- C.逻辑卷只是被 LVM 改名的分区,所以它的大小仍然由磁盘上的分区表固定下来
- D.磁盘先成为物理卷,物理卷汇集为卷组,逻辑卷再从卷组中划出并且日后可以扩展✓ 答案
LVM 插入了一个抽象层:pvcreate 把块设备标记为物理卷,vgcreate 把它们的区段汇集成卷组,lvcreate 再从这个池中分配逻辑卷。由于空间是按区段而不是按连续磁盘区域分配的,逻辑卷可以在使用中扩展,而分区做不到这一点。LVM 本身并不提供冗余。
编号 QB-QQFKJR依据: man 8 lvm (physical volume, volume group and logical volume layers); man 8 pvcreate, man 8 vgcreate, man 8 lvcreate报告此题的问题
4. 挂载在 /srv/data 的 XFS 逻辑卷 /dev/vg01/lv01 已用 lvextend 扩大,lvs 也确认了新容量,但 df -h 仍显示旧容量。哪条命令能完成剩下的工作?
- A.resize2fs /dev/vg01/lv01,参数是该卷的设备路径
- B.xfs_growfs /srv/data,参数是该文件系统的挂载点✓ 答案
- C.xfs_growfs /dev/vg01/lv01,参数是该卷的设备路径
- D.xfs_repair /dev/vg01/lv01,并且要先卸载该文件系统
xfs_growfs 用于扩大已挂载的 XFS 文件系统,其参数是挂载点;而 resize2fs 是 ext2/3/4 的工具,参数是设备路径,把两者混淆是最常见的错误。xfs_repair 既不能扩容,也不能在挂载状态下运行;此外 XFS 只能扩大,永远不能缩小。
编号 QB-98Z3BT依据: man 8 xfs_growfs and man 8 resize2fs (argument each tool expects)报告此题的问题
5. 在一次有风险的数据库升级之前,管理员执行了 lvcreate -s -L 10G -n db_snap /dev/vg01/db_lv。关于其结果,哪项说法是准确的?
- A.它可以代替异地备份,因为卷组背后的磁盘全部丢失之后快照仍然能继续使用
- B.它是写时复制视图,占用同一卷组的空闲区段,一旦 10G 变更空间用尽就会失效✓ 答案
- C.它会冻结对 db_lv 的所有写入直到被删除,所以快照存在期间数据库必须保持停机
- D.它是 db_lv 在新区段上的独立完整副本,因此之后可以安全地删除原来的卷组
LVM 快照只保存创建之后发生变化的那些块的原有内容,而这部分空间来自同一卷组中的空闲区段;一旦预留空间耗尽,快照就会失效。由于它与源卷共用同一批磁盘,它只是一个快速回滚点,而不是备份。
编号 QB-RQTWQS依据: man 8 lvcreate (snapshot logical volumes and copy-on-write behaviour)报告此题的问题
6. 有四块相同的磁盘要组成软件阵列,要求任意两块同时故障后仍能继续提供数据,并在满足该要求的前提下获得最大可用容量。哪个 mdadm 级别合适?
- A.--level=0,在四个成员上做条带化,可用容量等于四块盘之和
- B.--level=5,单一分布式校验,四块盘中可用容量相当于三块
- C.--level=6,双重分布式校验,四块盘中可用容量相当于两块✓ 答案
- D.--level=10,镜像对再做条带化,集合内任意两块盘故障都能撑住
RAID 6 维护两套独立的校验计算,至少需要四个成员,是常见级别中唯一能承受两块盘同时故障的方案,代价是损失相当于两块盘的容量。RAID 5 只能承受一块盘故障,RAID 10 只有在两块盘分属不同镜像时才能撑住,RAID 0 则完全没有冗余。
编号 QB-A8CEGU依据: man 4 md and man 8 mdadm (RAID levels, minimum member counts and failure tolerance)报告此题的问题
7. cat /proc/mdstat 输出如下: md0 : active raid5 sdd1[3] sdc1[2] sdb1[1] 20953088 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UUU_] 这说明了什么,接下来应该怎么做?
- A.同步重建正在进行,正确做法是暂时不要动这个阵列,等恢复进度走完之后再处理
- B.阵列是健康的,下划线代表一块空闲热备盘,只需保存 mdadm --detail --scan 的输出
- C.md0 上的文件系统已损坏,必须先停止阵列并用 fsck 检查,然后才能更换成员盘
- D.阵列已降级,缺少一个成员且不再有冗余,应该用 mdadm --manage --add 加入替换盘✓ 答案
[4/3] 表示该阵列应有四个成员但只有三个处于活动状态,而 [UUU_] 中的下划线标出了空缺的位置。处于这种状态的 RAID 5 仍能提供数据,但已经失去校验保护,所以应加入替换设备以启动重建;如果重建正在进行,/proc/mdstat 还会输出带百分比的 recovery 行。
编号 QB-SQ69WT依据: man 4 md (/proc/mdstat status fields) and man 8 mdadm (--manage --add)报告此题的问题
8. 一个新的逻辑卷需要格式化为 ext4 并带上 backups 这个标签,以便 /etc/fstab 用 LABEL=backups 挂载它。哪种做法能实现?
- A.对该卷执行 mkfs.ext4 -L backups,写 fstab 之前再用 blkid 确认标签✓ 答案
- B.对该卷执行 mkfs.ext4 -U backups,因为 -U 保存的正是挂载时 LABEL= 查找的可读名称
- C.对该卷执行 mkfs.ext4,然后把对应关系写进 /etc/labels,因为 LABEL= 由该文件解析
- D.对该卷执行 mkfs.ext4,再用 xfs_admin -L backups 写入名称,它适用于任何格式
mkfs.ext4 -L 在创建文件系统时就把卷标写入 ext4 超级块,日后可以用 e2label 或 tune2fs -L 修改;随后 blkid 能读回 LABEL 与 TYPE,从而在重启之前核对 fstab 条目。xfs_admin 只能给 XFS 打标签,-U 设置的是 UUID 而不是标签,而 /etc/labels 这个文件并不存在。
编号 QB-B8QRNV依据: man 8 mkfs.ext4 (-L label), man 8 e2label and man 8 blkid报告此题的问题
9. dmesg 报告挂载在 /var/lib/data 的 XFS 文件系统出现元数据 I/O 错误,现在必须对它进行检查和修复。这需要怎么做?
- A.在挂载状态下对 /var/lib/data 运行 fsck,因为 fsck.xfs 会做完整的元数据检查并修复发现的问题
- B.先卸载该文件系统,再对其设备运行 xfs_repair,因为该工具拒绝处理已挂载的文件系统✓ 答案
- C.保持挂载状态,对挂载点运行 xfs_repair,因为 XFS 会重放日志并在线完成修复
- D.先卸载该文件系统,再对设备运行 e2fsck -f,因为 e2fsck 是 ext 与 XFS 通用的检查工具
xfs_repair 会直接在设备上重写元数据,因此只能对已卸载的文件系统运行;如果文件系统仍处于挂载状态,它会报错退出。fsck.xfs 的存在只是为了让启动脚本有东西可以调用:它什么都不检查,直接成功退出。而 e2fsck(fsck.ext4)只处理 ext 家族。
编号 QB-TQHK3V依据: man 8 xfs_repair (unmounted filesystem requirement) and man 8 fsck.xfs (does nothing and exits zero)报告此题的问题
10. 一个新的 XFS 数据卷被写入 /etc/fstab: UUID=9c1e-4f2a /srv/data xfs defaults 0 1 哪个字段是错的,应该填什么?
- A.第五个字段,即 dump 标志;必须填 1,这样启动时检查文件系统才会包含该卷
- B.第四个字段,即挂载选项;XFS 不能使用 defaults,必须改成 rw,relatime 才行
- C.第六个字段,即 fsck 检查顺序;非根的 XFS 卷应填 0,因为启动时 fsck 并不检查 XFS✓ 答案
- D.第三个字段,即文件系统类型;XFS 卷必须写成 auto,这样 mount 才会自行去探测格式
fstab 的第六个字段是 fsck 检查顺序:1 保留给根文件系统,2 用于其他需要检查的文件系统,0 表示跳过检查。启动时 fsck 并不检查 XFS(fsck.xfs 什么也不做),所以这类条目按惯例填 0。第五个字段是 dump 标志,与检查毫无关系。
编号 QB-8JAF3Q依据: man 5 fstab (fs_freq and fs_passno fields)报告此题的问题
11. 某服务器有多块 SATA 磁盘。加装了另一块磁盘之后,fstab 中的 "/dev/sdc1 /backup ext4 defaults 0 2" 这一行把错误的文件系统挂到了 /backup。原因是什么,该如何修正?
- A.ext4 超级块里保存着设备路径,必须先用 tune2fs 把新名字写进去,这一行才会生效
- B.内核设备名是按探测顺序分配的、可能发生变化,应改用 blkid 报出的 UUID= 值✓ 答案
- C.加装磁盘之后一直没有重新读取分区表,需要执行 partprobe,而这一行本身没有问题
- D.条目是按挂载点的字母顺序处理的,把 /backup 改名为 /a_backup 就会先解析到它
像 /dev/sdc1 这样的名称是在内核枚举设备时分配的,所以增减磁盘或改动接线都可能使编号变化,于是 fstab 中的这一行就指向了另一个分区。改用 blkid 或 lsblk -f 报出的 UUID= 或 LABEL= 来标识文件系统,可以把条目绑定到文件系统本身,而不是绑定到它在探测顺序中的位置。
编号 QB-R2GMNQ依据: man 5 fstab (identifying devices by UUID or LABEL) and man 8 blkid报告此题的问题
12. 某服务器启动时进入了紧急模式,原因是 /etc/fstab 中列出的一块外置 USB 归档磁盘被拔掉了。该条目必须保留,以便磁盘接上时仍会自动挂载,但磁盘缺失不应阻止启动。哪项修改能做到?
- A.给该条目的选项加上 nofail,设备缺失时只会被记录下来,启动过程继续进行✓ 答案
- B.给该条目的选项加上 noauto,这样启动时永远不挂载,只能事后手工挂载
- C.把该条目的 fsck 检查顺序字段设为 1,让该设备检查失败时被修复而不是致命错误
- D.把该条目里的 UUID= 换成 /dev/sdd1,这样节点不存在时会静默跳过挂载
nofail 的作用是:当 fstab 条目对应的设备不存在时,mount 不会抛出阻断启动的错误,于是系统仍能进入正常运行目标,而该条目在设备接上时依旧会自动挂载。noauto 虽然也能让启动完成,但它放弃了自动挂载;而检查顺序字段只控制检查次序。
编号 QB-9JNS8R依据: man 8 mount (nofail and noauto mount options) and man 5 fstab报告此题的问题
13. 执行 umount /mnt/archive 时返回 "umount: /mnt/archive: target is busy."。哪一步是正确的应对?
- A.用 umount -l /mnt/archive 延迟卸载,这很安全,因为会先把未完成的写入刷盘
- B.用 mount -o remount,ro /mnt/archive 重新挂载,这会释放挂载上被占用的描述符
- C.用 umount -f /mnt/archive 强制卸载,它会替你关闭该挂载上打开的文件描述符
- D.用 fuser -vm /mnt/archive 或 lsof 列出占用该挂载的进程,再停止或移开它们✓ 答案
"target is busy" 说明仍有进程在该挂载内打开着文件或把它当作工作目录,因此内核不会卸载它;fuser -vm 或 lsof 可以列出这些进程,以便停止或移开它们。umount -f 是为不可达的网络挂载设计的,而 umount -l 只是把挂载点隐藏起来,直到最后一个引用关闭,两者都没有消除原因。
编号 QB-S2UXTR依据: man 8 umount (target is busy, -f and -l) and man 1 fuser报告此题的问题
14. 同一台主机上,/srv/media 下的文件还必须出现在 /var/www/html/media 下,而且不能复制数据;该 Web 服务器又被配置为拒绝跟随符号链接。哪种做法合适?
- A.执行 mount --bind /srv/media /var/www/html/media,并在 fstab 中写入带 bind 选项的对应条目✓ 答案
- B.执行 mount -t nfs localhost:/srv/media /var/www/html/media,并在 /etc/exports 中发布 /srv/media
- C.执行 mount -t tmpfs /srv/media /var/www/html/media,并在 fstab 中写入 tmpfs 类型的对应条目
- D.执行 mount -o loop /srv/media /var/www/html/media,并在 fstab 中写入带 loop 选项的对应条目
绑定挂载把一棵已有的目录子树接到同一文件系统命名空间中的第二个位置,因此两条路径访问的是完全相同的 inode,既不复制数据也不涉及符号链接;在 /etc/fstab 中,源目录写在设备字段,并在选项里加上 bind。tmpfs 会在那里挂上一块空的内存存储,而 -o loop 是用于文件系统镜像文件的。
编号 QB-AJZ4ES依据: man 8 mount (bind mounts) and man 5 fstab报告此题的问题
15. 某服务器内存不足,需要在已有的 ext4 文件系统上以文件形式增加 4 GiB 交换空间,要求立即生效并且重启之后依然有效。哪一组步骤能做到?
- A.创建该文件,把权限设为 0600,对它执行 mkswap,用 swapon 启用,再在 fstab 中加一条 swap 类型的条目✓ 答案
- B.创建该文件,对它执行 mkswap,然后提高 vm.swappiness,这样就把该文件登记为以后启动时的交换区
- C.创建该文件,直接对它执行 swapon,并把它写进 /etc/mtab,这样内核在下次启动时就会自动启用它
- D.创建该文件,对它执行 mkfs.ext4,挂载到 /swap,再在 fstab 中加一条带 sw 选项的 ext4 条目
交换文件必须先分配空间,把权限限制为仅 root 可访问(0600),用 mkswap 写入交换签名,再用 swapon 启用;而只有类型字段为 swap 的 /etc/fstab 条目才能让它在重启后恢复。vm.swappiness 只是调节现有交换空间的使用积极程度,/etc/mtab 只反映当前挂载状态,并不能配置任何东西。
编号 QB-T27AZS依据: man 8 mkswap, man 8 swapon and man 5 fstab (swap entries)报告此题的问题
16. 在一台 /home 为独立 ext4 文件系统的服务器上,必须限制每个用户在该处可占用的空间。哪种机制能做到?
- A.给每个账户单独建立一个组,并用 chmod 给 /home 设置粘滞位,以此限制单个账户能够写入的数据量
- B.在 /etc/security/limits.conf 中为每个用户加上 fsize 硬限制,内核会把它应用到整个文件系统
- C.用 tune2fs -m 在 /home 上为每个账户预留份额,也就是规定每个用户可以写入的空间百分比
- D.用 usrquota 挂载 /home,用 quotacheck 生成配额文件,用 quotaon 启用,再用 edquota 设定限额✓ 答案
磁盘配额是文件系统的功能:该文件系统必须以 usrquota(或 grpquota)挂载,用 quotacheck 建立记账文件并用 quotaon 启用,然后用 edquota 为每个用户设置块与 inode 的软、硬限制,再用 repquota 查看用量。limits.conf 限制的是进程可创建的单个文件大小,而 tune2fs -m 只为 root 预留块。
编号 QB-BJCFKT依据: man 8 quotaon, man 8 edquota, man 8 repquota and man 5 fstab (usrquota and grpquota mount options)报告此题的问题
17. 需要用一条命令把 /etc 目录树归档为 /root/etc-backup.tar.bz2,之后还要在不解包的情况下列出其中内容。哪一对命令能做到?
- A.用 tar -cJvf /root/etc-backup.tar.bz2 /etc 创建,再用 tar -tJvf /root/etc-backup.tar.bz2 列出
- B.用 tar -cvf /root/etc-backup.tar /etc 创建后再用 bzip2 压缩,然后用 tar -xvf 查看其中内容
- C.用 tar -cjvf /root/etc-backup.tar.bz2 /etc 创建,再用 tar -tjvf /root/etc-backup.tar.bz2 列出✓ 答案
- D.用 tar -czvf /root/etc-backup.tar.bz2 /etc 创建,再用 tar -xzvf /root/etc-backup.tar.bz2 列出
tar 通过选项字母选择压缩器:-z 是 gzip,-j 是 bzip2,-J 是 xz,所以 .tar.bz2 要用 -j 生成。在模式字母中,-c 表示创建,-t 表示列出内容清单而不向磁盘写入任何文件,-x 表示解包。归档(把许多文件汇成一个流)与压缩(把这个流缩小)是两个独立步骤,tar 可以在一条命令里把它们串起来。
编号 QB-U2JM6U依据: man 1 tar (-c, -t, -x mode letters and -z, -j, -J compression options)报告此题的问题
18. 一个每晚运行的任务要把 /var/www 目录树复制到主机 backup,使 /srv/mirror 恰好保存 /var/www 的当前内容——不出现 www 子目录,源端删除的文件在目标端也要消失——并保留权限、属主和时间戳。哪条命令能做到?
- A.rsync -rv --remove-source-files /var/www/ backup:/srv/mirror/,它会镜像目录树并清掉多余文件
- B.rsync -a /var/www backup:/srv/mirror/,源路径末尾不带斜杠时复制的就是该目录的内容
- C.rsync -a --delete /var/www/ backup:/srv/mirror/,源路径末尾的斜杠表示复制该目录的内容✓ 答案
- D.rsync -a --delete /var/www backup:/srv/mirror/,前导路径会被去掉,所以不会生成 www 目录
rsync 源路径末尾的斜杠表示“该目录的内容”,不带斜杠则会连目录本身一起复制,从而生成 /srv/mirror/www。-a 归档选项会递归复制并保留权限、属主、时间戳和符号链接,而 --delete 会删除目标端已在源端不存在的文件,正是它让副本成为精确镜像。--remove-source-files 删除的却是源端文件。
编号 QB-CJQSRU依据: man 1 rsync (trailing slash semantics on the source, -a archive mode and --delete)报告此题的问题
19. 需要把一个 500 GB 的分区 /dev/sdb1 逐块复制到同一主机上的 /dev/sdc1,其中包括文件系统元数据和未使用的块,并显示进度。哪条命令正确,风险又是什么?
- A.dd of=/dev/sdb1 if=/dev/sdc1 bs=64K status=progress;目标始终由 if= 指定,所以这个顺序是对的
- B.cp -a /dev/sdb1 /dev/sdc1;归档选项会连同文件系统元数据一起完整复制块设备的内容
- C.dd if=/dev/sdb1 of=/dev/sdc1 bs=64K status=progress;把 if= 与 of= 写反会覆盖掉源分区✓ 答案
- D.tar -cf - /dev/sdb1 | tar -xf - -C /dev/sdc1;两个 tar 进程用管道相连即可逐块复制分区
dd 从 if= 读取、向 of= 写入,按块级复制整个分区——文件系统结构、空闲空间等一并复制,而 status=progress 会在运行中报告进度。由于这两个操作数长得很像,写反就会无声地毁掉源数据,所以 dd 命令在执行前要再核对一遍。如果磁盘已经开始出现读错误,更合适的工具是 ddrescue:它会重试并保留 mapfile,使救援过程可以续做。
编号 QB-V2WXBV依据: man 1 dd (if, of, bs and status operands) and man 1 ddrescue (recovering from failing media)报告此题的问题
本考试的其他主题
练习题依据 CompTIA 公布的 Linux+ 考试大纲及 Linux 系统管理的通行实践编写。CompTIA 和 Linux+ 是 CompTIA 的商标,Linux 是 Linus Torvalds 的注册商标;本网站与 CompTIA 无关联,也未获其认可。真实考试除选择题外还包含实操题(performance-based questions),要求在模拟环境中实际完成任务——四选一的题型无法复现这一部分,因此本题库覆盖的是知识部分,请同时在真实系统上动手练习。CompTIA 会定期修订大纲并为每个版本编号:报考前请向 CompTIA 确认现行大纲、考试代码与报考要求。 关于 CompTIA Linux+ 认证 →