linux如何切换磁盘
- Linux
- 2025-08-07
- 35
umount 卸载原
磁盘,再用
mount /dev/X Y(X 为新磁盘标识,Y 为目标挂载点)挂载新
在 Linux 系统中,”切换磁盘”这一表述可对应多种实际操作场景,主要包括查看/识别磁盘、临时挂载/卸载磁盘、永久挂载磁盘至指定目录、更换系统主磁盘(需重装)等核心场景,以下将从底层原理到具体操作展开详细说明,覆盖物理机与虚拟机环境的典型需求。
前置认知:Linux 磁盘管理的核心逻辑
Linux 采用统一的设备树模型管理存储资源,所有存储设备均以 /dev 目录下的特殊文件形式存在(如 /dev/sda 表示第一块 SCSI/SATA 硬盘,/dev/nvme0n1 表示 NVMe 固态硬盘),磁盘的实际使用需经过 分区 → 格式化 → 挂载 三个关键步骤:
- 分区:将物理磁盘划分为逻辑单元(通过
fdisk/parted完成); - 格式化:为分区创建文件系统(如 ext4、xfs,通过
mkfs完成); - 挂载:将格式化后的分区关联到文件系统的某个目录(通过
mount或/etc/fstab实现)。
所谓”切换磁盘”,本质是根据需求选择不同的分区或物理磁盘,并通过上述流程使其可被系统访问。
全流程操作指南
(一)第一步:识别目标磁盘与现有分区
在执行任何操作前,必须准确定位目标磁盘,避免误操作破坏原有数据,常用工具如下:
| 工具名称 | 功能描述 | 典型输出示例 |
|---|---|---|
lsblk |
列出所有块设备及其层级关系(推荐优先使用) | NAME="sda" MAJ:MIN="8:0" RM="0.5" SIZE="100G" TYPE="disk" |
fdisk -l |
显示传统 MBR/GPT 分区表信息 | Disk /dev/sda: 100 GiB, 512 bytes/sector, ... |
blkid |
查询设备的 UUID、文件系统类型等标识符 | /dev/sda1: UUID="abc123" TYPE="ext4" |
df -h |
查看已挂载文件系统的磁盘使用情况 | /dev/sda1 9.8G 3.2G 6.6G 33% / |
dmesg | grep sd |
内核日志中查找新接入的磁盘信息(适用于刚插入的移动硬盘/U盘) | [ 1.234] scsi 0:0:0:0: Direct-Access ... |
注意:若新增了外接磁盘(如 USB 硬盘),建议先拔插一次,确保系统能正确识别,对于云服务器,新挂载的数据盘通常会显示为未分区的新设备(如 /dev/vdb)。
(二)第二步:对目标磁盘进行分区(可选)
若目标磁盘是全新未分区的空白盘(如刚添加的第二块硬盘),需先创建分区,以下以 /dev/sdb 为例演示两种主流分区方式:
方式 1:传统 MBR 分区(兼容旧系统)
sudo fdisk /dev/sdb
进入交互式界面后,依次执行以下命令:
n→ 新建分区;p→ 主分区;1→ 分区编号;- 回车默认起始扇区;
- 回车默认结束扇区(占满整个磁盘);
t→ 修改分区类型;83→ Linux LVM(若仅需普通分区可跳过此步);w→ 写入分区表并退出。
方式 2:GPT 分区(支持大磁盘 & EFI)
sudo parted /dev/sdb mklabel gpt sudo parted /dev/sdb mkpart primary ext4 0% 100% # 创建单个全容量的主分区
(三)第三步:格式化分区为文件系统
分区完成后,需为其赋予文件系统格式才能存储数据,常见文件系统及适用场景:
ext4:通用场景,稳定性高;xfs:适合大文件存储(如数据库);btrfs:支持快照、卷管理(实验性较强);ntfs:Windows 兼容(需安装ntfs-3g驱动)。
以 /dev/sdb1 格式化为 ext4 为例:

sudo mkfs.ext4 /dev/sdb1 # 根据提示确认操作(输入 y)
格式化完成后,可通过 blkid /dev/sdb1 查看生成的 UUID(后续挂载必备)。
(四)第四步:临时挂载磁盘(立即生效)
若只需短期使用该磁盘(如拷贝文件),可直接通过 mount 命令临时挂载:
sudo mount /dev/sdb1 /mnt/mydisk # 将分区挂载到 /mnt/mydisk 目录
验证是否成功:df -h | grep mydisk 应显示该分区的使用情况。
卸载方法:sudo umount /mnt/mydisk(需确保无进程正在访问该目录)。
(五)第五步:永久挂载磁盘(重启生效)
若希望每次开机自动挂载,需编辑 /etc/fstab 文件(系统启动时的挂载配置文件),操作步骤如下:
-
获取目标分区的 UUID(避免设备名变化导致的挂载失败):
sudo blkid /dev/sdb1 # 输出类似:UUID="uuid-string"
-
备份原 fstab 文件(重要!):

sudo cp /etc/fstab /etc/fstab.bak
-
编辑 fstab 文件(推荐使用
nano或vim):sudo nano /etc/fstab
在文件末尾添加一行(示例):
UUID=uuid-string /mnt/mydisk ext4 defaults 0 2
各字段含义:
- 第一列:设备标识(推荐 UUID,也可写
/dev/sdb1); - 第二列:挂载点(需提前创建该目录,如
sudo mkdir -p /mnt/mydisk); - 第三列:文件系统类型;
- 第四列:挂载选项(
defaults包含 rw、suid、dev、exec、auto、nouser、async); - 第五列:dump 备份策略(0 表示不备份);
- 第六列:fsck 检查顺序(非根分区建议设为 2)。
- 第一列:设备标识(推荐 UUID,也可写
-
测试配置有效性(关键!):
sudo mount -a # 模拟开机挂载,若无报错则配置正确
若有错误(如 “wrong fs type”),需检查文件系统类型是否匹配。
特殊场景:更换系统主磁盘(警告:高风险!)
若需将系统从原磁盘(如 /dev/sda)迁移至新磁盘(如 /dev/sdb),需注意以下限制:

- 仅适用于全新磁盘:原磁盘需保留至迁移完成前;
- 必须重建引导加载程序:GRUB2 需重新安装到新磁盘;
- 推荐方案:通过 Live CD/USB 启动系统,将原系统拷贝至新磁盘并修复引导。
简要步骤(以 Ubuntu 为例):
- 准备 Live USB,从其启动并打开终端;
- 识别原系统所在分区(如
/dev/sda1)和新磁盘(如/dev/sdb); - 创建新分区并格式化(参考前文步骤);
- 使用
rsync同步数据:sudo rsync -avHP /media/root/old_root/ /mnt/new_root/; - 修改
/mnt/new_root/etc/fstab中的设备标识为新磁盘; - 安装 GRUB2 到新磁盘:
sudo grub-install --boot-directory=/mnt/new_root/boot /dev/sdb; - 重启系统并从新磁盘启动。
强烈建议:此操作前务必完整备份原系统数据!
常见问题排查手册
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
mount: wrong fs type |
fstab 中文件系统类型错误 | 检查 blkid 输出的实际文件系统类型 |
| 挂载后无法写入 | fstab 缺少 rw 选项 | 确保第四列包含 rw(或直接写 defaults) |
| 开机后未自动挂载 | fstab 语法错误 | 运行 sudo mount -a 检查报错信息 |
| 磁盘显示为只读 | 文件系统损坏或权限不足 | sudo fsck -y /dev/sdb1 修复;检查权限设置 |
| 找不到目标设备 | 设备未正确连接或驱动缺失 | lsblk 确认设备是否存在;更新内核模块 |
FAQs
Q1:为什么我按照教程挂载了磁盘,但在文件管理器里看不到?
A:可能原因有三:① 挂载点目录未创建(需先执行 sudo mkdir -p /mnt/mydisk);② fstab 配置错误(检查 mount -a 是否有报错);③ 文件管理器缓存问题(尝试重启或手动刷新),建议优先用 df -h 命令验证是否真的挂载成功。
Q2:如何安全卸载正在使用的磁盘?
A:直接 umount 会报错“device is busy”,正确方法是先终止占用该磁盘的进程:
- 找到占用进程:
lsof /mnt/mydisk; - 杀死进程(谨慎操作):
sudo kill -9 <PID>; - 再执行
sudo umount /mnt/mydisk,若仍失败,可尝试sudo umount -l(延迟卸载)
