Linux运维新人自用笔记(inode索引节点、删除文件原理、raid10、lvm逻辑卷)
内容全为个人理解和自查资料梳理,欢迎各位大神指点!
每天学习较为零散。
day22
一、inode索引节点
Linux/Unix 文件系统中用于 描述文件元数据的核心数据结构,每个文件或目录都有一个唯一的 inode。存储文件的属性信息和block的位置信息。
root@xun-virtual-machine:/a1# ll -i my_sdb1/
total 4128 drwxr-xr-x 2 root root 22 6月 21 07:17 ./
131083 drwxr-xr-x 3 root root 4096 6月 21 22:17 ../131 -rw-r--r-- 1 root root 0 6月 21 07:17 test.txtInode:inode 编号(唯一标识)
Links:硬链接计数(删除文件需此值为 0)
Size:文件大小(字节)
Blocks:占用的磁盘块数
Access/Modify/Change:访问、修改、元数据变更时间root@xun-virtual-machine:~# stat /a1/my_sdb1/File: /a1/my_sdb1/Size: 22 Blocks: 0 IO Block: 4096 directory
Device: 811h/2065d Inode: 128 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-06-21 07:23:36.745910932 +0800
Modify: 2025-06-21 07:17:47.519913904 +0800
Change: 2025-06-21 07:17:47.519913904 +0800Birth: 2025-06-21 07:08:02.960096000 +0800
root@xun-virtual-machine:~#
inode(索引节点)存储文件的元数据(如权限、所有者、大小等),每个文件或目录都会占用一个 inode。如果 inode 耗尽,即使磁盘空间充足,也无法创建新文件。
inode 耗尽(IUse%=100%)
No space left on device
错误,但 df -h
显示磁盘空间充足
小文件过多(如日志、缓存、邮件)占满 inode
#查看文件系统的 inode 使用情况 Filesystem:磁盘分区或存储设备。
Inodes:该文件系统分配的 inode 总数。
IUsed:已使用的 inode 数量。
IFree:剩余的可用 inode 数量。
IUse%:inode 使用百分比(接近 100% 时需警惕)。
Mounted on:挂载点路径。root@xun-virtual-machine:~# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
tmpfs 495179 1006 494173 1% /run
/dev/sda3 1277952 237512 1040440 19% /
tmpfs 495179 1 495178 1% /dev/shm
tmpfs 495179 5 495174 1% /run/lock
/dev/sda2 0 0 0 - /boot/efi
/dev/sdb1 10485248 4 10485244 1% /a1/my_sdb1
tmpfs 99035 137 98898 1% /run/user/1000
/dev/sr0 0 0 0 - /media/xun/Ubuntu 22.04.5 LTS amd64#查找占用 inode 的目录
sudo find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n#删除临时文件
sudo rm -rf /tmp/*# 限制日志大小,清理旧日志
sudo journalctl --vacuum-size=100M # 保留大于 1MB 的文件,删除小文件
sudo find /path -type f -size +1M -delete # 分配 200 万个 inode,扩展 inode 数量(需重新格式化)
sudo mkfs.ext4 -N 2000000 /dev/sdb1
二、删除文件的原理
删除文件并不是立即擦除磁盘数据,而是 解除文件名与 inode 的关联,并标记 inode 和数据块为“可复用”。实际数据仍留在磁盘上,直到被新数据覆盖。
删除流程
1.解除目录项绑定
文件名存储在目录的 目录项(dentry) 中,删除文件时,系统会从目录中移除该文件名到 inode 的映射。
2.减少 inode 的硬链接计数
每个 inode 记录 硬链接数(Links),表示有多少个文件名指向它
删除文件时,Links 值减 1。
若 Links > 1
:仍有其他文件名指向该 inode,数据保留。
若 Links = 0
:inode 和数据块被标记为“可复用”。
3.释放磁盘空间
文件系统将 inode 和对应的数据块标记为“未使用”,但数据未被清除(可通过工具恢复)。
空间何时被新数据覆盖取决于文件系统的实现和后续写入操作。
#列出已删除但被进程占用的文件
#只有进程关闭文件后,inode 和空间才会真正释放。root@xun-virtual-machine:~# lsof +L1
lsof: WARNING: can't stat() fuse.portal file system /run/user/1000/docOutput information may be incomplete.
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfsOutput information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME
apache2 959 root 10u REG 8,3 0 0 786481 /tmp/.ZendSem.rYkrqn (deleted)
apache2 998 www-data 10u REG 8,3 0 0 786481 /tmp/.ZendSem.rYkrqn (deleted)
apache2 999 www-data 10u REG 8,3 0 0 786481 /tmp/.ZendSem.rYkrqn (deleted)
apache2 1000 www-data 10u REG 8,3 0 0 786481 /tmp/.ZendSem.rYkrqn (deleted)
apache2 1001 www-data 10u REG 8,3 0 0 786481 /tmp/.ZendSem.rYkrqn (deleted)
apache2 1002 www-data 10u REG 8,3 0 0 786481 /tmp/.ZendSem.rYkrqn (deleted)
mysqld 1030 mysql 6u REG 8,3 0 0 786472 /tmp/#786472 (deleted)
mysqld 1030 mysql 7u REG 8,3 0 0 786473 /tmp/#786473 (deleted)
mysqld 1030 mysql 8u REG 8,3 0 0 786482 /tmp/#786482 (deleted)
恢复
# 从进程的文件描述符恢复
cp /proc/<PID>/fd/<FD> recovered_file
彻底删除
# 覆盖 3 次后删除
shred -n 3 -z -u file.txt
三、RAID 10
适合需要 低延迟、高可用性 的场景。
RAID 10 是 RAID 1(镜像)和 RAID 0(条带化)的组合,需至少 4 块磁盘。
镜像(RAID 1):数据完全复制到另一块盘(冗余)
条带化(RAID 0):数据分块写入多组镜像对(提升性能)。
容量利用率:50%
容错能力:允许每组 RAID 1 中损坏 1 块盘(最多同时损坏 50% 的磁盘,但不可同组全坏)。
创建 RAID
参数 | 作用 |
---|---|
-C 或 --create | 创建一个新的 RAID 设备。 |
-v 或 --verbose | 显示详细操作信息(便于调试)。 |
/dev/md0 | 指定 RAID 设备名称(通常为 /dev/md* )。 |
-a yes | 自动创建设备文件(若 /dev/md0 不存在)。 |
-n 4 或 --raid-devices=4 | 指定 RAID 中活跃磁盘数量(此处为 4 块盘)。 |
-l 10 或 --level=10 | 设置 RAID 级别为 RAID 10(镜像+条带化)。 |
-D | 显示陈列详细信息 |
-f | 移除设备 |
[root@626nmn ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part ├─centos-root 253:0 0 19.5G 0 lvm /└─centos-swap 253:1 0 48M 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
sdd 8:48 0 10G 0 disk
sde 8:64 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom [root@626nmn ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 10476544K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.[root@626nmn ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part ├─centos-root 253:0 0 19.5G 0 lvm /└─centos-swap 253:1 0 48M 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
└─md0 9:0 0 20G 0 raid10
sdc 8:32 0 10G 0 disk
└─md0 9:0 0 20G 0 raid10
sdd 8:48 0 10G 0 disk
└─md0 9:0 0 20G 0 raid10
sde 8:64 0 10G 0 disk
└─md0 9:0 0 20G 0 raid10
sr0 11:0 1 4.4G 0 rom
[root@626nmn ~]# fdisk -l /dev/md0 Disk /dev/md0: 21.5 GB, 21455962112 bytes, 41906176 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes#格式化文件系统
[root@626nmn ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=16, agsize=327296 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5236736, imaxpct=25= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0#挂载
[root@626nmn a1]# mount /dev/md0 /a1/my_md0/#/dev/md0 xfs 20G 50%的使用率所以20G
[root@626nmn a1]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.8M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 20G 3.4G 17G 18% /
/dev/sda1 xfs 497M 130M 368M 27% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/md0 xfs 20G 33M 20G 1% /a1/my_md0#查看raid10的状态,显示陈列详细信息
[root@626nmn a1]# mdadm -D /dev/md0
/dev/md0:Version : 1.2Creation Time : Sat Jun 21 20:54:49 2025Raid Level : raid10Array Size : 20953088 (19.98 GiB 21.46 GB)Used Dev Size : 10476544 (9.99 GiB 10.73 GB)Raid Devices : 4Total Devices : 4Persistence : Superblock is persistentUpdate Time : Sat Jun 21 21:06:04 2025State : clean Active Devices : 4Working Devices : 4Failed Devices : 0Spare Devices : 0Layout : near=2Chunk Size : 512KConsistency Policy : resyncName : 626nmn:0 (local to host 626nmn)UUID : a9098818:2e24a9ea:20a80cb7:eab6146bEvents : 17Number Major Minor RaidDevice State0 8 16 0 active sync set-A /dev/sdb1 8 32 1 active sync set-B /dev/sdc2 8 48 2 active sync set-A /dev/sdd3 8 64 3 active sync set-B /dev/sde
移除一块硬盘 (假设硬盘损坏)
[root@626nmn a1]# mdadm /dev/md0 -f /dev/sdd
mdadm: set /dev/sdd faulty in /dev/md0
[root@626nmn a1]# mdadm -D /dev/md0
/dev/md0:Version : 1.2Creation Time : Sat Jun 21 20:54:49 2025Raid Level : raid10Array Size : 20953088 (19.98 GiB 21.46 GB)Used Dev Size : 10476544 (9.99 GiB 10.73 GB)Raid Devices : 4Total Devices : 4Persistence : Superblock is persistentUpdate Time : Sat Jun 21 21:22:14 2025State : clean, degraded Active Devices : 3Working Devices : 3Failed Devices : 1Spare Devices : 0Layout : near=2Chunk Size : 512KConsistency Policy : resyncName : 626nmn:0 (local to host 626nmn)UUID : a9098818:2e24a9ea:20a80cb7:eab6146bEvents : 19Number Major Minor RaidDevice State0 8 16 0 active sync set-A /dev/sdb1 8 32 1 active sync set-B /dev/sdc- 0 0 2 removed3 8 64 3 active sync set-B /dev/sde
添加新硬盘 ,查看/dev/md0 已恢复
[root@626nmn ~]# mdadm /dev/md0 -a /dev/sdd
mdadm: added /dev/sdd[root@626nmn ~]# mdadm -D /dev/md0
/dev/md0:Version : 1.2Creation Time : Sat Jun 21 20:54:49 2025Raid Level : raid10Array Size : 20953088 (19.98 GiB 21.46 GB)Used Dev Size : 10476544 (9.99 GiB 10.73 GB)Raid Devices : 4Total Devices : 4Persistence : Superblock is persistentUpdate Time : Sat Jun 21 21:26:34 2025State : clean Active Devices : 4Working Devices : 4Failed Devices : 0Spare Devices : 0Layout : near=2Chunk Size : 512KConsistency Policy : resyncName : 626nmn:0 (local to host 626nmn)UUID : a9098818:2e24a9ea:20a80cb7:eab6146bEvents : 40Number Major Minor RaidDevice State0 8 16 0 active sync set-A /dev/sdb1 8 32 1 active sync set-B /dev/sdc4 8 48 2 active sync set-A /dev/sdd3 8 64 3 active sync set-B /dev/sde
四、lvm逻辑卷
允许动态调整磁盘空间,提供比传统分区更灵活的存储管理方式。适合需要动态调整存储、跨磁盘管理、快照备份的环境。
PV(Physical Volume,物理卷) | 实际的磁盘或分区(如 /dev/sdb1 ),需先转换为 LVM 可识别的格式。 |
VG(Volume Group,卷组) | 由多个 PV 组成的一个存储池,VG 是 LVM 管理的基本单位。 |
LV(Logical Volume,逻辑卷) | 从 VG 中划分出的逻辑存储单元,可格式化为文件系统(如 /dev/vg01/lv_data )。 |
PE(Physical Extent,物理块) | LVM 的最小存储单元(默认 4MB),VG 的存储空间由多个 PE 组成。 |
物理卷(Physical Volume, PV)
- 实际的物理存储设备(如 /dev/sdb、/dev/sdc1)。
- 通过 pvcreate 命令初始化,使其能被 LVM 识别。
- PV 被划分为多个 物理块(Physical Extent, PE)(默认 4MB)。
卷组(Volume Group, VG)
- 由多个 PV 组成的存储池,VG 是 LVM 管理的基本单位。
- VG 的存储空间是所有 PV 的 PE 总和。
- 通过 vgcreate 创建,如 vgcreate vg01 /dev/sdb /dev/sdc。
逻辑卷(Logical Volume, LV)
- 从 VG 中划分出的逻辑存储单元,可格式化为文件系统(如 /dev/vg01/lv_data)。
- LV 由多个 逻辑块(Logical Extent, LE) 组成,LE 与 PE 一一对应。
- 通过 lvcreate 创建,如 lvcreate -L 50G -n lv_data vg01。
LVM 的数据存储原理
物理卷(PV)的初始化,当执行 pvcreate /dev/sdb 时:在 /dev/sdb 上创建 LVM 元数据(描述 PV 的属性和 PE 分布)。将磁盘划分为多个 PE(默认 4MB),PE 是 LVM 的最小存储单元。
卷组(VG)的组成VG 是多个 PV 的集合,所有 PV 的 PE 被合并为一个统一的存储池。
VG 的容量 = 所有 PV 的 PE 数量 × PE 大小。例如:/dev/sdb(100GB) + /dev/sdc(100GB) → VG 容量 ≈ 200GB(实际略少,元数据占用少量空间)。
逻辑卷(LV)的创建,LV 是从 VG 中分配的连续或非连续的 LE 集合。
LE 和 PE 的映射关系:每个 LE 对应一个 PE,LE 是逻辑层面的块,PE 是物理层面的块。LVM 通过 映射表 维护 LE 和 PE 的关系(存储在 VG 的元数据中)。
对比维度 | 普通硬盘(传统分区) | LVM 逻辑卷 |
---|---|---|
存储管理方式 | 直接对物理磁盘分区(如 /dev/sda1 )。 | 抽象为三层结构:物理卷(PV)→ 卷组(VG)→ 逻辑卷(LV)。 |
扩展性 | 分区大小固定,扩容需重新分区(可能丢失数据)。 | 动态调整 LV 大小(在线扩容/缩减,无需卸载文件系统)。 |
跨磁盘管理 | 单块磁盘独立使用,无法合并多块磁盘空间。 | 多块磁盘合并为卷组(VG),统一分配 LV。 |
快照功能 | 不支持。 | 支持创建快照(基于写时复制),用于备份或测试。 |
数据迁移 | 需手动复制数据到新磁盘。 | 支持在线迁移(pvmove ),无需停机。 |
冗余与高可用 | 依赖硬件 RAID 或手动备份。 | 可与软件 RAID(如 mdadm )结合,实现冗余+灵活性。 |
文件系统调整 | 调整分区大小需格式化。 | 文件系统可独立调整(如 resize2fs 或 xfs_growfs )。 |
适用场景 | 简单存储需求(如个人电脑、单磁盘服务器)。 | 企业级存储、云计算、数据库等需要灵活性和高可用的场景。 |
复杂度 | 简单易用。 | 需掌握 PV/VG/LV 概念和命令(如 lvcreate 、lvextend )。 |
性能开销 | 无额外开销。 | 轻微元数据管理开销(可忽略不计)。 |
1、物理卷(PV)管理
先创建物理卷
指令 | 作用 | 示例 |
---|---|---|
pvcreate | 初始化物理磁盘为 PV | pvcreate /dev/sdb /dev/sdc |
pvdisplay | 查看 PV 详细信息 | pvdisplay /dev/sdb |
pvs | 简要列出所有 PV | pvs |
pvremove | 删除 PV(需先移除 VG) | pvremove /dev/sdb |
pvmove | 迁移 PV 数据到其他磁盘 | pvmove /dev/sdb /dev/sdd |
pvscan | 扫描系统中所有 PV | pvscan |
#查看服务器上现有的卷组信息
[root@626nmn ~]# vgsVG #PV #LV #SN Attr VSize VFreecentos 1 2 0 wz--n- <19.51g 4.00m# 初始化 PV
[root@626nmn ~]# pvcreate /dev/sdbPhysical volume "/dev/sdb" successfully created.#查看磁盘信息
[root@626nmn ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part ├─centos-root 253:0 0 19.5G 0 lvm /└─centos-swap 253:1 0 48M 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom #简要列出所有 PV
[root@626nmn ~]# pvsPV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.51g 4.00m/dev/sdb lvm2 --- 20.00g 20.00g#扫描系统中所有 PV
[root@626nmn ~]# pvscanPV /dev/sda2 VG centos lvm2 [<19.51 GiB / 4.00 MiB free]PV /dev/sdb VG vg01 lvm2 [<20.00 GiB / <20.00 GiB free]Total: 2 [39.50 GiB] / in use: 2 [39.50 GiB] / in no VG: 0 [0 ]#查看 PV 详细信息
[root@626nmn ~]# pvdisplay--- Physical volume ---PV Name /dev/sda2VG Name centosPV Size 19.51 GiB / not usable 3.00 MiBAllocatable yes PE Size 4.00 MiBTotal PE 4994Free PE 1Allocated PE 4993PV UUID thSYdw-QPCC-JphJ-DXVA-ceck-b3NT-veDkCB--- Physical volume ---PV Name /dev/sdbVG Name vg01PV Size 20.00 GiB / not usable 4.00 MiBAllocatable yes PE Size 4.00 MiBTotal PE 5119Free PE 5119Allocated PE 0PV UUID CRfbPG-5eQR-eqfQ-NBuE-M9c3-HPf8-YbsJk2删除 PV(需先移除 VG)
[root@626nmn ~]# pvremove /dev/sdbLabels on physical volume "/dev/sdb" successfully wiped.
2、卷组(VG)管理
再创建卷组
指令 | 作用 | 示例 |
---|---|---|
vgcreate | 创建卷组 | vgcreate vg01 /dev/sdb /dev/sdc |
vgextend | 扩展 VG(添加新 PV) | vgextend vg01 /dev/sdd |
vgreduce | 缩减 VG(移除 PV) | vgreduce vg01 /dev/sdb |
vgdisplay | 查看 VG 详细信息 | vgdisplay vg01 |
vgs | 简要列出所有 VG | vgs |
vgremove | 删除 VG | vgremove vg01 |
vgrename | 重命名 VG | vgrename vg01 vg_new |
#先创建物理卷
[root@626nmn ~]# pvcreate /dev/sdbPhysical volume "/dev/sdb" successfully created.#创建卷组 卷名 磁盘
[root@626nmn ~]# vgcreate vg1 /dev/sdbVolume group "vg1" successfully created#查询列出所有的vg
[root@626nmn ~]# vgsVG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.51g 4.00mvg1 1 0 0 wz--n- <20.00g <20.00g#移除vg
[root@626nmn ~]# vgremove vg1Volume group "vg1" successfully removed
3、逻辑卷(LV)管理
最后创建逻辑卷
指令 | 作用 | 示例 |
---|---|---|
lvcreate | 创建 LV | lvcreate -L 50G -n lv_data vg01 |
lvextend | 扩展 LV 容量 | lvextend -L +20G /dev/vg01/lv_data |
lvreduce | 缩减 LV 容量(谨慎操作!) | lvreduce -L 30G /dev/vg01/lv_data |
lvdisplay | 查看 LV 详细信息 | lvdisplay /dev/vg01/lv_data |
lvs | 简要列出所有 LV | lvs |
lvremove | 删除 LV | lvremove /dev/vg01/lv_data |
lvrename | 重命名 LV | lvrename vg01 lv_data lv_new |
lvresize | 调整 LV 大小(自动扩展/缩减文件系统) | lvresize -L 60G /dev/vg01/lv_data |
lvcreate -s | 创建 LV 快照 | lvcreate -L 10G -s -n lv_snap /dev/vg01/lv_data |
lvcreate -L <大小> -n <LV名称> <VG名称>
参数 | 说明 | 示例 |
---|---|---|
-L / --size | 指定逻辑卷大小(支持 K , M , G , T ) | -L 10G (10GB) |
-l / --extents | 指定 PE(物理块)数量(如 -l 100%FREE ) | -l 100%FREE (占用全部剩余空间) |
-n / --name | 指定逻辑卷名称 | -n lv_data |
-s / --snapshot | 创建快照卷(需指定源 LV) | -s -n lv_snap /dev/vg01/lv_data |
--type | 指定 LV 类型(如 linear , striped , mirror ) | --type striped -i 2 (条带化,2块磁盘) |
-i / --stripes | 条带化数量(需配合 --type striped ) | -i 2 (跨 2 块磁盘分布数据) |
-I / --stripesize | 条带大小(默认 64KB) | -I 128k (128KB 条带) |
#-n 逻辑卷命名 -l 50%VG 从卷组 vg1 中分配 50% 的剩余空间给新逻辑卷 vg1目标卷组名称
[root@626nmn ~]# lvcreate -n lv01 -l 50%VG vg1Logical volume "lv01" created.
[root@626nmn ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertroot centos -wi-ao---- <19.46g swap centos -wi-ao---- 48.00m lv01 vg1 -wi-a----- <10.00g #移除逻辑卷(注意用绝对路径形式)
[root@626nmn ~]# lvremove /dev/vg1/lv01
Do you really want to remove active logical volume vg1/lv01? [y/n]: yLogical volume "lv01" successfully removed#-L 指定vg1中的2G内存 作为lv02的大小
[root@626nmn ~]# lvcreate -n lv02 -L 2G vg1Logical volume "lv02" created.
挂载
[root@626nmn ~]# mkdir /a1/lv03
[root@626nmn ~]# mkfs.ext4 /dev/vg1/lv03
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
196608 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done [root@626nmn ~]# mount /dev/vg1/lv03 /a1/lv03/# 永久挂载(写入/etc/fstab)
echo "/dev/vg1/lv03 /a1/lv03 ext4 defaults 0 0" >> /etc/fstab
5、lvm扩容
先创建lvm
[root@626nmn ~]# pvcreate /dev/sdbPhysical volume "/dev/sdb" successfully created.
[root@626nmn ~]# vgcreate vg1 /dev/sdb Volume group "vg1" successfully created
[root@626nmn ~]# lvcreate -n lv03 -L 2G vg1Logical volume "lv03" created.
情况一、当卷组容量足够
[root@626nmn ~]# vgsVG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.51g 4.00mvg1 1 1 0 wz--n- <20.00g <18.00g#逻辑卷直接动态调整到3G
[root@626nmn ~]# lvextend -L 3G /dev/vg1/lv03 Size of logical volume vg1/lv03 changed from 2.00 GiB (512 extents) to 3.00 GiB (768 extents).Logical volume vg1/lv03 successfully resized.
[root@626nmn ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertroot centos -wi-ao---- <19.46g swap centos -wi-ao---- 48.00m lv03 vg1 -wi-a----- 3.00g #查看磁盘挂载点及大小和文件系统
[root@626nmn ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.7M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 20G 3.4G 17G 18% /
/dev/sda1 xfs 497M 130M 368M 27% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg1-lv03 ext4 2.9G 9.0M 2.8G 1% /a1/lv03#xfs文件系统类型 用 xfs_growfs
#resize2fs更新ext4 文件系统大小
[root@626nmn ~]# resize2fs /dev/mapper/vg1-lv03
resize2fs 1.42.9 (28-Dec-2013)
The filesystem is already 786432 blocks long. Nothing to do!
情况二、卷组不够添加新磁盘
[root@626nmn ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part ├─centos-root 253:0 0 19.5G 0 lvm /└─centos-swap 253:1 0 48M 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─vg1-lv03 253:2 0 3G 0 lvm
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom #将新加的sdc直接添加到vg1中
[root@626nmn ~]# vgextend vg1 /dev/sdcPhysical volume "/dev/sdc" successfully created.Volume group "vg1" successfully extended#vg1内存从20g增加到30g
[root@626nmn ~]# vgsVG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.51g 4.00mvg1 2 1 0 wz--n- 29.99g 26.99g[root@626nmn ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertroot centos -wi-ao---- <19.46g swap centos -wi-ao---- 48.00m lv03 vg1 -wi-a----- 3.00g #增加逻辑卷内存大小到10g
[root@626nmn ~]# lvextend -L 10G /dev/vg1/lv03 Size of logical volume vg1/lv03 changed from 3.00 GiB (768 extents) to 10.00 GiB (2560 extents).Logical volume vg1/lv03 successfully resized.
[root@626nmn ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertroot centos -wi-ao---- <19.46g swap centos -wi-ao---- 48.00m lv03 vg1 -wi-a----- 10.00g #挂载
[root@626nmn ~]# mount /dev/mapper/vg1-lv03 /a1/lv03/[root@626nmn ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.7M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 20G 3.4G 17G 18% /
/dev/sda1 xfs 497M 130M 368M 27% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg1-lv03 ext4 2.9G 9.0M 2.8G 1% /a1/lv03#resize2fs更新ext4 文件系统大小
[root@626nmn ~]# resize2fs /dev/mapper/vg1-lv03
6、清理lvm环境
#修改永久挂载配置文件
[root@626nmn ~]# vim /etc/fstab #取消挂载
umount /a1/lv02#先删逻辑卷
[root@626nmn ~]# lvremove /dev/vg1/lv02
Do you really want to remove active logical volume vg1/lv02? [y/n]: yLogical volume "lv02" successfully removed#再删卷组
[root@626nmn ~]# vgremove vg1Volume group "vg1" successfully removed#最后删物理卷
[root@626nmn ~]# pvremove /dev/sdb Labels on physical volume "/dev/sdb" successfully wiped.[root@626nmn ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertroot centos -wi-ao---- <19.46g swap centos -wi-ao---- 48.00m [root@626nmn ~]# vgsVG #PV #LV #SN Attr VSize VFreecentos 1 2 0 wz--n- <19.51g 4.00m[root@626nmn ~]# pvsPV VG Fmt Attr PSize PFree/dev/sda2 centos lvm2 a-- <19.51g 4.00m#mkfs.xfs 将 /dev/sdb 格式化为 XFS 文件系统
[root@626nmn ~]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=1310720 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0[root@626nmn ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.7M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 20G 3.4G 17G 18% /
/dev/sda1 xfs 497M 130M 368M 27% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb xfs 20G 33M 20G 1% /a1/my_md0
文件系统调整
指令 | 作用 | 示例 |
---|---|---|
mkfs | 格式化 LV 为文件系统 | mkfs.xfs /dev/vg01/lv_data |
resize2fs | 调整 ext4 文件系统大小(需先扩展 LV) | resize2fs /dev/vg01/lv_data |
xfs_growfs | 扩展 XFS 文件系统(需先扩展 LV) | xfs_growfs /dev/vg01/lv_data |
监控与维护
指令 | 作用 | 示例 |
---|---|---|
lsblk | 查看块设备层级(含 LVM) | lsblk |
df -h | 查看挂载点及空间使用 | df -h /mnt/data |
vgcfgbackup | 备份 VG 元数据 | vgcfgbackup vg01 |
vgcfgrestore | 恢复 VG 元数据 | vgcfgrestore -f /etc/lvm/backup/vg01 vg01 |