重新平衡 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 ~]$
兩個問題:
- 如果我需要增加
/
257398 個 1-M 塊並減少/home
到 20000 個 1-M 塊,我可以在不重新啟動的情況下執行此操作嗎?如果可以,執行此操作的具體命令序列是什麼?- 如果我想添加一個專用
/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
.