由于Oracle机器的空间不足,导致数据清洗入库的工作做不了,于是就提工单申请扩容,不过运维大哥似乎只给我把硬盘挂上去了,但是并没有将其加入LVM管理。那么只能自己来了。

找到扩容的硬盘

1
fdisk -l

此时会打印出所有的硬盘信息,因这台机器的所有硬盘都是LVM管理的,所以结合lvm,找到新增的一块盘。

1
2
3
4
5
6
Disk /dev/sdf: 536.9 GB, 536870912000 bytes, 1048576000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x1cc15acf

至于怎么找的,我的做法是

1
2
3
4
5
6
PV         VG     Fmt  Attr PSize    PFree
/dev/sda2 centos lvm2 a-- <99.51g 0
/dev/sdb centos lvm2 a-- <200.00g 0
/dev/sdc centos lvm2 a-- <400.00g 0
/dev/sdd centos lvm2 a-- <500.00g 0
/dev/sde centos lvm2 a-- <500.00g 0

这里一看并没有/dev/sdf,最简单的方法就是问一下运维。

对新增的盘进行分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
[root@oracle ~]# fdisk /dev/sdf 
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x1cc15acf.

Command (m for help): n #代表创建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #主分区
Partition number (1-4, default 1): 1 #分区号
First sector (2048-1048575999, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1048575999, default 1048575999):
Using default value 1048575999
Partition 1 of type Linux and of size 500 GiB is set

Command (m for help): t #修改类型
Selected partition 1
Hex code (type L to list all codes): L # 这个说的很明白了,显示所有类型

0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Hex code (type L to list all codes): 8e # LVM是8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p # 打印分区信息

Disk /dev/sdf: 536.9 GB, 536870912000 bytes, 1048576000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x1cc15acf

Device Boot Start End Blocks Id System
/dev/sdf1 2048 1048575999 524286976 8e Linux LVM

Command (m for help): w # 保存
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

这里面需要交互的我都加上了注释,不懂得也可以自己搜索一下。使用partprobe命令重新读取分区表。

创建物理卷(PV)

使用pvcreate命令创建物理卷

1
2
[root@oracle ~]# pvcreate /dev/sdf1
Physical volume "/dev/sdf1" successfully created.

使用pvdisplay查看是否创建成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
[root@oracle ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size 99.51 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 25474
Free PE 0
Allocated PE 25474
PV UUID kgWGmI-qmc3-q622-834g-tXNY-j218-uFhsCb

--- Physical volume ---
PV Name /dev/sdb
VG Name centos
PV Size 200.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 51199
Free PE 0
Allocated PE 51199
PV UUID TBoqQO-5r9y-RhHc-iIKm-ROnO-c7jf-lTgq2c

--- Physical volume ---
PV Name /dev/sdc
VG Name centos
PV Size 400.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 102399
Free PE 0
Allocated PE 102399
PV UUID c8QciE-yIVH-nnF6-e7Mp-MheI-UMVE-paz1Uq

--- Physical volume ---
PV Name /dev/sdd
VG Name centos
PV Size 500.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 127999
Free PE 0
Allocated PE 127999
PV UUID i8nH9Z-W66r-zd6p-SqEl-Wd30-PLcQ-C6OL64

--- Physical volume ---
PV Name /dev/sde
VG Name centos
PV Size 500.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 127999
Free PE 0
Allocated PE 127999
PV UUID 5App29-u3WF-vDYd-LmJa-d1Cm-rLZW-WQ6X7g

"/dev/sdf1" is a new physical volume of "<500.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdf1
VG Name
PV Size <500.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID eF12ME-lyvc-8tzX-ElmB-m5jz-kfJE-8CfT4Q

当然,也可以通过pvs命令查看简要信息

1
2
3
4
5
6
7
8
[root@oracle ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.51g 0
/dev/sdb centos lvm2 a-- <200.00g 0
/dev/sdc centos lvm2 a-- <400.00g 0
/dev/sdd centos lvm2 a-- <500.00g 0
/dev/sde centos lvm2 a-- <500.00g 0
/dev/sdf1 lvm2 --- <500.00g <500.00g

将PV加入VG(卷组)

先查看VG信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@oracle ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 5
Metadata Sequence No 12
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 5
Act PV 5
VG Size <1.66 TiB
PE Size 4.00 MiB
Total PE 435070
Alloc PE / Size 435070 / <1.66 TiB
Free PE / Size 0 / 0
VG UUID fBqolI-GtAm-slid-BvC2-Zf3G-oJqq-5utdM8

使用vgextend命令吧/dev/sdf1加入到centos这个VG中。

1
2
[root@oracle ~]# vgextend centos /dev/sdf1
Volume group "centos" successfully extended

检查下VG信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@oracle ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 6
Metadata Sequence No 14
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 6
Act PV 6
VG Size <2.15 TiB
PE Size 4.00 MiB
Total PE 563069
Alloc PE / Size 435070 / <1.66 TiB
Free PE / Size 127999 / <500.00 GiB
VG UUID fBqolI-GtAm-slid-BvC2-Zf3G-oJqq-5utdM8

这里会输出Free PE / Size 127999 / <500.00 GiB,则代表加入成功。

对逻辑卷(LV)进行扩容

查看逻辑卷

1
2
3
4
5
[root@oracle ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- 1.7t
root centos -wi-ao---- 50.00g
swap centos -wi-ao---- <7.88g

这里我要扩容的是home这个LV。使用lvextend命令进行逻辑卷扩容,这里我选择把所有的可用空间都扩容到/dev/centos/home中。

1
2
3
[root@oracle ~]# lvextend -l +100%FREE /dev/centos/home
Size of logical volume centos/home changed from 1.60 TiB (420254 extents) to 2.09 TiB (548253 extents).
Logical volume centos/home successfully resized.

此时查看硬盘信息,发现空间没变:

1
2
3
4
5
6
7
8
9
10
11
[root@oracle ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 12G 39G 23% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 9.6M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda1 497M 216M 281M 44% /boot
/dev/mapper/centos-home 1.7T 1.5T 206G 88% /home
tmpfs 3.2G 12K 3.2G 1% /run/user/42
tmpfs 3.2G 0 3.2G 0% /run/user/0

别急,还需要使用xfs_growfs命令在线调整xfs格式文件系统的大小。PS:CentOS6使用的是resize2fs

1
2
3
4
5
6
7
8
9
10
11
[root@oracle ~]# xfs_growfs /dev/centos/home
meta-data=/dev/mapper/centos-home isize=256 agcount=158, agsize=2724352 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0 spinodes=0
data = bsize=4096 blocks=430340096, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=5321, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 430340096 to 561411072

此时,再次查看硬盘信息,已经完成扩容。

1
2
3
4
5
6
7
8
9
10
11
[root@oracle ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 12G 39G 23% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 9.6M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda1 497M 216M 281M 44% /boot
/dev/mapper/centos-home 2.1T 1.5T 706G 68% /home
tmpfs 3.2G 12K 3.2G 1% /run/user/42
tmpfs 3.2G 0 3.2G 0% /run/user/0

附加内容

如果不是在原有的LV上扩容,那么可以使用lvcreate命令重新创建新的逻辑卷

创建逻辑卷

1
lvcreate -L 500G -n home1 centos

其中 home1就是LV的名字,centos是VG的名字。

格式化并挂载

使用mkfs.xfs格式化为CentOS7的xfs文件系统

1
mkfs.xfs /dev/centos/home1

将其挂载到/data

1
mount -t xfs /dev/centos/home1 /data

设置开机自动挂载

编辑/etc/fstab文件,加入最后一行

1
/dev/mapper/centos-home1 /data                   xfs     defaults        0 0

此时就完成了创建新的逻辑卷(LV)的操作。