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

背景:

未经过扩容的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 命令查看。

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

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

shell

sudo parted /dev/nvme1n1 mklabel gpt

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

sudo mkfs.ext4 /dev/nvme1n1p1

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

步骤 3: 创建挂载点

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

shell

sudo mkdir -p /home/nvidia/work

步骤 4: 挂载新分区

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

shell

sudo mount /dev/nvme1n1p1 /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/nvme1n1p1

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

shell

# 添加如下行至 /etc/fstab

/dev/nvme1n1p1 /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/nvme1n1p1)是一个标准且重要的步骤,其原因包括:

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

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

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

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

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

另外,

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

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

sudo umount /dev/nvme1n1p1


如何模拟重启挂载

即验证经过修改的 /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 primaryMENU TITLE L4T boot optionsLABEL primaryMENU LABEL primary kernelLINUX /boot/ImageINITRD /boot/initrdAPPEND ${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.mzph.cn/news/857820.shtml

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

相关文章

SSRF(2)

Gopher协议的利用 gopher协议是ssrf利用中最强大的协议 gopher协议支持发出GET、POST请求&#xff1a; 可以先截获get请求包和post请求包&#xff0c;再构成符合gopher协议的请求。 默认端口为70,一般需发送到80端口 如果发起post请求&#xff0c;回车换行需要使用%0D%0A&…

消息队列-概述-JMS和AMQP

JMS和AMQP JMS是什么 JMS&#xff08;JAVA Message Service,java 消息服务&#xff09;是 Java 的消息服务&#xff0c;JMS 的客户端之间可以通过 JMS 服务进行异步的消息传输。JMS&#xff08;JAVA Message Service&#xff0c;Java 消息服务&#xff09;API 是一个消息服务…

1950 Springboot汽修技能点评系统idea开发mysql数据库APP应用java编程计算机网页源码maven项目

一、源码特点 springboot 汽修技能点评系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统 具有完整的源代码和数据库&…

提高开关电源效率一般做法

提高开关电源效率一般做法 开关电源的功耗包括由半导体开关、磁性元件和布线等的寄生电阻所产生的固定损耗以及进行开关操作时的开关损耗。对于固定损耗,由于它主要取决于元件自身的特性,因此需要通过元件技术的改进来予以抑制。在磁性元件方面,对于兼顾了集肤效应和…

Google Adsense----Wordpress插入谷歌广告

1.搭建个人博客,绑定谷歌search consol,注册adsense 详细可以参考这个视频b站视频 2.将个人博客网站关联到Adsense 在adsense里新加网站,输入你的博客网址,双击网站 将这段代码复制到header.php的里面 在wordpress仪表盘的外观-主题文件编辑器,找到header.php将代码复制,…

全网最全!25届最近5年上海理工大学自动化考研院校分析

上海理工大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试…

获取时间戳是使用System.currentTimeMillis()还是使用new Date().getTime()(阿里开发规范)?

1.阿里规范 在阿里的Java开发手册中强制要求使用System.currentTimeMillis() 2.为什么(源码详解) new Date().getTime()它实际上也是调用的System.currentTimeMillis()&#xff0c;源码分析。 这个fastTime是它的成员变量&#xff0c;在new Date()的时候就被赋值了。 扩展一…

CentOS 7 安装部署Cassandra4.1.5

一、Cassandra的介绍 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发&#xff0c;用于储存收件箱等简单格式数据&#xff0c;集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源&#xff0c;此后&#xff0…

算法设计与分析:分治法求最近点对问题

目录 一、实验目的 二、实验内容 三、算法思想 四、实验步骤 1、蛮力法 2、分治法 2.1 先用快速排序SortX(A,1,n)将所有点按x坐标升序排序 2.2 点数n<3时直接计算&#xff0c;时间复杂度为O(1) 2.3 点数n>3时 五、实验结果和分析 一、实验目的 1. 掌握分治法思…

ArkUI部分案例笔记——padding,space

基础的构建 组件分类&#xff1a; 容器组件&#xff1a;像Column&#xff0c;Row这种组件就是容器组件一般就来控制行和列的就是容器组件 基础组件&#xff1a;Text(文本组件)&#xff0c;像这种用来有一定功能的就是基础组件 注意&#xff1a;一个build只能有一个根容器组件…

苹果智能和人工智能最大化

苹果智能和人工智能最大化 除了苹果公司&#xff0c;还没有人真正使用过苹果的智能功能。它要到秋天才会分阶段发布&#xff0c;即使到那时&#xff0c;它也无法在80%或90%的iPhone安装基础上运行&#xff0c;因为它需要只有iPhone 15 Pro才能使用的设备上处理功能。没有什么能…

海南聚广众达电子商务咨询有限公司抖音电商新标杆

在数字经济的浪潮中&#xff0c;抖音电商正成为一股不可忽视的力量。海南聚广众达电子商务咨询有限公司&#xff0c;作为专注于抖音电商服务的领军企业&#xff0c;凭借其专业的团队和创新的思维&#xff0c;不断助力商家在抖音平台上实现商业价值的最大化。 海南聚广众达电子…

Github上传大于100M的文件(ubuntu教程)

安装Git-lfs Git Large File Storage (LFS) 使用 Git 内部的文本指针替换音频样本、视频、数据集和图形等大文件&#xff0c;同时将文件内容存储在 GitHub.com 或 GitHub Enterprise 等远程服务器上。官网下载&#xff1a;https://git-lfs.github.com/ ./install.sh上传 比如…

基于SpringBoot+Vue大学生网络教学平台设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

LLC开关电源开发:第四节,LLC软件设计报告

LLC源代码链接 数控全桥LLC开发板软件设计报告  1. LLC硬件及软件框架2. LLC软件设计2.1 工程文件说明2.2 LLC中断设计2.2.1 20us中断2.2.2 5ms中断 2.3 LLC状态机设计2.3.1 初始化状态2.3.2 空闲状态2.3.3 软启动状态2.3.4 正常运行状态2.3.5 故障状态 2.4 环路设计2.4.1 环路…

机器学习课程复习——逻辑回归

1. 激活函数 Q:激活函数有哪些? SigmoidS型函数Tanh 双曲正切函数

Nature Climate Change | 气候变暖会造成未来全球干旱区面积扩张?

在气候变暖的情况下&#xff0c;旱地通常被预测将在全球范围内扩大&#xff0c;旱地包括以水资源有限、植被稀疏为特征的土地区域。然而&#xff0c;这种预测依赖于旱地的大气代用物&#xff0c;即干旱指数。最近的研究表明&#xff0c;干旱指数对陆地水循环的各种组成部分的预…

设计模式1-简介

设计模式简介 专栏的目的什么是设计模式设计模式要学什么软件开发原则主流设计模式 学习建议经典面试题 资源 专栏的目的 1.理解松耦合的设计思想 2.掌握面向对象设计原则 3.掌握重构技法改善设计 4.掌握GOF核心设计模式 什么是设计模式 每一个模式描述了一个在我们周围不…

公共 IP 地址和私有 IP 地址的区别总结

什么是IP地址&#xff1f; IP 地址&#xff0c;即互联网协议地址&#xff08;Internet Protocol Address&#xff09;&#xff0c;是网络设备在网络中进行通信的标识。IP 地址可以看作是设备在网络中的“地址”&#xff0c;有助于数据包在网络中找到正确的接收端。IP 地址主要…

基于大型语言模型的全双工语音对话方案

摘要解读 我们提出了一种能够以全双工方式运行的生成性对话系统&#xff0c;实现了无缝互动。该系统基于一个精心调整的大型语言模型&#xff08;LLM&#xff09;&#xff0c;使其能够感知模块、运动功能模块以及一个具有两种状态&#xff08;称为神经有限状态机&#xff0c;n…