14 KiB
14 KiB
存储管理
一:基本分区
1. 分区方式
- MBR分区:主引导记录(MBR,Master Boot Record)
- 支持最大的磁盘容量 < 2TB,
- GPT分区:全局唯一标识分区表(GUID Partition Table)
2. 创建分区
MBR 分区方式
工具:fdisk
# 查看磁盘列表
[root@wxin ~]# fdisk -l
# 创建分区:
[root@wxin ~]# fdisk /dev/sdb # 启动分区工具
命令(输入 m 获取帮助):n # 新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free) # 主分区
e extended # 扩展分区
Select (default p): p # 选择主分区
分区号 (1-4,默认 1): # 默认回车
起始 扇区 (2048-10485759,默认为 2048): # 默认回车
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+1G # 输入分区大小
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):w # 保存分区信息
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@wxin ~]# partprobe /dev/sdb # 刷新分区表
[root@wxin ~]# fdisk -l /dev/sdb # 查看分区结果
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7ebdf7b5
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
常用命令:
n - 创建新分区
d - 删除分区
p - 查看分区表
t - 修改分区类型(例如将分区设为Linux swap的82)
w - 保存并退出
GPT 分区方式
工具:gdisk
[root@wxin ~]# gdisk /dev/sdc # 启动分区工具
Command (? for help): n # 创建新分区
Partition number (1-128, default 1): # 默认回车
First sector (34-10485726, default = 2048) or {+-}size{KMGTP}: # 默认回车
Last sector (2048-10485726, default = 10485726) or {+-}size{KMGTP}: +2G # 输入磁盘大小
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): # 默认回车
Changed type of partition to 'Linux filesystem'
Command (? for help): p # 查看磁盘信息
Disk /dev/sdc: 10485760 sectors, 5.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 33461B34-CB6D-4B38-B148-E2FC057F30BF
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 10485726
Partitions will be aligned on 2048-sector boundaries
Total free space is 6291389 sectors (3.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4196351 2.0 GiB 8300 Linux filesystem
Command (? for help): w # 保存分区信息
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.
[root@wxin ~]# partprobe /dev/sdc # 刷新分区表
常用命令:
n - 新建分区
w - 保存退出
3. 格式化与挂载分区
格式化分区
# 格式化为xfs(CentOS 7默认)
[root@wxin ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, 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
# 格式化为ext4
[root@wxin ~]# mkfs.ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
手动挂载分区
# 创建挂载点目录
[root@wxin ~]# mkdir /mnt/sdb1
# 临时挂载
[root@wxin ~]# mount /dev/sdb1 /mnt/sdb1
# 卸载分区
[root@wxin ~]# umount /mnt/sdb1
永久挂载
获取分区的UUID:
[root@wxin ~]# blkid /dev/sdb1
/dev/sdb1: UUID="52cd25d2-fc4f-4c9a-a9ab-18c86391f8ce" TYPE="xfs"
编辑/etc/fstab
,添加以下行:
[root@wxin ~]# vim /etc/fstab
UUID=52cd25d2-fc4f-4c9a-a9ab-18c86391f8ce /mnt/sdb1 xfs defaults 0 0
应用配置:
[root@wxin ~]# mount -a
二:逻辑卷 LVM
逻辑卷管理(Logical Volume Manager, LVM) 是一种灵活的存储管理方式,允许动态调整磁盘空间、合并多个物理磁盘的容量,并支持快照和卷扩展等高级功能。
1. LVM 核心概念
术语:
- 物理卷(PV,Physical Volume):物理磁盘或分区(如:
/dev/sdb1
),需初始化为 LVM 可用的物理卷。 - 卷组(VG,Volume Group):有多个物理卷(PV)组成的存储池,VG 的容量是所有 PV 的总合。
- 逻辑卷(LV,Logical Volume):从卷组(VG)中划分的逻辑存储单元,可动态调整大小,类似传统分区。
- 物理扩展(PE,Physical Extent):LVM 管理的最小存储单元(默认 4MB),用于分配和扩展逻辑卷。
2. LVM 基本操作
创建逻辑卷
# 初始化物理卷(将分区或磁盘设为PV)
[root@wxin ~]# pvcreate /dev/sdb4
# 查看物理卷
[root@wxin ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb4 lvm2 --- <2.00g <2.00g
[root@wxin ~]# pvscan
PV /dev/sda2 VG centos lvm2 [<19.00 GiB / 0 free]
PV /dev/sdb4 lvm2 [<2.00 GiB]
Total: 2 [<21.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 1 [<2.00 GiB]
[root@wxin ~]# pvdisplay
"/dev/sdb4" is a new physical volume of "<2.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb4
VG Name
PV Size <2.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID VENObl-2fk8-vQf3-3xyE-aNJK-I5LZ-RHX7iC
# 创建卷组(VG),将PV加入VG
[root@wxin ~]# vgcreate vg /dev/sdb4
Volume group "vg" successfully created
# 查看卷组
[root@wxin ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg 1 0 0 wz--n- <2.00g <2.00g
[root@wxin ~]# vgscan
Reading volume groups from cache.
Found volume group "vg" using metadata type lvm2
[root@wxin ~]# vgdisplay
--- Volume group ---
VG Name vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <2.00 GiB
PE Size 4.00 MiB
Total PE 511
Alloc PE / Size 0 / 0
Free PE / Size 511 / <2.00 GiB
VG UUID ahZ9N2-U8vr-fX8R-n9Xl-bPVe-kQmo-o7E2uP
# 从VG中创建逻辑卷(LV)
[root@wxin ~]# lvcreate -n lv -L 1G vg
Logical volume "lv" created.
# 或使用剩余所有空间:
[root@wxin ~]# lvcreate -n lv2 -l 100%Free vg
Logical volume "lv2" created.
# 查看逻辑卷
[root@wxin ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv vg -wi-a----- 1.00g
lv2 vg -wi-a----- 1020.00m
[root@wxin ~]# lvscan
ACTIVE '/dev/vg/lv' [1.00 GiB] inherit
ACTIVE '/dev/vg/lv2' [1020.00 MiB] inherit
[root@wxin ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg/lv
LV Name lv
VG Name vg
LV UUID j5RSvc-2aSh-1GN2-JKOf-LPyg-R6n4-cqodjy
LV Write Access read/write
LV Creation host, time wxin, 2025-03-25 13:25:54 +0800
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/vg/lv2
LV Name lv2
VG Name vg
LV UUID hPMJg9-ZWDM-xzvE-tFfG-KDPe-x2KZ-zjzPUp
LV Write Access read/write
LV Creation host, time wxin, 2025-03-25 13:26:24 +0800
LV Status available
# open 0
LV Size 1020.00 MiB
Current LE 255
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
# 格式化逻辑卷(如XFS)
[root@wxin ~]# mkfs.xfs /dev/vg/lv
meta-data=/dev/vg/lv isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, 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@wxin ~]# mkdir /mnt/lv
[root@wxin ~]# mount /dev/vg/lv /mnt/lv
删除逻辑卷
# 查看所有逻辑卷
[root@wxin ~]# lvs
# 或查看详细信息
[root@wxin ~]# lvdisplay
# 检查挂载点
[root@wxin ~]# mount | grep <LV名称或挂载点>
# 卸载
[root@wxin ~]# umount /mnt/vg-lv
# 删除指定逻辑卷
[root@wxin ~]# lvremove /dev/vg/lv
# 查看卷组详细信息
[root@wxin ~]# vgdisplay vg
# 删除卷组
[root@wxin ~]# vgremove vg
# 删除物理卷
[root@wxin ~]# pvremove /dev/sdb4
扩展逻辑卷
# 添加物理卷
[root@wxin ~]# pvcreate /dev/sdb3
# 扩展卷组
[root@wxin ~]# vgextend vg /dev/sdb3
# 查看卷组
[root@wxin ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg 2 1 0 wz--n- 2.99g 1.99g
# 扩展逻辑卷
[root@wxin ~]# lvextend -L +1G /dev/vg/lv
[root@wxin ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg-lv ext4 976M 2.6M 907M 1% /mnt/vg-lv
# 扩展文件系统
[root@wxin ~]# resize2fs /dev/vg/lv
[root@wxin ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg-lv ext4 2.0G 3.0M 1.9G 1% /mnt/vg-lv
三:交换分区 SWAP
1. 交换分区的类型
类型 | 说明 |
---|---|
交换分区 | 独立的磁盘分区(类型为82 或8200 ) |
交换文件 | 文件形式的虚拟交换空间,无需分区 |
LVM逻辑卷 | 将逻辑卷(LV)格式化为交换空间,灵活性更高 |
2. 创建交换空间
创建交换分区
# 创建分区
[root@wxin ~]# fdisk /dev/sdc
# 格式化交换分区
[root@wxin ~]# mkswap /dev/sdc1
# 激活交换分区
[root@wxin ~]# swapon /dev/sdc1
# 永久挂载
[root@wxin ~]# blkid /dev/sdc1
[root@wxin ~]# vim /etc/fstab
UUID=3a412f3b-3877-4984-b9c0-2464f047c65e none swap defaults 0 0
创建交换文件
# 生成交换文件
[root@wxin ~]# fallocate -l 4G /swapfile
[root@wxin ~]# dd if=/dev/zero of=/swapfile bs=1M count=4096
# 设置权限并格式化
[root@wxin ~]# chmod 600 /swapfile
[root@wxin ~]# mkswap /swapfile
# 激活并永久挂载
[root@wxin ~]# swapon /swapfile
[root@wxin ~]# echo "/swapfile none swap defaults 0 0" | sudo tee -a /etc/fstab
使用 LVM 逻辑卷
# 创建逻辑卷
[root@wxin ~]# pvcreate /dev/sdb2
[root@wxin ~]# vgcreate vg2 /dev/sdb2
[root@wxin ~]# lvcreate -n lv_swap -L 500M vg2
# 格式化为交换空间
[root@wxin ~]# mkswap /dev/vg2/lv_swap
[root@wxin ~]# swapon /dev/vg2/lv_swap
# 永久挂载
[root@wxin ~]# blkid /dev/vg2/lv_swap
[root@wxin ~]# vim /etc/fstab
UUID=7d7b8efd-2009-4e6b-8d78-03aab7097460 none swap defaults 0 0
3. 禁用或删除交换分区
临时禁用
[root@wxin ~]# swapoff /dev/sdb1 # 分区或逻辑卷
[root@wxin ~]# swapoff /swapfile # 交换文件
永久删除
-
禁用交换分区:
[root@wxin ~]# swapoff /swapfile
-
删除文件或分区:
[root@wxin ~]# rm -f /swapfile # 删除交换文件 [root@wxin ~]# lvremove /dev/vg_data/lv_swap # 删除逻辑卷
-
清理
/etc/fstab
中的对应条目。
4. 查看交换空间状态
# 查看所有交换设备/文件
free -h
swapon -s
cat /proc/swaps