我正在使用 ubuntu 18.04 服务器。最近几天,我在执行一些简单操作时不断收到错误消息“设备上没有剩余空间” ll
。
我发现这与我的根分区不知何故已满有关。
$df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/ubuntu--vg-ubuntu--lv 130G 130G 0 100% /
...
/dev/sda2 976M 211M 699M 24% /boot
/dev/sda1 511M 6.1M 505M 2% /boot/efi
/dev/mapper/ubuntu--vg-lv--0 12T 787G 11T 7% /home
...
创建服务器时,我使用 raid6 结构创建了一个物理卷(16 个硬盘)、一个卷组和两个逻辑卷。我使用 LVM 将 VG 划分为两个逻辑卷,一个用于root
~132G,另一个home
用于 ~12T(其余)的目录
$ sudo lvdisplay -m
--- Logical volume ---
LV Path /dev/ubuntu-vg/ubuntu-lv
LV Name ubuntu-lv
VG Name ubuntu-vg
LV UUID d6ihzF-rV8o-RSJA-9cDw-7O5t-x1uC-6PVUHg
LV Write Access read/write
LV Creation host, time ubuntu-server, 2019-02-25 11:33:31 +0000
LV Status available
# open 1
LV Size 132.00 GiB
Current LE 33792
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Segments ---
Logical extents 0 to 1023:
Type linear
Physical volume /dev/sda3
Physical extents 0 to 1023
Logical extents 1024 to 33791:
Type linear
Physical volume /dev/sda3
Physical extents 3183807 to 3216574
--- Logical volume ---
LV Path /dev/ubuntu-vg/lv-0
LV Name lv-0
VG Name ubuntu-vg
LV UUID xJ0jjx-Bmnv-itG6-HR8k-eySF-HCXf-GRi6Rb
LV Write Access read/write
LV Creation host, time ubuntu-server, 2019-02-25 11:33:32 +0000
LV Status available
# open 1
LV Size 12.14 TiB
Current LE 3182783
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Segments ---
Logical extents 0 to 3182782:
Type linear
Physical volume /dev/sda3
Physical extents 1024 to 3183806
我现在想增加我的root
分区,但我总是遇到同样的问题。
我曾尝试使用lvextend
,lvresize
但没有帮助。
lvextend -L+128G /dev/ubuntu-vg/ubuntu-lv
Insufficient free space: 32768 extents needed, but only 0 available
和 也同样如此lvresize
。
我想知道我需要做什么才能增加根分区的大小。
分区/home/
占用了剩余的“可用空间”与此有关吗?我是否需要先减小其大小,然后才能增加分区root
?我该怎么做?
答案1
LVM 的概念就像洋葱一样:
- 物理卷可能没有可用空间,因此您无法扩展它。使用“pvs”在此处查看概览,它可能会显示 0 字节的可用空间。它基本上是硬盘上的一个分区
- 里面有一个或多个卷组。这是第一个抽象层(使用命令电压或者创建,扩展)
- 里面有逻辑卷
- 逻辑卷内部驻留有文件系统,例如 ext2、ext3、btrfs 或 ext4。
需要注意的是,lvm 不同层上的命令子集具有相同的命名策略。因此延长,减少,调整大小,创造依此类推,你会发现每个抽象层都有相关的前缀,并且使用相同的参数来标准化,例如建立,虚拟创建,lvcreate等等。一旦你理解了语法和架构,使用它就很容易了。
因此,您需要在 pvs 中扩展空间,然后在扩展之后,您需要将其分配给逻辑卷组(/dev/“volumegroupname”),之后您需要使用以下命令将部分或全部空间分配给逻辑卷:lvextend或者调整大小(将在 Ubuntu 中映射为 /dev/mapper/“vgname-lvname”)。最后,您需要调整逻辑卷内的文件系统大小(lv,命令lvs)。 也做一个ext2fsck -f然后在文件系统上。
如果要缩小,则必须使用 resize2fs,然后使用 lvreduce 或 lvresize,最后缩小物理卷。反之亦然。绝对有必要了解这里的基本概念。LVM 是为了便于管理和扩展或向现有系统添加硬盘磁盘空间而创建的。因此,您甚至可以扩展到第二个硬盘驱动器,并将逻辑卷扩展到这两个硬盘驱动器上。但是到目前为止,我的私人系统还没有使用过这种用例。您还可以使用 raid0 和 raid1 来提高数据安全性。并使用 iE luks 来保证您的安全。所以这是一个非常好的主意!
示例案例:
- 你买了一个新的 SSD,空间增加了一倍
- 启动 Ubuntu live,并在其中安装 clonezilla
- 您将旧分区 1:1 克隆到新设备
- 您按照以下说明操作unix.stackechange:D,但是你跳过了使用 luks 的步骤,因为你没有加密硬盘(我只能推荐它)
祝你好运!请注意,如果你不遵循上述“哲学”,你可能会搞砸部分甚至整个系统。我鼓励任何人改进这个解释,因为我只是通过自己的血腥经历才得到这个解释。我希望至少这可以减轻任何读到这篇文章却不知道发生了什么的人的痛苦。