一、使用 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 命令终止进程,然后再进行卸载。