Linux系统及服务管理-存储管理
磁盘管理
磁盘简介
磁盘是存储计算机数据的一种媒介。
磁盘也分为机械硬盘、固态硬盘,不同类型应用场景也不一样。
在服务器中常见的磁盘是机械硬盘,他的优点在于发展时间长性能稳定,相对于固态硬盘价格也更加实惠。
磁盘分区类型分MBR与GPT
MBR:支持最大容量是2TB,设计时分配4个分区
GPT:支持大于2TB的硬盘,支持128个分区
管理磁盘
查看磁盘
在服务器中接入磁盘后,可通过命令查看ls /dev/sd*或lsblk
示例如下
[root@localhost ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─cs-root 253:0 0 17G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
sr0 11:0 1 8.7G 0 rom /run/media/root/CentOS-Stream-9-BaseOS-x86_64
创建分区
通过fdisk {写入需要分区的磁盘路径}指令进入分区会话模式
通过指令n进行创建,根据提示创建分区、分区号
创建后使用p查看此看磁盘创建状况,按w保存退出会话模式
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x7101a571 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):n
分区类型
p 主分区 (0 primary, 0 extended, 4 free)
e 扩展分区 (逻辑分区容器)
选择 (默认 p): #回车默认按p创建主分区
将使用默认回应 p。
分区号 (1-4, 默认 1): 1 #选择分区
第一个扇区 (2048-10485759, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-10485759, 默认 10485759): +1G
创建了一个新分区 1,类型为“Linux”,大小为 1 GiB。
命令(输入 m 获取帮助):p #查看磁盘状态
Disk /dev/sdb:5 GiB,5368709120 字节,10485760 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7101a571
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdb1 2048 2099199 2097152 1G 83 Linux
命令(输入 m 获取帮助):w #保存创建
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
格式化分区
使用命令mkfs.ext4 {输入已分区的磁盘分区路径}
[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.46.5 (30-Dec-2021)
创建含有 262144 个块(每块 4k)和 65536 个inode的文件系统
文件系统UUID:dab6d53a-332f-4908-9c2f-b04f1e7197c7
超级块的备份存储于下列块:
32768, 98304, 163840, 229376
正在分配组表: 完成
正在写入inode表: 完成
创建日志(8192 个块)完成
写入超级块和文件系统账户统计信息: 已完成
挂载分区
在/mnt路径下创建挂载分区文件夹如:/mnt/fdisk1
创建后通过命令mount -t ext4 分区路径 挂载路径
[root@localhost ~]# mkdir /mnt/fdisk1
[root@localhost ~]# mount -t ext4 /dev/sdb1 /mnt/fdisk1
挂载后可通过df -hT指令查看挂载状况
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 876M 0 876M 0% /dev/shm
tmpfs tmpfs 351M 8.6M 342M 3% /run
/dev/mapper/cs-root xfs 17G 5.9G 12G 35% /
/dev/sda1 xfs 1014M 288M 727M 29% /boot
tmpfs tmpfs 176M 92K 175M 1% /run/user/0
/dev/sr0 iso9660 8.7G 8.7G 0 100% /run/media/root/CentOS-Stream-9-BaseOS-x86_64
/dev/sdb1 ext4 974M 24K 907M 1% /mnt/fdisk1
上述挂载方式存在着每次重启电脑需要重启挂载
面对此问题可以通过修改自启动文件完成开机自动挂载
一、修改文件/root/.bashrc
添加指令mount -t ext4 /dev/sdb1 /mnt/fdisk1完成开机自动挂载
二、通过修改fstab也可进行自动挂载,但此功能存在着磁盘一旦拨出将影响系统启动,而在现实中存在着磁盘损坏的情况因此方法不建议使用
MBR磁盘分区能超过四个吗?
答案是可以的,在MBR有扩展分区,前提是主分区不能超过3个。
需要放弃一个主分区选择创建扩展分区。
扩展分区的同样需要格式化与挂载
逻辑卷LVM
什么是逻辑卷
逻辑卷是磁盘管理中的一种新技术,它的特点是可以任意扩张大小
简称LVM,全称Logical Volume Manager逻辑卷管理
物理卷简称PV,全称Physical Volume
卷组简称VG,全称Volume Group
逻辑卷简称LV,全称Logical Volume
创建逻辑卷
创建逻辑卷需分三步进行创建
首先通过指令pccreate {需要创建物理卷的磁盘路径}创建物理卷
其次通过指令vgcreate {卷组名称} {需要创建卷组的物理卷磁盘路径}创建卷组
创建卷组后/dev下将生成链接类型文件{卷组名称}
最后通过指令lvcreate -L {需要创建的容量大小,如200M} -n {创建的逻辑卷名称} {所使用卷组}创建逻辑卷
创建卷组后/dev/{卷组名称}下将生成链接类型文件{逻辑卷名称}
创建完成后可通过pvs、vgs、lvs分别查看创建状况
创建完成后还需格式化逻辑卷并挂载才可使用
示例如下
[root@localhost ~]# pgcreate /dev/sdc
bash: pgcreate: command not found...
[root@localhost ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cs lvm2 a-- <19.00g 0
/dev/sdc lvm2 --- 5.00g 5.00g
[root@localhost ~]# vgcreate vg1 /dev/sdc
Volume group "vg1" successfully created
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
cs 1 2 0 wz--n- <19.00g 0
vg1 1 0 0 wz--n- <5.00g <5.00g
[root@localhost ~]# lvcreate -L 200M -n lv1 vg1
Logical volume "lv1" created.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cs -wi-ao---- <17.00g
swap cs -wi-ao---- 2.00g
lv1 vg1 -wi-a----- 200.00m
[root@localhost ~]#
管理卷组
扩张卷组VG
首先创建新的物理卷,通过指令vgextend {需扩大容量的卷组名称} {用来扩张卷组的物理卷路径}
扩张逻辑卷lv
使用指令lvextend -L +{需要扩大的容量} {需要扩张逻辑卷的路径}
扩张后使用指令resize2fs {需要刷新的逻辑卷路径}刷新容量大小
[root@localhost dev]# lvextend -L +200M /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 400.00 MiB (100 extents).
Logical volume vg1/lv1 successfully resized.
[root@localhost dev]# resize2fs /dev/vg1/lv1
resize2fs 1.46.5 (30-Dec-2021)
resize2fs: 超级块中的幻数有错 尝试打开 /dev/vg1/lv1 时
找不到有效的文件系统超级块。
[root@localhost dev]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cs -wi-ao---- <17.00g
swap cs -wi-ao---- 2.00g
lv1 vg1 -wi-a----- 400.00m
[root@localhost dev]#
交换分区管理Swap
作用提升内存容量,防止OOM{Out of Mermory}
swap大小应该多少合适?
在正常环境下推荐设置为内存的两倍
在生产环境下
大于 4GB 而小于 16GB 内存的系统,最小需要 4GB 交换空间;
大于 16GB 而小于 64GB 内存的系统,最小需要 8GB 交换空间;
大于 64GB 而小于 256GB 内存的系统,最小需要 16GB 交换空间。
{内存的大小除于4}
交换分区增加和查看
使用指令free -m查看交换分区大小
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1750 1278 65 18 575 472
Swap: 2047 38 2009
使用fdisk {扩张所需硬盘}创建分区,过程略
划分分区后使用按t输入82修改分区类型
原因在老版本linux中swap交换分区的类型为82,在这里可以扩展使用,示例如下
[root@localhost ~]# fdisk /dev/sdd
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码或别名(输入 L 列出所有代码):p
很多系统将类型 0 视为空闲空间。不建议设置类型为 0 的分区。
已将分区“Linux”的类型更改为“未知”。
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码或别名(输入 L 列出所有代码):82
已将分区“Empty”的类型更改为“Linux swap / Solaris”。
命令(输入 m 获取帮助):p
Disk /dev/sdd:5 GiB,5368709120 字节,10485760 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6e0990a8
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdd1 2048 2099199 2097152 1G 82 Linux swap / Solaris
使用指令mkswap {分配的交换分区路径}格式化交换分区
使用指令swapon {分配的交换分区路径}扩张交换分区
示例如下,扩张后指令free -m可查看到扩张后的大小
[root@localhost ~]# mkswap /dev/sdd1
正在设置交换空间版本 1,大小 = 1024 MiB (1073737728 个字节)
无标签,UUID=2b5adfbf-3689-4d86-82d7-c851b2168e78
[root@localhost ~]# swapon /dev/sdd1
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1750 1255 87 18 576 495
Swap: 3071 38 3033
待更新