重新平衡 CentOS / RHEL Ext4 LVM 分配

重新平衡 CentOS / RHEL Ext4 LVM 分配

我們的公司標準是 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分割區,在不完全重新安裝的情況下應該如何操作?

答案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 詳細說明的過程的負擔
  • 事實上,如果您必須重新安裝,您必須再次執行所有這些操作

AFAIC,我會嘗試透過 netinstall/kickstart 以可重現的方式一次性獲得所需的配置。

我的2克拉

相關內容