一、命令介绍

lsblk(list block devices) 是一个用于列出块设备的命令,它提供了关于系统中所有块设备的详细信息。块设备包括硬盘、分区、磁盘镜像文件等。lsblk 命令非常有用,特别是在需要查看和管理存储设备时。

$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vdb    253:16   0  300G  0 disk 
vda    253:0    0  120G  0 disk 
├─vda2 253:2    0  119G  0 part /
└─vda1 253:1    0    1G  0 part /boot 

字段含义如下:

字段 含义
NAME 设备名称。
MAJ:MIN 主设备号和次设备号。
RM 是否可移动(Removable),1 表示可移动,0 表示不可移动。
SIZE 设备大小。
RO 只读标志,1 表示只读,0 表示可读写。
TYPE 设备类型,如 disk(磁盘)、part(分区)、rom(只读存储)等。
MOUNTPOINT 挂载点,如果设备没有挂载,则为空。

二、命令参数

2.1、参数含义

$ lsblk --help

Usage:
 lsblk [options] [<device> ...]

Options:
 -a, --all            print all devices
 -b, --bytes          print SIZE in bytes rather than in human readable format
 -d, --nodeps         don't print slaves or holders
 -D, --discard        print discard capabilities
 -e, --exclude <list> exclude devices by major number (default: RAM disks)
 -I, --include <list> show only devices with specified major numbers
 -f, --fs             output info about filesystems
 -h, --help           usage information (this)
 -i, --ascii          use ascii characters only
 -m, --perms          output info about permissions
 -l, --list           use list format output
 -n, --noheadings     don't print headings
 -o, --output <list>  output columns
 -p, --paths          print complate device path
 -P, --pairs          use key="value" output format
 -r, --raw            use raw output format
 -s, --inverse        inverse dependencies
 -t, --topology       output info about topology
 -S, --scsi           output info about SCSI devices

 -h, --help     display this help and exit
 -V, --version  output version information and exit
参数 含义
-a, --all 显示所有设备,包括空设备。
-b, --bytes 以字节为单位显示设备大小。
-d, --nodeps 不显示依赖关系(例如,不显示分区下的子设备)。
-e, --exclude <list> 排除指定类型的设备,多个类型用逗号分隔。例如,--exclude 1,7 排除设备类型 1 和 7。
-f, --fs 显示文件系统信息。
-h, --help 显示帮助信息。
-I, --include <list> 仅显示指定类型的设备,多个类型用逗号分隔。例如,--include 8,9 只显示设备类型 8 和 9。
-l, --list 使用列表格式输出。
-n, --noheadings 不显示标题行。
-o, --output <list> 指定要显示的列,多个列用逗号分隔。例如,--output NAME,SIZE,TYPE
-P, --pairs 使用键值对格式输出。
-p, --paths 显示完整路径。
-r, --raw 使用原始格式输出。
-S, --scsi 显示 SCSI 设备信息。
-t, --topology 显示拓扑信息。
-V, --version 显示版本信息。

2.2、示例展示

2.2.1、-a

显示所有设备,包括空设备

$ lsblk -a
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop1    7:1    0        0 loop 
vdb    253:16   0  300G  0 disk 
loop2    7:2    0        0 loop 
loop0    7:0    0        0 loop 
vda    253:0    0  120G  0 disk 
├─vda2 253:2    0  119G  0 part /
└─vda1 253:1    0    1G  0 part /boot
# 相比lsblk展示了空设备
2.2.2、-b

以字节为单位显示设备大小

$ lsblk -b
NAME   MAJ:MIN RM         SIZE RO TYPE MOUNTPOINT
vdb    253:16   0 322122547200  0 disk 
vda    253:0    0 128849018880  0 disk 
├─vda2 253:2    0 127773736960  0 part /
└─vda1 253:1    0   1073741824  0 part /boot
2.2.3、-d

不显示依赖关系(例如,不显示分区下的子设备)

$ lsblk -d
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vdb  253:16   0  300G  0 disk 
vda  253:0    0  120G  0 disk 
2.2.4、-e

排除指定类型的设备,多个类型用逗号分隔,排除的设备需要写设备类型编号

$ lsblk -a
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop1    7:1    0        0 loop 
vdb    253:16   0  300G  0 disk 
loop2    7:2    0        0 loop 
loop0    7:0    0        0 loop 
vda    253:0    0  120G  0 disk 
├─vda2 253:2    0  119G  0 part /
└─vda1 253:1    0    1G  0 part /boot

$ lsblk -e 7
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vdb    253:16   0  300G  0 disk 
vda    253:0    0  120G  0 disk 
├─vda2 253:2    0  119G  0 part /
└─vda1 253:1    0    1G  0 part /boot
2.2.5、-I

仅显示指定类型的设备,多个类型用逗号分隔,同样需要书写指定的设备类型编号

$ lsblk -a
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop1    7:1    0        0 loop 
vdb    253:16   0  300G  0 disk 
loop2    7:2    0        0 loop 
loop0    7:0    0        0 loop 
vda    253:0    0  120G  0 disk 
├─vda2 253:2    0  119G  0 part /
└─vda1 253:1    0    1G  0 part /boot

$ lsblk -a -I 7
NAME  MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop1   7:1    0       0 loop 
loop2   7:2    0       0 loop 
loop0   7:0    0       0 loop 
2.2.6、-f

显示文件系统信息

$ lsblk -f 
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
vdb                                                      
vda                                                      
├─vda2 ext4         9518ef47-1658-44fa-90fd-4fbf4bd0c799 /
└─vda1 ext4         f0d8224f-6cba-426a-a091-b70024003f95 /boot
2.2.7、-l

使用列表格式输出

$ lsblk -l
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vdb  253:16   0  300G  0 disk 
vda  253:0    0  120G  0 disk 
vda2 253:2    0  119G  0 part /
vda1 253:1    0    1G  0 part /boot
2.2.8、-n

不显示标题行

$ lsblk -n
vdb    253:16   0  300G  0 disk 
vda    253:0    0  120G  0 disk 
├─vda2 253:2    0  119G  0 part /
└─vda1 253:1    0    1G  0 part /boot
2.2.9、-o

指定要显示的列,多个列用逗号分隔.

$ lsblk -o name,type
NAME   TYPE
vdb    disk
vda    disk
├─vda2 part
└─vda1 part
2.2.10、-P

使用键值对方式输出

$ lsblk -P
NAME="vdb" MAJ:MIN="253:16" RM="0" SIZE="300G" RO="0" TYPE="disk" MOUNTPOINT=""
NAME="vda" MAJ:MIN="253:0" RM="0" SIZE="120G" RO="0" TYPE="disk" MOUNTPOINT=""
NAME="vda2" MAJ:MIN="253:2" RM="0" SIZE="119G" RO="0" TYPE="part" MOUNTPOINT="/"
NAME="vda1" MAJ:MIN="253:1" RM="0" SIZE="1G" RO="0" TYPE="part" MOUNTPOINT="/boot"
2.2.11、-p

小写,显示完整路径

lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vdb    253:16   0  300G  0 disk 
vda    253:0    0  120G  0 disk 
├─vda2 253:2    0  119G  0 part /
└─vda1 253:1    0    1G  0 part /boot
2.2.12、-r

以原始格式输出

$ lsblk -r
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb 253:16 0 300G 0 disk 
vda 253:0 0 120G 0 disk 
vda2 253:2 0 119G 0 part /
vda1 253:1 0 1G 0 part /boot
2.2.13、-t

显示拓扑信息

$ lsblk -t
NAME   ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED       RQ-SIZE  RA WSAME
vdb            0    512      0     512     512    1 mq-deadline     256 128    0B
vda            0    512      0     512     512    1 mq-deadline     256 128    0B
├─vda2         0    512      0     512     512    1 mq-deadline     256 128    0B
└─vda1         0    512      0     512     512    1 mq-deadline     256 128    0B

2.3、-o 字段

-o 可用字段如下:

Available columns (for --output):
        NAME  device name
       KNAME  internal kernel device name
     MAJ:MIN  major:minor device number
      FSTYPE  filesystem type
  MOUNTPOINT  where the device is mounted
       LABEL  filesystem LABEL
        UUID  filesystem UUID
   PARTLABEL  partition LABEL
    PARTUUID  partition UUID
          RA  read-ahead of the device
          RO  read-only device
          RM  removable device
       MODEL  device identifier
      SERIAL  disk serial number
        SIZE  size of the device
       STATE  state of the device
       OWNER  user name
       GROUP  group name
        MODE  device node permissions
   ALIGNMENT  alignment offset
      MIN-IO  minimum I/O size
      OPT-IO  optimal I/O size
     PHY-SEC  physical sector size
     LOG-SEC  logical sector size
        ROTA  rotational device
       SCHED  I/O scheduler name
     RQ-SIZE  request queue size
        TYPE  device type
    DISC-ALN  discard alignment offset
   DISC-GRAN  discard granularity
    DISC-MAX  discard max bytes
   DISC-ZERO  discard zeroes data
       WSAME  write same max bytes
         WWN  unique storage identifier
        RAND  adds randomness
      PKNAME  internal parent kernel device name
        HCTL  Host:Channel:Target:Lun for SCSI
        TRAN  device transport type
         REV  device revision
      VENDOR  device vendor

字段含义如下表:

字段 含义
NAME 设备名称。这是用户空间中的设备名称。
KNAME 内核中的设备名称。这是内核内部使用的设备名称。
MAJ:MIN 主设备号和次设备号。主设备号标识设备类型,次设备号标识该类型的特定实例。
FSTYPE 文件系统类型。例如,ext4、xfs 等。
MOUNTPOINT 挂载点。显示设备被挂载到哪个目录。
LABEL 文件系统标签。用户定义的文件系统标签。
UUID 文件系统 UUID。全局唯一标识符,用于唯一标识文件系统。
PARTLABEL 分区标签。用户定义的分区标签。
PARTUUID 分区 UUID。全局唯一标识符,用于唯一标识分区。
RA 读取预取大小。内核在读取数据时会预先读取的数据量。
RO 只读设备。0 表示可读写,1 表示只读。
RM 可移动设备。0 表示不可移动,1 表示可移动。
MODEL 设备标识符。通常是设备的型号。
SERIAL 磁盘序列号。设备的序列号。
SIZE 设备大小。设备的总容量。
STATE 设备状态。例如 “running” 表示设备正在运行。
OWNER 设备所有者。拥有该设备节点的用户名。
GROUP 设备组。拥有该设备节点的用户组名。
MODE 设备节点权限。设备文件的权限设置。
ALIGNMENT 对齐偏移量。设备的对齐偏移量。
MIN-IO 最小 I/O 大小。设备支持的最小 I/O 操作大小。
OPT-IO 最优 I/O 大小。设备的最佳 I/O 操作大小。
PHY-SEC 物理扇区大小。设备的物理扇区大小。
LOG-SEC 逻辑扇区大小。设备的逻辑扇区大小。
ROTA 旋转设备。0 表示非旋转设备(如 SSD)即固态硬盘,1 表示旋转设备(如 HDD),即机械硬盘。
SCHED I/O 调度器名称。当前使用的 I/O 调度算法。
RQ-SIZE 请求队列大小。设备的请求队列大小。
TYPE 设备类型。例如 disk(磁盘)、part(分区)等。
DISC-ALN discard 对齐偏移量。discard 操作的对齐偏移量。
DISC-GRAN discard 颗粒度。discard 操作的颗粒度。
DISC-MAX discard 最大字节数。一次 discard 操作可以处理的最大字节数。
DISC-ZERO discard 零数据。是否将 discard 区域填充为零。
WSAME write same 最大字节数。一次 write same 操作可以处理的最大字节数。
WWN 全球唯一存储标识符。设备的全球唯一标识符。
RAND 添加随机性。设备是否支持随机访问。
PKNAME 父设备的内核名称。如果是分区,显示其所属的磁盘的内核名称。
HCTL Host:Channel:Target:Lun 用于 SCSI 设备。SCSI 设备的主机、通道、目标和逻辑单元编号。
TRAN 设备传输类型。例如 sas、sata 等。
REV 设备修订版本。设备的硬件或固件版本。
VENDOR 设备制造商。设备的制造厂商

示例如下:

lsblk -o name,rm
# 用于列出块设备,并仅显示设备名称和是否可移动

三、blkid 使用

blkid用于显示或查找块设备的属性。它可以从文件系统超级块、分区表和磁盘标签中提取信息,并显示这些信息。

blkid
/dev/vda2: UUID="9518ef47-1658-44fa-90fd-4fbf4bd0c799" TYPE="ext4" 
/dev/vda1: UUID="f0d8224f-6cba-426a-a091-b70024003f95" TYPE="ext4" 

参数如下:

Options:
 -c <file>   read from <file> instead of reading from the default
               cache file (-c /dev/null means no cache)
 -d          don't encode non-printing characters
 -h          print this usage message and exit
 -g          garbage collect the blkid cache
 -o <format> output format; can be one of:
               value, device, export or full; (default: full)
 -k          list all known filesystems/RAIDs and exit
 -s <tag>    show specified tag(s) (default show all tags)
 -t <token>  find device with a specific token (NAME=value pair)
 -l          look up only first device with token specified by -t
 -L <label>  convert LABEL to device name
 -U <uuid>   convert UUID to device name
 -V          print version and exit
 <dev>       specify device(s) to probe (default: all devices)

四、相关知识

4.1、设备类型编号

在Linux下,一切皆文件,设备也不例外,为了管理这些设备,系统为它们各自都编了号,而每个设备号又分为主设备号和次设备号。主设备号用来区分不同类型的设备,而次设备号用来区分同一类型内的多个设备(及其设备分区)。

查看方法:

4.1.1、/proc/devices文件

/proc/devices 文件是 Linux 系统中 /proc 虚拟文件系统的一部分,它提供了关于系统中字符设备和块设备的信息。这个文件列出了所有已注册的设备驱动程序及其对应的主设备号。
如下:

$ cat /proc/devices
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  4 tty0
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  7 vcs
  7 vcs1
  7 vcsa
  7 vcsa1
  10 misc
  13 input
  29 fb
  81 sg
 180 usb
 204 rtc
 254 ttyprintk
 254 vcoploop

Block devices:
  1 ramdisk
  7 loop
  8 sd
  9 md
  11 sr
  31 mdp
 253 device-mapper
 254 dm-verity
4.1.2、ll -l /dev

/dev 目录是 Linux 系统中一个非常重要的目录,它包含了系统中的设备文件。这些设备文件代表了硬件设备,如硬盘、终端、串口等。

$ ls -l /dev
...
crw--w----  1 root tty       4,  60 Nov 30  2022 tty60
crw--w----  1 root tty       4,  61 Nov 30  2022 tty61
crw-rw----  1 root dialout   4,  66 Nov 30  2022 ttyS2
crw-rw----  1 root dialout   4,  67 Nov 30  2022 ttyS3
crw-------  1 root root     10, 239 Nov 30  2022 uhid
crw-------  1 root root     10, 223 Nov 30  2022 uinput
crw-rw-rw-  1 root root      1,   9 Nov 30  2022 urandom
crw-------  1 root root    244,   0 Nov 30  2022 usbmon0
crw-rw----  1 root tty       7,   0 Nov 30  2022 vcs
crw-rw----  1 root tty       7,   1 Nov 30  2022 vcs1
brw-rw----  1 root disk    253,   0 Nov 30  2022 vda
brw-rw----  1 root disk    253,   1 Nov 30  2022 vda1
brw-rw----  1 root disk    253,   2 Oct 20  2023 vda2
brw-rw----  1 root disk    253,  16 Nov 30  2022 vdb
...

设备含义如下表:

设备名称 主设备号 描述
mem 1 系统内存设备。
kmsg 1 内核消息缓冲区。
null 1 空设备,任何写入该设备的数据都会被丢弃,而从它读取数据则总是返回EOF(End of File)。
full 1 总是返回EIO错误的设备。
random 1 随机数生成器。
urandom 1 类似于/dev/random,但在熵池不足时会使用确定性随机数发生器。
zero 1 零填充设备,无论何时读取都返回零字节。
port 1 I/O 端口
tty 4 虚拟终端设备
ttyS 4 串行通信端口
console 5 控制台设备。
ptmx 5 Pseudo-Terminal Master Xfer device,用于创建伪终端。
vcs 7 Virtual Console Screen devices,虚拟控制台屏幕。
vcsa 7 Virtual Console Screen Attributes devices,虚拟控制台属性。
vcsu 7 Virtual Console Screen Unicode devices,虚拟控制台Unicode显示
loop 7 循环设备,允许文件作为块设备使用。
autofs 10 自动挂载文件系统。
btrfs-control 10 Btrfs文件系统的控制接口。
cpu_dma_latency 10 CPU DMA延迟控制。
cuse 10 用户空间字符设备支持。
fuse 10 FUSE (Filesystem in Userspace) 设备。
hpet 10 High Precision Event Timer,高精度事件计时器。
hwrng 10 硬件随机数生成器。
mcelog 10 Machine Check Exception日志,机器检查异常日志。
nvram 10 Non-Volatile RAM,非易失性 RAM。
rfkill 10 无线设备开关控制。
snapshot 10 快照设备。
uhid 10 用户空间HID设备支持。
uinput 10 用户空间输入事件支持。
vga_arbiter 10 VGA仲裁器。
vhci 10 Virtual Host Controller Interface。
vhost-net 10 Vhost网络设备。
vhost-vsock 10 Vhost虚拟套接字设备。
loop-control 10 管理 loop 设备的控制接口
fb0 29 帧缓冲设备(Frame Buffer Device)的一个实例
ppp 108 虚拟PPP设备,用于在两个节点之间建立直接的点对点连接,支持多种传输介质,如电话线、串行线、以太网等
vport0p1 242 Open vSwitch 创建的一个内部端口,设备通常与虚拟交换机(如 Open vSwitch, OVS)相关联
usbmon0 244 用于 USB 监控的设备文件
rtc0 249 rtc0 通常对应于硬件中的实时时钟芯片,如主板上的 CMOS 时钟
vda 253 第一个虚拟磁盘
vda1 253 第一个虚拟磁盘的第一个分区

/dev 下目录含义表

目录 用途 内容
/dev/block 包含块设备文件。块设备是指可以随机访问固定大小数据块的设备,如硬盘、SSD 和分区。 通常包含与磁盘和分区相关的设备文件,例如 /dev/sda、/dev/sdb1 等。
/dev/char 包含字符设备文件。字符设备是指按字节顺序读写的设备,如终端、串行端口等 通常包含与终端、串行端口、USB 设备等相关的设备文件,例如 /dev/ttyS0、/dev/usb/hiddev0 等。
/dev/cpu 包含与 CPU 相关的设备文件。 通常包含与每个 CPU 核心相关的微码更新接口和其他控制文件,例如 /dev/cpu/0/msr、/dev/cpu/0/cpuid 等。
/dev/disk 包含与磁盘相关的设备文件和子目录。 通常包含与磁盘和分区相关的子目录,例如 by-id、by-path、by-uuid 等,这些子目录用于通过不同的标识符访问磁盘设备。
/dev/dri 包含 Direct Rendering Infrastructure (DRI) 设备文件,用于图形渲染。 通常包含与显卡和 GPU 相关的设备文件,例如 /dev/dri/card0、/dev/dri/renderD128 等。
/dev/hugepages 用于管理大页内存(huge pages)。大页内存是一种优化技术,用于减少内存管理开销。 通常为空,但可以通过配置来使用大页内存。
/dev/input 包含输入设备文件,如键盘、鼠标、触摸屏等。 通常包含与输入设备相关的设备文件,例如 /dev/input/event0、/dev/input/mouse0 等。
/dev/mapper 包含逻辑卷管理器(LVM)或其他映射设备的设备文件。 通常包含由 LVM 或其他存储管理工具创建的逻辑卷设备文件,例如 /dev/mapper/vg0-lv0。
/dev/mqueue 用于 POSIX 消息队列。POSIX 消息队列是一种进程间通信机制。 通常为空,但在使用消息队列时会生成相应的文件。
/dev/net 包含与网络相关的设备文件。 通常包含与网络接口和隧道相关的设备文件,例如 /dev/net/tun 用于创建 TUN/TAP 设备。
/dev/pts 包含伪终端(pseudo-terminal)设备文件。 通常包含与终端模拟器和远程登录会话相关的设备文件,例如 /dev/pts/0、/dev/pts/1 等。
/dev/raw 包含原始设备文件,允许直接访问块设备。 通常包含 /dev/raw/rawX 文件,其中 X 是一个数字,用于将块设备绑定到原始设备。
/dev/shm 是共享内存区域,用于进程间通信(IPC)。 通常包含临时文件和内存映射文件,可以在多个进程之间共享。
/dev/vfio 包含 VFIO(Virtual Function I/O)设备文件,用于将物理设备直接分配给用户空间进程。 通常包含与 VFIO 相关的设备文件,例如 /dev/vfio/vfio0。
/dev/virtio-ports 包含 VirtIO 串行端口设备文件,常用于虚拟化环境中进行主机与客户机之间的通信。 通常包含与 VirtIO 串行端口相关的设备文件,例如 /dev/virtio-ports/org.qemu.guest_agent.0。

!!!
主设备号(Major Device Number)通常用于标识设备类型,并且在大多数情况下是相对固定的。但还有一些设备号是动态分配的,还会因为不同厂商以及内核版本不同主设备号不同。

4.1.3、cat sys/class/*/*/dev

/sys/class 目录是 Linux 系统中 /sys 文件系统的一部分,用于组织和表示系统中的设备。/sys 文件系统提供了对内核数据结构的访问,使用户能够查看和操作设备的状态和属性,可以通过此目录下设备的dev文件查看主设备号和次设备号。如下:

$ cat /sys/class/block/loop0/dev 
7:0

4.2、字符设备和块设备

4.2.1、字符设备:

字符设备是一种以字节流形式进行读写的设备。每次读写操作通常只涉及一个或几个字节。
字符设备通常是面向字符的,数据按顺序传输,没有缓存机制。

特点:

  • 逐字节读写:字符设备的数据传输是逐字节进行的,不支持随机访问。
  • 无缓冲:字符设备通常不使用缓冲区,数据直接传输到应用程序或从应用程序传输出去。
  • 简单驱动程序:字符设备的驱动程序相对简单,因为它们不需要处理复杂的缓存和寻址问题。
  • 常见例子:终端(如 /dev/tty)、串口(如 /dev/ttyS0)、鼠标、键盘等。

使用场景:

  • 适用于需要逐字节读写数据的设备,例如终端输入输出、串口通信等。
  • 适用于实时性要求较高的设备,因为数据可以立即传输而不需要等待缓存。
4.2.2、块设备(Block Devices)

块设备是一种以固定大小的数据块为单位进行读写的设备。每次读写操作通常涉及多个字节,通常是 512 字节或更多。块设备支持随机访问,可以跳过某些块直接读取或写入特定块。

特点:

  • 块为单位读写:块设备的数据传输是以块为单位进行的,每个块的大小通常是固定的(如 512 字节、4KB 等)。
  • 有缓冲:块设备通常使用缓冲区来提高读写效率,减少对物理设备的频繁访问。
  • 复杂驱动程序:块设备的驱动程序较为复杂,需要处理缓存、寻址和错误恢复等问题。
  • 常见例子:硬盘、SSD、USB 驱动器、CD-ROM、软盘等。

使用场景:

  • 适用于需要高效存储和访问大量数据的设备,例如文件系统、数据库等。
  • 适用于需要随机访问数据的场景,因为可以跳过某些块直接读取或写入特定块
4.2.3、字符设备和块设备比较
特点 字符设备 块设备
数据单位 字节(逐字节读写) 数据块(固定大小的块)
访问方式 顺序访问 随机访问
缓冲 无缓冲 有缓冲
驱动程序复杂度 相对简单 较为复杂
常见例子 终端、串口、鼠标、键盘 硬盘、SSD、USB 驱动器、CD-ROM
适用场景 实时性要求高、逐字节读写 大量数据存储、随机访问

4.3、可移动设备和不可移动设备

lsblk 的输出中包含多个列,其中 RM 列表示设备的可移动性(Removability)。

RM 值的含义:

  • RM=1:表示设备是可移动的。
  • RM=0:表示设备是不可移动的。

可移动设备 (RM=1):可移动设备是指可以随时从系统中移除而不会导致系统崩溃或数据丢失的设备。常见的可移动设备包括 USB 闪存盘、外部硬盘、SD 卡等。

特点:

  • 这些设备通常通过 USB 或其他热插拔接口连接到系统。
  • 系统会检测到这些设备的插入和移除,并相应地进行挂载和卸载操作。
  • 移除这些设备时,系统会提示用户安全卸载以防止数据损坏。

不可移动设备 (RM=0):不可移动设备是指固定在系统中的设备,通常不能在系统运行时随意移除。常见的不可移动设备包括内置硬盘、SSD 和 NVMe 设备。

特点:

  • 这些设备通常是系统启动和运行所必需的。
  • 移除这些设备可能会导致系统崩溃或数据丢失。
  • 系统对这些设备的管理更为严格,通常不允许在运行时移除。

4.4、固态硬盘和机械硬盘

硬盘(HDD)和固态硬盘(SSD)是两种常见的存储设备,它们在结构、性能和使用场景上有所不同。了解这些差异有助于更好地选择和管理存储设备。

硬盘(HDD):机械硬盘(Hard Disk Drive, HDD)是一种传统的存储设备,使用旋转的磁盘来存储数据。数据通过磁头读写到磁盘表面的不同位置。

特点:

  • 容量:HDD 通常提供更大的存储容量,价格相对较低。
  • 速度:由于需要物理移动磁头和旋转磁盘,HDD 的读写速度相对较慢。
  • 耐用性:HDD 对物理冲击比较敏感,因为内部有活动部件。
  • 功耗:HDD 的功耗较高,尤其是在启动和运行时。
  • 噪音:HDD 在运行时会产生一定的噪音。

固态硬盘(SSD):固态硬盘(Solid State Drive, SSD)是一种基于闪存技术的存储设备,没有活动部件,数据存储在闪存芯片中。

特点:

  • 容量:SSD 的容量通常较小,但近年来也在不断增加,且单位容量的价格逐渐下降。
  • 速度:SSD 的读写速度远高于 HDD,因为它不需要物理移动部件。
  • 耐用性:SSD 没有活动部件,对物理冲击的耐受性更强。
  • 功耗:SSD 的功耗较低,适合移动设备和节能需求。
  • 噪音:SSD 运行时几乎无声。

内置的 HDD 和 SSD 通常是不可移动设备,而通过 USB 接口连接的外部 HDD 和 SSD 则是可移动设备。

五、参考文档

1、https://cloud.tencent.com/developer/article/2297783

2、https://www.cnblogs.com/zhaobinyouth/p/6238158.html

3、https://www.cnblogs.com/lidabo/p/5300070.html

4、http://staff.ustc.edu.cn/~hdrq/jsjjc/scsi/scsi0101.htm

5、https://www.cnblogs.com/lidabo/p/5300070.html

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐