服务器存储不够了之在原逻辑卷上扩容的操作
当然上一篇的直接格式化新挂载的操作,也有当初的考量,其实说白了,任何的操作,都是根据你自己当前的实际情况来作出相对应的方案的。
上次扩容之所以采用直接挂在新磁盘的方式,有两点重要原因,一方面原本旧挂载的分区就是一个普通分区,并没有做成逻辑卷,这点很重要,基本上决定了你没办法再重新来做了。另一方面就是那次扩容是 T 级别的,像这种庞大的动静,还是让原有的磁盘安静的做一个 “美盘子” 就好了,不可轻易打扰啊。
那么现在进入今天的正题,说一下如何在原有逻辑卷基础上进行扩容。
# 1,报警。
还是风平浪静的一个下午,我们乖乖的zabbix
对接的钉钉报警又来通知啦。
通过报警很容易得知,磁盘空间已经不足 20% 了。那就先来一波查看呗。
# 2,巡查。
先看 zabbix 上边显示的,容量正一点一点被用去。
然后去服务器上看:
嗯哼,这台机器貌似应该不是只有 50G 的额,果然,不一会儿,当初创建此机器的小伙伴说给到的容量是 150G 的,应该是没有完整分配出来。
查看磁盘:
fdisk -l
果然通过查看发现原本分配 150G 的磁盘只适用了 50 个 G,而且刚好之前是通过逻辑卷的方式进行的磁盘管理,那么现在就通过 lvm 的特性直接对磁盘进行扩容呗。
# 3,分区。
整套操作简化命令先罗列开来。
fdisk /dev/sda
---》n #新增一个分区。
---》p #分区类型选择为主分区。
---》回车 #可以填入3,也可以直接按其默认的直接回车。
---》回车 #默认(起始扇区)
---》回车 #默认(结束扇区)这里因为只剩下100G了,所以就全部分配了。
---》p #再次查看是否划分成功。
---》
---》t #修改分区类型。
---》回车 #也就是默认的刚刚创建的3。
---》L #列出所有分区类型。
---》8e #填入8e,将刚创建的分区3修改为lvm。
---》p #此刻再次检查是否变成与2一样的lvm。
---》w #保存并退出。
2
3
4
5
6
7
8
9
10
11
12
13
14
接下来将具体输出详细展示一遍。
fdisk /dev/sda
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.
Command (m for help):
---》p #查看一眼之前分区的情况。
Disk /dev/sda: 161.1 GB, 161061273600 bytes, 314572800 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: 0x000312a8
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 718847 358400 83 Linux
/dev/sda2 718848 104857599 52069376 8e Linux LVM
Command (m for help):
---》n #新增一个分区。
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p):
---》p #分区类型选择为主分区。
Partition number (3,4, default 3):
---》回车 #可以填入3,也可以直接按其默认的直接回车。
Last sector, +sectors or +size{K,M,G} (104857600-314572799, default 314572799):
---》回车 #默认(起始扇区)
---》回车 #默认(结束扇区)这里因为只剩下100G了,所以就全部分配了。
Using default value 314572799
Partition 3 of type Linux and of size 100 GiB is set
Command (m for help):
---》p #再次查看是否划分成功。
Disk /dev/sda: 161.1 GB, 161061273600 bytes, 314572800 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: 0x000312a8
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 718847 358400 83 Linux
/dev/sda2 718848 104857599 52069376 8e Linux LVM
/dev/sda3 104857600 314572799 104857600 83 Linux
Command (m for help):
---》t #修改分区类型。
Partition number (1-3, default 3):
---》回车 #也就是默认的刚刚创建的3。
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 #填入8e,将刚创建的分区3修改为lvm。
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help):
---》p #此刻再次检查是否变成与2一样的lvm。
Disk /dev/sda: 161.1 GB, 161061273600 bytes, 314572800 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: 0x000312a8
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 718847 358400 83 Linux
/dev/sda2 718848 104857599 52069376 8e Linux LVM
/dev/sda3 104857600 314572799 104857600 8e Linux LVM
Command (m for help):
---》w #保存并退出。
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
此时保存退出之后可以先通过ls /dev/sda3
看一下是否有 sda3。如果没有,那么使用partprobe
命令进行加载,如果条件允许,也可以通过重启机器进行加载。
# 4,格式化。
格式化分区。
---》mkfs.ext3 /dev/sda3
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26214400 blocks
1310720 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information:
done
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
格式化之后就可以进行扩容的操作了。
# 5,扩容。
操作之前首先查看一下原来的情况。
---》pvscan
PV /dev/sda2 VG centos lvm2 [49.66 GiB / 0 free]
Total: 1 [49.66 GiB] / in use: 1 [49.66 GiB] / in no VG: 0 [0 ]
---》vgscan
Reading all physical volumes. This may take a while...
Found volume group "centos" using metadata type lvm2
---》lvscan
ACTIVE '/dev/centos/root' [49.66 GiB] inherit
2
3
4
5
6
7
8
9
10
11
12
13
这里可以清晰看到原来使用着的 sda2 到的 50 个 G。
接下来进入正题,依旧先把操作步骤简化命令列出。
---》pvcreate /dev/sda3 #把新加的分区创建为物理卷。
---》vgextend centos /dev/sda3 #将刚创建的物理卷添加到卷组centos中。(注意此处的centos是通过刚才vgscan得到的。)
---》pvscan #再次查看物理卷情况。
---》vgscan #再次查看卷组情况。
---》vgdisplay -v #详细查看卷组。
---》lvextend -l +25599 /dev/centos/root #直接在原有逻辑卷上进行扩容。25599是通过刚才详细查看卷组得到的free PE数。
---》
---》xfs_growfs /dev/centos/root #通过此命令让操作系统识别刚刚扩容的分区。这个命令适用在centos 7系统中。如果是6的,则用resize2fs -f /dev/centos/root
---》df -h
2
3
4
5
6
7
8
9
接着展示以下每个命令的输出结果。
---》pvcreate /dev/sda3
WARNING: ext3 signature detected on /dev/sda3 at offset 1080. Wipe it? [y/n]: y
Wiping ext3 signature on /dev/sda3.
Physical volume "/dev/sda3" successfully created
---》vgextend centos /dev/sda3
Volume group "centos" successfully extended
---》pvscan
PV /dev/sda2 VG centos lvm2 [49.66 GiB / 0 free]
PV /dev/sda3 VG centos lvm2 [100.00 GiB / 100.00 GiB free]
Total: 2 [149.65 GiB] / in use: 2 [149.65 GiB] / in no VG: 0 [0 ]
---》vgscan
Reading all physical volumes. This may take a while...
Found volume group "centos" using metadata type lvm2
---》vgdisplay -v
Using volume group(s) on command line.
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 149.65 GiB
PE Size 4.00 MiB
Total PE 38311
Alloc PE / Size 12712 / 49.66 GiB
Free PE / Size 25599 / 100.00 GiB
VG UUID xvU7EX-3SXG-z21B-LXGn-TO00-RzvQ-n7zUV0
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID x8lIiU-nuPh-MtXV-aQRo-bOZ4-dQiN-7kE3wT
LV Write Access read/write
LV Creation host, time localhost, 2017-12-29 18:04:48 +0800
LV Status available
# open 1
LV Size 49.66 GiB
Current LE 12712
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Physical volumes ---
PV Name /dev/sda2
PV UUID PkLNer-Uz8l-Fw1y-AKzz-DvP5-1P4T-76paP6
PV Status allocatable
Total PE / Free PE 12712 / 0
PV Name /dev/sda3
PV UUID 50sSuP-0X3I-oWke-keCp-Hmfo-XMW7-GQkRBp
PV Status allocatable
Total PE / Free PE 25599 / 25599
---》lvextend -l +25599 /dev/centos/root
Size of logical volume centos/root changed from 49.66 GiB (12712 extents) to 149.65 GiB (38311 extents).
Logical volume root successfully resized.
---》xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=3254272 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=13017088, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=6356, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 13017088 to 39230464
---》df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 150G 40G 110G 27% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 33M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 347M 115M 233M 33% /boot
tmpfs 783M 0 783M 0% /run/user/0
tmpfs 783M 0 783M 0% /run/user/1000
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
由此可见一次平稳的扩容就这么完成了。所以这也是很多时候提倡适用 lvm 进行磁盘分区管理的一个理由之一。
# 6,感恩。
当我看到扩容已经成功之后,就看到乖巧的 zabbix 通知告警问题修复了,这里再次夸一下 zabbix 同学。
参考链接:http://blog.csdn.net/remote_roamer/article/details/50670802