V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
tees
V2EX  ›  Linux

4T 硬盘误用 fdisk 分区只有 2T 大,现在想用 parted 扩大分区

  •  
  •   tees · 2018-07-06 17:51:50 +08:00 · 11156 次点击
    这是一个创建于 2340 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚开始用的时候,不知道大于 2T 的要用 GPT 分区表,直接用 fdisk 一路默认创建了一个分区。
    用到今天忽然提示空间不足了,一看才发现只有 2T。

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

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

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

    有不丢失数据的方法么?
    第 1 条附言  ·  2018-07-08 22:51:43 +08:00

    我备份了数据。

    我使用了'sxzzsf'的方法直接转GPT然后重新分区,start 2048 end -1;最后成功了,数据还在。

    感谢大家提供的方法和一定要备份的建议

    操作之前请备份数据

    操作之前请备份数据

    操作之前请备份数据

    我的分区Start是2048s 是成功的 说一下步骤

    1.卸载
    sudo umount /mnt/b
    2.记录下起始地址    
    sudo parted /dev/sdc    
    unit s    
    print    
    3.fsck -f /dev/sdc1    
    4.建gpt分区表 建分区    
    sudo parted /dev/sdc     
    mklabel gpt     
    unit s     
    mkpart primary ext4 2048s -1s     
    quit    
    5.调整分区大小    
    e2fsck -f /dev/sdc1     
    resize2fs /dev/sdc1    
    
    34 条回复    2018-07-09 22:49:08 +08:00
    Mountaincnc
        1
    Mountaincnc  
       2018-07-06 18:19:14 +08:00   ❤️ 1
    mbr 转 gpt 必然会丢数据
    nikymaco
        2
    nikymaco  
       2018-07-06 18:24:12 +08:00   ❤️ 1
    晕,格式化完就没确认一下存储空间,你这心够大啊!还能怎么着,再多买块硬盘或者借块空盘呗,把数据备份再格式化咯
    rrfeng
        3
    rrfeng  
       2018-07-06 18:25:03 +08:00 via Android   ❤️ 1
    分区表格式不一样无解...

    如果都是 GPT 搞错了还有的救
    ETiV
        4
    ETiV  
       2018-07-06 18:26:39 +08:00   ❤️ 1
    fdisk 进到磁盘的时候也会有红字提醒吧……
    tees
        5
    tees  
    OP
       2018-07-06 18:40:33 +08:00
    @Mountaincnc 忧伤啊
    @nikymaco 当时分区的时候,一路默认回车。。。
    @nikymaco 失误啊。
    @ETiV 没红字提示。

    实在不可以就去借硬盘了
    2T 数据不知要复制多久。
    qiyuey
        6
    qiyuey  
       2018-07-06 19:05:02 +08:00 via Android   ❤️ 1
    diskgenius 支持 MBR 无损转 GPT?
    asilin
        7
    asilin  
       2018-07-06 19:24:21 +08:00   ❤️ 1
    可以实现无损转换的,在 Linux 下很简单:

    首先,MBR 只占用硬盘的前 512 个字节,而 GPT 需要占用前面 1MiB 个字节(1024 换算),且在硬盘的最后再备份一次分区表;

    所以,按照以下步骤即可:
    1. 将第一个分区及其文件系统缩小,以满足 GPT 的 1MiB 空间;
    2. 记住每一个分区的起始位置和结束位置
    3. 直接将硬盘的 MBR 及其分区表删除,然后使用 GPT 分区;
    4. 按照第 2 步记录的数据,依次建立所有的分区;

    这时,各个分区中的文件系统并没有被破坏,所以可以直接被系统识别挂载

    建议使用 parted 命令进行操作,操作过程中,将 unit 设置为 MiB,即 1024 进制转换。
    seawing
        8
    seawing  
       2018-07-06 19:34:45 +08:00 via Android   ❤️ 1
    @asilin 即便可行第一个分区也是救不回来啊
    seawing
        9
    seawing  
       2018-07-06 19:35:18 +08:00 via Android   ❤️ 1
    @asilin 即便可行第一个分区也是救不回来啊,而他只有一个分区…
    sxzzsf
        10
    sxzzsf  
       2018-07-06 19:40:55 +08:00   ❤️ 1
    看第一个分区的起始地址
    一般情况下, 前面是会留 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
    ho121
        11
    ho121  
       2018-07-06 20:06:30 +08:00 via Android   ❤️ 1
    @tees 找台电脑,用网线传,如果两边都是千兆网,都是 ssd,可达百兆每秒
    lingll
        12
    lingll  
       2018-07-06 20:18:47 +08:00 via Android   ❤️ 1
    直接买个 2t 的硬盘,最稳妥的办法
    402645707
        13
    402645707  
       2018-07-06 20:22:11 +08:00   ❤️ 1
    windows 上面的 diskgenius 支持,不过得是专业版,拿 pe 启动然后找 mdr 转 gpt 就行,无损
    kokutou
        14
    kokutou  
       2018-07-06 20:22:53 +08:00   ❤️ 1
    这么麻烦?
    下个 pe,用 diskgenius 转就行了。。。

    如果磁盘头部和分区间空间不够。。。那还是得先把磁盘头部和分区间缩 1m 以上出来,不过 linux 文件系统好像没法从头部缩?
    feng32
        15
    feng32  
       2018-07-06 20:25:30 +08:00 via Android   ❤️ 1
    @lingll +1 买个移动硬盘,不折腾 100% 保证安全
    sephinh
        16
    sephinh  
       2018-07-06 20:26:30 +08:00 via Android   ❤️ 1
    只说一句,折腾前记得备份
    autoxbc
        17
    autoxbc  
       2018-07-06 21:03:36 +08:00   ❤️ 1
    不管用什么方法,第一步就是全盘备份,移动硬盘躲不过去
    ysc3839
        18
    ysc3839  
       2018-07-06 21:14:20 +08:00 via Android   ❤️ 1
    也许要看运气了,因为 GPT 分区表要放在硬盘头部和尾部,尾部的话有空闲空间没问题,但头部的话得看一开始创建分区时预留的空间够不够,如果不够的话那需要将分区往后移动。
    而就我个人知道的情况,把分区往后移动的工具都是闭源的,而且可能不支持 ext4 文件系统。
    ryd994
        19
    ryd994  
       2018-07-07 02:39:41 +08:00 via Android   ❤️ 2
    因为你用的是 8T 盘,理论上不难
    用 dd 把分区内容复制到 2T 后面去(稳妥起见可以更多)
    使用 GPT 分区,只有一个 2T 的分区
    把后面的数据复制回来,因为之前用的是 dd,确保使用相同的 offset 即可
    尝试挂载验证可用之后,延长分区的尾部到整个磁盘
    resize2fs 简单扩大文件系统
    ryd994
        20
    ryd994  
       2018-07-07 02:42:10 +08:00 via Android   ❤️ 1
    非常建议用个空白 U 盘实验一遍,熟悉一下 dd 的用法
    毕竟擦除硬盘最有效率的工具也是 dd
    plko345
        21
    plko345  
       2018-07-07 06:54:04 +08:00 via Android   ❤️ 1
    @ryd994 感觉具有可行性
    tees
        22
    tees  
    OP
       2018-07-07 08:54:46 +08:00


    (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

    @asilin
    @sxzzsf
    @seawing

    起始是从 2048 开始,所以我这个还有救。
    cigarzh
        23
    cigarzh  
       2018-07-07 09:05:09 +08:00 via iPhone   ❤️ 1
    2T 备份要很长时间吗
    tees
        24
    tees  
    OP
       2018-07-07 10:29:28 +08:00
    @cigarzh 没多余的硬盘了。
    sxzzsf
        25
    sxzzsf  
       2018-07-07 11:35:18 +08:00   ❤️ 1
    可以无损扩容

    1. 记录下起始地址
    2. fsck -f /dev/sdc1
    3. parted /dev/sdc
    mklabel gpt
    unit s
    mkpart ...
    start 2048
    end -1
    4. resize2fs /dev/sdc1
    sxzzsf
        26
    sxzzsf  
       2018-07-07 11:38:29 +08:00   ❤️ 1
    @sxzzsf umount first
    sysnxw
        27
    sysnxw  
       2018-07-07 12:02:03 +08:00   ❤️ 1
    借硬盘吧,省事,也保险。
    Kurobac
        28
    Kurobac  
       2018-07-07 12:42:36 +08:00 via Android   ❤️ 1
    前几天用 kde 的分区管理器把分区往前移动了点,3T 的硬盘将近跑了 8 个小时…
    fjzjk
        29
    fjzjk  
       2018-07-07 14:51:53 +08:00   ❤️ 1
    傲梅分区助手和 diskgenius 都可以无损转换 gpt,几秒就搞定了。win 下这方面软件比其他系统强得多
    fjzjk
        30
    fjzjk  
       2018-07-07 14:53:20 +08:00   ❤️ 1
    转成 gpt 后你再爱用什么 linux 的软件来合并分区就都可以了。
    而且 diskgenius 新版和分区助手新版都支持 ext4 了我记得
    likuku
        31
    likuku  
       2018-07-07 18:15:56 +08:00   ❤️ 1
    再买块 4T 硬盘作备份呗,动作快的话,操作完成,数据恢复回去,接着把新硬盘安全擦除,最后把新硬盘退货。
    likuku
        32
    likuku  
       2018-07-07 18:17:26 +08:00   ❤️ 1
    不备份,总是有风险,觉得再加一块硬盘的成本远远高于现有数据的价值,那么就当我没说。
    qbqbqbqb
        33
    qbqbqbqb  
       2018-07-09 22:39:10 +08:00
    可以直接使用 gdisk 这个分区工具,本体是个操作方式类似 fdisk 的 GPT 分区工具,另外还内置 expert 和 recovery & transformation 两个模式,后者支持 GPT,MBR 分区表之间的转换。
    qbqbqbqb
        34
    qbqbqbqb  
       2018-07-09 22:49:08 +08:00
    如果确保分区头尾都有足够空间容纳分区表,直接 sudo gdisk /dev/sdc,然后 w 命令保存就行。另外还可以 r 命令进入 recovery & transformation 模式,可以满足一些奇葩的分区表转换需求。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2602 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:33 · PVG 18:33 · LAX 02:33 · JFK 05:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.