【arm扩容】新硬盘挂载操作说明

news2024/10/10 20:13:30

背景:

未经过扩容的arm设备不满足移植大镜像的条件。

需求:

我们要对arm设备扩容,现在要将一个500G的硬盘挂进去。而且要按照老arm设备的挂法,保持相同的目录结构。配置这台机器。


下面老arm设备的硬盘挂载相关信息。

lsblk

nvme0n1      259:11   0 465.8G  0 disk
└─nvme0n1p1  259:12   0 465.8G  0 part /home/nvidia/work

sudo fdisk -l

Disk /dev/nvme0n1: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe073784d

Device                      Boot Start       End           Sectors       Size       Id   Type
/dev/nvme0n1p1       2048        976773167   976771120   465.8G   83   Linux


设置开机自动挂载:为了使分区在系统启动时自动挂载,需要编辑 /etc/fstab 文件

# /etc/fstab: static file system information.
#
# These are the filesystems that are always mounted on boot, you can
# override any of these by copying the appropriate line from this file into
# /etc/fstab and tweaking it as you see fit.  See fstab(5).
#
# <file system> <mount point>             <type>          <options>                               <dump> <pass>
/dev/root            /                     ext4           defaults                                     0 1
/dev/nvme0n1p1       /home/nvidia/work     ext4           defaults                                     0 0

步骤 1: 连接新硬盘

确保新的 500GB 硬盘已经正确连接到 ARM 设备,并被系统识别。可以通过 lsblk 或 fdisk -l 命令查看。df -h。

步骤 2: 创建分区和格式化

使用 parted 或 fdisk 创建 GPT 分区表,并创建一个主分区覆盖整个硬盘。然后,格式化新分区为 ext4 文件系统。例如:

shell

sudo parted /dev/nvme0n1 mklabel gpt

sudo parted /dev/nvme0n1 mkpart primary ext4 2048s 100%

sudo mkfs.ext4 /dev/nvme0n1p1

注意:这里假设新硬盘被识别为 /dev/nvme0n1,请根据实际情况调整。

步骤 3: 创建挂载点

确保挂载点目录存在,如果尚未创建,则创建之:

shell

sudo mkdir -p /home/nvidia/work

sudo chmod -R 777 work/

步骤 4: 挂载新分区

手动挂载新分区到指定挂载点,以验证一切正常:

shell

sudo mount /dev/nvme0n1p1 /home/nvidia/work


【这步不做】复制根文件系统:使用rsync命令递归地将当前系统(排除特定目录如/dev/, /proc/, 等)复制到挂载点,以准备系统部署。

sudo rsync -aAXv / --exclude={"/dev/","/proc/","/sys/","/tmp/","/run/user/","/mnt/","/media/*","/lost+found"} /mnt

是否需要执行此步骤?

  • 如果目的是单纯增加额外的存储空间,并计划使用新分区挂载到一个特定目录(如 /home/nvidia/work_expanded),用于存放工作文件或扩展某个特定目录,那么不需要执行这个复制步骤。只需按照之前的步骤配置挂载即可。

  • 如果目的是克隆现有的系统分区到新硬盘,以实现系统迁移、备份或准备一个可启动的系统副本,那么执行这个步骤是有必要的。这能获得一个包含操作系统、配置和用户数据的完整副本。详细见附录2


步骤 5: 更新 /etc/fstab

# 如有需要,先解挂之前手动挂载的设备

sudo umount /dev/nvme0n1p1

编辑 /etc/fstab 文件,添加新分区的挂载信息,以便系统启动时自动挂载。同时,考虑到您可能想继续使用原有分区,可以考虑修改原挂载点或使用新挂载点。这里以新挂载点为例:

shell

# 添加如下行至 /etc/fstab

/dev/nvme0n1p1 /home/nvidia/work ext4 defaults 0 0

步骤 6: 测试挂载配置

运行 mount -a 命令测试 /etc/fstab 中的挂载配置是否正确,无误则会在不重启的情况下挂载所有分区。

# 测试 /etc/fstab 配置是否生效

sudo mount -a


问题:别的帖子最后使用umount命令卸载之前挂载的设备sudo umount /dev/nvme1n1p1,为什么有这个操作?那之前的操作不是都白干了?

答:在完成一系列操作,比如挂载新分区、复制文件系统等之后,使用 umount 命令卸载之前挂载的设备(如 sudo umount /dev/nvme0n1p1)是一个标准且重要的步骤,其原因包括:

  1. 安全地断开连接:在对硬盘或分区进行进一步操作(如物理移除硬盘、修改分区表、重新格式化等)之前,卸载挂载点可以确保没有进程正在访问该分区上的文件,避免数据损坏或丢失。

  2. 测试挂载配置:如您之前提到的,执行 mount -a 用来测试 /etc/fstab 配置是否正确。在这之后卸载分区,可以模拟重启后的情况,确认分区能够在没有其他手动干预的情况下正确挂载。

  3. 避免意外重启的问题:如果不卸载就进行系统重启,有时可能导致挂载点的状态不一致或挂载失败,尤其是在对 /etc/fstab 进行修改后。提前卸载并重新挂载可以减少此类风险。

  4. 并非白干:之前的操作并没有白干。即使卸载了分区,您对分区的格式化、复制文件系统等操作已经完成,这些更改都保留在硬盘上。当需要时,通过 /etc/fstab 设置或手动挂载命令,该分区仍能按照预期挂载并使用。

所以,使用 umount 命令实际上是操作流程中的一个重要环节,确保系统状态的清晰和后续操作的安全性,而不是取消之前工作的效果。

另外,

  • umount 是用于卸载(解除挂载)文件系统。
  • mount -a 是用于根据 /etc/fstab 文件的配置挂载所有未挂载的文件系统。

# (可选)测试完毕后,再次解挂,准备进行其他操作或模拟重启挂载

sudo umount /dev/nvme0n1p1


如何模拟重启挂载

即验证经过修改的 /etc/fstab 文件能否使系统正确挂载所有分区,而不实际进行物理重启,可以采用以下方法:

  1. 确保无相关分区挂载:首先,使用 umount /dev/nvme1n1p1 或类似的命令确保您想要测试的分区已经被卸载。如果有多块硬盘或多个分区,需要对它们逐一执行卸载操作。

  2. 清空挂载点:如果挂载点上有残留的进程或打开的文件,可能会影响挂载测试。确保挂载点目录为空或其内容与预期的挂载行为无关。必要时,可以使用 fuser -km /挂载点路径 命令杀死占用挂载点的进程。

  3. 执行 mount -a:再次执行 sudo mount -a 命令。这一步会尝试根据 /etc/fstab 文件中的配置挂载所有未挂载的文件系统,模拟了系统启动时的挂载过程。

  4. 检查挂载状态:使用 mount 或 df -h 命令检查所有分区是否按照 /etc/fstab 中的设定正确挂载。同时,检查系统日志(如 dmesg 或 /var/log/messages)以获取有关挂载操作的详细信息,看是否有任何警告或错误。

通过以上步骤,您可以在不实际重启系统的情况下,较为准确地模拟和验证系统重启时的挂载行为。如果所有分区都按预期挂载,那么在下一次实际重启时,挂载过程应该也会顺利进行。


步骤 7: 移动数据(可选)

如果您打算用新分区完全替代旧挂载点,需要将 /home/nvidia/work 下的数据移动到 /home/nvidia/work,然后更新相关服务或配置文件中的路径指向新挂载点。

步骤 8: 重启验证

最后,重启系统并验证新分区是否能正确自动挂载。

sudo reboot


附录1:更改挂载点

注意:中间可能会出问题,比如/mnt节点现在正在被占用,有进程在里面,需要停掉这些进程之后再继续。

现在盘的挂载状态

lsblk  或 df -h 查看

我现在要把nvme0n1p1从/mnt解挂,然后挂到 /home/nvidia/work上

强制解挂(若没改etc那个文件,重启也行)

 sudo umount -l /mnt 或  sudo umount -l /dev/nvme0n1p1

检查当前挂载点状态,可以发现已成功解挂

我没有/home/nvidia/work目录所以建一个

mkdir -p /home/nvidia/work

然后去改fstab文件,也就是步骤五。

接下来继续步骤六,去测试。

此时在电脑上已经可以看到

然后 我们用 df -h 看一下

最后reboot重启。


附录2:引导加载器

关于/boot/extlinux下的extlinux.config文件是否需要更改

更改根文件系统路径是为了让系统从新设备启动,而不是继续依赖旧设备。引导加载器是服务于系统启动过程

因此,按照需求分情况讨论:

一:如果目标是制作一个可以在任何支持UEFI的机器上即插即用的系统硬盘,那么创建ESP并正确配置引导加载器是必要的。

EFI系统分区的作用:创建EFI系统分区(ESP)是实现UEFI启动的关键步骤之一,它使得系统可以从硬盘直接启动,增强了硬盘的可移植性。ESP包含引导加载器的启动文件和其他UEFI应用程序,使得不同的系统和设备可以在UEFI环境下识别并启动操作系统。

UEFI启动模式:UEFI启动模式并不是特指U盘启动,而是一种现代的替代传统BIOS的系统启动方式。

UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)是一种详细描述类型接口的标准,用于操作系统与系统固件之间的交互,以便加载操作系统和其他预启动应用程序。

在UEFI启动模式下,不仅可以从硬盘、SSD等内部存储设备启动操作系统,也可以从外部设备如U盘、外置硬盘或网络启动。当使用U盘进行系统安装或启动修复时,如果电脑和U盘都支持UEFI模式,就可以采用UEFI U盘启动。这意味着U盘上的启动装载程序(如EFI文件)需要与系统的UEFI固件兼容,从而实现更快速、更安全的启动过程。

去做EFI系统分区是为了能让系统从硬盘启动,让硬盘具有可移植性,就像烧录盘一样,放到别的机器上也可以直接启动硬盘里的系统。如果不做EFI系统分区,我只是以扩容为目的,那么我其实没必要设置引导加载器

二.只做扩容的情况: 如果目的纯粹是扩容,即只是想增加存储空间,而不打算将新硬盘作为主启动盘,那么不需要在新硬盘上创建EFI系统分区或安装引导加载器。

在这种情况下,新硬盘仅作为数据存储使用,系统仍然从原来的启动设备(如 /dev/mmcblk0p1)启动。不过,即使不涉及启动,为了管理文件系统和数据,也需要对新硬盘进行分区和格式化。

引导加载器的必要性: 引导加载器对于系统启动至关重要,无论您是否关心可移植性。即使在不涉及EFI系统分区(比如在传统的BIOS启动模式下),也需要有某种形式的引导加载器来启动操作系统。但是,如果新硬盘不用于启动系统,那么在新硬盘上设置引导加载器确实不是必须的。


对于我的情况来说,如果在引导加载器中,将根文件系统设备路径从 /dev/mmcblk0p1 变更为 /dev/nvme0n1p1 ,意味着系统将会从新的设备 /dev/nvme0n1p1 启动。

那么,作为这个过程的一部分,需要将原来位于 /dev/mmcblk0p1 上的根文件系统完整地复制到新的设备 /dev/nvme0n1p1 上。这个操作通常涉及到以下几个步骤:分区,格式化,复制根文件系统,更新引导加载器。


 但下面老机器的 /boot/extlinux下的extlinux.config文件,可以看到老机器并没有将新盘作为启动盘。所以结论是“老机器纯扩容”

TIMEOUT 30
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 pcie_aspm=off console=tty0 fbcon=map:0 net.ifnames=0 rootfstype=ext4

# When testing a custom kernel, it is recommended that you create a backup of
# the original kernel and add a new entry to this file so that the device can
# fallback to the original kernel. To do this:
#
# 1, Make a backup of the original kernel
#      sudo cp /boot/Image /boot/Image.backup
#
# 2, Copy your custom kernel into /boot/Image
#
# 3, Uncomment below menu setting lines for the original kernel
#
# 4, Reboot

# LABEL backup
#    MENU LABEL backup kernel
#    LINUX /boot/Image.backup
#    INITRD /boot/initrd
#    APPEND ${cbootargs}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1862816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Open3D 点云的体素化

目录 一、概述 1.1概念 1.2 应用场景 二、代码实现 三、实现效果 3.1原始点云 3.2体素化后点云 一、概述 1.1概念 体素化&#xff08;Voxelization&#xff09;是将三维空间数据&#xff08;例如点云&#xff09;转换为体素网格&#xff08;Voxel Grid&#xff09;的过…

<电力行业> - 《第2课:电力行业的一会两网》

1 一会 一会指的是电监会&#xff0c;全称是国家电力监管委员会。根据国务院批准《国家电力监管委员会职能配置内设机构和人员编制规定》&#xff0c;国家电力监管委员会按照国务院授权&#xff0c;行使行政执法职能&#xff0c;依照法律、法规统一履行全国电力监管职责。 2 …

使用 Splashtop REST API 简化远程管理

Splashtop 的 REST API 可无缝提高生产力和简化集成&#xff0c;使用户能够自动执行任务、定制工作流程&#xff0c;轻松与现有系统集成。 在与客户的合作中&#xff0c;我们对其需求和痛点有了更深入的了解&#xff0c;尤其在有利于实现自动化的领域。在本文中&#xff0c;我…

手机照片回收站无法恢复图片怎么办?2个措施,找回丢失的相册

我们的照片和视频存储在各种设备中&#xff0c;其中包括我们的智能手机&#xff0c;但有时候我们可能会不小心删除这些重要的数据。这时&#xff0c;手机照片回收站就显得尤为重要。然而&#xff0c;即使有回收站&#xff0c;我们也可能遇到一些问题&#xff0c;例如回收站中的…

【PyQt5】一文向您详细介绍 setSpacing() 的作用

【PyQt5】一文向您详细介绍 setSpacing() 的作用 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&am…

滑轨平行度和光路平行分别对测径仪的影响?

关键字:测径仪滑轨平行度,测径仪平行光路,测径仪发射器,测径仪接收器, 测径仪是一种用于测量物体直径的精密仪器&#xff0c;通常应用于工业自动化领域&#xff0c;比如钢铁、电缆、塑料管材等生产线上的在线尺寸监测。测径仪的测量精度会受到多种因素的影响&#xff0c;其中包…

数据结构-顺序表的交换排序

顺序表的初始化 const int M 505;typedef struct{int key; //关键元素int others; //其他元素 }info;typedef struct{info r[M1]; int length(); //表长 }SeqList,*PSeqList; 冒泡排序 分析&#xff1a; 顺序表的冒泡排序和数组的冒泡排序的…

XSS漏洞—XSS平台搭建与打cookie

一、跨站脚本攻击漏洞接收平台 推荐两个&#xff1a; 1&#xff09;xsser &#xff1a; XSS平台 - &#xff08;支持http/https&#xff09;XSS Platform 2&#xff09;蓝莲花 &#xff1a;GitHub - firesunCN/BlueLotus_XSSReceiver xsser&#xff1a; BlueLotus&#xff…

Deepl网页版使用方法

Deepl网页版科学使用方法 Deepl 网页版使用方法重要链接使用方式一、在没有使用插件前的Deepl界面二、安装DeepL.Crack.v1.2.7插件三、插件安装后打开[Deepl官网](https://www.deepl.com/zh/translator)即可四、在翻译整篇文章的权限怎么设置 Deepl 网页版使用方法 重要链接 …

轻松掌握:工科生如何高效阅读国际期刊和撰写论文(下)

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…

最长上升子序列模型

此模型属于线性dp的分类&#xff1a; 基础知识 1.最长上升子序列 首先思考暴力的解决题目的方式&#xff1a;可以通过dfs指数型枚举&#xff0c;枚举出所有的序列&#xff0c;然后判断是否合理&#xff0c;然后找到最长的上升子序列的长度。 然后我们想如何优化&#xff1a…

计算机工具软件安装攻略:Chrome浏览器下载安装及使用

1 Chrome简介 Chrome是谷歌公司开发的一款免费网页浏览器它快速、稳定、安全拥有简洁流畅的界面和丰富的应用程序内置了强大的谷歌搜索引擎。Chrome使用Blink浏览器引擎和V8 JavaScript引擎支持多种插件和扩展程序让浏览网页更便捷。它可以与Android手机良好同步支持跨设备浏览…

Rust编写测试及控制执行

编写测试及控制执行 在 Rust 中&#xff0c;测试是通过函数的方式实现的&#xff0c;它可以用于验证被测试代码的正确性。测试函数往往依次执行以下三种行为&#xff1a; 设置所需的数据或状态运行想要测试的代码判断( assert )返回的结果是否符合预期 让我们来看看该如何使…

Prometheus:开源监控解决方案的力量

前言 在当今高度数字化和云原生应用的时代&#xff0c;监控系统是确保系统稳定性和性能的关键组成部分。而 Prometheus 作为一种开源的监控解决方案&#xff0c;正在成为越来越多企业和开发者的首选。本文将深入探讨 Prometheus 的特性、优势以及如何利用它来构建强大的监控系…

华为VPN通过安当ASP身份认证系统快速实现认证

华为VPN通过安当ASP身份认证系统实现认证的过程&#xff0c;主要涉及到Radius OTP&#xff08;一次性密码&#xff09;认证技术的使用。以下是实现这一过程的详细步骤&#xff1a; 1. 前提条件&#xff1a; 确保系统已经激活了Radius模块&#xff0c;并在安全设置中的RADIUS配…

6、双足机器人mpc构建

状态方案预处理由质心动力学状态方程将{状态递推序列x}展开: 其中: x为状态递推序列,其下是堆叠矩阵表达式。xn为n时刻的状态变量,un-1为n-1时刻的输入变量。输出y=x,参考目标Refer=0,误差e=y-Refer=x-0=x,n为预测空间;二次规划前述建立了空间状态方程,接下来就可以…

全球行政边界数据(多年份)

GADM&#xff0c;全称Database of Global Administrative Areas&#xff0c;是一个高精度的全球行政区划数据库。其包含了全球所有国家和地区的国界、省界、市界、区界等多个级别的行政区划边界数据。 两种下载方式&#xff1a; 下载全球所有国家和地区的所有数据 https://gad…

Java核心知识(一):JVM

JVM 前言 文本源自微博客 (www.microblog.store),且已获授权. 一、线程 1.1 基本概念 JVM是可运行java代码的假象计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收、堆和一个存储方法域。JVM是运行在操作系统之上的&#xff0c;与硬件没有直接的交互。 1.2 运…

RabbitMQ(消息队列)

RabbitMQ 它是消息中间件&#xff0c;是在消息的传输过程中保存消息的容器&#xff0c;实现应用程序和应用程序之间通信的中间产品。目前主流消息队列通讯协议是AMQP&#xff08;二进制传输&#xff0c;支持多种语言&#xff09;、JMS&#xff08;HTTP传输&#xff0c;只支持J…

故障诊断 | HO-VMD-TCN河马优化算法优化变分模态分解时间卷积神经网络故障诊断模型

效果一览 文章概述 故障诊断 | HO-VMD-TCN河马优化算法优化变分模态分解时间卷积神经网络故障诊断模型&#xff01;河马优化算法&#xff08;Hippopotamus optimization algorithm&#xff0c;HO&#xff09;由Amiri等人于2024年提出&#xff0c;该算法模拟了河马在河流或池塘中…