Centos

重新平衡 CentOS / RHEL Ext4 LVM 分配

  • August 1, 2013

我們的公司標準是 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 ~]$

兩個問題:

  1. 如果我需要增加/257398 個 1-M 塊並減少/home到 20000 個 1-M 塊,我可以在不重新啟動的情況下執行此操作嗎?如果可以,執行此操作的具體命令序列是什麼?
  2. 如果我想添加一個專用/var分區,我應該如何在不完全重新安裝的情況下進行呢?

如果我需要增加 / 以獲得 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.

引用自:https://serverfault.com/questions/420592