移动ext4分区

我在硬盘驱动器的末尾有一个ext4分区,并希望将其调整为完整磁盘大小(磁盘的其余部分为空)。 它不是根分区,只是一个数据分区,所以卸载分区没问题。 该机器运行Ubuntu服务器,并没有连接屏幕,键盘,鼠标和光盘驱动器,所以启动一个实时环境使用这种方法将是一个麻烦,我想避免这一点。

有人知道一个简单的方法吗? 对我来说,这certificate是一项比我预期的要困难得多的任务,但让我详细说明:

当然,磁盘分区在以下操作期间都是卸载的。 我首先尝试通过parted:我删除了第一个不再需要的分区,然后想要resize或移动ext4分区。 但是parted告诉我它无法这样做,因为ext4的一些文件系统function(带有一个奇怪的错误消息:“错误:文件系统启用了不兼容的function。兼容的function有has_journal,dir_index,filetype,sparse_super和large_file使用tune2fs或debugfs删除function。“ – 那么什么是不兼容的function?); 我从中获得了什么,作为对另一个问题中评论的回答 ,分手改变ext4分区的开始是不可能的。

然而,为什么gparted似乎可以解决问题(参见第一个相关问题)但不能分开?

好吧,因为我在驱动器开始处有足够的空间(超过要移动的分区的大小),我想我会尝试另一种方法:在前面创建第二个分区,从中复制内容回到这一个,然后删除旧分区并将新大小调整为完整大小。 但是,这也certificate是不可能的:在创建分区并复制内容后(通过dd if=/dev/sdb2 of=/dev/sdb1 ),无法挂载分区(’缺少日志超级块’)。

所以此刻我的想法很新鲜。 我可能会将所有重要的内容复制到另一个磁盘上,再次删除所有分区并创建一个大的分区。 我想知道这是一个问题 – 或者我是否忽略了明显的问题?

它有点耗时,但如果符合以下条件,则可以完成:

假设/ dev / sdb1,并且未分配的空间大于 / dev / sdb1中的数据量

在开始之前,让我们在/mnt/创建一些安装点目录:

  mkdir / mnt / old && mkdir / mnt / new 

磁盘现在看起来像这样:

  [(....... UNALLOCATED .........)(xxxx / dev / sdb1 xxxxxx)] 
  • e2fsck -f -y -v /dev/sdb1 #just以确保它没有错误。
  • fdisk /dev/sdb
  • 按: np 2 wq
  • mkfs.ext4 /dev/sdb2
    现在磁盘看起来像这样:
  [(xxxxxx / dev / sdb2 xxxxxxxxxx)(xxxx / dev / sdb1 xxxxxx)] 
  • mount /dev/sdb2 /mnt/new && mount /dev/sdb1 /mnt/old
  • mv /mnt/old/* /mnt/new/ (你会得到关于丢失+找到的错误,你可以忽略它)
  • cd / && umount /mnt/old && umount /mnt/new
  • cfdisk /dev/sdb
  • 删除sdb1
  • 选择写
  • 删除sdb2
  • 选择写
  • 创建新的,选择可用的整体大小。
  • 写下并退出。
  • e2fsck -f /dev/sdb1
  • resize2fs /dev/sdb1现在磁盘看起来像这样:
  [(xxxxxxxxxxxxxxxxxxx / dev / sdb1 xxxxxxxxxxxxxxxxxxx)] 
  • mount /dev/sdb1 /your/mount/point

完了!

以下是我在仅使用 SSH访问的无头机器上完成的方法: 使用VNC并获得gparted 。 将openbox用于最小环境,如果只有一次,则将其删除。

 sudo apt-get install vnc4server openbox gparted
 vnc4server #set密码,创建初始配置
 vnc4server -kill:1
 sed -i -e's / x-window-manager / openbox-session / g'~ / .vnc / xstartup
 vnc4server

打开端口5901传入,并使用VNC客户端访问。 右键单击以在openbox中启动终端,您将能够运行任何GTK +应用程序,包括gpartedapt-get removeautoremove如果你想完成的话。

我进入了GUI方向:

1)运行一个live linux CD(在我的情况下是Mint)

2)连接到Internet

3)得到gparted

sudo apt-get install gparted

4)在完整的gparted GUI中完成所有大小调整后,运行boot-repair。

5) https://help.ubuntu.com/community/Boot-Repair基本上归结为获取它并催款:

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update

sudo apt-get install -y boot-repair && boot-repair

6)选择常用选项的固定,如果它询问您的驱动器是否可拆卸,则选择“否”(如果不是,则选择“否”)。

解决了我的问题。

首先,我会像Frantique那样做,除非我会使用rsync因为它旨在使所有属性的副本完整无缺。 命令mv不会这样做。

但是,如果我真的想做认真的工作,无论如何我会移动东西,我会将数据移动到LVM2卷,因为这样可以在将来轻松管理卷,磁盘和分区。

好像您想要添加更多空间,只需将磁盘添加到卷组即可。 添加,删除或调整分区大小,只需对逻辑卷执行此操作即可。 无需考虑物理布局。 要从开始报告大量错误的磁盘中删除数据,只需添加新磁盘,然后从故障磁盘中移动数据,然后从卷中删除磁盘。 所有数据都从一个磁盘移动到另一个磁盘

首先,备份您的数据 ,以防止数据丢失。

因为parted不支持ext4,所以你应该使用resize2fs

  cfdisk / dev / sdx 
  • 删除分区。 是的,删除它! (我知道,这听起来很奇怪,但相信我,数据会保留在那里,只是不要使用 mkfs.ext4 !)
  • 并以您想要的尺寸重新创建它。 您需要在与原始位置完全相同的位置启动它。 终点可以四处移动。 如果你错过了这个,你就会丢失数据!
  resize2fs / dev / sdxY 

在不给resize2fs提供任何其他参数的情况下,文件系统将扩展到分区的大小。


关于不兼容的function:它是ext4使用的extents