Linux 磁盤擴(kuò)容大全(包括普通磁盤和 LVM 擴(kuò)容)
在工作中,磁盤擴(kuò)容問題應(yīng)該是所有運(yùn)維工程師都遇到過的問題,不同的磁盤分配方式會(huì)有不同的擴(kuò)容方式。以下介紹幾種生產(chǎn)環(huán)境常用的擴(kuò)容方式。
一、在原有磁盤擴(kuò)容
在原有磁盤下擴(kuò)容也分兩種情況,一種情況是擴(kuò)容的磁盤是一個(gè)分區(qū),另一種情況是擴(kuò)容的磁盤是一整塊盤。
【溫馨提示】有些虛擬化平臺(tái)或云平臺(tái)不支持在原有磁盤增加容量,我工作遇到的幾個(gè)云平臺(tái)都是支持動(dòng)態(tài)擴(kuò)容的,視實(shí)際情況而定
這兩種情況下的擴(kuò)容方法是不同的,下面針對(duì)這兩種情況分別講解擴(kuò)容方法。
切記:新手操作前做快照,避免擴(kuò)容導(dǎo)致數(shù)據(jù)丟失!!老手請(qǐng)自便!
情況一:擴(kuò)容的磁盤是一個(gè)分區(qū)
現(xiàn)有環(huán)境:要對(duì)/dev/vdb1設(shè)備擴(kuò)容
目前分區(qū)有10G,但整個(gè)磁盤有20G,將剩余的擴(kuò)容到/dev/vdb1分區(qū)中:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 458K 0 rom
vda 253:0 0 100G 0 disk
├─vda1 253:1 0 99.5G 0 part /
└─vda2 253:2 0 500M 0 part /boot
vdb 253:96 0 20G 0 disk
└─vdb1 253:97 0 10G 0 part
(1) 安裝工具
使用growpart工具可以完成Linux系統(tǒng)盤分區(qū)擴(kuò)容及文件系統(tǒng)擴(kuò)展,
grawpart工具需要單獨(dú)安裝:
yum install cloud-utils-growpart -y
(2) 擴(kuò)容分區(qū)
【溫馨提示】單盤有多個(gè)連續(xù)分區(qū),僅能擴(kuò)容最后一個(gè)分區(qū)。以下操作為擴(kuò)容/dev/vdb磁盤的第一個(gè)分區(qū)
[root@localhost ~]# growpart /dev/vdb 1
CHANGED: partitinotallow=1 start=2048 old: size=20969472 end=20971520 new: size=41940959 end=41943007
查看分區(qū)格式:
lsblk –f
(3) 擴(kuò)容文件系統(tǒng)
可以看到/dev/vdb1分區(qū)為xfs,需要使用xfs_growfs命令進(jìn)行擴(kuò)展:
[root@localhost ~]# xfs_growfs /dev/vdb1
如果分區(qū)格式為ext4,用以下命令擴(kuò)容::
resize2fs /dev/vda3
查看擴(kuò)容結(jié)果:已從10G擴(kuò)容到20G:
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 8.6M 1.5G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/vda1 98G 3.1G 90G 4% /
tmpfs 3.7G 0 3.7G 0% /tmp
/dev/vda2 495M 234M 261M 48% /boot
/dev/vdg1 20G 176M 20G 1% /data
可能遇到的報(bào)錯(cuò)和解決辦法:
unexpected output in sfdisk --version [sfdisk,來自 util-linux 2.23.2]
[root@mypc ~]# LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8是環(huán)境變量,為了兼容中文操作系統(tǒng)的字符編碼
情況二:擴(kuò)容的磁盤是一整塊磁盤
這種情況就非常簡(jiǎn)單,直接擴(kuò)容文件系統(tǒng)即可。
(1) 模擬環(huán)境準(zhǔn)備
# 將/dev/vdc格式化為xfs文件系統(tǒng)
[root@localhost ~]# mkfs.xfs /dev/vdc
# 掛載
[root@localhost ~]# mount /dev/vdc /data2
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 8.6M 1.5G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/vda1 98G 3.1G 90G 4% /
tmpfs 3.7G 0 3.7G 0% /tmp
/dev/vda2 495M 234M 261M 48% /boot
/dev/vdb1 20G 176M 20G 1% /data
/dev/vdc 10G 104M 9.9G 2% /data2
# 目前/dev/vdc是10G,然后云平臺(tái)上對(duì)這塊磁盤容量增加20G。
(2) 首先查看分區(qū)格式
lsblk –f
(3) 直接擴(kuò)容文件系統(tǒng)容量
如果分區(qū)格式為xfs,用xfs_growfs擴(kuò)容:
[root@localhost ~]# xfs_growfs /dev/vdc
# 也可以直接擴(kuò)容掛載點(diǎn)
[root@localhost ~]# xfs_growfs /data2
如果分區(qū)格式為ext4,用resize2fs擴(kuò)容:
resize2fs /dev/vdc
(4) 查看結(jié)果:可以看到容量已經(jīng)增加到20G
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 8.6M 1.5G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/vda1 98G 3.1G 90G 4% /
tmpfs 3.7G 0 3.7G 0% /tmp
/dev/vda2 495M 234M 261M 48% /boot
/dev/vdb1 20G 176M 20G 1% /data
/dev/vdc 20G 176M 20G 1% /data2
二、新增磁盤擴(kuò)容
生產(chǎn)環(huán)境可能會(huì)遇到以下情況:
磁盤前期分區(qū)時(shí),使用了MBR模式,導(dǎo)致了磁盤最大只能是2T,但數(shù)據(jù)還在繼續(xù)寫入。這種情況就需要新增一個(gè)磁盤,重新格式化一個(gè)分區(qū),并將應(yīng)用讀取數(shù)據(jù)目錄指向新增加的磁盤。
(1) 新增磁盤并格式化 直接格式化,這樣方便后續(xù)擴(kuò)容
mkfs.xfs /dev/vdc
(2) 掛載
掛載到/data3下:
[root@localhost ~]# mkdir /data3
[root@localhost ~]# mount /dev/vdd /data3
(3) 配置開機(jī)自動(dòng)掛載
cat >> /etc/fstab <<EOF
/dev/vdd /data3 xfs default 0 0
EOF
如果后續(xù)磁盤滿了,可以使用方法一的第二種情況來快速擴(kuò)容。
三、邏輯卷LVM擴(kuò)容
LVM邏輯卷擴(kuò)容方式只適用于操作系統(tǒng)使用了LVM來管理磁盤的情況。LVM也區(qū)分在原有磁盤進(jìn)行增加容量來擴(kuò)容和新增加磁盤來進(jìn)行擴(kuò)容,下面分別來講解
情況一:原有磁盤增加容量,創(chuàng)建新分區(qū),然后擴(kuò)容到原有分區(qū)
(1) 擴(kuò)容前環(huán)境:準(zhǔn)備擴(kuò)容/dev/mapper/vg01/lv01設(shè)備
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 8.6M 1.5G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/vda1 98G 3.1G 90G 4% /
tmpfs 3.7G 0 3.7G 0% /tmp
/dev/vda2 495M 234M 261M 48% /boot
/dev/mapper/vg01-lv01 5.0G 68M 5.0G 2% /data
(2) 基于原磁盤再進(jìn)行分區(qū)
[root@localhost ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m forhelp): p # 查看分區(qū)情況
Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x9ffcf410
Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 6293503 6291456 3G 83 Linux
/dev/vdb2 6293504 10487807 4194304 2G 83 Linux
Command (m forhelp): n # 新建分區(qū)
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (3,4, default 3):
First sector (10487808-41943039, default 10487808):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (10487808-41943039, default 41943039):
Created a new partition 3 of type'Linux' and of size 15 GiB.
Command (m forhelp): p # 再次打印分區(qū)信息
Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x9ffcf410
Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 6293503 6291456 3G 83 Linux
/dev/vdb2 6293504 10487807 4194304 2G 83 Linux
/dev/vdb3 10487808 41943039 31455232 15G 83 Linux
Command (m forhelp): w # 保存配置
The partition table has been altered.
Syncing disks.
# 刷新分區(qū)表
[root@localhost ~]# partprobe /dev/vdb
(3) 擴(kuò)容卷組VG
# 創(chuàng)建物理卷PV
[root@localhost ~]# pvcreate /dev/vdb3
Physical volume "/dev/vdb3" successfully created.
# 擴(kuò)容卷組VG
[root@localhost ~]# vgextend vg01 /dev/vdb3
Volume group "vg01" successfully extended
# 查看卷組信息
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 3 1 0 wz--n- <19.99g <15.00g
(4) 擴(kuò)容邏輯卷LV
[root@localhost ~]# lvresize -l +100%FREE /dev/mapper/vg01-lv01
Size of logical volume vg01/lv01 changed from 4.99 GiB (1278 extents) to <19.99 GiB (5117 extents).
Logical volume vg01/lv01 successfully resized.
(5) 擴(kuò)容文件系統(tǒng)
[root@localhost ~]# xfs_growfs /dev/mapper/vg01-lv01
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=327168 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=1308672, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, versinotallow=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 1308672 to 5239808
# 查看結(jié)果
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 8.6M 1.5G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/vda1 98G 3.1G 90G 4% /
tmpfs 3.7G 0 3.7G 0% /tmp
/dev/vda2 495M 234M 261M 48% /boot
/dev/mapper/vg01-lv01 20G 177M 20G 1% /data
注意:如果文件系統(tǒng)格式為ext,使用以下語句擴(kuò)容
resize2fs /dev/mapper/vg01-lv01
情況二:新增磁盤擴(kuò)容到原有分區(qū)
直接創(chuàng)建物理卷,其余擴(kuò)容vg和lv步驟相同。
pvcreate /dev/vdb