day13 存储管理
硬盘命名
Nvme-0-n1-p1:0代表第一块Nvme硬盘,n1代表硬盘的第一个命名空间就相当于一块盘,p1代表n1下的第一个分区
MBR分区工具fdisk
fdisk /dev/sdb
对sdb硬盘进行fdisk命令操作
n 新建
p 主分区
d 删除
w 保存
mbr只能有4个主分区
lsblk /dev/sdb #查看sdb硬盘的分区情况
GPT分区工具gdisk
gdisk /dev/nvme0n1
对nvme硬盘进行gdisk命令操作
制作ext4或xfs文件系统
mkfs.xfs /dev/sdb1
格式化制作xfs文件系统
开机自动挂载
-
编辑 /etc/rc.local
在文件中写入
mount /dev/sdb1 /mnt
echo '/dev/sdb1 挂载到 /mnt'
cat /tmp/run.log
查看开机之后的日志 -
编辑 /etc/fstab
在文件中写入
/dev/sdb1 /mnt xfs defaults 0 0
在多块硬盘的场景下,sdb1的盘符可能对不上,尽量采用UUID的挂载方式:
查看UUID:
blkid /dev/sdb1
制作swap分区(虚拟内存分区)
fdisk /dev/sdb # 分出一个1G的硬盘空间
mkswap /dev/sdb1 # 格式化 硬盘分区 为swap
dd if=/dev/zero of=/swap_file bs=1M count=200
mkswap -f /swap_file #格式化 一个文件 作为swap
swapon /dev/sdb1 # 激活swap分区
swapon 后面也可以加文件,将这一个文件作为swap分区
swapon -s # 查看激活的swap分区
swapoff /dev/sdb1 # 关闭某一个swap分区
free 查看内存使用情况
buff/cache(缓冲区/缓存区) :操作系统用内存来对 写/读 进行优化操作
buff 主要侧重于对磁盘 I/O 操作的缓冲,关注的是数据的写入和读取过程;而 cache 主要侧重于对已经访问过的数据进行缓存,以提高数据的访问速度。
联系:它们都是为了提高系统的性能而存在的,并且都使用了系统的空闲内存。当系统内存紧张时,操作系统会自动回收 buff 和 cache 所占用的内存,以满足其他应用程序的需求。
释放 buff/cache 缓存(风险很大)
释放页缓存(Page Cache)
sudo sh -c 'echo 1 > /proc/sys/vm/drop_caches'
释放目录项和 inode 缓存
sudo sh -c 'echo 2 > /proc/sys/vm/drop_caches'
释放页缓存、目录项和 inode 缓存
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
这是最彻底的缓存释放操作,它会同时释放页缓存、目录项缓存和 inode 缓存,尽可能多地回收内存。
执行释放缓存命令后,再次运行 free -h,对比 buff/cache 列的值,你会发现其数值明显减小,而 free 列的值会相应增加。
partprobe 刷新分区表
partprobe 命令的主要作用就是让内核重新读取磁盘的分区表,从而使内核能够识别到最新的分区变化,而无需重启系统。
文件系统出错与修复
在Linux系统中,为了增加系统性能,通常系统会将一些数据写先放在内存中,并不会直接将数据写入硬盘,这是因为内存速度要比硬盘快若干倍。但是有个问题,万一公司服务器突然断电或者其他未知原因,再次启动后,会造成文件系统错误:“emergency mode”
journalctl 系统日志查看
journalctl -xb 是一个用于查看系统日志信息的命令
执行命令后,会输出一系列的日志信息,每条日志通常包含时间戳、日志来源(如内核、某个服务等)、日志级别(如错误、警告、信息等)和具体的日志消息。
修复方式(不懂)
0、如果进入不了操作系统,可以进入单用户模式下操作
1、首先尝试mount和umount文件系统,以便重放日志,修复文件系统,如果不行,再进行如下操作。
2、执行xfs_repair -n,只检查不修复:检查文件系统是否损坏,如何损坏会列出将要执行的操作
[root@localhost ~]# xfs_repair -n /dev/sdb2
如果是日志和数据不一致了,xfs 默认会在挂载的时候修复这种不一致,操作系统给出的建议是以读写的方式挂载并自动修复,可以尝试以只读不修复方式挂载文件系统。
[root@localhost ~]# mount -o ro,norecovery /dev/sdb2 /opt
3、如果上述挂载不成功,可以执行xfs_repair修复文件系统
[root@localhost ~]# xfs_repair /dev/sdb2
4、如果还不行,那最后方法只能采用"损失部分数据的修复方法"
根据打印消息,修复失败时:
先执行xfs_repair -L /dev/sdb2(清空日志,会丢失文件)
再执行xfs_repair /dev/sdb2
说明:-L是修复xfs文件系统的最后手段,慎重选择,它会清空日志,会丢失用户数据和文件。
备注:在执行xfs_repair操作前,最好使用xfs_metadump工具保存元数据,一旦修复失败,最起码可以恢复到修复之前的状态。
5、修复完成以后,尝试能不能正常挂载 ,如能,取消挂载,再启动就正常了
文件系统的备份与恢复
全量备份:留存多个节点的备份文件,随时恢复任意时间的系统状态
增量备份:备份文件及时同步系统最新改动,节省空间
直接用cp备份会浪费大量inode号
xfs文件系统的备份与恢复
安装xfsdump
先做全量备份
xfsdump -l 0 -L sdb3_bak -M sdb3_bak -f /全量备份的成果路径1(备份到哪) /备份的原路径(备份谁)
再做增量备份
xfsdump -l 1 -L sdb3_bak -M sdb3_bak -f /全量备份的成果路径1(备份到哪) /备份的原路径(备份谁)
恢复备份
xfsrestore -f /全量备份的成果路径1 /备份的原路径
lvm虚拟磁盘管理系统
LVM 是一种虚拟的磁盘管理系统,它将多个物理磁盘或分区抽象为一个整体的存储池,然后从这个存储池中划分出逻辑卷供用户使用。用户可以像使用传统分区一样使用逻辑卷,但具有更高的灵活性和可扩展性。

lvm优缺点
优点:
1、可以在系统运行的状态下动态的扩展文件系统的大小。
2、文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制。
3、可以增加新的磁盘到LVM的存储池中。
4、可以以镜像的方式冗余重要的数据到多个物理磁盘。
5、可以方便的导出整个卷组到另外一台机器。
缺点:
1、因为加入了额外的操作,存取性能受到影响。
2、当卷组中的一个磁盘损坏时,整个卷组都会受到影响。
解释:LVM如果有一个磁盘损坏,整个lvm都坏了,lvm只有动态扩展作用,
方案:底层用RAID + 上层LVM = 既有冗余又有动态扩展
2、在从卷组中移除一个磁盘的时候必须使用reducevg命令(该命令要求root权限,并且不允许在快照卷组中使用)
lvm使用
-
下载安装 lvm2
yum install -y lvm2 -
制作pv:可以对分区做、也可以对整块盘做
pvcreate /dev/sdb1 #对分区做
pvcreate /dev/sdc #对整块盘做
pvs #查看pv信息
pvscan #查看pv信息 -
制作vg:将pv划入vg中
vgcreate vg1 /dev/sdb1 /dev/sdc # 包含/dev/sdb1与/dev/sdc两个pv -
创建逻辑卷lvm
lvcreate -L 100M -n lv1_from_vg1 vg1 #按大小分配
lvcreate -l 100%VG -n lv的名字 vg的名字 #按百分比分配
lvs #查看lv1_from_vg1 -
格式与挂载
mkfs.xfs /dev/vg1/lv1_from_vg1 #给lv格式化文件系统
mount
在线动态扩容(不卸载的情况下)(xfs不支持缩容)
- 给vg扩容
pvcreate /dev/sdb4 #新增一个pv
vgextend myvg /dev/sdb #将xinzeng de pv /dev/sdb4 加入myvg - 给lv扩容
lvextend -L +1000M /dev/vg2/lv1_from_vg2 #给vg2的lv1分区加入1000M的空间
xfs_growfs /dev/vg2/lv1_from_vg2 #扩展逻辑卷之后需要更新fs文件系统
lvm 制作快照
快照创建时,建立到数据的硬链接。等PE块内容发生变化,将旧内容保存到快照空间
快照与被快照lv在同一个vg中,需要留足空间
- 查看vg1容量是否充足
vgs - 在vg1卷组里创建一个lv1_from_vg1的逻辑卷
lvcreate -L 1G -s -n lv1_from_vg1_snap /dev/vg1/lv1_from_vg1 - 修改数据
- 恢复数据
mount -o nouuid /dev/vg1/lv1_from_vg1_snap /opt/
快照在挂载的时候由于和原来的lvm是同一个UUID,而XFS是不允许相同UUID的文件系统挂载,所以需要加选项 -o nouuid - 把opt下需要还原的文件拷贝
- 批量合并
先卸载数据源与快照,再进行合并,快照会自动删除,一次性的
umount /test1
umount /opt
lvconvert --mergesnapshot /dev/vg1/lv1_from_vg1_snap
该命令会将名为 vg00/lvol1_snap 的快照合并到它的原始卷中。如果原始卷和快照卷都没有打开,合并将立即开始;否则,合并将在原始卷或快照卷下次激活且两者都关闭时开始。
mount /dev/vg1/lv1_from_vg1 /test1/
cat /test1/1.txt # 数据还原回来了

浙公网安备 33010602011771号