2. 核心细节解析与实操要点2.1 设备命名规则为什么是sda而不是hdaLinux下设备命名有一套固定规则看懂命名就能猜出设备类型。SATA、USB、SCSI接口的磁盘统一定义为sd开头按检测顺序依次编号为sda、sdb、sdc。分区再追加数字比如sda1表示第一块磁盘的第一个分区。NVMe固态硬盘则命名为nvme0n1这样的格式中间的0代表控制器编号n1代表命名空间。我刚开始学的时候也困惑过为什么以前还能看到hda这种命名后来才知道那是IDE硬盘时代的遗留。现在新装机基本都是SATA或NVMe所以见到的绝大多数是sd开头的设备名。有一点需要特别注意设备名是根据内核检测顺序动态分配的不是固定不变的。今天插两块盘sda和sdb还能分清重启后如果硬件枚举顺序变了设备名可能互换。因此生产环境配置挂载绝不能直接用设备名写死要用UUID。查看设备名和UUID的方法很多最常用的是lsblk和blkid。lsblk以树状结构显示块设备关系直观清楚blkid则能显示文件系统类型和UUID这类底层信息。做挂载操作前先跑这两条命令确认设备状态是每个合格的系统管理员的基本习惯。2.2 挂载的本质让目录成为设备的入口挂载这个概念很多新手一开始理解不了。总觉得文件系统是“装”在磁盘上的访问磁盘就是访问文件。实际上Linux的设计思路完全不同设备只是一个存储容器里面的数据要能被访问必须先通过mount命令把它“连接”到一个空目录上。这个目录就是挂载点进入这个目录就等于进入了那个设备的根目录。把设备比作一间装满物品的仓库挂载点就是仓库的门口。没有门口仓库里的东西再好你也拿不到。而且一个仓库可以换不同的门口一个门口同一时间只能连接一个仓库。这个类比基本涵盖了挂载的核心逻辑。挂载的基本命令格式是这样mount -t 文件系统类型 设备文件 挂载点目录实际操作中-t参数常常可以省略内核会自动识别文件系统类型。比如插上U盘执行mount /dev/sdb1 /mnt/usb就能完成挂载。当然前提是/dev/sdb1确实存在而且/mnt/usb目录已经创建。挂载点必须是一个已经存在的目录如果目录里有内容挂载后这些内容会被临时隐藏等卸载后重新出现。这个特性经常让新手以为数据丢了实际上只是被挂载行为遮住了。查看当前系统挂载了哪些设备直接执行mount不带参数输出信息量大且不直观。更推荐用df -hT或findmnt一个看容量使用率一个看挂载树关系各有所长。2.3 卸载的正确姿势找不到设备先查占用卸载比挂载更讲究。命令很简单umount加设备名或挂载点都行umount /mnt/usb但经常遇到的情况是提示target is busy设备正忙卸载不了。这是因为有进程还在使用这个挂载点下的文件。比如你在/mnt/usb目录里打开了某个文件或者终端当前工作目录就在挂载点里面都会导致卸载失败。解决办法是先找到占用进程再处理fuser -vm /mnt/usb lsof /mnt/usbfuser和lsof输出对应的进程PID确认是可以结束的进程后kill掉再重新umount就能成功。生产服务器上如果确认文件系统已无人使用但卸载仍然失败还可以用umount -l执行延迟卸载系统会在文件访问结束后自动完成卸载。这个参数要慎用尤其是有数据库在跑的机器贸然延迟卸载可能造成数据不一致。2.4 学会查看文件系统状态df和du各有妙用df和du是Linux下查看磁盘使用情况最常用的两个命令但很多人用了一两年都分不清它们的区别。简单说df统计的是整个文件系统的空间使用du统计的是目录树的实际文件大小。两者口径不同结果自然有差异。使用最频繁的写法是df -hT du -sh /var/logdf的-h自动把单位换成人类可读的G、M-T顺带显示文件系统类型。排查磁盘告警时第一眼就看这个输出定位哪个分区接近饱和。du则用于深入定位大文件所在目录-s只看汇总-h人类可读。想看目录下哪些文件占用高用du -ah /目录 | sort -rh | head -20配合管道筛选。有个实际场景让我印象很深。某台服务器df显示根分区使用了90%但du逐目录统计下来根本没那么大。后来一查才知道是某个进程删除了大文件但没释放句柄删除的文件仍然占着磁盘空间。这种情况只能重启进程或服务才能释放du看不到这部分“幽灵空间”。遇到磁盘满但找不到大文件时别忘了这种可能性。3. 实操过程与核心环节实现3.1 环境准备与虚拟机磁盘添加演练学这章内容最好准备一台虚拟机反复折腾。我用的是某开源虚拟化平台创建好一台最小化安装的Linux虚拟机后先做两次快照方便随时回滚。接下来演练添加新磁盘的完整流程把从零到挂载使用的每一步都走通。关机的虚拟机上添加一块5GB的虚拟磁盘重新开机后首先验证内核是否能正确识别lsblk ls /dev/sd*输出里会多出sdb这块盘大小5G没有分区信息。此时磁盘还没有分区表fdisk -l也只会显示磁盘基本信息。这块裸盘就是接下来学习的实验材料。实际操作中我习惯把每个环节分开验证不要一次性全部做完。挂载、分区、格式化这些操作一步错就可能影响整块盘的数据分步验证能第一时间发现问题。这一步也让新手对系统设备命名规律有了感性认识sda、sdb不是凭空来的。3.2 从分区到挂载的全流程操作记录在sdb上建立分区用fdisk工具完成fdisk /dev/sdb进入交互界面后依次执行n创建新分区、p选择主分区、按提示接受默认分区号、w保存退出。全程只要几十秒。fdisk实际是把分区表写入磁盘的工具Linux发行版也提供parted和gdisk等替代工具但fdisk覆盖面广、操作直接用于学习最合适。分区创建完成后刷新分区表并格式化生成ext4文件系统partprobe /dev/sdb mkfs.ext4 /dev/sdb1mkfs系列工具是“make filesystem”的缩写ext4是当前Linux最常用的日志文件系统之一稳定性和兼容性都经过长期验证。格式化过程会输出文件系统参数比如块大小、inode数量这些信息可以用 tune2fs -l 或 dumpe2fs 再查看。格式化完成后创建挂载点目录并执行挂载mkdir -p /data mount /dev/sdb1 /data df -hT /datadf输出显示/dev/sdb1已挂载到/data类型ext4容量5G。这套流程走完新磁盘从裸盘变成了可存储数据的文件系统。到这一步还只是临时挂载重启后会失效因此后面必须配置自动挂载。完整的操作链路其实包含设备识别、分区规划、文件系统创建、挂载点管理四个层次。新手容易把这几步混为一谈实际操作时要按顺序一步步来避免直接mkfs整块盘而忽略了分区这一层。生产环境里数据盘建议单独分区并预留扩展空间不要把所有容量都分给一个分区。3.3 配置fstab实现开机自动挂载重启后挂载失效是新手很容易忽略的点。考试和实际运维都要求配置持久化挂载方法就是写入/etc/fstab。用UUID而不是设备名来标识分区避免设备顺序变化导致挂载错乱。先通过blkid获取新分区的UUIDblkid /dev/sdb1然后编辑/etc/fstab追加如下行UUID你的UUID值 /data ext4 defaults 0 0编辑完成后不要直接重启先执行mount -a验证配置是否正确。mount -a会按照fstab的内容自动挂载所有符合条件的分区如果配置有误命令会立即报错。这一步是保命操作一定要养成习惯。验证通过再重启系统就能自动把/dev/sdb1挂载到/data。fstab的六个字段含义也值得说清楚第一字段设备标识推荐UUID第二字段挂载点第三字段文件系统类型第四字段挂载选项第五字段是否dump备份第六字段fsck检查顺序。根分区通常是1其他分区是2不需要检查就填0。乱填第六列可能导致开机时文件系统检查卡住这也是新手经常踩的坑。3.4 掌握swap交换空间的挂载管理swap对Linux系统意义重大。物理内存不足时内核会把不常用的内存页临时换到swap分区腾出物理内存给活跃进程使用。配置swap是RH124第11章必练的操作。创建swap空间有两类常见方式一种是独立分区一种是swap文件。虚拟机环境里分区演练更直观fdisk /dev/sdb # 再创建一个分区比如sdb2 mkswap /dev/sdb2 swapon /dev/sdb2 free -hfree命令输出里的Swap行能确认swap是否生效。注意mkswap和mkfs.ext4完全不同前者把分区格式化为swap签名后者创建的是ext4文件系统千万不要混用。swap分区没有挂载点概念它用的是swapon启用、swapoff停用这套机制这跟普通文件系统的挂载逻辑还不一样。fstab里swap行的设备标识也支持UUID挂载选项部分可以用defaults但很多生产环境会额外设置noatime之类的选项减少不必要的磁盘写操作。安装操作系统时如果忘了划分swap分区事后用swap文件补上也是常用办法。比如创建一个4G的swap文件步骤也不复杂但使用分区更符合这篇主题的语境。4. 常见问题与排查技巧实录4.1 系统重启后挂载丢失很多新手配好了mount挂载一切正常重启后却发现自己写的数据不见了。其实数据都在只是没有自动挂载。mount命令创建的挂载关系只对当前运行的内核生效重启后内核里挂载表清空设备回到未挂载状态除非写进/etc/fstab。排查方法很直接重启后执行df -hT看看预期的分区是否存在。如果缺失检查/etc/fstab是否配置了对应条目再执行mount -a手动挂载验证。我遇到过配置完全正确但重启不生效的情况最后定位到是fstab里写的是设备名而不是UUID系统启动时设备名发生变化导致匹配失败。改用UUID后问题消失。这就是为什么我一直强调生产环境用UUID。4.2 fstab配置错误导致系统无法启动fstab写错是Linux管理员最不想遇到的场景之一系统启动时挂载失败会直接进入紧急模式。第一次遇到时很多人会慌其实处理办法有固定套路。如果系统能进入emergency模式或initramfs shell说明还有救。输入root密码进入shell先查看fstab内容判断哪一行有问题然后编辑修正。有一个小技巧把可疑行注释掉先让系统正常启动再回头慢慢排查。我曾经图省事把错误的UUID写进fstab结果开机卡住花了十分钟才找回正确的UUID改回来。所以再次强调修改fstab前务必确认UUID无误改完务必mount -a验证不要跳过。用救援模式处理更加稳妥。从安装介质启动进入救援环境把系统根分区挂载到救援环境下的某个目录然后直接修改其中的fstab文件。这类问题核心在于fstab能影响正常开机流程只要在救援环境里把配置改对系统就能正常启动。4.3 磁盘空间满但找不到大文件生产服务器上这个现象很常见df显示磁盘已满du统计却找不到对应大小的文件。除了前面提到的已删除文件被进程占用还有一种可能是挂载点目录里有隐藏的子挂载点。比如某个目录被后续挂载的其他文件系统覆盖空间占用被归到另一层挂载点上用du在根目录统计时就漏掉了。定位方法还是两条命令配合df -hT看整体盘子mount或findmnt看挂载点层级再用du逐层排查。必要时用lsof | grep deleted查看被删除但未释放的文件这类文件经常是大文件找到对应进程重启就好。这套排查思路在RH124后续的故障排查章节还会用到这章先学会基本工具足够了。4.4 文件系统识别错误与常见挂载异常挂载时提示wrong fs type多数情况是系统缺少对应文件系统的支持工具。比如某些系统默认没装xfsprogs遇到xfs分区就挂不上。解决方法是为发行版安装对应的软件包例如安装xfsprogs之后xfs文件系统就能正常识别和挂载了。另外挂载点目录权限不合适也会导致无法访问挂载后的文件提示权限不足。这类问题看似诡异实际检查的是目录的属主和权限位。挂载行为本身不关心目录权限但用户真正读写数据时会受到权限限制。组合拳处理确认目录权限必要时用chown调整属主确保普通用户能访问挂载点。4.5 经验总结与实操建议第11章内容看似基础却是RH124全套课程里最贴近日常运维的章节。掌握文件系统挂载、fstab配置、swap管理和磁盘状态查看后续学LVM、磁盘配额、RAID都会轻松很多。我给刚接触Linux的朋友几个实操层面的小建议命令要亲手敲靠眼睛看记不住。每学一个命令就在虚拟机里造一个故障场景来练手。比如故意用错误的设备名挂载、写错fstab重启验证紧急模式恢复流程把错误犯一遍才能真正理解正确做法为什么正确。养成查看挂载状态的习惯。不管什么命令执行完都跑一下df -hT或mount确认结果避免自己以为成功了实际上没成功。UUID优先于设备名。虽然手敲/dev/sdb1方便但是配置落在配置文件里就必须用UUID标准化操作能避免大量因设备顺序变化导致的挂载事故。这些经验是我在实际运维过程中踩坑踩出来的。做实验时可以适当随便一点但在生产环境里每一条配置都值得反复确认。文件系统挂载这件事看起来平淡一旦出错就是数据不可访问的大事故。多花一分钟验证就能节省几小时排障时间。