我在硬盘驱动器的末端有一个 ext4 分区,想将其调整为完整磁盘大小(磁盘的其余部分是空的)。它不是根分区,只是数据分区,因此卸载分区没有问题。机器正在运行 Ubuntu 服务器,没有连接屏幕、键盘、鼠标或光盘驱动器,因此启动实时环境以使用这种方法会有点麻烦,我想避免这种情况。
有人知道一个简单的方法吗?对我来说,这被证明是一项比我预想的更困难的任务,但让我详细说明一下:
当然,在以下操作中,磁盘分区全部卸载。我首先尝试通过 parted:我删除了不再需要的第一个分区,然后想调整大小或移动 ext4 分区。但 parted 告诉我它无法这样做,因为 ext4 的某些文件系统功能(带有一个奇怪的错误消息:“错误:文件系统启用了不兼容的功能。兼容的功能是 has_journal、dir_index、filetype、sparse_super 和 large_file。使用 tune2fs 或 debugfs 删除功能。” - 那么不兼容的功能是什么?);我从中得到了什么,作为一个回答另一个问题的评论但是,parted 无法改变 ext4 分区的开头。
但是,为什么 gparted 似乎可以解决问题(参见第一个链接问题)而 parted 却不行?
好吧,由于驱动器开头有足够的空间(大于要移动的分区大小),我想尝试另一种方法:在前面创建第二个分区,将内容从后面的分区复制到这个分区,然后删除旧分区并将新分区调整为完整大小。然而,这也被证明是不可能的:创建分区并复制内容(通过dd if=/dev/sdb2 of=/dev/sdb1
)后,无法安装分区(“缺少日志超级块”)。
所以目前我没什么主意了。我可能会把所有重要的东西复制到另一个磁盘,再次删除所有分区并创建一个大分区。我想知道这是否是个问题 - 或者我忽略了显而易见的问题?
答案1
这需要花费一些时间,但如果满足以下条件,就可以完成:
假设 /dev/sdb1,并且未分配空间大于数据量来自/dev/sdb1:
在我们开始之前,让我们创建一些挂载点目录/mnt/
:
mkdir /mnt/old && mkdir /mnt/new
磁盘现在如下所示:
[(.......未分配.........)(xxxx /dev/sdb1 xxxxxx)]
e2fsck -f -y -v /dev/sdb1
#只是为了确保它没有错误。fdisk /dev/sdb
- 按:
n p 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/
(您将收到有关 lost+found 的错误,您可以忽略它)cd / && umount /mnt/old && umount /mnt/new
cfdisk /dev/sdb
- 删除
sdb1
- 选择写入
- 删除
sdb2
- 选择写入
- 创建新的,选择整个可用的尺寸。
- 写完就退出。
e2fsck -f /dev/sdb1
resize2fs /dev/sdb1
现在磁盘如下所示:
[(xxxxxxxxxxxxxxxxxx /dev/sdb1 xxxxxxxxxxxxxxxxxx)]
mount /dev/sdb1 /your/mount/point
完成的!
答案2
这是我在仅具有 SSH 访问的无头机器上执行的操作:使用 VNC 并开始gparted
执行此操作。用于openbox
最小环境,如果仅一次则完成后将其全部删除。
sudo apt-get 安装 vnc4server openbox gparted vnc4server #设置密码,创建初始配置 vnc4server-kill:1 sed -i -e 's/x-window-manager/openbox-session/g' ~/.vnc/xstartup vnc4服务器
打开端口 5901 传入,并使用 VNC 客户端进行访问。右键单击以在 openbox 中启动终端,您将能够运行任何 GTK+ 应用程序,包括gparted
。如果您愿意,完成后apt-get remove
还可以运行。autoremove
答案3
我朝着 GUI 方向发展:
1)运行 Linux 实时 CD(我这里是 Mint)
2)连接到互联网
3)获取 gparted
sudo apt-get install gparted
4) 在简洁的 gparted GUI 中完成所有调整大小后,运行启动修复。
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)选择常用选项的修复,如果系统询问您驱动器是否可移动,请选择否(如果不是)。
解决了我的问题。
答案4
首先,备份你的数据,以防止数据丢失。
因为parted
不支持 ext4,所以您应该使用resize2fs
。
cfdisk /dev/sdx
- 删除分区。是的,删除它!(我知道,这听起来很奇怪,但相信我,数据会保留在那里,只是不要使用
mkfs.ext4
! - 然后以您想要的大小重新创建它。您需要从与原始位置完全相同的位置开始。终点可以移动。如果您错过这一点,您将丢失数据!
resize2fs /dev/sdxY
无需提供任何其他参数resize2fs
,文件系统将扩展到分区的大小。
关于不兼容的功能:它是extents
ext4 所使用的。