Linux服务器数据盘移除并重新挂载的全过程

2025-11-23 18:50

本文主要是介绍Linux服务器数据盘移除并重新挂载的全过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保...

引言

linux 服务器上移除并重新挂php载数据盘整个过程分为三大步:

1、卸载文件系统 - 逻辑上断开系统与文件系统的连接。

2、分离磁盘 - 物理上断开磁盘与系统的连接(针对云盘)或解除挂载配置。

3、重新挂载 - 将磁盘再次挂载到系统。

第一步:卸载文件系统

首先,确保没有任何进程正在使用要卸载的磁盘上的文件。这是成功卸载的关键。

1、确认挂载点和磁盘信息

使用 df -h 或 lsblk 命令查看当前已挂载的磁盘信息,确定你要卸载的数据盘的挂载点(如 /data)和对应的设备名(如 /dev/vdb1)。

df -h

输出示例:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G  5.0G   45G  10% /
/dev/vdb1       100G   60G   40G  60% /data  <-- 这是我们要操作的数据盘

lsblk 命令可以更清晰地看到设备之间的层级关系(如哪个分区属于哪个磁盘):

lsblk

输出示例:

NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  50G  0 disk
└─vda1 253:1    0  50G  0 part /
vdb    253:16   0 100G  0 disk
└─vdb1 253:17   0 100G  0 part /data  <-- 设备是 /dev/vdb1,挂载点是 /data

2、卸载文件系统

使用 umount 命令卸载磁盘。切勿在命令中使用 n(unmount 是错误的)。

# 使用挂载点进行卸载(推荐)
sudo umount /data

# 或者使用设备名进行卸载
sudo umount /dev/vdb1

3、处理“target is busy”错误

如果提示 umount: /data: target is busy.,说明有进程正在访问该挂载点下的文件或目录。你需要终止这些进程。

方法A:使用 fuser 命令

# 查看哪android些进程正在使用 /data
sudo fuser -mv /data

# 输出会显示进程PID,然后可以用 kill 终止它们
# 或者直接用 fuser 终止所有相关进程
sudo fuser -km /data

# 再次尝试卸载
sudo umount /data

方法B:使用 lsof 命令

# 查看哪些进程打开了 /data 下的文件
sudo lsof +f -- /data

# 根据列出的PID,手动终止进程,或使用以下命令终止所有相关进程
sudo lsof +f -- /data | awk '{print $2}' | grep -v PID | sudo xargs kill -9

# 再次尝试卸载
sudo umount /data

最后手段:懒卸载

如果实在无法终止所有进程(但你确认数据可以安全卸载),可以使用懒卸载。这有一定风险,仅作为最后手段。系统会在设备不再繁忙时再执行卸载,但你可能无法立即收到成功反馈。

sudo umount -l /data

4、验证是否卸载成功

再次运行 df -h 或 lsblk,检查 /data 挂载点是否已经从列表中消失。

df -h
# 此时应该看不到 /data 的挂载信息了

第二步:分离磁盘

卸载文件系统后,根据你的环境(物理机、虚拟机、云服务器)选择下一步操作。

场景A:云服务器(如阿里云、腾讯云、AWS、Azure等)

警告: 在控制台上操作分离磁盘前,必须先在操作系统内部完成卸载(第一步)。否则可能导致服务器文件系统损坏、数据丢失甚至无法正常开机。

登录你的云服务器控制台。

找到你的云服务器实例。

进入“存储”或“磁盘”相关管理页面。

找到已卸载的数据盘,并选择 “卸载” 或BvftLbiiBd “分离”(Detach)操作。

等待控制台提示卸载成功。

现在,你可以根据需求重新挂载它:

如果只是想改变挂载点(例如从 /data 改为 /mnt/newdata):你无需在控制台分离磁盘,只需完成第一步卸载,然后直接跳到下面的 第三步:重新挂载 即可。

如果想把磁盘挂载到另一台服务器:在控制台将其从当前服务器分离后,再将其挂载到目标服务器上,然后在目标服务器上执行 第三步。

如果只是想重新挂载到本机:分离后,再次在控制台将其 “挂载” 或 “附加”(Attach)到原来的服务器实www.chinasem.cn例上。然后回到服务器终端。

对于云服务器,重新挂载后,设备名可能会变!(例如从 /dev/vdb 变成了 /dev/vdc)。务必使用 lsblk 命令重新确认设备名。

lsblk
# 仔细查看新挂载的磁盘是 vdb 还是 vdc

场景B:物理服务器或本地虚拟机

物理服务器直接断电后拔插硬盘即可。对于本地虚拟机(如 VMware、VirtualBox):

在虚拟机设置中,移除该硬盘设备。

如果需要重新挂载,再将其添加回来。
同样,设备名可能会发生变化,务必使用 lsblk 确认。

第三步:重新挂载

现在,磁盘已经处于“已连接但未挂载”的状态。

1、再次确认设备名

sudo lsblk

找到你的数据盘,确认其设备名(如 /dev/vdb1)并且没有 MOUNTPOINT。

2、创建挂载点(如果需要)

如果你要挂载到一个新的路径,需要先创建目录。

sBvftLbiiBdudo mkdir -p /mnt/new_data

如果使用原来的挂载点(如 /data),则无需创建。

3、挂载文件系统

使用 mount 命令进行临时挂载(重启后失效):

sudo mount /dev/vdb1 /mnt/new_data

4、验证挂载是否成功

df -h

检查输出中是否包含了新挂载的磁盘和挂载点。

5、配置开机自动挂载(非常重要)

临时挂载在服务器重启后会失效。如需永久生效,必须修改 /etc/fstab 文件。

a. 获取文件系统的UUID(推荐)或标签
使用设备名(如 /dev/vdb1)在系统重启时可能会变化,而UUID是唯一的,更可靠。

sudo blkid /dev/vdb1

输出示例:

/dev/vdb1: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="ext4"

记下 UUID 的值。

b. 备份 fstab 文件

sudo cp /etc/fstab /etc/fstab.bak

c. 编辑 fstab 文件

使用 vim 或 nano 等编辑器

sudo vim /etc/fstab

d. 添加一行配置

在文件末尾添加新行,格式为:<设备标识> <挂载点> <文件系统类型> <挂载选项> <dump选项> <fsck顺序>
使用UUID(推荐):

UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/new_data ext4 defaults 0 0

或者使用设备名(不推荐):

/dev/vdb1 /mnt/new_data ext4 defaults 0 0

e. 检查 fstab 配置是否正确

这是一个非常重要的安全步骤,错误的 fstab 配置可能导致系统无法启动。

sudo mount -a

这个命令会尝试挂载 fstab 中所有配置了的设备。如果没有任何错误输出,并且 df -h 能看到磁盘,说明配置正确。如果有报错,必须立即修正 /etc/fstab 文件,否则重启后服务器可能无法正常进入系统。

至此,已完成数据盘的移除和重新挂载全过程。

以上就是Linux服务器数据盘移除并重新挂载的完整过程的详细内容,更多关于Linux数据盘移除并重新挂载的资料请关注China编程(www.chinasem.cn)其它相关文章!

这篇关于Linux服务器数据盘移除并重新挂载的全过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1156255

相关文章

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

MySQL中的DELETE删除数据及注意事项

《MySQL中的DELETE删除数据及注意事项》MySQL的DELETE语句是数据库操作中不可或缺的一部分,通过合理使用索引、批量删除、避免全表删除、使用TRUNCATE、使用ORDERBY和LIMI... 目录1. 基本语法单表删除2. 高级用法使用子查询删除删除多表3. 性能优化策略使用索引批量删除避免

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

使用MyBatis TypeHandler实现数据加密与解密的具体方案

《使用MyBatisTypeHandler实现数据加密与解密的具体方案》在我们日常的开发工作中,经常会遇到一些敏感数据需要存储,比如用户的手机号、身份证号、银行卡号等,为了保障数据安全,我们通常会对... 目录1. 核心概念:什么是 TypeHandler?2. 实战场景3. 代码实现步骤步骤 1:定义 E

使用C#导出Excel数据并保存多种格式的完整示例

《使用C#导出Excel数据并保存多种格式的完整示例》在现代企业信息化管理中,Excel已经成为最常用的数据存储和分析工具,从员工信息表、销售数据报表到财务分析表,几乎所有部门都离不开Excel,本文... 目录引言1. 安装 Spire.XLS2. 创建工作簿和填充数据3. 保存为不同格式4. 效果展示5

Python多任务爬虫实现爬取图片和GDP数据

《Python多任务爬虫实现爬取图片和GDP数据》本文主要介绍了基于FastAPI开发Web站点的方法,包括搭建Web服务器、处理图片资源、实现多任务爬虫和数据可视化,同时,还简要介绍了Python爬... 目录一. 基于FastAPI之Web站点开发1. 基于FastAPI搭建Web服务器2. Web服务

Apache服务器IP自动跳转域名的问题及解决方案

《Apache服务器IP自动跳转域名的问题及解决方案》本教程将详细介绍如何通过Apache虚拟主机配置实现这一功能,并解决常见问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录​​问题背景​​解决方案​​方法 1:修改 httpd-vhosts.conf(推荐)​​步骤