移动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 +应用程序,包括gparted
。 apt-get remove
和autoremove
如果你想完成的话。
我进入了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
。