Linux 磁盘存储管理
磁盘存储管理概述
Linux磁盘分区
命名方式
分区体系
MBR分区和GPT分区
管理分区的命令
fdisk MBR分区
gdisk GPT分区
parted 两者都可以
下面主要以命令 fdisk为例:
fdisk -l //查看目前分区情况
那我们就对/dev/sda进行分区吧:
表示 主分区有0个,扩展分区有0个 有4个空闲的分区号
这里的 2048-2097151 这种数值表示的是扇区数
Linux 在磁盘分区上建立文件系统并挂载
建立文件系统
- 查看分区设备文件系统
file -s /dev/sdb
blkid /dev/sdb
- 创建文件系统
mkfs -t ext4 /dev/sdb
mkfs.ext4 /dev/sdb
- 通过设置卷标/UUID区别文件系统
e2label /dev/sdb //查看卷标
e2label /dev/sdb newlabel 设置卷标
挂载
在创建文件系统后,我们需要将文件系统挂载到目录下,一般给我们挂载的目录有:
/media
/mnt
我们可以在其中设置继续设置目录:如,/mnt/sda
- 不要重复挂载在不同的挂载点(目录)中
- 一个目录不要重复挂载
- 一般挂载点(目录)中为空
手动挂载
mount /dev/sdb /mnt/sdb
mount //查看挂载情况
mount -o remount,rw /mnt/sdb //-o 的选项通过逗号分隔!
配置文件自动挂载
/etc/fstab 是一个重要文件,系统在初始化时会按照其上记录信息进行设备的挂载
通过 man 5 fstab
可以查看到各个字段含义
我们可以仿照其写法,配置要自动挂载的设备
卸载
备份并恢复
完全备份就是备份以往全部的内容
差异备份就是备份 与上一次完全备份 有不一样的内容
增量备份就是备份 与上一次备份 有不一样的内容
tar 实现完全备份和增量备份
tar 本身就是用于备份的命令,其自动实现的就是增量备份
当完全没有做备份时,用tar做备份就是完全备份,反之就是增量备份
mkdir testdir
tar -g snapshot -zcf test0.tar.gz testdir
# snapshot 是记录备份信息的文件
# 查看备份信息
tar -tf test0.tar.gz
# 恢复备份
tar -g snapshot -zxf test0.tar.gz
使用dump备份和restore恢复
根据上述性质,如果想要完成增量备份,则每一次设置比上一次级别高
如果想要完成差异备份,第一次使用级别0,第二次使用级别1,后面可以一直使用级别1
# 进行0级别的备份,将/mnt/sdb1分区备份为/mnt/sdb2/sdb1.dump
dump -0u -f /mnt/sdb2/sdb1.dump /mnt/sdb1
# 查看备份的内容
restore -tf /mnt/sdb2/sdb1.dump
# 恢复备份
restore -rf /mnt/sdb2/sdb1.dump
磁盘阵列
操作系统学了,下面是常见的:
当我们想要使用RAID作为磁盘使用时,整体思路为:
- 1.创建分区
并且将分区的id改为fd
fdisk /dev/sdb
t
fd //即将这个分区改为RAID设备
- 2.用mdadm 命令创建阵列
mdadm -Cv /dev/md0 -l 1 -n 2 -x 1 /dev/sdb[123]
/dev/md0 是这个阵列的名字
-C 是--create 创建
-v是 显示出更多信息
-l 表示要创建阵列的级别
-n 表示活动设置的个数
-x 表示空闲(预备)设备的个数
/dev/sdb[123] 是我们使用的分区
man mdadm 查看更多内容
- 3 然后创建文件系统,再挂载
mkfs -s ext4 /dev/md0
mkdir /raid1
mount /dev/md0 /raid1
-
4 其他一些管理阵列的命令
-
查看RAID信息
mdadm -D /dev/md0 或 cat /proc/mdstat-D 是 --detail 打印出细节
-
从阵列中移除分区
mdadm /dev/md0 -r /dev/sdb1
-
添加分区
mdadm /dev/md0 -a /dev/sdb1
-
将RAID配置放到配置文件中
mdadm -Ds > /etc/mdadm.conf上述命令也可以完整显示当前全部RAID设备的信息
-
往RAID中追加设备扩容
mdadm -G 5 /dev/md0 -
监控RAID设备
-
停用RAID设备
- 卸载 处于挂载的RAID
umount /dev/md0
- 停用RAID
mdadm -S /dev/md0
mdadm -Ss
s是扫描/proc/mdstat文件,S是停用
则-Ss组合起来就是停用全部RAID
mdadm -As
那么这个就是启用全部RAID了
- 清除配置文件 /etc/mdadm.conf
mdadm -Ds > /etc/mdadm.conf
即可
- 清除分区
LVM
LVM 逻辑卷管理
PV 物理卷
VG 卷组 ,卷组创建后,可动态地加入物理卷到卷组中,放便为文件系统扩容
LV 逻辑卷,对应图上LV层中被分成的一个一个框框
PE/LE 物理扩展/逻辑扩展,其为LVM寻址的最小存储单元
创建LVM的步骤
- 将使用到的分区改id
fdisk /dev/sdb
t
8e
- 创建物理卷PV
pvcreate /dev/sdb[12]
pvscan //查看信息
pvdisplay //查看更详细信息
- 创建卷组
vgcreate -s 1M vg1 /dev/sdb[12]
-s 设置PE大小
vg1为卷组名
/dev/sdb[12]为使用的分区
vgscan
vgdisplay
- 创建逻辑卷
lvcreate -l 500 -n lv1 vg1
-l 表示创建的PE个数
-n 表示逻辑卷的名称
vg1 表示在卷组vg1上创建
lvcreate -L 400m -n lv2 vg1
-L 是指定创建的逻辑卷大小
- 创建文件系统
mkfs.ext4 /dev/vg1/lv1
mkfs.ext4 /dev/vg1/lv2
- 挂载
mkdir /lv1
mount /dev/vg1/lv1 /lv1
df -Th /dev/vg1/lv1
动态管理空间
扩容
- 扩大逻辑卷空间
# 首先需要往卷组上看一眼,卷组的是否还有空间
vgdisplay
# 卷组有空间,利用卷组的空间为逻辑卷进行扩容
lvresize -l +500M /dev/vg1/lv1
# 然后要反应到文件系统上
# 需要注意的是要先挂载,然后再扩展文件系统
# 如果是ext4的文件系统
resize2fs /dev/vg1/lv1
# 如果是xfs的文件系统
xfs_growfs /dev/vg1/lv1
# 注意默认其会将逻辑卷上全部的空闲空间用于扩展文件系统
- 扩大卷组
# 想要扩大卷组就要先扩大物理卷
pvcreate /dev/sdb[35]
# 然后再扩大卷组卷
vgextend vg1 /dev/sdb[35]
回收
- 从逻辑卷中回收空间
# 先卸载文件系统
umount /lv1
# 然后需要缩小文件系统
resize2fs /dev/vg1/lv1 600M
# 上述含义为缩小为600M
# 然后再缩小逻辑卷
lvreduce -L 600M /dev/vg1/lv1
# 最后再重新挂载
mount /dev/vg1/lv1
快照
# 为分区/dev/vg1/lv1创建快照 lv1s
lvcreate -s -L 100M -n lv1s /dev/vg1/lv1
# 查看当前的全部lv 设备
lvs
# 将快照挂载
mkdir /lv1s
mount /dev/vg1/lv1s /lv1s
# 利用快照进行恢复
# 卸载快照
umount /dev/vg1/lv1s
# 卸载要恢复的分区
umount /dev/vg1/lv1
# 恢复
lvconvert --merge /dev/vg1/lv1s
使用交换分区和交互文件
增加交换分区
# 改id
fdisk /dev/sdc
l
t
82
可以查看交换分区使用情况:
free
# 使用/dev/sdc1创建交换分区
mkswap /dev/sdc1
# 使用交换分区
swapon /dev/sdc1
查看交互分区的具体使用情况:
swapon -s
停掉交换分区
swapoff /dev/sdc1
#也可更改这个文件使开机启用这个交互分区
vim /etc/fstable
# 增加交换文件
dd if=/dev/zeri of=/swapfile1 bs=1M count=200
# count 是bs的数量
chmod 0600 /swapfile1
mkswap /swapfile1
swapon /swapfile1
free
交换空间也会增加
swapon -s
# 停用这个交换文件
swapoff /swapfile1
rm -f /swapfile1
磁盘配额
为何需要磁盘配额?
进行配额设置
df -T
上述命令可以看到当前全部挂载分区以及其文件系统
使用软件包quota进行操作
在进行配额之前需要增加一些挂载选项
#-o 接参数 remount 可以在不卸载的情况下重新以后面参数的形式再次挂载
mount -o remount,usrquota,grpquota /dev/sdc2 /sdc2
或在挂载之前使用
mount -o usrquota,grpquota /dev/sdc2 /sdc2
或者可以写在/etc/fstab文件下 开机后自挂载
/dev/sdc2 /mnt/sdb1 ext4 defaults,usrquota,grpquota 0 0
- 然后对于ext4系列文件系统执行
# 扫描文件系统并生成配额文件
quotacheck -cvug /sdc2
# 接下来就可以开启配额功能了
quotaon /sdc2
#关闭为
quotaoff /sdc2
# 设置限额
edquota -u mike # 设置用户磁盘限额
edquota -g groupA # 设置组磁盘限额
edquota -t # 设置宽期限
quota -u mike # 查看用户磁盘限额使用情况
quota -g groupA # 查看设置组磁盘限额使用情况
在edquota 中
blocks 表示用户实际上使用了多少
soft hard (前面的这个代表大小)
500M 600M
soft hard(后面的这个代表文件)
100 120
- 对于xfs文件系统执行
其余相关命令
lost+found目录是什么?
如何创建指定大小的文件
实际操作
扩容虚拟机Linux
参考博客:
相关命令:
df:Display an overview of the filesystem disk space usage.
lsblk:Lists information about devices.
fdisk:Manage partition tables and partitions on a hard disk.
相关知识点:
-
磁盘阵列(RAID):
- 作用:将多个物理磁盘组合成一个逻辑单元,提高性能、可靠性或两者兼顾。
- 层级:最底层,直接与物理硬件交互。
-
LVM(逻辑卷管理):
- 作用:在物理存储之上提供一个逻辑抽象层,允许灵活地管理存储空间。
- 层级:位于RAID之上,文件系统之下。
-
ext4(文件系统):
- 作用:组织和管理存储在卷上的文件和目录。
- 层级:最上层,直接与操作系统和用户交互。
文件系统(ext4)
↑
逻辑卷(LVM)
↑
物理卷(可能是RAID)
↑
物理磁盘
LVM扩展时特殊点,我们可以用lsblk
或fdisk
查看,若出现LVM相关字样,说明用了LVM。
但是我没有使用,就是普通的磁盘管理。
通过df -Th
可以看到/dev/sda3
磁盘设备挂载在根目录\
下,且文件系统为ext4
, 可以使用fdisk /dev/sda
直接进行分区管理。
具体查看上述参考博客,但是需要注意的是:在扩展了分区的物理大小后,还需要相应地调整文件系统的逻辑大小:resize2fs /dev/sda3
使用fdisk -l
或lsblk
时还会看到其他一些设备如:fd0、loop0、loop1等。