我们的公司标准是 CentOS(似乎更喜欢 LVM),而我主要来自非 LVM 背景,因此我在这个问题上探索了新领域。
我继承了一台旧机器作为日志服务器,不得不重新安装 CentOS。由于主板上的 EHCI 存在问题(无论是通过常规安装 DVD 还是通过 LiveCD GUI 安装),我唯一能找到的可以安装 CentOS 6.3 的就是 LiveCD 文本安装。LiveCD 文本安装不允许我在磁盘上进行自己的分区设置;它只安装 LVM,并且为日志服务器分配了错误的空间……
[mpenning@someHost ~]$ cat /etc/issue
CentOS release 6.3 (Final)
Kernel \r on an \m
[mpenning@someHost ~]$ df -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/mapper/vg_livecd-lv_root
50397 2167 47719 5% /
tmpfs 1850 0 1850 0% /dev/shm
/dev/md127p1 485 65 395 15% /boot
/dev/mapper/vg_livecd-lv_home
227001 188 215283 1% /home
[mpenning@someHost ~]$ sudo lvm vgdisplay
--- Volume group ---
VG Name vg_livecd
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 278.96 GiB
PE Size 4.00 MiB
Total PE 71415
Alloc PE / Size 71415 / 278.96 GiB
Free PE / Size 0 / 0
VG UUID 8qywNz-cmKv-RxAH-WcsV-2nEA-sGg3-fcZ6BU
[mpenning@someHost ~]$
两个问题:
- 如果我需要增加到
/
257398 个 1-M 块并减少/home
到 20000 个 1-M 块,我可以不重新启动就做到这一点吗?如果可以,那么执行此操作的具体命令序列是什么? - 如果我想添加专用
/var
分区,我应该怎么做才能不完全重新安装?
答案1
如果我需要将 / 增加到 257398 个 1-M 块并将 /home 减少到 20000 个 1-M 块,我可以不重新启动就做到这一点吗?如果可以,那么执行此操作的具体命令序列是什么?
您有大约 280GB 的可用空间,其中 50GB 已分配给“/”,230GB 已分配给/home
。由于这代表了您所有的可用空间,因此您必须先释放一些空间。以下是一些选项:
如果您尚未放入任何数据/home
,最简单的方法是丢弃现有文件系统,然后以适当的大小重新创建它:
卸载
/home
:# umount /home
将逻辑卷(LV)的大小减小到 20GB:
# lvreduce -L 20G /dev/vg_livecd/lv_home
重新创建
/home
文件系统:# mke2fs -j -m0 /dev/vg_livecd/lv_home
并重新安装
/home
:# mount /home
有可能收缩 /home
,而不是丢弃它,但这可能有点棘手:
卸载
/home
:# umount /home
fsck
文件系统。下一步可能需要此步骤:# fsck /dev/vg_livecd/lv_home
调整文件系统大小:
# resize2fs /dev/vg_livecd/lv_home 19G
降低 LV:
# lvreduce -L 20G /dev/vg_livecd/lv_home
您会注意到,我将文件系统缩小了一点,比 LV 还要多;这是因为我永远记不住它们是否以相同的方式计算事物,所以我试图留下一点回旋余地。
无论如何,此时您的卷组中大约有 210GB 的可用空间。现在您可以增加根文件系统的大小:
增加根 LV 的大小:
# lvresize -L260G /dev/vg_livecd/lv_root
增加文件系统的大小:
# resize2fs /dev/vg_livecd/lv_root
请注意,由于我在此答案中使用的舍入,您可能需要使用略小于 260G 的数字。此外,LVM 实用程序的最新版本包括为您调整文件系统大小的功能,但我在这些选项可用之前就一直在这样做……所以我不能声称确切地知道它们是如何运作的。
如果我想添加专用的 /var 分区,我应该怎么做才能不完全重新安装?
首先,您可能希望在单用户模式下执行此操作,否则正在运行的进程可能会打开文件,从而/var
难以替换。话虽如此...
再次,您将需要可用空间。如果您没有在上一步中用完所有可用空间,而是留下几 GB 的可用空间,则可以执行以下操作:
创建新的逻辑卷:
# lvcreate -n lv_var -L 10G /dev/vg0
创建一个新的文件系统:
# mke2fs -j -m0 /dev/vg_livecd/lv_var
通过添加以下行来编辑
/etc/fstab
以安装新的 LV :/var
/dev/vg_livcde/lv_var /var ext4 defaults 1 2
但是先不要安装它!
将新的文件系统挂载到方便的地方:
# mount /dev/vg_livecd/lv_var /mnt
复制以下内容
/var
:# rsync -a /var/ /mnt/
重命名
/var
并/var.old
创建新目录:# mv /var /var.old # mkdir /var
将你的新 LV 安装到
/var
:# 卸载 /mnt # 挂载 /var
然后继续启动。当您对一切工作正常感到满意时,您可以删除
/var.old
。
答案2
考虑到:
- 丑陋的 VG 名称
- 您的用例的空间分配不当以及 Larsks 详述的程序负担
- 如果你需要重新安装,就必须再次执行所有这些操作
据我所知,我会尝试通过 netinstall/kickstart 一次性以可重复的方式获得所需的配置。
我的 2cts