一、使用 lsblk 查询系统块设备信息
执行命令:
sudo lsblk
输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 478K 0 rom
vda 253:0 0 50G 0 disk
|-vda1 253:1 0 1G 0 part /boot
`-vda2 253:2 0 49G 0 part /
vdb 253:16 0 200G 0 disk
命令解释:
-
命令含义:
lsblk
用于列出系统中的块设备,这些设备通常是存储设备或与存储相关的设备,它可以帮助用户了解系统中存储设备的布局和挂载情况。 -
各列含义
NAME
:设备的名称,如sr0
、vda
、vda1
等。MAJ:MIN
:主设备号和次设备号,用于在内核中唯一标识设备。RM
:表示设备是否可移动,1
表示可移动,0
表示不可移动。SIZE
:设备的大小,如478K
、50G
等。RO
:表示设备是否为只读,1
表示只读,0
表示可读写。TYPE
:设备的类型,如rom
(只读存储器)、disk
(磁盘)、part
(分区)等。MOUNTPOINT
:设备的挂载点,即设备在文件系统中的挂载位置,如果设备没有挂载,则显示为空。
-
具体设备信息
sr0
:这是一个只读的可移动设备,大小为478K
,类型为rom
,通常是系统中的光驱或其他只读存储设备,没有挂载到文件系统中。vda
:这是一个大小为50G
的磁盘设备,不可移动,可读写,它有两个分区vda1
和vda2
。vda1
:vda
磁盘的第一个分区,大小为1G
,挂载到/boot
目录,用于存储系统启动相关的文件。vda2
:vda
磁盘的第二个分区,大小为49G
,挂载到根目录/
,是系统的主要存储区域,包含了系统文件、用户文件等。
vdb
:这是一个大小为200G
的磁盘设备,不可移动,可读写,没有进行分区或挂载,可用于存储数据或进一步进行分区和挂载操作。
要将磁盘设备vdb
挂载到/home
目录,你可以按以下步骤操作:
二、挂载磁盘
1. 对磁盘进行分区
如果vdb
还没有分区,你可以对其进行分区。这里以使用fdisk
工具为例:
sudo fdisk /dev/vdb
按照fdisk
的提示操作,例如创建新分区,最后保存并退出。
具体步骤如下:
- 输入 n 后按回车键,开始创建新分区。
- 选择分区类型,一般默认主分区,直接按回车键即可。
- 输入分区编号,通常从 1 开始,也可以根据你的需求选择其他未使用的编号,然后按回车键。
- 对于起始扇区,一般直接按回车键,使用默认值。
- 对于结束扇区,可以输入你想要的分区大小,例如 +20G 表示创建一个 20GB 的分区;或者直接按回车键,使用剩余的全部空间。
- 创建完分区后,你可以使用 p 命令查看分区表,确认分区设置是否正确。如果无误,使用 w 命令将分区表写入磁盘并退出 fdisk。
2. 格式化分区
假设你创建了一个名为/dev/vdb1
的分区,接下来需要对其进行格式化。以格式化为ext4
文件系统为例:
sudo mkfs.ext4 /dev/vdb1
3. 创建挂载目录 /data
目标挂载目录一定是空的,如果有数据,在挂载后会被隐藏,卸载后会恢复显示。
mkdir /data
4. 挂载分区
然后进行挂载操作:
sudo mount /dev/vdb1 /data
5. 使挂载在系统重启后依然生效
为了让挂载在系统重启后仍然有效,需要将挂载信息添加到/etc/fstab
文件中。
echo "/dev/vdb1 /data ext4 defaults 0 0" | sudo tee -a /etc/fstab
这样,vdb
磁盘的第一个分区就会被挂载到/data
目录,并且在系统重启后依然保持挂载状态。
三、常见异常
1. 挂载到错误的目录,如何卸载?
例如错误将目录挂载到了 /home,导致目录原数据都被隐藏。
要卸载通过sudo mount /dev/vdb1 /home
命令挂载的分区,可以使用以下命令:
sudo umount /dev/vdb1
或者
sudo umount /home
这两个命令都可以实现卸载的目的,前者通过指定设备名来卸载,后者通过指定挂载点来卸载。
2. 卸载时出现报错“目标忙”,如何解决?
当出现 umount: /home:目标忙
这样的提示时,说明有进程正在使用 /home
目录及其子目录下的文件或目录,导致无法直接卸载。你可以通过以下几种方法来解决这个问题:
- 找出并终止相关进程:
使用fuser
命令可以找出正在使用/home
挂载点的进程。运行以下命令:
fuser -m /home
该命令会列出正在访问 /home
的进程的 PID(进程 ID)。例如,输出可能类似于 1234 2345
,这些数字就是进程 ID。
然后,使用 kill
命令终止这些进程。如果只是普通的进程,使用 kill
命令即可,比如:
sudo kill 1234 2345
如果进程比较顽固,不响应普通的 kill
信号,可以使用 kill -9
强制终止(不过这种方式可能会导致数据丢失或程序异常,需谨慎使用):
sudo kill -9 1234 2345
终止进程后,再次尝试卸载:
sudo umount /home
- 切换到其他目录:
如果你当前处于/home
目录或其子目录下,切换到其他目录(例如根目录/
),然后再尝试卸载:
cd /
sudo umount /home
- 使用
lsof
命令查找进程:
lsof
命令也可以用来查找正在使用特定文件或目录的进程。运行以下命令:
sudo lsof /home
这会列出所有正在使用 /home
目录的进程及其相关信息。找到对应的进程 ID 后,按照上述方法使用 kill
命令终止进程,然后再进行卸载。