无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
查看: 1127|回复: 22

[求助] 如何在已有磁盘容量增大的情况下把 LVM 卷扩容?

  [复制链接]
发表于 2020-7-17 19:36:31 | 显示全部楼层 |阅读模式
本帖最后由 DOSforever 于 2020-7-18 15:19 编辑

通常情况下都是在已有硬盘建立卷组和逻辑卷,并且用掉硬盘的全部空间,然后,当要扩容时,都是添加一块新硬盘,用 vgextend 把新硬盘的空间添加进已有的卷组,然后再用 lvextend 扩展逻辑卷的大小。问题是,如果不是添加新硬盘,而是把已有硬盘容量扩大,怎么扩大在这个已有硬盘上卷组的大小呢?似乎不能用 vgextend 命令扩展已所在磁盘卷组的大小。
比如原有磁盘上有两个分区

/dev/sda1 挂载为 /boot 分区
/dev/sda2 上建立卷组,在卷组中建立两个逻辑卷,一个挂载为 / 分区,一个挂载为 /swap 分区。

现在扩大了 /dev/sda 整个磁盘的容量,怎么扩大 /dev/sda2 所在的卷组大小呢?
发表于 2020-7-17 23:26:26 | 显示全部楼层
应该是磁盘组成raid

点评

LVM 卷和你底层怎么组磁盘没有关系  详情 回复 发表于 2020-7-17 23:57
回复

使用道具 举报

 楼主| 发表于 2020-7-17 23:57:51 | 显示全部楼层
l3429900 发表于 2020-7-17 23:26
应该是磁盘组成raid

LVM 卷和你底层怎么组磁盘没有关系
回复

使用道具 举报

发表于 2020-7-18 09:04:52 | 显示全部楼层
硬碟分割表:mbr[fdisk] / gpt[gdisk]。並確定容量無誤!

pe 階段:先用pvdisplay顯示可使用pe有多小。

vg階段:使用vgextend把可使用的pe文入vg卷。

lv階段:使用lvextend/lvresize把vg卷的可用空間加大到指定的lv中。

檔案系統階段:基於你所使用的檔案系統,可以使用動態更新superblock而不需停機。
ext4的命令[resize2fs]

点评

第二步就不对了。vgextend 只能把新增加的硬盘或分区添加进已有卷组,而我现在的问题是没有新增加的硬盘或分区,只是扩大了原有磁盘或分区的大小,在这种情况下怎么扩大已有卷组的大小。请再看一下我的问题。  详情 回复 发表于 2020-7-18 15:24
回复

使用道具 举报

 楼主| 发表于 2020-7-18 15:24:22 | 显示全部楼层
hkkitlee 发表于 2020-7-18 09:04
硬碟分割表:mbr[fdisk] / gpt[gdisk]。並確定容量無誤!

pe 階段:先用pvdisplay顯示可使用pe有多小。
...

第二步就不对了。vgextend 只能把新增加的硬盘或分区添加进已有卷组,而我现在的问题是没有新增加的硬盘或分区,只是扩大了原有磁盘或分区的大小,在这种情况下怎么扩大已有卷组的大小。请再看一下我的问题。

点评

靈活點吧... 你擴大原有磁盤。那多出來的空間再開一個分區、變成pe,加入vg卷,lv擴容就可以啦  详情 回复 发表于 2020-7-18 16:44
回复

使用道具 举报

发表于 2020-7-18 16:44:56 | 显示全部楼层
本帖最后由 hkkitlee 于 2020-7-18 16:54 编辑
DOSforever 发表于 2020-7-18 15:24
第二步就不对了。vgextend 只能把新增加的硬盘或分区添加进已有卷组,而我现在的问题是没有新增加的硬盘 ...

靈活點吧...

方法一:你擴大原有磁盤。那多出來的空間再開一個分區、變成pe,加入vg卷,lv擴容就可以啦
方法二:pvresize

点评

# pvs /dev/sdc PV VG Fmt Attr PSize PFree /dev/sdc vg_test lvm2 a--u 1016.00m 0 原来磁盘大小为1G,后扩大到2G # pvresize -v /dev/sdc Using physical volume(s) on co  详情 回复 发表于 2020-7-20 11:31
回复

使用道具 举报

 楼主| 发表于 2020-7-20 11:31:40 | 显示全部楼层
本帖最后由 DOSforever 于 2020-7-30 17:21 编辑
hkkitlee 发表于 2020-7-18 16:44
靈活點吧...

方法一:你擴大原有磁盤。那多出來的空間再開一個分區、變成pe,加入vg卷,lv擴容就可以 ...

# pvs /dev/sdc
  PV         VG      Fmt  Attr PSize PFree
  /dev/sdc   vg_test lvm2 a--u 1016.00m    0

原来磁盘大小为1G,后扩大到2G

# pvresize -v /dev/sdc
    Using physical volume(s) on command line.
    Wiping cache of LVM-capable devices
    Wiping internal VG cache
    Archiving volume group "vg_test" metadata (seqno 4).
    Resizing volume "/dev/sdc" to 4194304 sectors.
    No change to size of physical volume /dev/sdc.
    Updating physical volume "/dev/sdc"
    Creating volume group backup "/etc/lvm/backup/vg_test" (seqno 5).
  Physical volume "/dev/sdc" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized


# pvs /dev/sdc
  PV         VG      Fmt  Attr PSize PFree
  /dev/sdc   vg_test lvm2 a--u 1.99g 1.00g


执行 pvresize 后,PV 的空间是扩大了,可怎么扩大 VG 的空间呢?只能用新建分区,把分区加入到 VG 的方法?直接扩展 VG 不行吗?

而且奇怪的是用 fdisk /dev/sdc 查看,该磁盘上根本就没有分区???!

点评

已經在「4樓」回覆你如何將多餘的pe加到vg。具體操作參數可自行man page。  详情 回复 发表于 2020-7-20 13:07
回复

使用道具 举报

发表于 2020-7-20 13:07:39 | 显示全部楼层
DOSforever 发表于 2020-7-20 11:31
# pvs /dev/sdc
  PV         VG      Fmt  Attr PSize PFree
  /dev/sdc   vg_test lvm2 a--u 1016.00 ...

已經在「4樓」回覆你如何將多餘的pe加到vg。具體操作參數可自行man page。

点评

看了下 vgextend 的所有参数,有可能与“將多餘的pe加到vg”有关的只有一个 --restoremissing ,可 # vgextend -v --restoremissing vg_test /dev/sdc Using volume group(s) on command line. Archi  详情 回复 发表于 2020-7-20 13:47
回复

使用道具 举报

 楼主| 发表于 2020-7-20 13:47:28 | 显示全部楼层
hkkitlee 发表于 2020-7-20 13:07
已經在「4樓」回覆你如何將多餘的pe加到vg。具體操作參數可自行man page。

看了下 vgextend 的所有参数,有可能与“將多餘的pe加到vg”有关的只有一个 --restoremissing ,可


# vgextend -v --restoremissing vg_test /dev/sdc
    Using volume group(s) on command line.
    Archiving volume group "vg_test" metadata (seqno 6).
  WARNING: PV /dev/sdc was not missing in VG vg_test
  No PV has been restored.


难道 vgextend 只能如它说所说的 add physical volumes to a volume group ?


点评

維護整個lvm還有很多命令... 看下這個:lvresize -Ll  详情 回复 发表于 2020-7-20 14:50
回复

使用道具 举报

发表于 2020-7-20 14:50:28 | 显示全部楼层
本帖最后由 hkkitlee 于 2020-7-20 14:58 编辑
DOSforever 发表于 2020-7-20 13:47
看了下 vgextend 的所有参数,有可能与“將多餘的pe加到vg”有关的只有一个 --restoremissing ,可

維護整個lvm還有很多命令...請問樓主知道lvm三者關係嗎?
vg之後簡單的就是這個:lvresize -Ll

点评

我理解的 LVM 中三种存储的逻辑关系就是一层是建立在一层上的关系,最底层的是物理卷 PV ,在 PV 上建立卷组 VG ,最后才能在 VG 上建立直接可使用的逻辑卷 LV 。 现在 PV 的空间是扩大了,可 VG 怎么扩大呢?噢,  详情 回复 发表于 2020-7-28 10:49

评分

参与人数 1无忧币 +5 收起 理由
DOSforever + 5 谢谢指导!终于想通了!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-7-28 10:49:33 | 显示全部楼层
hkkitlee 发表于 2020-7-20 14:50
維護整個lvm還有很多命令...請問樓主知道lvm三者關係嗎?
vg之後簡單的就是這個:lvresize -Ll

我理解的 LVM 中三种存储的逻辑关系就是一层是建立在一层上的关系,最底层的是物理卷 PV ,在 PV 上建立卷组 VG ,最后才能在 VG 上建立直接可使用的逻辑卷 LV 。
现在 PV 的空间是扩大了,可 VG 怎么扩大呢?噢,对了,这个 PV 本来就属于这个 VG 的,PV 扩大了,VG 也就是扩大了,剩余的 VG 空间就是可以扩大已有的 LV 或新建 LV 。对了对了,直接用 lvresize 命令扩大已有的 LV 尺寸即可。谢谢谢谢!多谢耐心的指导!我一开始的想法搞错了,以为三种存储层面要一步步扩大才行。


点评

好像有點對有點不對。 邏輯上: pe是實際儲存資料最小的單位,存放pe的分區叫pv。 vg就像是虛擬出來的「硬碟」/dev/sd[a-z]。撥放多少pe你的「vg硬碟」就有少。 lg就像是「分區」,從vg硬碟「分配」多小屬  详情 回复 发表于 2020-7-28 14:22
回复

使用道具 举报

发表于 2020-7-28 14:22:42 | 显示全部楼层
本帖最后由 hkkitlee 于 2020-7-28 14:32 编辑
DOSforever 发表于 2020-7-28 10:49
我理解的 LVM 中三种存储的逻辑关系就是一层是建立在一层上的关系,最底层的是物理卷 PV ,在 PV 上建立 ...

好像有點對有點不對。

邏輯上:
pe是實際儲存資料最小的單位,存放pe的分區叫pv。

vg就像是虛擬出來的「硬碟」/dev/sd[a-z]。撥放多少pe你的「vg硬碟」就有多少。

lg就像是虛擬出來的「分區」,從vg硬碟「分配」多少屬於這個vg的pe給lv。像分區一樣格式化後才能使用。lvm中就不是使用fdisk/gdisk;使用「分配」而不是「分割」是因為能動態加減分區大小。
補充一點的是:lvm在核心中算是「設備」來的。
回复

使用道具 举报

 楼主| 发表于 2020-7-30 17:45:00 | 显示全部楼层
本帖最后由 DOSforever 于 2020-7-31 11:47 编辑

又遇到一个问题:之前测试的是拿整个新磁盘做 PV -> VG 然后扩大整个磁盘,然后扩容 PV 。
现在是在一个现有的磁盘的一个分区上做 PV ,即分区类型为 0x8e

/dev/sda1 0x83
/dev/sda2 0x8e
现在扩大了整个 /dev/sda 磁盘的容量

但用 pvresize /dev/sda2 命令后
再用 pvs /dev/sda2 查看,发觉容量并没有增加。

原来整个磁盘大小为10G,后扩大到16G

# fdisk -l

Disk /dev/sda: 17.2 GB, 17179869184 bytes, 33554432 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a93d4

    Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    20971519     9436160   8e  Linux LVM

Disk /dev/mapper/centos-root: 8585 MB, 8585740288 bytes, 16769024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


#
pvs
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda2 centos lvm2 a--  <9.00g    0


# pvresize -v /dev/sda2
    Archiving volume group "centos" metadata (seqno 6).
    Resizing volume "/dev/sda2" to 18872320 sectors.
    No change to size of physical volume /dev/sda2.
    Updating physical volume "/dev/sda2"
    Creating volume group backup "/etc/lvm/backup/centos" (seqno 7).
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

再用 pvs 查看仍然没有 free 空间

# pvs
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda2 centos lvm2 a--  <9.00g    0

# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   1   2   0 wz--n- <9.00g    0



点评

在之前的回應當中其實已經有答案。  详情 回复 发表于 2020-7-31 15:47
回复

使用道具 举报

发表于 2020-7-31 15:47:09 | 显示全部楼层
DOSforever 发表于 2020-7-30 17:45
又遇到一个问题:之前测试的是拿整个新磁盘做 PV -> VG 然后扩大整个磁盘,然后扩容 PV 。
现在是在一个现 ...

在之前的回應當中其實已經有答案。

点评

你说的是在扩大的空闲空间中新建分区,然后把这个分区设为 PV ,再把这个 PV 用 vgextend 加到已有的 VG 中吗?是的,我试了下这个方法可行,但我想的是怎么直接扩大 VG ,难道只有前述的这一种方法吗?  详情 回复 发表于 2020-7-31 16:11
回复

使用道具 举报

 楼主| 发表于 2020-7-31 16:11:20 | 显示全部楼层
hkkitlee 发表于 2020-7-31 15:47
在之前的回應當中其實已經有答案。

你说的是在扩大的空闲空间中新建分区,然后把这个分区设为 PV ,再把这个 PV 用 vgextend 加到已有的 VG 中吗?是的,我试了下这个方法可行,但我想的是怎么直接扩大 VG ,难道只有前述的这一种方法吗?

点评

不要抄別人的作法,什麼操作應該先充分理解啊! 方法豈止一個! 你的sda有兩個分區,sda2是儲放pe的分區;再分配pe到vg。思考一下要擴大vg覺得應該怎樣?  详情 回复 发表于 2020-7-31 16:27
回复

使用道具 举报

发表于 2020-7-31 16:27:41 | 显示全部楼层
DOSforever 发表于 2020-7-31 16:11
你说的是在扩大的空闲空间中新建分区,然后把这个分区设为 PV ,再把这个 PV 用 vgextend 加到已有的 VG  ...

不要抄別人的作法,什麼操作應該先充分理解啊!

方法豈止一個!

你的sda有兩個分區,sda2是儲放pe的分區;再分配pe到vg。思考一下要擴大vg覺得應該怎樣?

点评

看来直接用 LVM 命令是不行的了。 我后来用 parted 的 resizepart 命令扩展了 sda2 分区 # parted (parted) resizepart 2 100% 再用 pvresize 扩展 sda2 的 PV # pvresize -v /dev/sda2 最后再用 lvex  详情 回复 发表于 2020-8-10 15:15
回复

使用道具 举报

 楼主| 发表于 2020-8-10 15:15:43 | 显示全部楼层
hkkitlee 发表于 2020-7-31 16:27
不要抄別人的作法,什麼操作應該先充分理解啊!

方法豈止一個!

看来直接用 LVM 命令是不行的了。
我后来用 parted 的 resizepart 命令扩展了 sda2 分区

# parted
(parted) resizepart 2 100%

再用 pvresize 扩展 sda2 的 PV

# pvresize -v /dev/sda2

最后再用 lvextend 扩展逻辑卷

# lvresize -l 100%FREE -v -r centos/root

结果显示
fsadm: Xfs filesystem shrinking is unsupported.
  /usr/sbin/fsadm failed: 1
  Filesystem resize failed.

原来 100% 前少了一个加号
应该是


# lvresize -l +100%FREE -v -r centos/root



# lvresize -l 100%VG -v -r centos/root

最后显示逻辑卷和文件系统都扩展成功。
虽然用这种方法扩展成功了,但我还是想,这是不是一种比较正规的方法呢?能不能完全通过 LVM 命令实现呢?

点评

你用「舊」的partition table 於新硬盤,導致有空間未能用盡;你現在只是更新mbr/gpt而已。 先擴大分區才能裝載更多pe,這個是因果/先後次序的關係; 涉及分區用分區命令;涉及lvm就用lvm命令而已。 lvm的基礎  详情 回复 发表于 2020-8-10 16:05
回复

使用道具 举报

发表于 2020-8-10 16:05:33 | 显示全部楼层
DOSforever 发表于 2020-8-10 15:15
看来直接用 LVM 命令是不行的了。
我后来用 parted 的 resizepart 命令扩展了 sda2 分区

你用「舊」的partition table 於新硬盤,導致有空間未能用盡;你現在只是更新mbr/gpt而已。
先擴大分區才能裝載更多pe,這個是因果/先後次序的關係;
涉及分區用分區命令;涉及lvm就用lvm命令而已。

lvm的基礎是分區應該沒錯誤吧;不明白你用什麼定義為「不正規」?

点评

后来发现 resizepart 子命令有局限性,只适合于 CentOS 7 ,而在 CentOS 6 中是 resize 子命令,resize 子命令不能识别 LVM 分区类型 0x8e ,提示 Error: Could not detect file system. 也就是 6 中的 parted 命令  详情 回复 发表于 2020-8-11 17:13
我认为完全用 LVM 命令来实现比较“正规”,比如,用 pvresize 就可扩展 PV 。 用其它命令辅助来实现,算是一种“取巧”行为。  详情 回复 发表于 2020-8-10 16:14
回复

使用道具 举报

 楼主| 发表于 2020-8-10 16:14:14 | 显示全部楼层
hkkitlee 发表于 2020-8-10 16:05
你用「舊」的partition table 於新硬盤,導致有空間未能用盡;你現在只是更新mbr/gpt而已。
先擴大分區 ...

我认为完全用 LVM 命令来实现比较“正规”,比如,用 pvresize 就可扩展 PV 。
用其它命令辅助来实现,算是一种“取巧”行为。

点评

這個定義...  详情 回复 发表于 2020-8-10 16:34
回复

使用道具 举报

发表于 2020-8-10 16:34:04 | 显示全部楼层
本帖最后由 hkkitlee 于 2020-8-10 16:35 编辑
DOSforever 发表于 2020-8-10 16:14
我认为完全用 LVM 命令来实现比较“正规”,比如,用 pvresize 就可扩展 PV 。
用其它命令辅助来实现, ...

這個定義...還是先理解清楚基礎理論
回复

使用道具 举报

 楼主| 发表于 2020-8-11 17:13:52 | 显示全部楼层
hkkitlee 发表于 2020-8-10 16:05
你用「舊」的partition table 於新硬盤,導致有空間未能用盡;你現在只是更新mbr/gpt而已。
先擴大分區 ...

后来发现 resizepart 子命令有局限性,只适合于 CentOS 7 ,而在 CentOS 6 中是 resize 子命令,resize 子命令不能识别 LVM 分区类型 0x8e ,提示 Error: Could not detect file system. 也就是 6 中的 parted 命令无法调整 LVM 分区大小。

点评

LVM有分LVM1 和 LVM2,請自行查軟件歷史 現在沒有人用LVM1,通用指的LVM都是LVM2了 LVM2分區號碼要用8e00 0x8e是LVM1用的,可能parted真的會認錯。  详情 回复 发表于 2020-8-11 22:43
回复

使用道具 举报

发表于 2020-8-11 22:43:16 | 显示全部楼层
DOSforever 发表于 2020-8-11 17:13
后来发现 resizepart 子命令有局限性,只适合于 CentOS 7 ,而在 CentOS 6 中是 resize 子命令,resize  ...

LVM有分LVM1 和 LVM2,請自行查軟件歷史
現在沒有人用LVM1,通用指的LVM都是LVM2了
LVM2分區號碼要用8e00
0x8e是LVM1用的,可能parted真的會認錯。

点评

CentOS 6 中生成的 LVM 卷也是 2 版本的,如果不是刻意指定 1 版本,默认使用的就是 2 版本。 8e00 是什么?是 GUID 分区类型的用的吗?我看了下,CentOS 7 中用的也是 MBR 类型的分区,LVM 卷分区 ID 也是单字节的  详情 回复 发表于 2020-8-12 09:32
回复

使用道具 举报

 楼主| 发表于 2020-8-12 09:32:12 | 显示全部楼层
hkkitlee 发表于 2020-8-11 22:43
LVM有分LVM1 和 LVM2,請自行查軟件歷史
現在沒有人用LVM1,通用指的LVM都是LVM2了
LVM2分區號碼要 ...

CentOS 6 中生成的 LVM 卷也是 2 版本的,如果不是刻意指定 1 版本,默认使用的就是 2 版本。
8e00 是什么?是 GUID 分区类型的用的吗?我看了下,CentOS 7 中用的也是 MBR 类型的分区,LVM 卷分区 ID 也是单字节的 0x8e ,而不是双字节的 8e00 。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2021-1-24 23:17

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表