使用AMAZON上的CentOS-6.5-base-20150305 (ami-0e80db66)的IAM啓動了一個EC2實例,配置EBS存儲200G。進入系統後,使用df查看存儲空間如下:
[ec2-user@s1 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 14G 2.4G 11G 19% /
tmpfs 7.3G 0 7.3G 0% /dev/shm
/dev/xvda1 477M 73M 379M 17% /boot
很明顯,這裏只顯示了IAM默認加載的大約20G空間,我的EBS有200G,還有180G沒有掛載。這是什麼情況呢?使用lsblk來看看:
[ec2-user@s1 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 200G 0 disk
├─xvda1 202:1 0 500M 0 part /boot
├─xvda2 202:2 0 15.5G 0 part
├─VolGroup-lv_root (dm-0) 253:0 0 13.9G 0 lvm /
└─VolGroup-lv_swap (dm-1) 253:1 0 1.6G 0 lvm [SWAP]
可以看出,xvda被分成了2個分區,第一個分區500M掛載了/boot目錄,第二個分區是個lvm分區,掛載了/和swap目錄。接下來,我要把這180G空間掛載到 / 目錄,也就是擴展 VolGroup-lv_root到195G左右。
第一步,這是一個root EBS,所以無法在當前實例執行硬盤分區操作。將這個EBS從當前實例斷開,同時掛載到另外一個工具實例(我使用了一個免費的Amazon Linux AMI 2015.09.1 (HVM), SSD Volume Type - ami-60b6c60a實例)。注意:由於此時新實例有2個root EBS,此時不能對工具實例做重啓之類的操作,否則無法正確加載root EBS。然後使用parted分區工具對此EBS做分區操作,產生一個新的物理分區xvda3,大小爲剩下的180G。操作如下:
[ec2-user@s1~]$ sudo parted /dev/xvda
GNU Parted 2.1
使用 /dev/xvda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) print
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 419430400s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system 標誌
1 2048s 1026047s 1024000s primary ext4 啓動
2 1026048s 33554431s 32528384s primary lvm
(parted) mkpart primary 33554432s 100%
(parted) print
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 419430400s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system 標誌
1 2048s 1026047s 1024000s primary ext4 啓動
2 1026048s 33554431s 32528384s primary lvm
3 33554432s 419430399s 385875968s primary ext4
(parted) quit
這樣就產生了一個新的物理分區,再次使用lsblk查看:
[ec2-user@s1 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 200G 0 disk
├─xvda1 202:1 0 500M 0 part /boot
├─xvda2 202:2 0 15.5G 0 part
│ ├─VolGroup-lv_root (dm-0) 253:0 0 13.9G 0 lvm /
│ └─VolGroup-lv_swap (dm-1) 253:1 0 1.6G 0 lvm [SWAP]
└─xvda3 202:3 0 184G 0 part
分區操作完成,斷開EBS,重新掛到原來的實例上。
第二步,調整LVM分區。 進入EC2實例,查看LVM的分區情況:
[ec2-user@s1 ~]$ sudo vgdisplay
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
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 15.51 GiB
PE Size 4.00 MiB
Total PE 3970
Alloc PE / Size 3970 / 15.51 GiB
Free PE / Size 0 / 0
VG UUID 4431gC-stvB-LEil-fhM7-WT2F-y4DG-36Uf6w
[ec2-user@s1 ~]$ sudo lvdisplay
--- Logical volume ---
LV Path /dev/VolGroup/lv_root
LV Name lv_root
VG Name VolGroup
LV UUID UTPDa9-4C6b-S0Yk-npmP-HMOM-ZGs0-TctA1e
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2015-03-05 19:27:09 +0900
LV Status available
# open 1
LV Size 13.91 GiB
Current LE 3561
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/VolGroup/lv_swap
LV Name lv_swap
VG Name VolGroup
LV UUID vlCsmT-W0HL-q3wo-3tWf-jL2A-e2mB-C6zAGl
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2015-03-05 19:27:36 +0900
LV Status available
# open 1
LV Size 1.60 GiB
Current LE 409
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
當前卷組VolGroup有2個LV,把新的分區xvda3轉換爲物理卷:
pvcreate /dev/xvda3 /dev/xvda3
擴展卷組,將物理卷xvda3添加到已存在的卷組VolGroup中
vgextend VolGroup /dev/xvda3
增大邏輯卷lv_root大小
lvextend -L +180G /dev/VolGroup/lv_root
再查看存儲結構:
[ec2-user@s1 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 200G 0 disk
├─xvda1 202:1 0 500M 0 part /boot
├─xvda2 202:2 0 15.5G 0 part
│ ├─VolGroup-lv_root (dm-0) 253:0 0 197.9G 0 lvm /
│ └─VolGroup-lv_swap (dm-1) 253:1 0 1.6G 0 lvm [SWAP]
└─xvda3 202:3 0 184G 0 part
└─VolGroup-lv_root (dm-0) 253:0 0 197.9G 0 lvm /
根目錄已經增加到近198G,成功擴展。