我的问题类似于移动 ext4 分区,但我无法弄清楚的挑战是如何从一开始就缩小分区。
因此假设最初的分区(带有 raid)是这样的。
(************** /dev/md127 ***************)
调整大小后,我想要实现这样的效果。
(*** unallocated ***)(**** /dev/md127 ****)
注意,我不能使用 gparted,而且 parted 不支持 ext4。
到目前为止我尝试过的命令
% resize2fs -p /dev/md127 1676G # <== This is good.
% lvreduce -L 1676G /dev/md127
Path required for Logical Volume "md127"
Please provide a volume group name
Run `lvreduce --help' for more information.
然后我找到了一些链接(http://www.howtoforge.com/how-to-resize-raid-partitions-shrink-and-grow-software-raid) 描述如何更改 raid 的分区。
$ mdadm --grow /dev/md127 --size=max
mdadm: Cannot set device size for /dev/md127: Invalid argument
这里失败了,“man mdadm”显示“--grow”不适用于 raid 10。需要一些帮助。请注意,我使用“--size=max”只是为了快速测试,它也不适用于其他值。
然后在那之后,我想在这个分区之后立即创建另一个分区,将数据复制到该分区,然后删除这个分区,就像这样。
1. (************** /dev/md127 ***************)
2. (**** /dev/md127 ****)(*** new partition **)
3. (*** unallocated ****)(**** /dev/md127 ****)
谢谢。
答案1
您的问题中存在一些困惑,需要首先澄清,但看起来答案是您无法做您想做的事情。
首先,lvresize
用于更改 lvm 逻辑卷的大小,因此不适用于,/dev/md127
因为那是 raid 阵列。其次,您要求在 之前有未分配的空间/dev/md127
,这没有意义,因为它是 raid 阵列,因此就 raid 阵列而言,它之前或之后都没有空间。raid 可以构建在分区之上,例如/dev/sda1
和/dev/sdb1
,因此那必须是您想要的先前可用空间。 可以更改用于 raidmdadm
的大小,允许您使用来缩小该分区,但这只会移动阵列和分区的末尾,而不是起始位置。没有办法移动起始位置。/dev/sda1
parted