在 Linux 世界,特别是 CentOS 这样的企业级发行版中,“U盘盘符”这一概念与 Windows 系统中的 C:、D:、E: 盘符有着本质的区别,Windows 为每个存储设备分配一个独立的字母盘符,直观易懂,而在 CentOS 及其他 Linux 系统中,所有硬件设备都被抽象为文件,统一存放在 /dev 目录下,U盘这类存储设备通常被识别为 SCSI 设备,其设备名遵循 /dev/sd[a-z] 的命名规则,/dev/sdb、/dev/sdc 等,U盘有多个分区,则分区号会追加在后面,如 /dev/sdb1、dev/sdb2。

理解这一点至关重要,因为在 Linux 中,我们并非直接通过 /dev/sdb1 这样的设备文件来读写数据,我们需要一个额外的步骤——“挂载”,挂载就是将设备文件(如 /dev/sdb1)与一个已存在的目录(挂载点,如 /mnt/usb)关联起来,之后对该目录的所有操作实际上就是对 U盘的操作,下面,我们将详细探讨如何在 CentOS 中识别、挂载和使用 U盘。
第一步:识别 U盘设备
当您将 U盘插入 CentOS 系统的 USB 接口后,首要任务是准确找出系统为它分配的设备名,以下是几种常用且有效的方法。
使用 lsblk 命令
lsblk(List Block Devices)是现代 Linux 系统中查看块设备信息的首选工具,它的输出清晰直观。
lsblk
执行该命令后,您会看到类似以下的输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
└─sda2 8:2 0 238G 0 part /
sdb 8:16 1 28.9G 0 disk
└─sdb1 8:17 1 28.9G 0 part /run/media/user/MyUSB
从输出中可以解读出:
sda是系统硬盘,包含sda1和sda2两个分区。sdb是一个可移除设备(RM列为1),大小为 28.9G,这正是我们插入的 U盘。sdb1是它的第一个分区,并且已经被自动挂载到了/run/media/user/MyUSB目录下。
MOUNTPOINT 列为空,则表示该设备尚未被挂载。lsblk 是最推荐的方法,因为它能同时提供设备名、大小、分区情况和挂载点等关键信息。
使用 fdisk -l 命令
fdisk 是一个经典的磁盘分区工具,加上 -l 参数可以列出所有磁盘的分区表信息。
sudo fdisk -l
输出结果会非常详细,您需要根据磁盘大小来辨别哪个是您的 U盘,注意,通常需要 sudo 权限才能执行,在输出中找到类似下面的一段:
Disk /dev/sdb: 28.9 GiB, 31037849600 bytes, 60620800 sectors
...
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 0 60620799 60620800 28.9G c W95 FAT32 (LBA)
这里明确显示了 /dev/sdb 的总容量,以及其分区 /dev/sdb1 的类型(FAT32)和大小,这种方法虽然信息全面,但不如 lsblk 简洁。
使用 dmesg 命令
dmesg 用于打印内核的消息缓冲区,在插入 U盘后立即执行此命令,可以查看到内核识别设备的全过程。

dmesg | tail
tail 命令用于显示最后几行输出,方便我们查看最新的日志,您可能会看到类似这样的信息:
usb 1-1: new high-speed USB device number 5 using xhci_hcd
usb 1-1: New USB device found, idVendor=0951, idProduct=1666
...
scsi host6: usb-storage 1-1:1.0
scsi 6:0:0:0: Direct-Access Kingston DataTraveler 3.0 PMAP PQ: 0 ANSI: 6
sd 6:0:0:0: [sdb] 60620800 512-byte logical blocks: (31.0 GB/28.9 GiB)
sd 6:0:0:0: [sdb] Write Protect is off
sd 6:0:0:0: [sdb] No Caching mode page found
sd 6:0:0:0: [sdb] Assuming drive cache: write through
sdb: sdb1
这段日志详细记录了从 USB 设备接入到被识别为 [sdb] 并创建分区 [sdb1] 的全过程,这对于排查设备无法识别的问题非常有帮助。
为了方便对比,这里有一个简单的表格小编总结了这三种方法:
| 方法 | 命令 | 优点 | 缺点 |
|---|---|---|---|
| 推荐首选 | lsblk |
输出简洁,信息全面(设备名、大小、挂载点一目了然) | 需要系统支持 |
| 经典工具 | sudo fdisk -l |
信息非常详细,包含分区表类型和扇区信息 | 输出冗长,需要手动筛选 |
| 日志分析 | dmesg \| tail |
实时显示内核识别过程,利于故障排查 | 信息不够结构化,不适合日常快速查看 |
第二步:手动挂载 U盘
如果系统没有自动挂载 U盘(例如在最小化安装的 CentOS 服务器上),您需要手动进行挂载。
-
创建挂载点: 创建一个空目录作为挂载点,通常习惯在
/mnt目录下创建。sudo mkdir /mnt/usb
-
执行挂载命令: 使用
mount命令进行挂载,基本语法为mount [设备文件] [挂载点],最好用-t参数指定文件系统类型。sudo mount /dev/sdb1 /mnt/usb
常见的 U盘文件系统类型及其对应的
-t参数:- FAT32:
-t vfat - NTFS:
-t ntfs-3g(需要先安装ntfs-3g软件包:sudo yum install ntfs-3g) - exFAT:
-t exfat(需要先安装exfat-utils和fuse-exfat软件包)
挂载一个 NTFS 格式的 U盘:
sudo mount -t ntfs-3g /dev/sdb1 /mnt/usb
挂载成功后,您就可以通过
/mnt/usb目录访问 U盘中的文件了。 - FAT32:
第三步:安全卸载 U盘
在使用完 U盘后,直接拔掉是非常危险的行为,可能导致数据丢失或文件系统损坏,必须先执行“卸载”操作。

使用 umount 命令(注意是 umount 而不是 unmount):
sudo umount /mnt/usb
或者,也可以直接指定设备文件:
sudo umount /dev/sdb1
如果遇到提示 “target is busy” 或 “device is busy”,说明有程序正在使用 U盘中的文件,您可以使用 lsof /mnt/usb 或 fuser -mv /mnt/usb 命令查看是哪个进程占用了它,结束相关进程后再尝试卸载。
相关问答FAQs
为什么我的 U盘插入 CentOS 后,lsblk 和 fdisk -l 都看不到?
解答: 这种情况通常由以下几个原因造成:
- 硬件或连接问题:U盘本身损坏、USB接口故障或接触不良,可以尝试更换 U盘或换个 USB 接口。
- 内核未识别:查看
dmesg | tail的输出,看是否有关于 USB 设备的错误信息,如果没有任何相关日志,可能是系统内核或驱动对该 U盘的兼容性不佳。 - U盘格式问题:极少数情况下,U盘采用了非常规或损坏的分区格式,Linux 可能无法正确识别,可以尝试在 Windows 或其他机器上确认 U盘是否正常。
- 系统服务问题:在极简化的服务器环境中,可能缺少相关的 USB 存储驱动模块,检查
/proc/bus/usb/devices文件是否存在或内容是否正常。
执行 mount 命令时,提示 mount: unknown filesystem type 'exfat',该怎么办?
解答: 这个错误信息非常明确,它表示您的 CentOS 系统内核原生不支持 exFAT 文件系统,并且您也没有安装相应的用户空间驱动程序,exFAT 是闪存设备常用的格式,但因其专利原因,许多 Linux 发行版不会默认包含支持。 解决方法是安装 FUSE(Filesystem in Userspace)实现的 exFAT 驱动,对于较新的 CentOS 8/9 系统,可以使用 EPEL(Extra Packages for Enterprise Linux)仓库:
- 启用 EPEL 仓库:
sudo dnf install epel-release - 安装 exFAT 驱动:
sudo dnf install exfatprogs安装完成后,再次使用mount -t exfat /dev/sdb1 /mnt/usb命令即可成功挂载,对于较老的 CentOS 7,软件包名可能有所不同,通常是fuse-exfat。