1. 程式人生 > 其它 >LVM----從CentOS7預設安裝的/home中轉移空間到根目錄/

LVM----從CentOS7預設安裝的/home中轉移空間到根目錄/

LVM----從CentOS7預設安裝的/home中轉移空間到根目錄/

一、基礎概念

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擴充套件它的檔案系統空間

三、相關命令

看看大概的命令有哪些
[root@sunli ~]# pv
pvchange   pvck       pvcreate   pvdisplay  pvmove     pvremove   pvresize   pvs        pvscan
[root@sunli ~]# vg
vgcfgbackup    vgck           vgdisplay      vgimport       vgmknodes      vgrename       vgsplit
vgcfgrestore   vgconvert      vgexport       vgimportclone  vgreduce       vgs
vgchange       vgcreate       vgextend       vgmerge        vgremove       vgscan
[root@sunli 
~]# lv lvchange lvdisplay lvmconf lvmdump lvmsadc lvremove lvs lvconvert lvextend lvmconfig lvmetad lvmsar lvrename lvscan lvcreate lvm lvmdiskscan lvmpolld lvreduce lvresize

四、預設安裝情況

# df -h //檢視磁碟使用情況,邏輯卷的掛載格式為/dev/mapper/VolumeGroupName-LogicalVolumeName
Filesystem               Size  Used Avail Use% Mounted on  
/dev/mapper/centos-root   50G  4.8G   46G  10% /  
devtmpfs                 3.9G     0  3.9G   0% /dev  
tmpfs                    3.9G  140K  3.9G   1% /dev/shm  
 tmpfs                    3.9G  8.9M  3.9G   1% /run  
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup  
/dev/mapper/centos-home  873G   12G  862G   2% /home  
/dev/sda1                494M  133M  362M  27% /boot
# cat /etc/fstab
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=6abe266a-12fe-4361-9417-8d317bc25c8d /boot xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
# vgdisplay //檢視邏輯卷組情況
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  6
  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               931.02 GiB
  PE Size               4.00 MiB
  Total PE              238341
  Alloc PE / Size       238325 / 930.96 GiB
  Free  PE / Size       16 / 64.00 MiB
  VG UUID               IFQnYm-fCLh-38mD-Duid-nYXQ-qktX-3F1atk
# lvdisplay //檢視邏輯卷情況,預設三個,root、home和交換空間swap
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                FGrPuO-2T02-1OfG-0dcz-oVTy-qcsh-IxEmd4
  LV Write Access        read/write
  LV Creation host, time localhost, 2015-11-11 04:46:00 +0800
  LV Status              available
  # open                 2
  LV Size                7.75 GiB
  Current LE             1984
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
   
  --- Logical volume ---
  LV Path                /dev/centos/home
  LV Name                home
  VG Name                centos
  LV UUID                x7Oh0t-6R1x-ey7G-G5OX-PnBO-VI0C-kcRuvO
  LV Write Access        read/write
  LV Creation host, time localhost, 2015-11-11 04:46:01 +0800
  LV Status              available
  # open                 1
  LV Size                873.21 GiB
  Current LE             223541
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2
   
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                PgscNL-rvyY-21Z1-tVe3-80vC-ONCw-VlvmYs
  LV Write Access        read/write
  LV Creation host, time localhost, 2015-11-11 04:46:04 +0800
  LV Status              available
  # open                 1
  LV Size                50.00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

五、操作步驟

1. 備份/home中的使用者資料

[root@localhost /]# mkdir /backup && mv /home/* /backup
[root@localhost /]# ls /home/

2. 解除安裝這個/home並刪除邏輯卷home

# umount /home
# df -h //檢視磁碟情況
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G   17G   34G  33% /
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G   84K  3.9G   1% /dev/shm
tmpfs                    3.9G  9.0M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1                494M  133M  362M  27% /boot
# lvremove /dev/centos/home //刪除邏輯卷home
Do you really want to remove active logical volume home? [y/n]: y
  Logical volume "home" successfully removed
# vgdisplay //檢視卷組可用空間
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               931.02 GiB
  PE Size               4.00 MiB
  Total PE              238341
  Alloc PE / Size       14784 / 57.75 GiB
  Free  PE / Size       223557 / 873.27 GiB
  VG UUID               IFQnYm-fCLh-38mD-Duid-nYXQ-qktX-3F1atk
這裡注意,Free PE / Size 中顯示的空間為卷組的空閒空間873G,之前為64M,也就是剛才刪除的邏輯卷home所佔用的空間,我們就從這個當中拿出一部分比如50G作為home

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

# lvcreate -L 50G -n home centos //L表示大小,預設單位為M;n表示卷名;這裡的centos是CentOS7安裝系統的時候就預設建立好的卷組名
WARNING: xfs signature detected on /dev/centos/home at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/centos/home.
  Logical volume "home" created.
# lvdisplay //檢視邏輯卷home
  --- Logical volume ---
  LV Path                /dev/centos/home
  LV Name                home
  VG Name                centos
  LV UUID                b5lLlv-FQPY-dT43-SmzV-sSLA-4QqP-gdQqAP
  LV Write Access        read/write
  LV Creation host, time localhost, 2015-11-13 14:05:06 +0800
  LV Status              available
  # open                 0
  LV Size                50.00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2
 # vgdisplay //再次檢視卷組空間大小
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  8
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               931.02 GiB
  PE Size               4.00 MiB
  Total PE              238341
  Alloc PE / Size       27584 / 107.75 GiB
  Free  PE / Size       210757 / 823.27 GiB
  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檔案系統
meta-data=/dev/centos/home       isize=256    agcount=4, agsize=3276800 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=6400, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
# mount /dev/centos/home /home/ //把這個新邏輯卷home掛到之前的資料夾/home中去,直接重啟用fstab來掛載也行
# df -h //現在來檢視磁碟使用情況
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G   17G   34G  33% /
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G   84K  3.9G   1% /dev/shm
tmpfs                    3.9G  9.0M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1                494M  133M  362M  27% /boot
/dev/mapper/centos-home   50G   33M   50G   1% /home
# mv /backup/* /home/ //再把之前拷出來的東西拷回新建的/home中,拷貝完成就可以直接用這個普通使用者來桌面登入系統了,不用重啟

4. 最後再把釋放出來多餘的空間分配給root卷並xfs_growfs擴充套件檔案系統

# lvextend -L +823G /dev/centos/root //把剩下的823G現在分配給root卷,剩下那點渣渣空間讓它閒著;+號表示在原來的基礎上額外增加,不要加好則設定為具體額度
  Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to 873.00 GiB (223488 extents).
  Logical volume root successfully resized
# lvdisplay //檢視邏輯卷和卷組情況,這下root的空間就多達到873G,之前的是50G
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                PgscNL-rvyY-21Z1-tVe3-80vC-ONCw-VlvmYs
  LV Write Access        read/write
  LV Creation host, time localhost, 2015-11-11 04:46:04 +0800
  LV Status              available
  # open                 1
  LV Size                873.00 GiB
  Current LE             223488
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
# vgchange -ay centos //可選步驟:再次啟用下卷組centos
# df -h //不使用xfs_growfs擴充套件檔案系統,磁碟是不認得多的空間的
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  4.8G   46G  10% /
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G  140K  3.9G   1% /dev/shm
tmpfs                    3.9G  9.0M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1                494M  133M  362M  27% /boot
/dev/mapper/centos-home   50G   12G   39G  23% /home
# xfs_growfs /dev/centos/root //擴充套件root卷
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=3276800 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=6400, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 13107200 to 228851712
# df -h //再看root大小已經生效,800多G了
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  873G  4.8G  869G   1% /
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G  140K  3.9G   1% /dev/shm
tmpfs                    3.9G  9.0M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1                494M  133M  362M  27% /boot
/dev/mapper/centos-home   50G   12G   39G  23% /home

六、命令彙總

簡單總結下,就是下面幾條命令:
# mkdir /backup
# mv /home/* /backup/
# umount /home
# lvremove /dev/centos/home
# lvcreate -L 50G -n home cents
# mkfs -t xfs /dev/centos/home
# mv /backup/* /home/
# lvextend -L +xxxG /dev/centos/root
# xfs_growfs root
# rm -rf /backup

新盤做LVM,思路---PV----VG---LV

lsblk
##建立PV         
pvcreate /dev/sdb
##檢視當前PV    
pvscan      或者      pvs
##建立VG
vgcreate   datevg   /dev/sdb          (datavg是起的VG名字)
##檢視當前VG
vgscan
##加入新的PV到VG datevg
vgextend datevg /dev/sdc
#建立LV    
lvcreate -L 200M -n lv1 datavg     
(-L(指定lv的大小) 指定為200m     lv1為起的LV名字  從datevg裡建立)
## 檢視LV
lvscan      
/dev/datevg/lv1    200m
##格式化,建立檔案系統掛載
mkfs.xfs /dev/datevg/lv1    或者    mkfs.ext4 /dev/datevg/lv1
mkdir /mnt/lv1   
##臨時掛載
mount /dev/datevg/lv1  /mnt/lv1
mount -a
df -h    (df-Th)       加上TYPE 型別
LVM完成
LVM的解除安裝
[root@localhost ~]# lvremove /dev/datavg/lv1
[root@localhost ~]# vgremove datavg
[root@localhost ~]# pvremove /dev/sdb