动态在线扩容root根分区大小的方法详解

2019-01-16 21:53:24王振洲

值得注意的是,如果用 MB/GB 这样的单位,磁盘 sector 的选取会有误差的。parted 会为你选最近的 sector,但未必精确。比如 unit 为 MB,那么可能产生 +-500KB 的误差;如果是 GB,那就可能 +-500MB 的误差,这就无法容忍了。所以如果是'创建分区'这样的操作,建议用 ‘MiB' 这样的单位,而不是 ‘MB'。'MiB' 会是一个精确值,parted 不会像对待 ‘MB' 那样去找它最近的单元。 resize <minor> <start> <end> 对指定 minor 号(或 Number 号)的分区从 start 位置到 end 位置 这里 start/end 可以是 xxxMB,也可以是负值,表示从磁盘末尾往前多少的位置,比如 -0 就是指到磁盘的末尾。

更多命令详情请参考: http://www.gnu.org/software/parted/manual/html_chapter/parted_toc.html

实战:

操作前,print 结果如下。现有磁盘62.3G,只分给 extended 8G,还有50多G根本没分配。

Number Start End Size Type File system Flags 1 1049kB 256MB 255MB primary ext2 boot 2 257MB 8589MB 8332MB extended 5 257MB 8589MB 8332MB logical lvm

我希望把这50多G全部用于扩大extended。

用命令:

resize 2 257MB -0

其实,只需输入 resize 2 ,回车,剩下的两个参数,parted 会通过交互的方式让你填写的。-0 表示到那个分区的磁盘末尾。

现在再 print 看一下,

Number Start End Size Type File system Flags 1 1049kB 256MB 255MB primary ext2 boot 2 257MB 62.3GB 62.0GB extended 5 257MB 8589MB 8332MB logical lvm

extended 区已经扩大成功了。

extended 区只是相当于“一块物理硬盘”,想把增加出来的空间用上,还要把 Number 为 5 的 lv 扩大。

而 logic volumn 的扩大依赖于它所在的 volumn group 的大小。因为 logic volumn 是从 volumn group 里分出来的,如果 volumn group 不变大,那么 logic volumn 是无法超过 volumn group 的。所以 真正是应该把空间加到 volumn group 上去 。

PART2

要增加 volumn group 的大小,先用 fdisk 在 extended 上,利用刚才增加但还未分配出去的磁盘空间创建出一个新分区。通过 fdisk <disk_dev_name> 进入交互模式,可以通过命令 m 查看帮助。首先,输入 n 创建新分区,然后选择 l 设置新分区为逻辑分区,接下来依次设置分区的起始、终止位置(默认即完全利用这块磁盘上剩余的所有空间,所以默认即可)。创建出的分区,编号为 6。可以用命令 p 看一下。

Device Boot Start End Blocks Id System /dev/vda1 * 2048 499711 248832 83 Linux /dev/vda2 501758 121634815 60566529 5 Extended /dev/vda5 501760 16775167 8136704 8e Linux LVM /dev/vda6 16777216 121634815 52428800 83 Linux

接下来,由于我们要用 LVM 来管理这个新分区,我们需要把新分区的管理系统从 Linux 改为 Linux LVM。在交互模式下,输入命令 t,然后选择刚才创建的 6,输入 8e (Linux LVM 的代号)。最后,我们要把刚才的这些操作真正写入硬盘,输入命令 w。