ext4-分区缩容 📅 发布时间:2026/7/3 7:56:11 👁️ 浏览次数: Ubuntu ext4 数据盘缩容并新建分区实践操作系统Ubuntu文件系统ext4分区工具fdisk resize2fs e2fsck磁盘类型NVMe SSD一、需求背景机器有两块 NVMe SSD磁盘用途/dev/nvme0n1Ubuntu 系统盘/dev/nvme1n1数据盘2TB当前数据盘只有一个分区/dev/nvme1n1 └── nvme1n1p1 ext4 1.9TB 挂载 /home/user/works由于希望将开发项目和历史数据分开管理需要将该分区拆分为两个独立分区分区大小挂载点nvme1n1p1约1.1TB/home/user/worksnvme1n1p2约800GB/home/user/workspace最终结构/dev/nvme1n1 ├── nvme1n1p1 │ ext4 │ 1.1TB │ /home/user/works │ └── nvme1n1p2 ext4 800GB /home/user/workspace整个操作要求保留原有数据不重装系统不重新格式化原分区在原 ext4 分区基础上进行缩容二、操作原理很多人认为ext4 分区无法缩容。其实这是误解。真正不能直接缩小的是分区。ext4 文件系统本身支持在线扩容、离线缩容。正确流程如下┌──────────────────────────────┐ │ ext4 文件系统 │ │ │ │ 分区 │ └──────────────────────────────┘第一步缩小 ext4 文件系统┌──────────────────────┐ 空闲空间 │ ext4 │───────── └──────────────────────┘第二步缩小分区┌──────────────────────┐───────── │ ext4 │ 空闲空间 └──────────────────────┘─────────第三步利用剩余空间创建新的分区┌──────────────────────┬──────────┐ │ p1 │ p2 │ └──────────────────────┴──────────┘因此整个流程遵循先缩文件系统再缩分区。顺序绝不能反。三、查看当前分区信息查看磁盘df-Thlsblksudofdisk-l/dev/nvme1n1输出Disklabel type: dos Device Start End Size /dev/nvme1n1p1 2048 4000796671 1.9T这里需要重点记录Start 2048这是整个操作最关键的数据。重新创建分区时Start Sector 必须保持完全一致。否则整个 ext4 文件系统都会发生偏移数据将无法识别。四、停止业务服务查看是否仍有进程占用sudolsofD /home/user/works如果有输出需要先关闭对应程序。五、卸载分区sudoumount/home/user/works确认已经卸载lsblk /dev/nvme1n1确认MOUNTPOINTS为空。六、检查 ext4 文件系统缩容之前必须检查sudoe2fsck-f/dev/nvme1n1p1检查通过后才能继续。七、缩小 ext4 文件系统执行sudoresize2fs /dev/nvme1n1p1 1100G注意resize2fs不支持1.1T这种带小数的写法。例如resize2fs /dev/nvme1n1p11.1T会提示resize2fs: 无效的新大小因此需要使用整数 GiBsudoresize2fs /dev/nvme1n1p1 1100G完成后再次检查sudoe2fsck-f/dev/nvme1n1p1确保文件系统一致。八、缩小分区进入sudofdisk/dev/nvme1n1先查看p确认Start 2048删除分区d说明此步骤仅删除分区表记录不会立即删除 ext4 文件系统数据。重新创建n选择p分区号1First sector2048必须与原来一致。Last sector1100G随后 fdisk 会提示Partition #1 contains an ext4 signature. Remove the signature?这里必须选择N不能选择Y因为ext4 文件系统仍然存在数据仍然存在只是缩小了分区保留 ext4 签名即可。再次查看p确认Start 2048保存w刷新内核分区表sudopartprobe /dev/nvme1n1九、验证原有数据再次检查sudoe2fsck-f/dev/nvme1n1p1重新挂载sudomount/dev/nvme1n1p1 /home/user/works查看ls/home/user/worksdu-sh/home/user/works确认文件存在数据完整文件系统正常只有确认无误才继续下一步。十、新建第二个分区再次卸载sudoumount/home/user/works进入sudofdisk/dev/nvme1n1创建n p 2First sector直接回车即可。Last sector 直接回车也可以默认会从p1后面开始800G查看p确认Device /dev/nvme1n1p1 /dev/nvme1n1p2保存w刷新sudopartprobe /dev/nvme1n1十一、格式化新分区因为 p2 是新建分区没有文件系统。执行sudomkfs.ext4 /dev/nvme1n1p2这里只格式化/dev/nvme1n1p2不会影响/dev/nvme1n1p1十二、挂载创建目录sudomkdir-p/home/user/workspace挂载sudomount/dev/nvme1n1p1 /home/user/workssudomount/dev/nvme1n1p2 /home/user/workspace修改权限sudochown-Ruser:user /home/user/workspace十三、配置开机自动挂载编辑sudonano/etc/fstab加入/home/user/works ext4 defaults 0 0 /home/user/workspace ext4 defaults 0 0测试sudomount-a如果没有任何报错则配置成功。十四、恢复业务如果在缩容前有关闭的服务这里可以正常启动了十五、踩坑记录1、resize2fs 不支持小数 TB错误resize2fs /dev/nvme1n1p11.1T提示resize2fs: 无效的新大小正确resize2fs /dev/nvme1n1p1 1100G2、fdisk 提示删除 ext4 签名提示Remove the signature?必须选择N否则可能导致文件系统无法识别。3、Start Sector 一定不能变原来2048重新创建2048必须保持一致。这是整个操作中最关键的一步。4、一定要先验证数据不要缩容完成后立即创建第二个分区。正确顺序缩文件系统缩分区挂载验证数据创建第二个分区这样风险最低。十六、最终结果最终磁盘结构/dev/nvme1n1 ├── nvme1n1p1 │ ext4 │ 1.1TB │ 挂载 │ /home/user/works │ └── nvme1n1p2 ext4 约800GB 挂载 /home/user/workspace最终实现原有数据全部保留ext4 文件系统完整成功缩小原分区新建约 800GB 分区两个目录独立管理可配置开机自动挂载十七、经验总结本次操作遵循以下原则操作前备份重要数据。先缩文件系统resize2fs再缩分区。重新创建分区时起始扇区Start Sector必须保持一致。fdisk 提示删除 ext4 签名时选择N保留文件系统签名。每完成一个关键步骤都通过e2fsck和挂载验证确认数据正常再继续下一步。最后通过 UUID 配置/etc/fstab确保系统重启后自动挂载。本次实践验证在严格遵循上述流程的前提下可以安全地对 ext4 数据盘进行缩容并在释放出的空间中创建新的分区同时完整保留原有数据。
智驾传感器选型:激光雷达与纯视觉的真实工程权衡 1. 这不是技术路线之争,而是42岁工程师在产线旁拧完第37颗螺丝后的真实喘息我站在整车下线工位的防静电垫上,手里还沾着一点未干的摄像头支架密封胶。刚给一台L2级城市NOA车型做完最后一轮传感器标定——左前角毫米波雷达偏移0.8,右后侧环视摄… 2026/7/3 7:56:11
YY/T 0681.2-2010软性屏障材料密封强度标准解读 一、标准基础概况YY/T 0681.2-2010 属于无菌医疗器械包装检测行业标准,2010 年发布、2012 年实施,修改采用 ASTM F 88-06,是 YY/T 0681 系列包装检测标准的第二部分,由医疗器械检验机构起草,专门规范软质医用包装封口拉… 2026/7/3 7:56:11
科普|明明是32位总线!为什么MCU GPIO固执用8bit分组?误区、成本、工程取舍全讲透 科普|明明是32位总线!为什么MCU GPIO固执用8bit分组?误区、成本、工程取舍全讲透 玩过32位MCU的朋友,几乎都有过同一个疑惑:MCU明明搭载32位架构、标配32位高速总线,理论上支持整端口同步读写,性… 2026/7/3 7:54:11
Cursor之外的选择:这些AI编程工具同样值得尝试 Cursor之外的选择:这些AI编程工具同样值得尝试说到AI编程,很多人的第一反应是Cursor。确实,Cursor是目前最火的AI IDE,但它不是唯一的选择。今天给大家介绍几款同样优秀的工具,有些方面甚至比Cursor做得更好。Cursor的… 2026/7/3 9:04:34
[智能体-630]:OpenClaw:Agent / Skill / Gateway / Channel 完整区别与层级关系 一、四个组件核心定义(一句话区分)1. Channel(消息渠道 / 交互入口)—— 耳朵 & 嘴巴定位:用户和系统的所有交互入口,接入层openclawla...作用:对接各类聊天软件、控制台、网页、API&#x… 2026/7/3 9:04:34
BepInEx插件框架:5步解决Unity游戏扩展难题 BepInEx插件框架:5步解决Unity游戏扩展难题 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 你是否曾经想过为心爱的Unity游戏添加新功能,却苦于没有合适的工… 2026/7/3 8:56:31
JMeter数据库断言实战:从响应验证到数据层校验的完整方案 1. 项目概述:为什么接口测试必须关注数据库?做接口测试的朋友,尤其是用JMeter的,肯定对“断言”不陌生。我们通常会用响应断言去检查接口返回的JSON里某个字段是不是等于“success”,或者用JSON断言去验证一个数组的长… 2026/7/3 8:54:30
企业级Agentic AI:从智能体到多智能体系统的架构与实践指南 🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 企业搞Agentic AI,到底在做什么?完整观点来了! 最近“Agentic AI”这个词在技术圈和产业界的热… 2026/7/3 8:50:29
JMeter计数器进阶:3个关键配置提升性能测试数据生成效率 1. 项目概述:从“能用”到“高效”的JMeter计数器进阶如果你正在用JMeter做性能测试,尤其是那些需要大量参数化数据的场景,比如模拟成千上万用户注册、下单,或者查询不同ID的数据,那你肯定用过或者至少听说过“计数器”… 2026/7/3 8:48:29
如何5分钟快速上手XUnity.AutoTranslator:打破语言障碍的游戏翻译神器终极指南 如何5分钟快速上手XUnity.AutoTranslator:打破语言障碍的游戏翻译神器终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而错过精彩的游戏剧情?面对日… 2026/7/3 0:01:58
3种策略管理Playnite便携版:从基础部署到高级维护的完整指南 3种策略管理Playnite便携版:从基础部署到高级维护的完整指南 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址… 2026/7/3 0:05:59
2026江苏三维扫描仪定制厂家:一条很现实的分水岭——“会用”和“用对” 在江苏制造业的三维扫描项目里,有一个很容易被忽略的分界线: 👉 会用设备,不等于用对设备。 尤其在江苏GOM三维扫描仪定制厂家、江苏蔡司3D扫描仪定制厂家项目中,这条分界线会直接决定系统最终是“工具”,还… 2026/7/3 0:07:59