Linux 下通过命令行挂载设备

loskyertt Unknown

1. 挂载 U 盘

首先,确保 U 盘已经插入计算机。


1.2 查看设备信息

使用 lsblkfdisk -l 命令来列出系统中所有的存储设备,包括 U 盘。一般来说,U 盘会显示为类似 /dev/sdb1/dev/sdc1 的设备。

1
lsblk

加上 -f 参数可以显示磁盘的 UUID

或者:

1
sudo fdisk -l

输出可能类似于:

1
/dev/sdb1  ext4  15G  8G  7G  60% /media/sky/USB

此处 /dev/sdb1 是 U 盘的设备路径。


1.3 创建挂载点

挂载点是一个空目录,用于访问 U 盘中的文件。你可以选择将 U 盘挂载到一个现有目录,也可以创建一个新目录作为挂载点。

例如,创建一个新的挂载点 usb

1
sudo mkdir /mnt/usb

也可以选择其他路径,例如 /media/usb/home/sky/usb


1.4 挂载 U 盘

将 U 盘挂载到刚才创建的挂载点。假设你的 U 盘设备是 /dev/sdb1,你可以执行以下命令:

1
sudo mount /dev/sdb1 /mnt/usb

如果挂载成功,使用 ls /mnt/usblsblk 可以看到 U 盘的内容。


1.5 查看挂载情况

你可以使用 df -hlsblk 查看所有挂载的设备,确认 U 盘是否成功挂载:

1
df -h

或者:

1
lsblk

1.6 卸载 U 盘

完成对 U 盘的操作后,记得安全卸载。使用 umount 命令:

1
sudo umount /mnt/usb

如果挂载的目录不为空,或者使用 umount 时出现“设备忙”的错误,可以使用以下命令强制卸载:

1
sudo umount -l /mnt/usb

1.7 总结

  • 使用 lsblkfdisk -l 查找 U 盘设备路径(例如 /dev/sdb1)。
  • 创建一个空目录作为挂载点。
  • 使用 sudo mount /dev/sdb1 /mnt/usb 将 U 盘挂载到该目录。
  • 使用 sudo umount /mnt/usb 卸载 U 盘。

如果你的 U 盘有特定的格式(如 NTFS、FAT32 等),也许需要安装特定的工具来支持该格式的挂载,如 ntfs-3g(对于 NTFS 格式)。


2. 挂载磁盘设备(扩容)

该方式是挂载子目录(更简单,但不改变根分区大小),如果不想用 LVM,可以将新磁盘挂载到某个子目录下,比如 /home/var 等。


2.1 分区与格式化

1
sudo fdisk /dev/sdb
  • 创建新分区(n
  • 保存并退出(w

格式化:

1
sudo mkfs.ext4 /dev/sdb1

mkfs.ext4等价于mkfs -t ext4


2.2 挂载新磁盘

临时挂载到 /mnt/sdb1

1
sudo mkdir -p /mnt/sdb1
1
sudo mount /dev/sdb1 /mnt/sdb1

如果希望将其永久挂载到 /home

  1. 先临时挂载到 /mnt/sdb1
1
sudo mkdir -p /mnt/sdb1
1
sudo mount /dev/sdb1 /mnt/sdb1
  1. 备份 /home 数据:

    1
    sudo rsync -a /home/ /mnt/sdb1/
  2. 获取 UUID:

    1
    blkid /dev/sdb1
  3. 编辑 /etc/fstab

    1
    UUID=xxxxx  /home  ext4  defaults  0  2
  4. 重新挂载:

    1
    2
    3
    sudo rm /home/$USER/ -rf
    sudo umount /mnt/sdb1
    sudo mount -a

    然后执行重启命令reboot。当你将磁盘挂载到 /home 目录时,挂载操作会暂时遮盖掉 /home 目录中的现有内容。也就是说,挂载后, /home 目录下的内容将会变成新挂载磁盘的内容,而原先的 /home 目录下的文件将变得不可见。这些文件并没有被删除,只是暂时隐藏,它们仍然存在于磁盘上。你可以通过卸载磁盘(sudo umount /home)查看这些原始文件。如果你希望保留原来的 /home 内容,建议先将原来的文件备份到其他地方,或者在挂载之前将 /home 目录的内容移动到另一个临时位置。


2.3 检查挂载

1
df -h /home

3. 挂载 Windows 的磁盘分区(双系统)

示例:

1
2
3
4
5
6
7
8
9
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme1n1
├─nvme1n1p1 vfat FAT32 9252-7D2A
├─nvme1n1p2
├─nvme1n1p3 ntfs 系统 95519C376F55F65F
└─nvme1n1p4 ntfs 软件 321ABC035AB41F42
nvme0n1
├─nvme0n1p1 vfat FAT32 06E8-25E3 1.9G 0% /boot/efi
└─nvme0n1p2 ext4 1.0 e83e2160-e994-4d15-b38a-0b26d5927762 153.9G 28% /

3.1 确认 Windows 分区信息

lsblk -f 输出中,可以看到 Windows 磁盘的 NTFS 分区:

  • nvme1n1p3系统分区,UUID:95519C376F55F65F
  • nvme1n1p4软件分区,UUID:321ABC035AB41F42

3.2 安装 NTFS 支持工具

可能需要安装 ntfs-3g 来挂载 NTFS 文件系统:

1
sudo pacman -S ntfs-3g

3.3 创建挂载点

为每个分区创建挂载目录:

1
2
sudo mkdir -p /mnt/windows_system
sudo mkdir -p /mnt/windows_software

3.4 挂载分区

3.4.1 手动挂载(临时)

挂载 Windows 系统分区:

1
sudo mount -t ntfs3 /dev/nvme1n1p3 /mnt/windows_system

挂载 Windows 软件分区:

1
sudo mount -t ntfs3 /dev/nvme1n1p4 /mnt/windows_software

验证挂载情况:

1
lsblk -f

挂载成功后可以查看挂载目录内容:

1
2
ls /mnt/windows_system
ls /mnt/windows_software

3.4.2 自动挂载(持久化)

编辑 /etc/fstab,添加以下内容:

1
2
UUID=95519C376F55F65F  /mnt/windows_system  ntfs3  defaults  0  0
UUID=321ABC035AB41F42 /mnt/windows_software ntfs3 defaults 0 0

生效配置:

1
sudo mount -a

3.5 解决 Windows 快速启动问题

如果挂载时遇到 “Windows is hibernated” 错误,是因为 Windows 开启了 快速启动,需要关闭。

关闭 Windows 快速启动:
在 Windows 中:

  1. 控制面板电源选项选择电源按钮的功能
  2. 取消勾选 启用快速启动(推荐)
  3. 重新启动 Windows 并进入 Linux

或者强制挂载(不推荐):

1
sudo mount -t ntfs3 -o remove_hiberfile /dev/nvme1n1p3 /mnt/windows_system

3.6 断开挂载

如果不再需要挂载,可以使用以下命令卸载:

1
2
sudo umount /mnt/windows_system
sudo umount /mnt/windows_software

4. /etc/fstab 文件说明

4.1 示例

示例:

1
2
3
4
5
6
7
8
9
10
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=06E8-25E3 /boot/efi vfat defaults,umask=0077 0 2
UUID=e83e2160-e994-4d15-b38a-0b26d5927762 / ext4 defaults,noatime 0 1
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0

4.2 说明

每一行在 /etc/fstab 文件中都包含了 6 个字段,分别是:

  1. 设备或 UUID (磁盘或分区)
  2. 挂载点 (文件夹路径)
  3. 文件系统类型 (例如 ext4, vfat, tmpfs 等)
  4. 挂载选项 (如 defaults, noatime, umask 等)
  5. 转储选项 (用于备份),0 表示该文件系统不需要备份。如果该字段为 1,表示该文件系统会被 dump 命令处理。
  6. 文件系统检查顺序 (通常是 12

关于示例中 noatimeumask 的含义:

  • noatime 是一个挂载选项,表示 不更新文件的访问时间(atime 。这对于提高性能非常有帮助,特别是在数据库或需要频繁读写的场景下,因为它减少了磁盘的写操作。默认情况下,每次访问文件(读取)时,文件的 访问时间(atime 会被更新。使用 noatime 可以避免这种情况,从而提升性能,尤其是在频繁访问文件的情况下。

  • umask 用于设置新创建文件和目录的默认权限。umask=0077 意味着 默认权限为 700 ,即 只有文件的所有者 有读写执行权限,其他用户没有任何权限。umask 是通过掩码值来限制权限的,它是通过从默认权限(通常是 666 对于文件,777 对于目录)中减去掩码值来计算实际权限。

例如:

  • 默认权限:666(文件的读写权限)
  • 掩码 0077:减去 77 后,结果是 600,意味着 文件只有所有者可以读写,而其他人没有权限。
  • Title: Linux 下通过命令行挂载设备
  • Author: loskyertt
  • Created at : 2025-02-20 16:02:30
  • Updated at : 2025-02-23 03:19:05
  • Link: https://redefine.ohevan.com/2025/02/20/Linux挂载设备/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments