技术解析

4T 硬盘误用 fdisk 分区只有 2T 大,现在想用 parted 扩大分区
0
2021-06-23 12:34:30
idczone
刚开始用的时候,不知道大于 2T 的要用 GPT 分区表,直接用 fdisk 一路默认创建了一个分区。
用到今天忽然提示空间不足了,一看才发现只有 2T。

主要是想保留原来的 2T 数据,无损的扩容到 4T。
思路:fdisk 可以无损扩容 只要分区起始 磁柱号和之前的一样,结束磁柱号又比之前分区的结束磁柱号大,就可以做到无损,就想用 parted 试试。

当前系统: centos
目前找到的工具:parted
硬盘为纯数据盘 ext4 格式 只有一个分区

使用 parted 创建 GPT 分区表的时候提示会丢失数据。
然后在第一步“使用 parted 创建 GPT 分区表”就卡住了,提示“创建 GPT 分区表的时候提示会丢失数据”。

有不丢失数据的方法么?
mbr 转 gpt 必然会丢数据

晕,格式化完就没确认一下存储空间,你这心够大啊!还能怎么着,再多买块硬盘或者借块空盘呗,把数据备份再格式化咯

分区表格式不一样无解...
如果都是 GPT 搞错了还有的救

fdisk 进到磁盘的时候也会有红字提醒吧……

忧伤啊
当时分区的时候,一路默认回车。。。
失误啊。
没红字提示。
实在不可以就去借硬盘了
2T 数据不知要复制多久。

diskgenius 支持 MBR 无损转 GPT?

可以实现无损转换的,在 Linux 下很简单:
首先,MBR 只占用硬盘的前 512 个字节,而 GPT 需要占用前面 1MiB 个字节(1024 换算),且在硬盘的最后再备份一次分区表;
所以,按照以下步骤即可:
1. 将第一个分区及其文件系统缩小,以满足 GPT 的 1MiB 空间;
2. 记住每一个分区的起始位置和结束位置
3. 直接将硬盘的 MBR 及其分区表删除,然后使用 GPT 分区;
4. 按照第 2 步记录的数据,依次建立所有的分区;
这时,各个分区中的文件系统并没有被破坏,所以可以直接被系统识别挂载
建议使用 parted 命令进行操作,操作过程中,将 unit 设置为 MiB,即 1024 进制转换。

即便可行第一个分区也是救不回来啊

即便可行第一个分区也是救不回来啊,而他只有一个分区…

看第一个分区的起始地址
一般情况下, 前面是会留 1M 的空闲空间的.
parted /dev/sdb unit s print
WARNING: You are not superuser. Watch out for permissions.
Disk /dev/sdb: 7814037168s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 2048s 2147493887s 2147491840s vmdpoolm0 lvm
2 2147493888s 7814035119s 5666541232s storagem0 lvm

找台电脑,用网线传,如果两边都是千兆网,都是 ssd,可达百兆每秒

直接买个 2t 的硬盘,最稳妥的办法

windows 上面的 diskgenius 支持,不过得是专业版,拿 pe 启动然后找 mdr 转 gpt 就行,无损

这么麻烦?
下个 pe,用 diskgenius 转就行了。。。
如果磁盘头部和分区间空间不够。。。那还是得先把磁盘头部和分区间缩 1m 以上出来,不过 linux 文件系统好像没法从头部缩?

+1 买个移动硬盘,不折腾 100% 保证安全

只说一句,折腾前记得备份

不管用什么方法,第一步就是全盘备份,移动硬盘躲不过去

也许要看运气了,因为 GPT 分区表要放在硬盘头部和尾部,尾部的话有空闲空间没问题,但头部的话得看一开始创建分区时预留的空间够不够,如果不够的话那需要将分区往后移动。
而就我个人知道的情况,把分区往后移动的工具都是闭源的,而且可能不支持 ext4 文件系统。

因为你用的是 8T 盘,理论上不难
用 dd 把分区内容复制到 2T 后面去(稳妥起见可以更多)
使用 GPT 分区,只有一个 2T 的分区
把后面的数据复制回来,因为之前用的是 dd,确保使用相同的 offset 即可
尝试挂载验证可用之后,延长分区的尾部到整个磁盘
resize2fs 简单扩大文件系统

非常建议用个空白 U 盘实验一遍,熟悉一下 dd 的用法
毕竟擦除硬盘最有效率的工具也是 dd

感觉具有可行性


(parted) print /dev/sdc
Model: ATA ST4000VN008-2DR1 (scsi)
Disk /dev/sdc: 7814037168s
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 2048s 4294967294s 4294965247s primary ext4



起始是从 2048 开始,所以我这个还有救。

2T 备份要很长时间吗

没多余的硬盘了。

可以无损扩容
1. 记录下起始地址
2. fsck -f /dev/sdc1
3. parted /dev/sdc
mklabel gpt
unit s
mkpart ...
start 2048
end -1
4. resize2fs /dev/sdc1

umount first

借硬盘吧,省事,也保险。

前几天用 kde 的分区管理器把分区往前移动了点,3T 的硬盘将近跑了 8 个小时…

傲梅分区助手和 diskgenius 都可以无损转换 gpt,几秒就搞定了。win 下这方面软件比其他系统强得多

转成 gpt 后你再爱用什么 linux 的软件来合并分区就都可以了。
而且 diskgenius 新版和分区助手新版都支持 ext4 了我记得

再买块 4T 硬盘作备份呗,动作快的话,操作完成,数据恢复回去,接着把新硬盘安全擦除,最后把新硬盘退货。

不备份,总是有风险,觉得再加一块硬盘的成本远远高于现有数据的价值,那么就当我没说。

可以直接使用 gdisk 这个分区工具,本体是个操作方式类似 fdisk 的 GPT 分区工具,另外还内置 expert 和 recovery & transformation 两个模式,后者支持 GPT,MBR 分区表之间的转换。

如果确保分区头尾都有足够空间容纳分区表,直接 sudo gdisk /dev/sdc,然后 w 命令保存就行。另外还可以 r 命令进入 recovery & transformation 模式,可以满足一些奇葩的分区表转换需求。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服