共計 6648 個字符,預計需要花費 17 分鐘才能閱讀完成。
1、PV VG LV 概念
PV,VG,LV 構成了一種易于管理擁有一個或多個硬盤的主機的文件系統,這些硬盤可能只有一個分區也可能有多個。通過將這些物理存在的分區 (或稱為卷)PV(physical volume) 進行整合,組成一個分區 (卷) 組 VG(volume group),進而再次進行分配形成邏輯分區(卷)LV(logical volume)。創建成功的邏輯分區對于操作系統來說會想普通分區無異,其好處是可以動態調整分區大小。管理 PV,VG,LV 的工具稱為邏輯卷管理器 LVM(logical volume manager)。其關系如下圖所示:
2、環境信息
cat /etc/centos-release
CentOS Linux release 7.8.2003 (Core)
3、查看當前文件系統的空間分配情況
[root@localhost ~]# df -h
文件系統 容量 已用 可用 已用 % 掛載點
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.9M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 44G 4.4G 40G 10% /
/dev/sda1 1014M 150M 865M 15% /boot
tmpfs 379M 0 379M 0% /run/user/0
可以看到掛載點為根目錄的文件系統 /dev/mapper/centos-root 現在一共是 44GB 的空間,現在我想新加入一塊 1TB 物理磁盤,將新的磁盤全部掛載到這個文件系統中(44GB+1TB)
4、查看當前磁盤空間
[root@localhost ~]# fdisk -l
磁盤 /dev/sda:53.7 GB, 53687091200 字節,104857600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小 (邏輯 / 物理):512 字節 / 512 字節
I/O 大小 (最小 / 最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x000b638c
設備 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 104857599 51379200 8e Linux LVM
磁盤 /dev/mapper/centos-root:47.2 GB, 47240445952 字節,92266496 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小 (邏輯 / 物理):512 字節 / 512 字節
I/O 大小 (最小 / 最佳):512 字節 / 512 字節
磁盤 /dev/mapper/centos-swap:5368 MB, 5368709120 字節,10485760 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小 (邏輯 / 物理):512 字節 / 512 字節
I/O 大小 (最小 / 最佳):512 字節 / 512 字節
目前只有一塊物理磁盤 sda
4、新增物理磁盤
我使用的是 ESXi 的虛擬機,現在我給虛擬機新增一塊 1TB 的空磁盤
新增磁盤后返回 ssh 重新查看磁盤列表信息
[root@localhost ~]# fdisk -l
磁盤 /dev/sda:53.7 GB, 53687091200 字節,104857600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小 (邏輯 / 物理):512 字節 / 512 字節
I/O 大小 (最小 / 最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x000b638c
設備 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 104857599 51379200 8e Linux LVM
磁盤 /dev/mapper/centos-root:47.2 GB, 47240445952 字節,92266496 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小 (邏輯 / 物理):512 字節 / 512 字節
I/O 大小 (最小 / 最佳):512 字節 / 512 字節
磁盤 /dev/mapper/centos-swap:5368 MB, 5368709120 字節,10485760 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小 (邏輯 / 物理):512 字節 / 512 字節
I/O 大小 (最小 / 最佳):512 字節 / 512 字節
磁盤 /dev/sdb:1099.5 GB, 1099511627776 字節,2147483648 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小 (邏輯 / 物理):512 字節 / 512 字節
I/O 大小 (最小 / 最佳):512 字節 / 512 字節
可以看到此時已經多了一塊大小為 1099.5 GB 名為 sdb 的新磁盤。
但是現在還無法使用,我們先給它分個區。
5、PV 前期準備工作
[root@localhost ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0xa981a92f 創建新的 DOS 磁盤標簽。
命令 (輸入 m 獲取幫助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令 (輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分區號 (1-4,默認 1):1
起始 扇區 (2048-2147483647,默認為 2048):
將使用默認值 2048
Last 扇區, + 扇區 or +size{
K,M,G} (2048-2147483647,默認為 2147483647):
將使用默認值 2147483647
分區 1 已設置為 Linux 類型,大小設為 1024 GiB
命令 (輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
我只劃分了一個分區 sdb1,可根據自身需求劃分多個分區,但需要提前規劃好各分區容量。最后不要忘記輸入 w 來保存信息。
現在我們給新分區指定分區類型
[root@localhost ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
命令 (輸入 m 獲取幫助):t
已選擇分區 1
Hex 代碼 (輸入 L 列出所有代碼):8e
已將分區“Linux”的類型更改為“Linux LVM”
命令 (輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
分區類型:很多,一般描述的是磁盤分區的用途,比如要做邏輯卷和 swap 分區的需要指定特定的分區類型,沒有特殊用途,只是普通作為存儲數據的,保持默認的分區類型就可以了。
文件系統:描述的是文件在磁盤里的存儲方式,權限定義,i 節點分配等功能。
一般情況下,Windows 默認的文件系統為:NTSFREDHAT7 默認的文件系統為:XFS
REDHAT6 默認的文件系統為:ext4 同樣不要忘記 w 保存
6、格式化 PV
現在格式化一下我們新建的 sdb1 分區
[root@localhost ~]# mkfs.ext3 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成
文件系統標簽 =
OS type: Linux
塊大小 =4096 (log=2)
分塊大小 =4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
67108864 inodes, 268435200 blocks
13421760 blocks (5.00%) reserved for the super user
第一個數據塊 =0
Maximum filesystem blocks=4294967296
8192 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, 71663616, 78675968,
102400000, 214990848
Allocating group tables: 完成
正在寫入 inode 表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
7、使用 lvm 創建 PV
[root@localhost ~]# lvm pvcreate /dev/sdb1
WARNING: ext3 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y
Wiping ext3 signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
創建好了之后,查看一下現在的 pv 列表
[root@localhost ~]# lvm pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <49.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 12543
Free PE 0
Allocated PE 12543
PV UUID fQgbcS-biIL-kGQT-MU0L-8cpV-Kmv5-6kZtcc
"/dev/sdb1" is a new physical volume of "<1024.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size <1024.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID G4Jldl-0RGv-HmhP-UUKf-vGbc-S32e-h42UTm
8、將新的 PV 加入 VG
首先我們先來看一下目前的 VG 列表
[root@localhost ~]# lvm vgdisplay
--- Volume group ---
VG Name centos
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 <49.00 GiB
PE Size 4.00 MiB
Total PE 12543
Alloc PE / Size 12543 / <49.00 GiB
Free PE / Size 0 / 0
VG UUID Cd3LKc-dtg5-otbP-UHOO-QoAK-wkSs-0XljMj
只有一個名為 centos 的系統創建的 vg。我們直接將新的 PV 加入其中即可,也可以自己創建新的 VG。
[root@localhost ~]# lvm vgextend centos /dev/sdb1
Volume group "centos" successfully extended
[root@localhost ~]# lvm vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size <1.05 TiB
PE Size 4.00 MiB
Total PE 274686
Alloc PE / Size 12543 / <49.00 GiB
Free PE / Size 262143 / <1024.00 GiB
VG UUID Cd3LKc-dtg5-otbP-UHOO-QoAK-wkSs-0XljMj
加入 VG 后再次查看 VG 列表,發現 VG 已經擴大到 1 個 T 了。
9、LV 擴容
現在我們可以給根目錄掛載點的 LV 擴容了
[root@localhost ~]# lvm lvextend -l +100%FREE /dev/mapper/centos-root
Size of logical volume centos/root changed from <44.00 GiB (11263 extents) to 1.04 TiB (273406 extents).
Logical volume centos/root successfully resized.
可以看到 LV 的大小已經從 44GB 改變到 1.04TB 了
這個指令的含義是,將 100% 的剩余可用空間全部分配給 /dev/mapper/centos-root
也可以指定具體的數值
$ lvm lvextend -L +1T /dev/mapper/centos-root
重新調整邏輯分區大小
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=2883328 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=11533312, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=5631, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 11533312 to 279967744
最后再次查看磁盤空間信息,發現根目錄掛載點已經擴容成功了。
[root@localhost ~]# df -h
文件系統 容量 已用 可用 已用 % 掛載點
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.9M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 1.1T 4.4G 1.1T 1% /
/dev/sda1 1014M 150M 865M 15% /boot
tmpfs 379M 0 379M 0% /run/user/0