CentOS7默認安裝的/home中轉移空間到根目錄/ - LVM操作簡明教程


一、基礎概念

Cent0S 7默認啟用LVM2(Logical Volume Manager),把機器的一塊硬盤分為兩個區sda1和sda2,其中分區sda1作為系統盤/boot掛載,少量空間;sda2作為一個物理卷並且完全作為邏輯卷組VG(Volume Group)centos,在這個邏輯卷組centos中建立三個邏輯卷LV(Logical Volume)root和home還有swap,分別掛載到根目錄/和/home以及swap。而兩個分區sda1和sda2上都建立了文件系統XFS,文件系統XFS作為RedHat的默認文件系統也有它的考慮,成為繼ext3,ext4之后的主流文件系統。

幾個概念的關系:M個物理硬盤HD或者物理硬盤中的分區一起組建為一個邏輯卷組VG及存儲池,在卷組VG中創建N個邏輯卷LV,在一個邏輯卷LV中創建文件系統比如xfs。物理硬盤/分區、邏輯卷有最小基本尋址單元,CentOS7默認的大小為4MB,二者一一對應,類似於鏈接或者變量引用,但是一個二者關系並非一直不變,因為物理硬盤可能發生變化而邏輯卷自動調整。創建卷組和邏輯卷,會類似於創建分區一樣在磁盤開始位置寫入卷的信息VGDA(卷組描述符區域,Volume Group Descriptor Area)用於識別。邏輯卷的好處在於屏蔽物理底層支撐,可自由擴展變更,而不用擔心硬盤或者分區的物理空間局限,也就不會存在為了擴展分區大小而去備份/擴展分區重新格式化硬盤等問題。

HD/分區--通過pvcreate->PV--通過vgcreate(vgchange)/vgextend-->VG--通過lvcreate/lvextend-->LV--通過mkfs-->FS--通過xfs_growfs等-->df磁盤生效

但是關鍵點在於,CentOS 7默認安裝時/home占用太多空間,根目錄相較而言就小得多(只有50G),而OpenStack安裝以及存儲的東西都在根目錄下。上傳幾個鏡像說不定就把你的根目錄空間耗盡。不像其他文件系統ext3,ext4或者reiserfs等,有命令(resize2fs,resize_reiserfs)直接支持縮小文件系統的大小,默認安裝的xfs支持擴展增大但是不支持縮小空間

 

二、步驟概覽

所以下面要做的步驟大概為:(直接root用戶登錄系統,本機或者ssh root過去,如果使用當前普通用戶會遇到點不必要的麻煩

1. 備份/home/用戶文件,要是沒啥內容則忽略這步(為什么非要這個/home,刪掉直接用root?還是保留它,它存在也有道理的,再說生產環境還是不要只用root)

2. umount /home 卸載並lvremove刪除這個home邏輯卷,釋放它的空間,vgdisplay查看卷組可用空間大小

3. lvcreate新建一個新的home卷,並在其上mkfs建立xfs文件系統,(分配掛載到/home - 不用更改/etc/fstab,重啟即可,) 拷貝回來之前的內容

(這個時候空余的空間隨便你分配,可以再建立別的邏輯卷,或者直接空閑下來以后使用,也可以直奔主題的走下面的第四步)

4. 把之前的home邏輯卷釋放並分配新卷home之后剩下的空間,lvextend分配給root卷,並用命令xfs_growfs擴展它的文件系統空間

 

三、相關命令

看看大概的命令有哪些

# pv

pvchange   pvck       pvcreate   pvdisplay  pvmove     pvremove   pvresize   pvs        pvscan

# vb

  1. vgcfgbackup vgchange vgconvert vgdisplay vgextend vgimportclone vgmknodes vgremove vgs
  2. vgsplit vgcfgrestore vgck vgcreate vgexport vgimport vgmerge vgreduce vgrename
  3. vgscan

# lv

  1. lvchange lvcreate lvextend lvmchange lvmdiskscan lvmetad lvmsar lvremove lvresize lvscan
  2. lvconvert lvdisplay lvm

 

四、默認安裝情況

# df -h //查看磁盤使用情況,邏輯卷的掛載格式為/dev/mapper/VolumeGroupName-LogicalVolumeName

# cat /etc/fstab

# vgdisplay //查看邏輯卷組情況

# lvdisplay //查看邏輯卷情況,默認三個,root、home和交換空間swap

 

五、操作步驟

1. 備份/home中的用戶數據
[root@localhost /]# mkdir /backup && mv /home/* /backup
[root@localhost /]# ls /home/

2. 卸載這個/home並刪除邏輯卷home

# umount /home

# df -h //查看磁盤情況

# lvremove /dev/centos/home //刪除邏輯卷home

# vgdisplay //查看卷組可用空間

這里注意,Free PE / Size 中顯示的空間為卷組的空閑空間65.12G之前為64M,也就是剛才刪除的邏輯卷home所占用的空間,我們就從這個當中拿出一部分比如50G作為home

以下為創建新卷(根據實際情況修改):

3. 新建一個卷home,fdisk格式化為8e格式,文件系統還是搞為xfs(同樣掛載到/home)

# lvcreate -L 50G -n home centos //L表示大小,默認單位為M;n表示卷名;這里的centos是CentOS7安裝系統的時候就默認建立好的卷組名

  1. WARNING: xfs signature detected on /dev/centos/home at offset 0. Wipe it? [y/n]: y
  2. Wiping xfs signature on /dev/centos/home.
  3. Logical volume "home" created.

# lvdisplay //查看邏輯卷home

  1. --- Logical volume ---
  2. LV Path /dev/centos/home
  3. LV Name home
  4. VG Name centos
  5. LV UUID b5lLlv-FQPY-dT43-SmzV-sSLA-4QqP-gdQqAP
  6. LV Write Access read/write
  7. LV Creation host, time localhost, 2015-11-13 14:05:06 +0800
  8. LV Status available
  9. # open 0
  10. LV Size 50.00 GiB
  11. Current LE 12800
  12. Segments 1
  13. Allocation inherit
  14. Read ahead sectors auto
  15. - currently set to 256
  16. Block device 253:2

# vgdisplay //再次查看卷組空間大小

  1. --- Volume group ---
  2. VG Name centos
  3. System ID
  4. Format lvm2
  5. Metadata Areas 1
  6. Metadata Sequence No 8
  7. VG Access read/write
  8. VG Status resizable
  9. MAX LV 0
  10. Cur LV 3
  11. Open LV 2
  12. Max PV 0
  13. Cur PV 1
  14. Act PV 1
  15. VG Size 931.02 GiB
  16. PE Size 4.00 MiB
  17. Total PE 238341
  18. Alloc PE / Size 27584 / 107.75 GiB
  19. Free PE / Size 210757 / 823.27 GiB
  20. VG UUID IFQnYm-fCLh-38mD-Duid-nYXQ-qktX-3F1atk

[# vgchange -ay centos  //可選步驟:激活卷組centos,使得這個新建的home邏輯卷生效(用vgchange而不用lvchange)]

  3 logical volume(s) in volume group "centos" now active

# mkfs -t xfs /dev/centos/home //在新建的邏輯卷home上建立xfs文件系統

  1. meta-data=/dev/centos/home isize=256 agcount=4, agsize=3276800 blks
  2. = sectsz=4096 attr=2, projid32bit=1
  3. = crc=0 finobt=0
  4. data = bsize=4096 blocks=13107200, imaxpct=25
  5. = sunit=0 swidth=0 blks
  6. naming =version 2 bsize=4096 ascii-ci=0 ftype=0
  7. log =internal log bsize=4096 blocks=6400, version=2
  8. = sectsz=4096 sunit=1 blks, lazy-count=1
  9. realtime =none extsz=4096 blocks=0, rtextents=0

# mount /dev/centos/home /home/ //把這個新邏輯卷home掛到之前的文件夾/home中去,直接重啟用fstab來掛載也行

# df -h //現在來查看磁盤使用情況

  1. Filesystem Size Used Avail Use% Mounted on
  2. /dev/mapper/centos-root 50G 17G 34G 33% /
  3. devtmpfs 3.9G 0 3.9G 0% /dev
  4. tmpfs 3.9G 84K 3.9G 1% /dev/shm
  5. tmpfs 3.9G 9.0M 3.9G 1% /run
  6. tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
  7. /dev/sda1 494M 133M 362M 27% /boot
  8. /dev/mapper/centos-home 50G 33M 50G 1% /home

# mv /backup/* /home/ //再把之前拷出來的東西拷回新建的/home中,拷貝完成就可以直接用這個普通用戶來桌面登錄系統了,不用重啟

4. 最后再把釋放出來多余的空間分配給root卷並xfs_growfs擴展文件系統
# lvextend -L +65.12G /dev/mapper/centos-root //把剩下的65.12G現在分配給root卷;+號表示在原來的基礎上額外增加,不要加好則設定為具體額度

 

# lvdisplay //查看邏輯卷和卷組情況,這下root的空間就多達到115G,之前的是50G

[# vgchange -ay centos //可選步驟:再次激活下卷組centos]

# df -h //不使用xfs_growfs擴展文件系統,磁盤是不認得多的空間的

# xfs_growfs /dev/mapper/centos-root //擴展root卷

# df -h //再看root大小已經生效,116G了

六、命令匯總

簡單總結下,就是下面幾條命令:

    1. # mkdir /backup
    2. # mv /home/* /backup/
    3. # umount /home
    4. # lvremove /dev/centos/home
    5. # lvcreate -L 50G -n home cents
    6. # mkfs -t xfs /dev/centos/home
    7. # mv /backup/* /home/
    8. # lvextend -L +xxxG /dev/centos/root
    9. # xfs_growfs root
    10. # rm -rf /backup
       轉載於:https://blog.csdn.net/evandeng2009/article/details/49814097?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM