写在前面

以前生产环境Linux系统,都是一块磁盘存储系统和业务数据,但是业务数据产生的日志量太大,经常把整个磁盘空间使用率达100%,导致系统无法正常运行,连执行shell命令都有异常,所以后来把系统和数据进行分开存储,例如Linux系统根环境就使用/dev/sda磁盘,业务存储环境则使用/dev/sdb磁盘,即便/dev/sdb磁盘空间使用率达100%,也不会影响Linux系统正常运行,当然,有监控告警机制不进行分区也行,能及时清理即可,但是做分区能起到双重保险。

查看当前磁盘使用信息

Terminal window
root@localhost:~# df -Th
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 794M 1.3M 793M 1% /run
/dev/mapper/ubuntu-root xfs 41G 3.9G 38G 10% /
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 3.9G 0 3.9G 0% /run/qemu
/dev/sda2 xfs 1014M 171M 844M 17% /boot
tmpfs tmpfs 794M 4.0K 794M 1% /run/user/1000

可以看到/dev/mapper/ubuntu-root挂载的根分区磁盘空间只有几十GB。

Terminal window
root@localhost:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 63.9M 1 loop /snap/core20/2318
loop1 7:1 0 87M 1 loop /snap/lxd/29351
loop2 7:2 0 38.8M 1 loop /snap/snapd/21759
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 8G 0 part [SWAP]
└─sda4 8:4 0 41G 0 part
└─ubuntu-root 253:0 0 41G 0 lvm /
sdb 8:16 0 100G 0 disk #这里显示sdb磁盘未挂载
sr0 11:0 1 2G 0 rom
Terminal window
root@localhost:~# fdisk -l
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

使用fdisk -l命令查看/dev/sdb未分区

查看lvm信息

Terminal window
root@localhost:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda4
VG Name ubuntu
PV Size <41.00 GiB / not usable 0
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 10495
Free PE 0
Allocated PE 10495
PV UUID 3540f107-f2e4-49a1-8659-163dbfc3f99e
root@localhost:~# vgdisplay
--- Volume group ---
VG Name ubuntu
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <41.00 GiB
PE Size 4.00 MiB
Total PE 10495
Alloc PE / Size 10495 / <41.00 GiB
Free PE / Size 0 / 0
VG UUID b2eadbf1-7c3a-451e-b348-6993c44305dc
root@localhost:~# lvdisplay
--- Logical volume ---
LV Path /dev/ubuntu/root
LV Name root
VG Name ubuntu
LV UUID 58a7626d-2836-4ff4-8ed6-59f8a88e7728
LV Write Access read/write
LV Creation host, time ubuntu-server, 2025-02-18 02:11:35 +0800
LV Status available
# open 1
LV Size <41.00 GiB
Current LE 10495
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

使用parted分区并设置lvm

Terminal window
root@localhost:~# parted /dev/sdb #指定磁盘设备名称
GNU Parted 3.4
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt #设置磁盘分区为gpt格式
(parted) mkpart primary 1% 100% #创建新分区为主分区,占用磁盘空间从起始位置1%到100%
(parted) set 1 lvm on #设置第一个分区为lvm
(parted) print #打印磁盘分区信息
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1074MB 107GB 106GB primary lvm
(parted) quit #退出
Information: You may need to update /etc/fstab.
root@localhost:~#

使用fdisk -l查看/dev/sdb磁盘信息

Terminal window
root@localhost:~# fdisk -l
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: Virtual disk
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: gpt
Disk identifier: DDD8AFA8-0671-48FB-B103-F3FE9E165BB2
Device Start End Sectors Size Type
/dev/sdb1 2097152 209713151 207616000 99G Linux LVM

创建lvm逻辑卷并挂载

创建PV卷

Terminal window
root@localhost:~# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
root@localhost:~#

创建VG组

Terminal window
root@localhost:~# vgcreate storage /dev/sdb1
Volume group "storage" successfully created
root@localhost:~#

创建LV逻辑卷

Terminal window
root@localhost:~# lvcreate -l +100%FREE -n data storage
Logical volume "data" created.
root@localhost:~#

格式化LV逻辑卷

Terminal window
root@localhost:~# mkfs.xfs /dev/storage/data
meta-data=/dev/storage/data isize=512 agcount=4, agsize=6487808 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=25951232, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=12671, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Discarding blocks...Done.

创建挂载目录并挂载LVM逻辑卷

Terminal window
root@localhost:~# mkdir -pv /data
mkdir: created directory '/data'
root@localhost:~#
root@localhost:~# mount /dev/mapper/storage-data /data

查看挂载磁盘以及添加开机自启

查看挂载后的磁盘信息

Terminal window
root@localhost:~# df -Th
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 794M 1.3M 793M 1% /run
/dev/mapper/ubuntu-root xfs 41G 5.0G 37G 13% /
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 3.9G 0 3.9G 0% /run/qemu
/dev/sda2 xfs 1014M 295M 720M 29% /boot
tmpfs tmpfs 794M 4.0K 794M 1% /run/user/1000
/dev/mapper/storage-data xfs 99G 739M 99G 1% /data #这是新挂载的

添加开机自启

Terminal window
echo "/dev/mapper/storage-data /data xfs defaults 0 0" >> /etc/fstab