如何使用LVM以及包含的物理卷和逻辑卷扩展分区?


33

在我的240 GB SSD上,我最初有两个分区,一个包含Linux Mint的逻辑卷,另一个包含与Windows共享的NTFS分区。现在,我删除了NTFS分区,并希望扩展我的逻辑卷组以使用释放的磁盘空间。

如何扩展卷组包含/ home的逻辑卷/ home上文件系统(ext4)?这可以在线吗?

PS:是的,我知道我必须备份我的数据:)

/dev/sdb/  (240GB)
    linuxvg  (160GB) should use 100% of the disk space
        swap
        root
        home (ext4, 128GB) should be extended to use the remaining space

输出sudo vgdisplay

  --- Volume group ---
  VG Name               linuxvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               160,00 GiB
  PE Size               4,00 MiB
  Total PE              40959
  Alloc PE / Size       40959 / 160,00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               ...

  --- Logical volume ---
  LV Path                /dev/linuxvg/swap
  LV Name                swap
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:32 +0200
  LV Status              available
  # open                 2
  LV Size                8,00 GiB
  Current LE             2048
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Path                /dev/linuxvg/root
  LV Name                root
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:43 +0200
  LV Status              available
  # open                 1
  LV Size                24,00 GiB
  Current LE             6144
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

  --- Logical volume ---
  LV Path                /dev/linuxvg/home
  LV Name                home
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:57 +0200
  LV Status              available
  # open                 1
  LV Size                128,00 GiB
  Current LE             32767
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2

  --- Physical volumes ---
  PV Name               /dev/sdb1     
  PV UUID               ...
  PV Status             allocatable
  Total PE / Free PE    40959 / 0

输出sudo fdisk -l

Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 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 identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1   468862127   234431063+  ee  GPT

Disk /dev/mapper/linuxvg-swap: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 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 identifier: 0x00000000


Disk /dev/mapper/linuxvg-root: 25.8 GB, 25769803776 bytes
255 heads, 63 sectors/track, 3133 cylinders, total 50331648 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 identifier: 0x00000000


Disk /dev/mapper/linuxvg-home: 137.4 GB, 137434759168 bytes
255 heads, 63 sectors/track, 16708 cylinders, total 268427264 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 identifier: 0x00000000

2
好吧,最简单的方法就是只创建vFS分区并使用vgextend,而不是完全删除该分区。如果增加了现有的PV分区,则可能必须重新启动,因为Linux拒绝在使用磁盘时重新读取分区表。在线解决此问题很尴尬。-请显示您当前的分区表。
弗罗斯特斯

如果需要,我可以重启。
klingt.net 2013年

Answers:


44

您可以相当简单地完成此操作。Kinda感到惊讶的是,这里还没有答案。

您可以在要调整大小的文件系统上运行时完成整个过程(是的,它是安全的并且完全受支持)。无需应急CD或备用操作系统。

  1. 调整分区大小(再次,您可以在运行系统的情况下执行此操作)。GParted易于使用,并支持调整大小。
    您也可以使用较低级别的工具,例如fdisk。但是您必须删除分区并重新创建它。只要确保这样做,新分区就从完全相同的位置开始。
  2. 重启。由于分区表是在正在运行的系统上修改的,因此直到重新引导后它才会生效。
  3. 运行pvresize /dev/sdXY以让LVM占用新空间。
  4. 使用调整逻辑卷的大小lvextend。如果要使用整个内容,请使用lvextend -r -l +100%FREE /dev/VGNAME/LVNAME。在-r将调整文件系统也是如此。
    尽管我总是建议不要使用整个卷组。您永远都不知道将来需要什么。以后总是可以扩展,不能收缩。

3
我想接受您的回答,但是我没有按照您的建议进行工作,因为GParted无法在正在运行的系统上调整根分区的大小(至少在我的情况下)。
klingt.net 2013年

@HalosGhost我还原了您的编辑。partprobe -s不按照您的想法去做。内核将不会调整正在使用的分区的大小。partprobe -s仅当在调整大小期间使用了分区时才起作用(因此当fdisk通知内核失败时),但是不再可用。
Patrick

@Patrick,我没有为此添加想法;我通过将命令放在反引号中来“改进”了编辑(代码之战避免了麻烦!)。
HalosGhost 2014年

抱歉,请从错误的历史记录事件中读取名称。@Qetesh然后适用于您:-)
Patrick

1
可能根本不使用步骤2的“ partx -u”重新启动,以告诉内核更新分区的大小:即使在活动分区上也可以使用,并且可以通过在之前和之后检查/sys/.../sdXY/size来进行验证后。
AB

11

没有任何答案可以证明LVM的强大功能。

(这是基于对上述问题的@frostchutz评论。)

让我们了解事实:

  • OP具有两个分区,sdb1和sdb2是LVM的物理卷。
  • sdb1现在是ntfs,我们需要将该空间分配给卷组中的home逻辑卷linuxvg

LVM使用“实用方式”进行操作:

  • 在sdb1上创建物理卷: pvcreate /dev/sdb1
  • 将sdb1添加到linuxvgvgextend linuxvg /dev/sdb1
  • home使用所有可用空间扩展逻辑卷:lvextend -l +100%FREE /dev/linuxvg/home
  • 扩展ext4 fs: resize2f /dev/linuxvg/home

LVM允许很大程度的间接。逻辑卷位于卷组内部,该卷组可能使用多个磁盘。

主页-> linuxvg->(sdb1,sdb2,sdc1)

http://tldp.org/HOWTO/LVM-HOWTO/createvgs.html


10

阅读博客文章后,问题已解决。我将以简短的形式编写解决方案:

  • 从现场CD启动
  • 使用gdisk(如果您使用GPT),否则您可以选择旧的fdisk
  • 注意我的分区设置 gdisk -l /dev/sdb
  • 删除您的分区
  • 创建一个与上一个分区完全相同的对齐方式的新分区(在我的示例中,从块2048开始)
  • 编写新的分区表
  • 运行partprobe -s以刷新分区表而无需重新启动
  • 使用pvresize /dev/sdb1或在任何位置使用pv 调整物理体积的大小(用于pvs确定您是否不知道)
  • 现在调整您的逻辑卷lvextend -l +100%FREE /dev/file/of/your/lv,在我的情况sudo lvextend -l +100%FREE /dev/linuxvg/home
  • 调整文件系统大小 sudo resize2fs /dev/linuxvg/home
  • 首先检查一致性 sudo e2fsck -f /dev/linuxvg/home
  • 请享用 :)

实际上,您可以减少大约一半的步骤,而只需重新启动一次即可。
Patrick

GParted拒绝调整分区的大小,因为该分区已被锁定(此键符号)。
klingt.net 2013年

4

已经有一些很好的答案。

如果您使用的是xfs,则可以使用以下命令

xfs_growfs /mountpoint

而不是resize2fs。您可以在该挂载点处于活动状态时执行此操作,例如,如果已经扩展了根分区,并且此后不需要重新引导。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.