Junki
Junki
Published on 2025-04-01 / 10 Visits
0
0

Linux 磁盘挂载教程

一、使用 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:设备的名称,如sr0vdavda1等。
    • MAJ:MIN:主设备号和次设备号,用于在内核中唯一标识设备。
    • RM:表示设备是否可移动,1表示可移动,0表示不可移动。
    • SIZE:设备的大小,如478K50G等。
    • RO:表示设备是否为只读,1表示只读,0表示可读写。
    • TYPE:设备的类型,如rom(只读存储器)、disk(磁盘)、part(分区)等。
    • MOUNTPOINT:设备的挂载点,即设备在文件系统中的挂载位置,如果设备没有挂载,则显示为空。
  • 具体设备信息

    • sr0:这是一个只读的可移动设备,大小为478K,类型为rom,通常是系统中的光驱或其他只读存储设备,没有挂载到文件系统中。
    • vda:这是一个大小为50G的磁盘设备,不可移动,可读写,它有两个分区vda1vda2
      • vda1vda磁盘的第一个分区,大小为1G,挂载到/boot目录,用于存储系统启动相关的文件。
      • vda2vda磁盘的第二个分区,大小为49G,挂载到根目录/,是系统的主要存储区域,包含了系统文件、用户文件等。
    • vdb:这是一个大小为200G的磁盘设备,不可移动,可读写,没有进行分区或挂载,可用于存储数据或进一步进行分区和挂载操作。

要将磁盘设备vdb挂载到/home目录,你可以按以下步骤操作:

二、挂载磁盘

1. 对磁盘进行分区

如果vdb还没有分区,你可以对其进行分区。这里以使用fdisk工具为例:

sudo fdisk /dev/vdb

按照fdisk的提示操作,例如创建新分区,最后保存并退出。

具体步骤如下:

  1. 输入 n 后按回车键,开始创建新分区。
  2. 选择分区类型,一般默认主分区,直接按回车键即可。
  3. 输入分区编号,通常从 1 开始,也可以根据你的需求选择其他未使用的编号,然后按回车键。
  4. 对于起始扇区,一般直接按回车键,使用默认值。
  5. 对于结束扇区,可以输入你想要的分区大小,例如 +20G 表示创建一个 20GB 的分区;或者直接按回车键,使用剩余的全部空间。
  6. 创建完分区后,你可以使用 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 目录及其子目录下的文件或目录,导致无法直接卸载。你可以通过以下几种方法来解决这个问题:

  1. 找出并终止相关进程
    使用 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
  1. 切换到其他目录
    如果你当前处于 /home 目录或其子目录下,切换到其他目录(例如根目录 /),然后再尝试卸载:
cd /
sudo umount /home
  1. 使用 lsof 命令查找进程
    lsof 命令也可以用来查找正在使用特定文件或目录的进程。运行以下命令:
sudo lsof /home

这会列出所有正在使用 /home 目录的进程及其相关信息。找到对应的进程 ID 后,按照上述方法使用 kill 命令终止进程,然后再进行卸载。


Comment