我的 Centos6x64 VM 有一个约 500G 的 xvda 磁盘。最初,8G分配给xvda1并挂载在/上。 xvda 中剩余的 500G 磁盘空间尚未分配。因此,我决定使剩余的磁盘空间可用,并使用 fdisk、pvcreate、vgcreate、lvcreate、格式化并最后更新 fstab 以自动安装它们,创建了一个带有逻辑卷的分区 xvda2。
与相应文件夹(挂载点)的关系为:
- /dev/centos/home ..../home [200G]
- /dev/centos/root ..../ [100G]
问题是:
- /home 似乎已正确安装,如所示大小
df -h
是197G。 - 但是root上的安装不正确。在结果中
df -h
下面,尺寸为/dev/xvda1
镶嵌在/boot
是7.8G,这是正确的。但是,尺寸/dev/mapper/centos-root
镶嵌在/
错误显示7.8G。它应该显示大约 100G。它错误地显示了与以下磁盘空间相同的磁盘空间/dev/xvda1
。
问题:
- 我尝试整理了以下一些结果,供大家参考。请帮助解决这个问题。我可以做什么来纠正这个问题?
- 另外,如果我只是想将分配给 xvda1 的磁盘空间从 8G 增加到 200G,是否有更简单更直接的方法?在谷歌搜索上,我发现了这个邮政这非常符合目标。但我无法让它成功重新启动,因为它卡在 grub 屏幕上。我没有太多关于此失败细节的信息。当使用 fdisk 分配额外的磁盘空间时,我是否错过了一些设置先决条件,例如:格式化?
我对此很陌生并且陷入困境。请帮忙。
系统初始状态:
# fdisk -l
Disk /dev/xvda: 536.9 GB, 536870912000 bytes 255 heads, 63 sectors/track, 65270 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000611ee
Device Boot Start End Blocks Id System
/dev/xvda1 * 1 1045 8387584 83 Linux
Disk /dev/xvdb: 32.2 GB, 32204390400 bytes 255 heads, 63 sectors/track, 3915 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 500G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdb 202:16 0 30G 0 disk /mnt
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.8G 897M 6.5G 12% /
tmpfs 3.6G 0 3.6G 0% /dev/shm
/dev/xvdb 30G 173M 28G 1% /mnt
# cat /etc/fstab
UUID=2d0f2d55-672b-4c05-8eba-9421dd808ad7 / ext4 defaults 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/xvdb /mnt auto defaults,nofail,comment=cloudconfig 0 2
我执行的步骤:
- fdisk /dev/xvda ...(n > p = 2 > t = 8e)
- 重启
- pvcreate /dev/xvda2
- vgcreate centos /dev/xvda2
- lvcreate -n home -L 200G centos
- lvcreate -n root -L 100G centos
- lvcreate -n swap -L 4G分
- mkfs.ext4 /dev/centos/root
- mkfs.ext4 /dev/centos/home
- mkswap /dev/centos/swap
- 挂载 /dev/xvda1 /boot
- ...这就是我想做的但不被允许的。
- 因此,我将
/etc/fstab
挂载点从/dev/xvda1
更新并更改/
为/boot
。但这也行不通。
- 在下面提供的结果中,
df -h
显示了两者的正确安装点/dev/xvda1 i.e. /boot
,/dev/mapper/centos-root i.e. /
但显示的磁盘空间/dev/mapper/centos-root = 7.8G
不正确。我正期待着~100G
。- 此外, 的结果
lsblk
显示 的空安装点centos-root (dm-1)
。对于centos-root
,我预期的安装点/
和/dev/xvda1
预期的安装点/boot
。- 挂载 /dev/centos/root/
- 挂载 /dev/centos/home /home
- 在 /etc/fstab 中创建相应的条目(请参阅
cat /etc/fstab
下文)- 立即关闭 -r
- mkhomedir_helper centos
- 重新启动后,centos 的主目录变得无法访问,因此我收到错误“无法 chdir 到主目录 /home/centos:没有这样的文件或目录”。为了解决这个问题,我必须运行上面的命令来为用户 centos 重新创建主目录
猫 /etc/fstab
UUID=3a75c67b-5053-4863-963e-c6a572f13972 / ext4 defaults 1 1
UUID=2d0f2d55-672b-4c05-8eba-9421dd808ad7 /boot ext4 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/xvdb /mnt auto defaults,nofail,comment=cloudconfig 0 2
/dev/mapper/centos-home /home ext4 defaults 0 0
fdisk -l
Device Boot Start End Blocks Id System
/dev/xvda1 * 1 1045 8387584 83 Linux
/dev/xvda2 1045 65270 515892667 8e Linux LVM
df-h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 7.8G 898M 6.5G 12% /
tmpfs 3.6G 0 3.6G 0% /dev/shm
/dev/xvda1 7.8G 898M 6.5G 12% /boot
/dev/xvdb 30G 173M 28G 1% /mnt
/dev/mapper/centos-home 197G 60M 187G 1% /home
LSBLK
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 500G 0 disk
├─xvda1 202:1 0 8G 0 part /
└─xvda2 202:2 0 492G 0 part
├─centos-home (dm-0) 253:0 0 200G 0 lvm /home
├─centos-root (dm-1) 253:1 0 100G 0 lvm
└─centos-swap (dm-2) 253:2 0 4G 0 lvm
xvdb 202:16 0 30G 0 disk /mnt
黑子
/dev/xvda1: UUID="2d0f2d55-672b-4c05-8eba-9421dd808ad7" TYPE="ext4"
/dev/xvdb: UUID="3656cb72-7e94-4e63-81ea-66397ad45d13" SEC_TYPE="ext2" TYPE="ext3"
/dev/xvda2: UUID="ASXeKh-x8xL-nDVF-afzq-zU8a-sCbd-qGM6pS" TYPE="LVM2_member"
/dev/mapper/centos-home: UUID="4510891a-354d-4486-bd47-95d474f197bb" TYPE="ext4"
/dev/mapper/centos-root: UUID="3a75c67b-5053-4863-963e-c6a572f13972" TYPE="ext4"
/dev/mapper/centos-swap: UUID="5dff9552-3d36-4cfa-936c-28e02c1ae108" TYPE="swap"
lv显示
--- Logical volume ---
LV Path /dev/centos/home
LV Name home
VG Name centos
LV UUID lFWQxa-mqgc-Ur8t-npDc-O2NU-r6J4-UhC2j2
LV Write Access read/write
LV Creation host, time ip-xx-xx-xx-xx.ec2.internal, 2018-06-16 07:18:22 +0000
LV Status available
# open 1
LV Size 200.00 GiB
Current LE 51200
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID UQ6oAD-JyRa-cb8l-VmgW-aZh9-qbof-Z1Z9af
LV Write Access read/write
LV Creation host, time ip-xx-xx-xx-xx.ec2.internal, 2018-06-16 07:18:22 +0000
LV Status available
# open 0
LV Size 100.00 GiB
Current LE 25600
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID QyY2z9-5EpX-D8dY-DORZ-9BbY-TqgA-07fc3X
LV Write Access read/write
LV Creation host, time ip-xx-xx-xx-xx.ec2.internal, 2018-06-16 07:18:24 +0000
LV Status available
# open 0
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
答案1
您尝试挂载的文件系统/boot
( /dev/xvda1
) 实际上是您的/
.因此,即使您将其安装在所需的安装点,它也无法工作,因为您真正想要安装的是/boot
内部的目录/dev/xvda1
,并且您无法安装文件系统中的目录。
您创建了 LVM 逻辑卷和文件系统/
,/home
但没有在其中放入任何数据;您没有将现有文件系统迁移到新的块设备。
此外,GRUB 不知道您的新/
文件系统,因此它将尝试从原始/
.以下概述了如何使用这些逻辑卷:
警告
在执行任何这些步骤之前,请先进行备份。事情可能会出现可怕的错误,唯一好的“撤消按钮”就是备份。
安全步骤
- 重新启动进入单用户模式。您将复制实时文件系统,因此您希望运行的东西尽可能少。
- 将当前目录绑定挂载
/
到新位置,例如主目录中的目录。 - 也在您的主目录中安装新的
/
逻辑卷。/home
/
使用绑定挂载复制现有文件并将其排除/home
到新/
逻辑卷。使用绑定挂载作为复制源非常重要,因为它可以避免复制其他已挂载的文件系统;所有内容都挂载在 下的某个位置/
。- 将现有的
/home
(再次使用绑定安装)复制到新的/home
逻辑卷。 - 重新启动,当 GRUB 菜单出现时,选择适当的内核条目并按“e”。这将使您进入编辑模式。添加/编辑变量
realroot
,使其值为/dev/mapper/centos-root
。我假设您的 initrd 支持 LVM。然后按 ENTER 键。 - 如果一切顺利,您的系统现在将从根逻辑卷启动。
不安全的步骤
现在开始了一些步骤,这使得这个过程很难撤销。这就是事情可以真的出错。拿出伏特加(当然是为了庆祝后者)并继续:
- 将旧的安装
/
在某处。 - 卸载
/boot
/boot
从旧卷复制/
到逻辑卷之一中的目录。如果你敢的话,你甚至可以将它复制到 tmpfs 中。这仅作为接下来两个步骤的临时备份。- 到了不归路了:
mkfs.ext4 /dev/xvda1
。您的操作系统将不再按原样启动。 mount /dev/xvda1 /boot
/boot
使用您在步骤 3 中所做的备份进行填充。- 仔细检查文件系统的 UUID
/boot
,并/etc/fstab
根据需要进行更新。 - 现在是时候更新 GRUB2 了。运行
grub-mkconfig | less
并查看它是否选择了正确的块设备。您应该看到realroot
与您手动添加的条目相同的条目。如果一切正常,请运行grub-mkconfig -o /boot/grub/grub.cfg
以写出新的 GRUB 配置。 - 重启。将发生以下两种情况之一:系统将成功启动,或者...不会。不管怎样,这就是伏特加登场的时候了。