在Linux系统中查看SD卡信息是日常操作中常见的需求,无论是数据备份、设备调试还是存储管理,都需要准确掌握SD卡的状态、容量、文件系统等关键信息,本文将详细介绍多种Linux查看SD卡的方法,涵盖基础命令、高级工具以及故障排查场景,帮助用户全面掌握SD卡状态监控技巧。

基础信息查看:确认设备识别与挂载状态
当SD卡插入Linux系统后,首先需要确认系统是否正确识别该设备,Linux会将SD卡识别为块设备,设备名一般为/dev/sdX(如/dev/sdb、/dev/sdc)或/dev/mmcblkX(如/dev/mmcblk0),其中X为设备编号。
查看已识别的存储设备
使用lsblk命令可以列出所有块设备及其分区信息,包括SD卡,该命令以树状结构展示设备层级,清晰呈现设备名称、大小、挂载点等关键信息。
lsblk
执行后,若SD卡被识别,会输出类似以下内容:
NAME MAJ:MIN RM SIZE RO MOUNTPOINT
sda 8:0 0 238.5G 0 /
└─sda1 8:1 0 512M 0 /boot/efi
sdb 8:16 1 14.9G 1 /media/user/USB_DISK
mmcblk0 179:0 0 29.8G 0
└─mmcblk0p1 179:1 0 29.8G 0 /mnt/sdcard
RM列标记可移动设备(SD卡通常为1),MOUNTPOINT列显示挂载点(若未挂载则为空)。
确认设备挂载状态
若SD卡已挂载,可通过df -h命令查看各分区的使用情况,包括文件系统、总容量、已用空间、可用空间及挂载点:
df -h
输出示例:
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 29G 5.2G 24G 18% /mnt/sdcard
若SD卡未挂载,可手动创建挂载目录并执行挂载命令,
sudo mkdir -p /mnt/sdcard sudo mount /dev/mmcblk0p1 /mnt/sdcard
详细设备信息获取:容量、分区与文件系统
除了基础识别,有时需要获取SD卡的更详细参数,如设备型号、分区表类型、文件系统信息等,可通过以下命令实现。
使用fdisk查看分区表
fdisk是一款经典的分区表管理工具,可查看SD卡的分区结构、文件系统类型(如FAT32、ext4)以及分区起始/结束扇区,执行以下命令:
sudo fdisk -l
针对SD卡的输出示例:

Disk /dev/mmcblk0: 29.8 GiB, 31989017600 bytes, 62464000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x12345678
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 62463999 62441952 29.8G c W95 FAT32 (LBA)
Disk部分为SD卡总容量,Device部分为各分区信息,Id列标识文件系统类型(如c为FAT32,83为ext4)。
通过blkid获取文件系统属性
blkid命令可查看分区的UUID、文件系统类型、挂载选项等属性,常用于确认分区格式或配置/etc/fstab:
sudo blkid
输出示例:
/dev/mmcblk0p1: UUID="1234-5678" TYPE="vfat" PARTUUID="12345678-01"
UUID为分区的唯一标识符,TYPE为文件系统类型,PARTUUID为分区标识符。
使用dmesg查看设备识别日志
若系统未识别SD卡,可通过dmesg命令查看内核日志,定位识别过程中的错误信息:
dmesg | grep -i "mmc\|sd"
输出可能包含类似内容:
[ 1234.567890] mmc0: new high speed SDHC card at address 1234
[ 1235.678901] mmcblk0: mmc0:1234 SD32G 29.8 GiB
通过日志可确认设备是否被内核检测到以及检测过程中的异常(如供电不足、接触不良等)。
高级诊断:健康状态与性能分析
对于需要长期使用的SD卡,了解其健康状态(如坏块数量、写入次数)和性能参数(如读写速度)至关重要。
检测SD卡健康状态
smartctl工具(需安装smartmontools包)可读取SD卡的SMART(Self-Monitoring, Analysis and Reporting Technology)信息,评估设备健康状况,首先确认SD卡是否支持SMART:
sudo smartctl -d scsi /dev/sdX # 或 sudo smartctl -d sat /dev/sdX
若支持,执行以下命令获取详细报告:

sudo smartctl -a /dev/sdX
报告中会包含“Reallocated Sectors Count”(重分配扇区数)、“Current Pending Sector”(待处理扇区数)等关键指标,若数值异常则可能预示设备故障。
测试读写性能
使用dd命令可简单测试SD卡的读写速度,首先写入测试文件(需确保SD卡已挂载且有足够空间):
# 写入1GB测试数据,记录耗时 time dd if=/dev/zero of=/mnt/sdcard/testfile bs=1M count=1024 oflag=direct
然后清空缓存并读取测试文件,计算读取速度:
# 清空系统缓存 sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches' # 读取测试文件并记录耗时 time dd if=/mnt/sdcard/testfile of=/dev/null bs=1M iflag=direct
通过time命令输出的耗时(如real 0m5.231s),可换算出读写速度(如1GB/5.231s≈191MB/s)。
扫描坏块
若怀疑SD卡存在物理坏块,可使用badblocks工具进行扫描,该工具会逐扇区读取数据,标记无法访问的扇区,注意:扫描过程会耗时较长且可能损坏数据,需确保SD卡无重要文件:
# 只读模式扫描(安全) sudo badblocks -v -s /dev/mmcblk0 # 写入模式扫描(修复坏块,谨慎使用) sudo badblocks -v -s -w /dev/mmcblk0
故障排查:常见问题与解决方案
在使用SD卡时,可能会遇到无法识别、无法挂载、读写速度慢等问题,以下为常见故障及排查思路。
系统无法识别SD卡
- 检查物理连接:重新插拔SD卡,确保读卡器接口正常,或尝试更换读卡器/SD卡槽。
- 查看内核日志:通过
dmesg | grep -i "mmc"确认内核是否检测到设备,若输出“power cycle”等提示,可能是供电不足(需使用外接电源)。 - 检查设备节点:确认设备名是否正确(如
/dev/sdb或/dev/mmcblk0),避免与其他存储设备冲突。
SD卡无法挂载
- 确认分区格式:通过
fdisk -l检查分区表是否损坏,或使用file -s /dev/sdX查看文件系统类型(如/dev/sdX: DOS/MBR boot sector)。 - 修复文件系统:若文件系统损坏,可使用对应工具修复(如FAT32用
dosfsck,ext4用fsck.ext4):sudo dosfsck -a /dev/sdXp1 # 修复FAT32分区 sudo fsck.ext4 -y /dev/sdXp1 # 修复ext4分区
- 检查挂载点权限:确保挂载点目录当前用户有读写权限(
sudo chmod 755 /mnt/sdcard)。
读写速度异常
- 检查文件系统类型:FAT32文件系统在处理大文件时性能较差,可尝试格式化为ext4(注意:ext4兼容性较差,部分设备可能无法识别)。
- 禁用写缓存:若启用写缓存,可能导致速度测试结果虚高,可通过
hdparm关闭:sudo hdparm -W 0 /dev/sdX
- 检查接口带宽:USB 2.0接口理论带宽为60MB/s,若使用USB 2.0读卡器,即使SD卡支持高速传输,速度也会受限,建议升级至USB 3.0读卡器。
Linux系统提供了丰富的工具用于查看和管理SD卡,从基础的lsblk、df到高级的smartctl、badblocks,用户可根据需求选择合适的命令,无论是日常监控还是故障排查,掌握这些方法都能有效提升SD卡的使用效率和可靠性,在实际操作中,建议定期备份重要数据,并避免在读写过程中强制拔出设备,以减少数据损坏风险。















