首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将分区的数目从sda1更改为sda2

将分区的数目从sda1更改为sda2
EN

Unix & Linux用户
提问于 2011-08-14 22:28:18
回答 7查看 78.6K关注 0票数 35

我有一个有两个分区的磁盘: sda1和sda2。我想把sda1改为sda2,sda2改为sda1。

有可能但我不记得是怎么做的。也就是说,我的第一个分区是sda2,第二个分区是sda1,所以我需要指定手动顺序,而不是像fdisk -> x -> f那样的自动排序。

我怎样才能改变订单?也欢迎链接到手册或教程。

谢谢。

原因是:我有一个应用程序需要从sda1读取数据,但是数据在sda2中。更改分区表是解决此问题的最快方法。系统并不重要,但我不想让系统停止太长时间。

更新: OpenBSD的fdisk版本包含此功能。

EN

回答 7

Unix & Linux用户

回答已采纳

发布于 2011-08-15 00:33:23

这是个坏主意,你可能会失去一切。如果您还想这样做,请执行以下步骤:

  1. 不要这样做。如果这没有帮助,那么:
  2. 使用sfdisk工具:首先,使用sfdisk -d /dev/sda > sda.out备份分区表,然后选择: sfdisk /dev/sda -O sda-分区-扇区。保存您将看到这样的检查,即现在没有人使用此磁盘.OK磁盘/dev/sda: 1018个圆柱体,124个磁头,62个扇区/跟踪旧情况:单元= 3936256字节的圆柱,1024字节的块,计数从0设备启动#cyls #块Id系统/dev/sda4 1 0+ 5 6- 23063+ 83 Linux /dev/sda4 2 6 1017 1012 3890128 Linux /dev/sda4 3 0空/dev/dev/sda4 4 0-0 0空输入,格式如下;缺席字段获得默认值。 < E,S,L,X,十六进制> <可引导的-,*> 通常只需要指定和 (可能还有)。/dev/sda1 1:

现在它要求您给出“sda1”分区的新细节。所以你必须给出sda2的数字。所以,我把‘61012’放在这里,然后按Enter:

代码语言:javascript
复制
    /dev/sda1 :6 1012
    /dev/sda1          6    1017    1012    3890128   83  Linux
    /dev/sda2 :

现在,检查按Enter后打印的数字是否与前面为sda2打印的数字完全相同。如果可以的话,继续给出sda2的新编号:

代码语言:javascript
复制
    /dev/sda2 :0
    /dev/sda2          0+      5       6-     23063+  83  Linux
    /dev/sda3 :

这一次,在我的例子中输入"0“就足够了--但是你必须确保你的数字不会被弄错。

接下来,以相同的方式继续使用其他分区。如果您已经到达磁盘的末尾,按回车就足够了。最后,再次检查所有数字是否正常,并保存分区表(或不保存)。如果你搞砸了什么,看看man sfdisk和'-d','-O‘和'-I’选项的描述。

还要注意的是,一旦您进行了疯狂的更改,您可能需要运行“同步”,以便在尝试挂载分区之前重新读取分区。

票数 22
EN

Unix & Linux用户

发布于 2013-09-11 11:51:02

我只是用更简单的方式做了这件事:

代码语言:javascript
复制
# sfdisk --dump /dev/sdb > sdb.bkp

为了安全起见留下一份副本

代码语言:javascript
复制
# cp sdb.bkp sdb.new 

现在编辑sdb.new,只更改行、顺序和分区号,就像我的例子:

从…

代码语言:javascript
复制
# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=  1026048, size=975747120, Id=83
/dev/sdb2 : start=     2048, size=   204800, Id=83
/dev/sdb3 : start=   206848, size=   819200, Id= b
/dev/sdb4 : start=        0, size=        0, Id= 0

代码语言:javascript
复制
# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=     2048, size=   204800, Id=83
/dev/sdb2 : start=   206848, size=   819200, Id= b
/dev/sdb3 : start=  1026048, size=975747120, Id=83
/dev/sdb4 : start=        0, size=        0, Id= 0

然后把它扔回磁盘分区表?

代码语言:javascript
复制
# sfdisk /dev/sdb < sdb.new

我的编号顺序在我缩小并右移(唯一的分区(sdb1),在磁盘开始时使用gparted添加两个较小的分区)后被破坏了。

如果最后一个命令不能工作(在我的例子中),请将其更改为:

代码语言:javascript
复制
# sfdisk --no-reread --force /dev/sdb < sdb.new
票数 49
EN

Unix & Linux用户

发布于 2020-02-02 12:08:15

所有现有的解决方案看起来都很安全,但结果相当复杂。

我想重新排序我的所有分区,这样它们就会井然有序。

如果您更有经验,拥有非必要的或备份的数据,并且乐于解决任何问题,那么您可以从Live和这样做启动:

代码语言:javascript
复制
sudo fdisk /dev/sdX

然后:

  • x进入专家模式
  • f修复驱动器顺序(可能是i,如果需要,可以忽略任何警告)
  • 返回正常模式的r
  • w将更改写入磁盘并退出

附加

我不记得接下来的具体步骤,因为我只做过一次,而且还没有重新测试过,但是当我移动安装时,我还挂载了分区和复制所有文件

代码语言:javascript
复制
sudo mkdir /mnt/sda4
sudo mount /dev/sda4 /mnt/sda4
sudo mkdir /mnt/sda5
sudo mount /dev/sda5 /mnt/sda5
date;cp -a /mnt/sda4/* /mnt/sda5;date

然后获得分区ids:

代码语言:javascript
复制
sudo blkid

并更新了以下内容,以反映新的分区UUID值:

  • /mnt/sda5/boot/grub/grub.cfg
  • /mnt/sda5/etc/fstab

然后我更新的GRUB2 2

代码语言:javascript
复制
sudo grub-install --root-directory=/mnt/sda5 /dev/sda
票数 15
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/18752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档