服务器无法联网时,如何通过 BMC 和 U 盘完成 Linux 文件传入与导出

一、通过 BMC 向 Linux 系统传入文件

背景

在服务器现场排障时,经常会遇到系统无法联网、网口未配置,或者业务网口不能随意操作的情况。

如果此时需要向 Linux 系统中传入脚本、驱动包、补丁包、日志采集工具或测试工具,就不能依赖常规的 scpsftpwget 等方式。

比如服务器当前没有配置网络,也没有多余的电口可用,只能通过 BMC 的 KVM 控制台进入系统。这种情况下,可以借助 BMC 的虚拟媒体功能,将本地文件打包成 ISO 镜像后挂载到服务器系统中。

进入 Linux 系统后,再将 ISO 镜像中的文件复制到系统目录中,就可以完成离线文件传入。

1. 使用 UltraISO 制作 ISO 镜像

如果 BMC 支持直接挂载本地文件,可以直接通过 BMC 的虚拟媒体功能挂载。

但有些 BMC 只支持挂载 ISO 镜像,不支持直接挂载普通文件。这种情况下,可以先使用 UltraISO 将需要传入服务器的文件打包成 ISO 镜像。

例如可以把下面这些文件打包成一个 ISO:

install.sh
driver.rpm
tools.tar.gz
README.txt

UltraISO 官方下载地址:

https://www.ultraiso.com/download.html

制作完成后,在 BMC 的 KVM 控制台中选择“虚拟媒体”或“远程挂载”,将这个 ISO 镜像挂载到服务器上。

2. 在 Linux 系统中查看虚拟光驱

进入 Linux 系统后,先查看系统是否识别到了虚拟光驱设备:

lsblk

也可以使用下面的命令查看文件系统类型:

lsblk -f

一般情况下,BMC 挂载的 ISO 镜像会被识别为下面这类设备:

/dev/sr0
/dev/sr1
/dev/cdrom

如果看到文件系统类型为 iso9660,通常就是挂载进来的 ISO 镜像。

3. 挂载 ISO 镜像

先创建一个挂载目录:

mkdir -p /up

然后根据实际设备名称进行挂载。

如果设备是 /dev/sr0

mount /dev/sr0 /up

如果设备是 /dev/sr1

mount /dev/sr1 /up

如果系统中存在 /dev/cdrom

mount /dev/cdrom /up

ISO 镜像本身是只读文件系统,所以挂载时看到只读提示是正常的,不影响复制文件。

挂载成功后,可以查看 ISO 中的文件:

ls -lh /up

4. 将文件复制到 Linux 系统中

如果要复制到当前用户家目录,可以执行:

cp -a /up/. ~/

如果当前是 root 用户,这条命令会把 ISO 中的内容复制到 /root 目录下。

也可以复制到指定目录,例如:

mkdir -p /opt/tools
cp -a /up/. /opt/tools/

复制完成后,可以查看文件是否已经复制成功:

ls -lh /opt/tools

5. 卸载 ISO 镜像

文件复制完成后,卸载挂载目录:

umount /up

如果不再需要这个挂载目录,可以删除:

rmdir /up

通过这种方式,即使服务器没有网络,也可以借助 BMC 的虚拟媒体功能,将脚本、驱动包、补丁包、日志采集工具等文件传入 Linux 系统中。


二、从 Linux 系统中导出文件

背景

除了向服务器传入文件,现场排障时也经常需要从 Linux 系统中导出日志和配置文件。

例如在排查 GPU、RAID 卡、网卡、系统异常等问题时,可能需要导出 dmesg 日志、系统日志、NVIDIA 显卡日志、RAID 卡日志、网卡配置文件和测试结果文件。

如果服务器已经配置好网络,可以直接通过 scpsftprsync 等方式传出文件。但在现场排障中,经常会遇到服务器没有网络、业务网口不能随意操作,或者当前系统只是临时启动的 U 盘系统。

这种情况下,就需要使用一个 Windows 和 Linux 都能识别的 U 盘,将 Linux 系统中的日志和文件拷贝出来,再插回 Windows 电脑进行发送或分析。

1. 为什么使用 FAT32 格式

现场找了一个 U 盘,插到 Windows 上发现它以前是 PE 系统盘,于是直接格式化成了 NTFS。

但是插到 Linux 服务器上后,挂载时报错。

原因是当前 Linux 系统不一定默认支持 NTFS 读写,尤其是最小化系统、救援系统或临时 U 盘系统,可能没有安装 ntfs-3g 等组件。如果服务器没有网络,也没有可用的软件源,就无法临时安装 NTFS 支持组件。

这种情况下,更稳妥的方式是将 U 盘格式化为 FAT32。

FAT32 的优点是 Windows 和 Linux 通常都能直接识别,不需要额外安装驱动或软件包。缺点是单个文件不能超过 4GB,但对于日志、配置文件、脚本和测试结果这类排障文件来说,一般已经够用。

2. 推荐方式:在 Windows 上使用 Rufus 格式化

如果手边有 Windows 电脑,推荐直接使用 Rufus 将 U 盘格式化为 FAT32。

打开 Rufus 后,可以按下面的方式选择:

设备:选择需要格式化的 U 盘
引导类型选择:非可引导
分区类型:MBR
目标系统类型:BIOS 或 UEFI
卷标:USB
文件系统:Large FAT32
簇大小:默认

在这里插入图片描述

在这里插入图片描述

确认选择的是正确的 U 盘后,点击“开始”。

这里选择“非可引导”的目的,是把 U 盘作为普通数据盘使用,而不是制作启动盘。这样格式化完成后,U 盘可以直接用于在 Windows 和 Linux 之间中转文件。

格式化完成后,将 U 盘插回 Linux 服务器。

3. 在 Linux 中确认 U 盘设备名

插入 U 盘后,先查看设备名称:

lsblk -f

正常情况下,可以看到类似下面的结构:

sdb      29G
└─sdb1   29G  vfat  USB

其中 /dev/sdb 是整块 U 盘,/dev/sdb1 是 U 盘上的分区。

后续挂载和复制文件时,通常操作的是 /dev/sdb1,不是 /dev/sdb

如果服务器上还有系统盘、数据盘,一定要通过容量、文件系统、插拔前后变化来确认 U 盘设备名,避免误操作系统盘或数据盘。

4. 挂载 U 盘

创建挂载目录:

mkdir -p /mnt/usb

挂载 U 盘:

mount /dev/sdb1 /mnt/usb

查看是否挂载成功:

df -h

也可以查看 U 盘目录:

ls -lh /mnt/usb

如果能够正常显示目录内容,就说明 U 盘已经挂载成功。

5. 复制日志和文件

导出 dmesg 日志:

dmesg > /mnt/usb/dmesg.log

复制系统日志目录:

cp -a /var/log /mnt/usb/

复制 root 目录下的日志文件:

cp -a /root/*.log /mnt/usb/ 2>/dev/null

如果有 NVIDIA 相关日志,可以尝试复制:

cp -a /root/*nvidia* /mnt/usb/ 2>/dev/null
cp -a /var/log/*nvidia* /mnt/usb/ 2>/dev/null

也可以根据实际情况复制其他目录,例如:

cp -a /root/result /mnt/usb/ 2>/dev/null
cp -a /tmp/*.log /mnt/usb/ 2>/dev/null

复制完成后,执行同步,确保数据真正写入 U 盘:

sync

然后卸载 U 盘:

umount /mnt/usb

确认卸载完成后,再拔出 U 盘。

6. 备用方式:在 Linux 中格式化为 FAT32

如果没有 Windows 电脑,或者现场只能在 Linux 系统中处理 U 盘,也可以直接在 Linux 中格式化 U 盘分区。

先确认 U 盘分区名称:

lsblk -f

假设 U 盘分区是 /dev/sdb1,先卸载这个分区:

umount /dev/sdb1

如果提示没有挂载,可以忽略。

然后格式化为 FAT32:

mkfs.vfat -F 32 -n USB /dev/sdb1

其中:

-F 32       表示格式化为 FAT32
-n USB      表示设置卷标为 USB
/dev/sdb1   表示要格式化的 U 盘分区

需要注意的是,这条命令会清空 /dev/sdb1 中的所有数据,执行前一定要确认设备名。

如果执行 mkfs.vfat 时提示命令不存在,说明当前系统可能缺少 dosfstools 工具包。服务器没有网络和软件源时,不建议继续折腾依赖,直接把 U 盘插回 Windows,用 Rufus 格式化为 FAT32 更方便。

7. 如果 Linux 下看不到分区

有些 U 盘以前做过 PE 启动盘、系统安装盘,或者分区结构被改乱了,插入 Linux 后可能只看到 /dev/sdb,看不到 /dev/sdb1

这种情况下,不建议直接对 /dev/sdb 执行格式化命令。

虽然某些系统可以识别没有分区表、直接写入文件系统的 U 盘,但这种方式在 Windows 和不同 Linux 环境之间的兼容性不如标准分区结构。

更推荐的处理方式是:

拔下 U 盘
插回 Windows 电脑
使用 Rufus 选择“非可引导”
文件系统选择 Large FAT32
重新格式化
再插回 Linux 服务器

重新插回 Linux 后,再执行:

lsblk -f

正常情况下,这时就能看到 /dev/sdb1 这样的分区,然后再挂载使用。

8. 在 Windows 上读取 U 盘

如果 U 盘格式是 FAT32,插入 Windows 后一般可以直接识别。

需要注意的是,FAT32 单个文件不能超过 4GB。如果日志目录比较大,可以先在 Linux 中压缩后再复制。

例如压缩系统日志目录:

tar -czf /mnt/usb/var_log.tar.gz /var/log

如果压缩后的文件仍然超过 4GB,就不适合使用 FAT32 直接保存单个大文件,需要分卷压缩,或者换用当前系统确认支持的其他文件系统。

小结

从 Linux 系统中导出文件时,优先推荐在 Windows 上使用 Rufus 将 U 盘格式化为 FAT32,然后插回 Linux 挂载使用。

如果 Linux 中已经能看到 /dev/sdb1 这样的 U 盘分区,也可以直接使用 mkfs.vfat 将该分区格式化为 FAT32。

如果 Linux 中看不到分区,只看到整块 U 盘设备,建议不要直接格式化 /dev/sdb,而是插回 Windows,使用 Rufus 重新格式化为非可引导的 FAT32 数据盘。


总结

在服务器无法联网的情况下,文件传输通常分为两个方向。

向服务器传入文件时,可以使用 BMC 的虚拟媒体功能,将文件打包成 ISO 镜像后挂载到 Linux 系统中。

从服务器导出文件时,可以使用 FAT32 格式的 U 盘。FAT32 兼容性好,Windows 和 Linux 通常都能直接识别,适合导出日志、配置文件、脚本和测试结果。

现场排障时,优先选择简单、兼容、可控的方法。对于没有网络、没有软件源、不能影响业务环境的服务器,BMC 虚拟媒体加 FAT32 U 盘,是比较稳妥的处理方式。


说明

免责声明与版权声明

本文内容由个人发布,仅用于学习、技术研究与经验交流。

文中涉及的软件(包括正版及第三方版本)仅供测试与学习用途,不构成任何形式的分发、破解、商业使用或侵权行为的鼓励。若您需要长期使用或商业部署,请前往官方网站购买或获取正版授权。

作者不对任何软件的使用、修改、传播及由此产生的后果承担法律责任。读者应自行判断、下载与使用软件,并遵守所在地法律法规及相关许可协议。

部分内容参考或摘录自公开资料、官方文档或其他技术文章,均已尽可能注明原作者及来源链接。若原作者或版权方认为本文存在不当引用或侵权内容,请联系作者处理,作者将在核实后及时修改或删除相关内容。


知识共享许可声明

除特别说明外,本文中的原创文字、图片、图表及资料均依据:

CC BY-NC-SA 4.0(署名-非商业性使用-相同方式共享)

许可协议发布。

您可以在遵守本协议的前提下:

  • 复制、转载和分享本文内容;
  • 对本文内容进行修改、改编和二次创作;
  • 将本文内容用于个人学习、研究和非商业用途。

同时必须满足以下条件:

  • 保留原作者署名及原文链接;
  • 明确标注内容来源;
  • 不得将本文及其衍生作品用于任何商业用途;
  • 基于本文进行修改、改编或再创作的作品,必须继续采用相同协议进行发布。

特别声明

未经作者书面授权,禁止以下行为:

  • 将本文原创内容用于商业培训、付费课程、付费社群、收费咨询等商业活动;
  • 将本文原创内容转载至以盈利为目的的网站、平台、出版物或知识付费平台;
  • 将本文原创内容批量采集、镜像、聚合或作为数据库内容进行商业运营;
  • 将本文原创内容用于人工智能模型训练、知识库构建、数据集整理或其他商业化用途;
  • 删除、修改或隐藏原作者署名、原文链接及版权声明。

对于违反上述声明的行为,作者保留依法追究相关责任的权利。


AI 辅助生成声明

本文部分内容在撰写、整理、润色或结构优化过程中使用了 AI 工具进行辅助生成。

AI 生成内容仅作为写作辅助参考,最终内容已由作者进行人工审阅、修改、校对与确认。本文观点、技术步骤、命令示例及相关说明均以作者最终发布版本为准。

读者在参考本文内容进行实际操作前,应结合自身环境进行验证,作者不因 AI 辅助生成内容可能存在的遗漏、错误或不适用情况承担额外责任。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐