Linux存储管理

news2024/10/6 10:41:08

简介

硬件上的存储设备目前有两类,通过磁头读写信息的机械硬盘和用主控芯片将信息写入晶体管的固态硬盘,硬盘调度算法等知识可以通过前面的操作系统设备管理文章学习,本章只介绍Linux中能对存储设备的操作。

为了让操作系统识别和管理物理磁盘上的不同分区,需要在设备前加上一些信息来记录硬盘的分区情况,这些信息称为分区表,目前分区表有MBR和GPT两种格式:

MBR

管理的硬盘大小不能超过2T
有主分区和扩展分区两种,不管是哪种分区,总数不能超过4个分区
扩展分区内部可以逻辑上划分多个区域,但是在分区表中都算在一个分区内
如果作为系统盘,必须要设置一个激活分区,用于存放系统的引导文件

GPT

管理硬盘大小不能超过18EB,目前人类还没制造出单块这么大的硬盘
理论上支持无限分区,在win10系统上,最多可以分128个分区
如果作为系统盘,必须要创建一个EFI分区,用于存放系统的引导文件建议ESP分区512M,对齐8扇区4096字节

Linux存储结构

前面的小思考中了解了Linux系统中是一个/根目录下存放所有其他文件,普通用户存在home文件夹下,超级管理员使用root文件夹,其他的文件都是干啥的呢?现在详细展示如下:

/boot	开机所需文件—内核、开机菜单以及所需配置文件等
/dev	以文件形式存放任何设备与接口
/etc	配置文件
/home	用户家目录
/bin	存放单用户模式下还可以操作的命令
/lib	开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
/sbin	开机过程中需要的命令
/media	用于挂载设备文件的目录
/opt	放置第三方的软件
/root	系统管理员的家目录
/srv	一些网络服务的数据文件目录
/tmp	任何人均可使用的“共享”临时目录
/proc	虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
/usr/local	用户自行安装的软件
/usr/sbin	Linux系统开机时不会使用到的软件/命令/脚本
/usr/share	帮助与说明文件,也可放置共享文件
/var	主要存放经常变化的文件,如日志
/lost+found	当文件系统发生错误时,将一些丢失的文件片段存放在这里

设备文件dev中存储如下:

IDE设备	/dev/hd[a-d]
SCSI/SATA/U盘	/dev/sd[a-p]
软驱	/dev/fd[0-1]
打印机	/dev/lp[0-15]
光驱	/dev/cdrom
鼠标	/dev/mouse
磁带机	/dev/st0或/dev/ht0

分区管理

Linux系统中使用lsblk命令查看磁盘信息,Linux用sd[a-z]给物理盘命名,分区用物理盘名加序号的形式命名,如sda1,为了后续实验,提前添加了4块10G硬盘,示例如图:
查看硬盘信息

建立分区

fdisk管理MBR分区
fdisk 选项 磁盘方式管理,具体选项如下:

m	查看全部可用的参数
n	添加新的分区
d	删除某个分区信息
l	列出所有可用的分区类型
t	改变某个分区的类型
p	查看分区信息
w	保存并退出
q	不保存直接退出

gdisk管理GPT分区与fdisk类似。

parted高级分区操作
该操作实时生效,使用需小心注意,使用方法为parted 选项 设备 命令 参数,一些命令示例如下:

parted /dev/sda print # 查看分区情况
parted /dev/sdb mklabel msdos #  用于声明磁盘分区类型,标签类型为MBR,可修改为GPT,修改后磁盘原有数据全部丢失
parted /dev/sdb mkpart primary 起点 终点 # 创建磁盘分区,设定起点终点
parted /dev/sdb rm 逻辑盘号 #  删除磁盘

上述过程与Windows系统的磁盘新建卷类似,只是在Linux中使用命令行逐步完成。

建立文件系统

此步骤对应Windows中的格式化操作,使用mkfs工具完成,给划分好的分区建立文件系统,使用格式为mkfs.ext4 盘符给磁盘设置ext4文件系统,该文件系统是Linux中的主流系统,Windows中则是NTFS。

系统挂载

将格式化好的磁盘挂载到系统中,此步骤对应Windows中的分盘操作,使用mount工具完成,格式为mount 磁盘 挂载目录,使用这种方法只是临时挂载,重启时挂载失效,在/etc/fstab中写入才是永久挂载,加入字段为磁盘 挂载目录 文件系统 权限默认为defualt 是否备份默认为0 是否自检默认为0,文件展示如下:
磁盘挂载记录
未设置挂载目录的文件,默认占用/磁盘工具,且如果磁盘更换后,目录中的内容也更换,我们查看的文件内容,实质是磁盘内容。

取消挂载使用unmount 设备名实现。

查看文件系统信息

df操作显示文件系统的磁盘使用情况,可加参数-T显示文件系统类型,-h以人类可读的格式显示磁盘空间,使用K、M、G等单位。
df查看文件系统
du查看某个目录下文件数据的占用率,可加参数-s查看整个目录,-h以人可读形式输出。

交换分区

内存会将暂时不用的数据放入硬盘,操作系统中学到这是内存扩展的方式,用于接收内存转出数据的硬盘为交换分区,大小一般设置为物理内存的1.5到2倍,使用mkswap 磁盘设置交换分区,再使用swpon 磁盘添加交换分区。

可以通过free命令查看内存信息,其中包含交换分区的信息,展示如下:
内存信息
命令行中设置同样是临时的,如果要永久设置需要在/etc/fstab 文件中写入,此时只需将挂载目录和文件系统全部设置为swap即可,示例/dev/sdb2 swap swap defaults 0 0

磁盘容量配额

Linux是多用户的操作系统,可以通过该方法限制用户使用的空间。

使用该方法可能导致冲突,所以需要关闭SELinux服务etenforce 0,为确保文件系统支持,此时使用getenforce 查看,如果输出为Permissive说明关闭成功,还需要先检查挂载点是否支持配额mount | grep 挂载点,再重新挂载硬盘mount -o remount,usrquota,grpquota 挂载点,使之支持quota

使用yum install -y quota安装配额服务,首先使用quotacheck -avug扫描硬盘,选项解释如下:

-a:扫描所有在/etc/mtab内含有quota参数的文件系统
-u:针对用户扫描文件与目录的使用情况,会新建一个aquota.user文件
-g:针对用户组扫描文件与目录的使用情况,会新增一个aquota.group文件
-v:显示扫描过程的信息

然后使用quotaon -avug开启quota服务,此后就可以开始编辑配额,使用edquota -u user1即可,对用户的限制规则可以使用edquota -p user1 -u user2进行复制,设置完成后可以使用repquota -as查看限制情况。
设置用户配额
软限制指用户超出限额原有内容仍可使用,硬限制指用户超出限额后立即停止。

链接文件

Linux中有软硬两种链接方式,文件存储由指向文件的指针inode号和真实存储block组成
软链接指仅包含文件路径的方式,与Windows系统中的快捷方式一致
硬链接是指向原始文件inode的指针,是文件的本质,当文件删除或移动后仍然能找到文件,但不可跨分区链接。

创建链接文件使用ln -s 源文件 链接文件命令,参数-s表示软连接文件,缺省默认为硬链接。

磁盘阵列RAID

Linux系统存储多为企业使用,为了维护企业数据安全稳定,多数企业会选择使用磁盘阵列,用冗余来确保安全性,一定程度也可提高效率,磁盘阵列主要有以下几种:

RAID 0	数据条带,将数据分别存在多个盘中,可以提高读写效率,但不能保证安全性	
RAID 1	数据镜像,数据存在多个硬盘中,主要目的是保护数据,一个盘挂了还有备份
RAID 5	最少三块盘组成,分开存放数据,一块盘挂了可以通过奇偶校验的方法恢复
RAID 10	先做镜像再数据条带,最少4块盘组成阵列,也可以01即先做阵列再做条带

部署磁盘阵列

使用mdadm工具实现,其常用选项如下:

-a	检测设备名称
-n	指定设备数量
-l	指定RAID级别
-C	创建
-v	显示过程
-f	模拟设备损坏
-r	移除设备
-Q	查看摘要信息
-D	查看详细信息
-S	停止RAID磁盘阵列
-x	备份盘数量

部署首先安装服务yum -y install mdadm,再使用mdadm -Cv 新盘名 -a yes -n 数量 -l 阵列级别10 /dev/sdb /dev/sdc /dev/sdd /dev/sde部署磁盘阵列,再将磁盘格式化,挂载到目录中,使用mdadm -D 新盘名可查看详细信息,若要永久生效,同样需要将信息写入到fstab文件中,可使用echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab 实现。
部署阵列示例
可以看到新部署的磁盘容量为20G,而本章开始我们设置了四块容量为10G的磁盘,这是因为部署了10阵列,做了镜像冗余,磁盘容量少了一半。读写测试如下:

dd命令可从标准输入中读写数据,zero文件中可取出无限的数据,
读写测试
未使用条带的速度

关闭阵列

unmount 磁盘 挂载文件取消挂载
mdadm -S 磁盘停止阵列服务
mdadm --zero-superblock /dev/sd[b-e]清除阵列超级快信息,否则开机自动重做阵列
vim /etc/fstab修改文件,取消开机自动挂载

修复损坏阵列

使用mdadm -D 阵列名查看阵列状态,找到损坏的磁盘后卸载挂载,遇到设备忙时可以查看占用磁盘的进程,强制杀死后再卸载。

然后使用mdadm /dev/md0 -r /dev/sdb移除磁盘,再使用mdadm /dev/md0 -a /dev/sdb加上新的磁盘即可。

备份盘

为了进一步增加阵列健壮性,我们可以设置一块备份盘,当挂了一块盘后备份盘自动补上,通过如下命令设置, mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde 其中-x 1表示有一块备份盘,之后正常挂载使用即可,当一块盘挂了后,就会有备份盘接替。

LVM逻辑卷管理器

物理盘的大小在建立分区后确定,以后不易扩容调整,逻辑卷管理LVM是在硬盘和文件系统间加了逻辑层,从而提供了逻辑上管理磁盘的方法。

LVM构成

LVM又下至上分别由物理卷PV,卷组VG,逻辑卷LV,最小存储单元PE构成,
其中,卷组由多个物理卷构成,可以往其中添加物理卷,卷组通过物理卷组合最小存储单元,再形成逻辑卷从卷组中分离出来供挂载使用。

部署逻辑卷

pvcreate 物理盘路径 声明逻辑卷的物理卷
vgcreate 卷组名 物理盘路径 创造卷组
vgdisplay 卷组名 查看卷的信息
lvcreate -n 逻辑卷名 -l 基本单元个数/-L 指定大小 卷组名 划分卷组形成逻辑卷,通常最小存储单元为4M
lvdispaly 逻辑卷名 查看信息
mkfs.ext4 逻辑卷路径格式化
mount 逻辑卷路径 挂载目的挂载
部署示例

扩容逻辑卷

umount 挂载点取消挂载
lvextend -L 新容量 逻辑卷名 扩容逻辑卷
e2fsck -f 逻辑卷名 检查硬盘完整性,告知系统更新信息
resize2fs 逻辑卷名 重置硬盘容量
mount 逻辑卷名 挂载点重新挂载
df -h 查看挂载状态
扩充逻辑卷示例

缩小逻辑卷

在真正的生产活动中很少使用,因为该操作易损坏数据,而硬盘价格远远小于内部存储的信息,故一般没有公司会缩小磁盘,但在学习中还是都要了解。

取消挂载
检查完整性
resize2fs 逻辑卷名 新容量 重置容量
lvreduce -L 新容量 逻辑卷名 减小容量
重新挂载逻辑卷

逻辑卷快照

类似虚拟机快照,以后磁盘内容被修改时可使用快照进行恢复,但逻辑卷快照仅可使用一次,执行还原操作后立即自动删除,且要求快照卷的容量必须等于逻辑卷的容量。

使用-s参数生成快照卷,使用-L参数指定切割大小,使用lvcreate -L 容量-s -n 快照名 逻辑卷路径创建快照卷,还原使用lvconvert --merge 快照卷路径,执行后快照自动删除,若修改的文件大于快照大小,则恢复不会成功。

删除逻辑卷

逻辑卷自下而上建立,故删除需要自上而下执行,即从LVPV删除,具体步骤如下:

umount 挂载点取消挂载
vi /etc/fstab删除配置文件中永久生效的配置参数
lvremove 逻辑卷路径删除逻辑卷
vgremove 卷组名 删除卷组,只需卷组名即可
pvremove 物理卷路径 删除物理卷
删除逻辑卷

总结

本章学习了Linux系统中管理磁盘存储的方法,具体分为分区管理,设置磁盘配额,部署磁盘阵列和使用逻辑卷管理器,具体解释过程为:

分区管理使用parted工具声明磁盘分区类型,进行大小划分,再建立文件系统,主要是ext4,最后挂载到想要的文件夹上即可使用,对应与Windows系统新增磁盘的步骤基本类似。

设置磁盘配额使用quota工具,关闭安全服务并开启自身服务后,使用edquota -u user1管理用户限额即可。

磁盘阵列是使用冗余磁盘保证读写效率或安全性的方法,具体由条带、镜像、奇偶校验或其组合的形式,使用mdadm -Cv 新盘名 -a yes -n 数量 -l 阵列级别10 /dev/sdb /dev/sdc /dev/sdd /dev/sde实现。

逻辑卷管理器是借助文件和物理磁盘的中间层实现对硬盘容量动态修改的方法,分别对物理卷PV、卷组LG和逻辑卷LV进行创建和管理的方法实现,扩展和缩小只需使用lvextendlvreduce即可。

Linux系统中好像没有回收站机制,且系统文件保护并不严密,使用命令又不很直观,使用务必小心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1800455.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业差旅费管理如何实现真正的降本增效

看企业发展,不能只看当下,尤其对于看重长期价值的企业家来说,必须要用更长远的目光去看行业的未来。开源节流,扔掉一些没用的包袱减少负担,然后轻装上阵,并寻找企业发展的新增长点,仍然是众多企…

探索未来制造,BFT Robotics引领潮流

“买机器人,上BFT” 在这个快速变化的时代,创新和效率是企业发展的关键。BFT Robotics,作为您值得信赖的合作伙伴,专注于为您提供一站式的机器人采购和自动化解决方案。 产品系列: 协作机器人:安全、灵活、…

Vue3_对接腾讯云COS_大文件分片上传和下载

目录 一、腾讯云后台配置 二、安装SDK 1.script 引入方式 2.webpack 引入方式 三、文件上传 1.new COS 实例 2.上传文件 四、文件下载 腾讯云官方文档: 腾讯云官方文档https://cloud.tencent.com/document/product/436/11459 一、腾讯云后台配置 1.登录 对…

【外汇天眼】选择外汇EA的关键:策略适配、风险控制与稳定性评估

外汇EA(Expert Advisor)是外汇交易市场中广泛使用的自动化交易系统。它们通过预定义的规则和算法自动执行交易,旨在为交易者提供便捷的交易体验,同时提高交易效率和准确性。本文将从策略选择、风险控制和稳定性评估三个方面&#…

OKP绩效管理系统:助力企业实现卓越绩效

在当今竞争激烈的商业环境中,绩效管理系统成为企业提升效率和竞争力的重要工具。搭贝OKP绩效管理系统通过其强大的功能模块,帮助企业全面优化绩效管理流程,提升员工工作效率和企业整体绩效。本文将详细介绍搭贝OKP绩效管理系统的核心功能模块…

SpringBoot中的WebMvcConfigurationSupport和WebMvcConfigurer

在SpringBoot中可以通过以下两种方式来完成自定义WebMvc的配置: (1)继承WebMvcConfigurationSupport类 (2)实现WebMvcConfigurer接口 通过这两种方式完成的WebMvc配置存在差异,本文将对此作简单说明与区…

官网万词霸屏推广 轻松实现百度万词霸屏源码系统 带完整的安装代码包以及搭建教程

系统概述 官网万词霸屏推广源码系统是一款基于先进技术研发的综合性 SEO 工具。它的设计理念是通过智能化的算法和策略,帮助用户快速提升网站在百度等搜索引擎中的排名,实现大量关键词的霸屏效果。该系统整合了多种优化技术,包括关键词研究、…

日本指数实时API接口

日本 指数 实时API接口 # Restful API https://tsanghi.com/api/fin/index/JPN/realtime?token{token}&ticker{ticker}指定指数代码,获取该指数的实时行情(开、高、低、收、量)。 更新周期:实时。 请求方式:GET。…

Kali linux学习入门

Kali linux学习入门 文章目录 Kali linux学习入门Kali Linux简介Kali Linux工具篇Kali Docker安装Docker 更换国内镜像源Kali 安装 docker compose Kali Linux文档篇Kali Linux 社区篇 Kali Linux简介 Kali Linux是专门用于渗透测试linux操作系统,它由BackTrack发展…

Bev 车道标注方案及复杂车道线解决

文章目录 1. 数据采集方案1.1 传感器方案1.2 数据同步2. 标注方案2.1 标注注意项2.2 4d 标注(时序)2.2.1 4d标签制作2.2.2 时序融合的作用2.2.2.1 时序融合方式2.2.2.2 时序融合难点2.2.2.2 时序实际应用情况3. 复杂车道线解决3.1 split 和merge车道线的解决3.2 大曲率或U形车道…

单列集合.java

单列集合 为了存储不同类型的多个对象,Java提供了一些特殊系列的类,这些类可以存储任意类型的对象,并且存储的长度可变,这些类统称为集合。可以简单的理解为一个长度可变,可以存储不同数据类型的动态数组。集合都位于j…

mysql的binlog占用大量磁盘空间的解决方法

查看当前日志保存天数: mysql> show variables like %expire_logs_days%; ------------------------- | Variable_name | Value | ------------------------- | expire_logs_days | 0 | ------------------------- 1 row in set (0.08 sec) 默认是0&…

Mac - Node/Java 配置安装全流程

Mac - Node/Java 配置安装全流程 一. Git 安装二. Java 相关安装2.1 jenv 版本控制工具2.2 JDK1.8 和 JDK21的安装2.3 maven 安装 三. Node 相关安装3.1 nvm 版本控制工具3.2 Node 版本安装 一. Git 安装 1.我们首先安装一下Homebrew,这个工具很有用,能…

大数据处理学习笔记

sudo tar -zxvf hadoop-1.1.2.tar.gz -C / #解压到/usr/local目录下 sudo mv hadoop-1.1.2 hadoop #重命名为hadoop sudo chown -R python ./hadoop #修改文件权限 //java安装同上给hadoop配置环境变量,将下面代…

从C到C++,C++入门篇(1)

1.什么是C C是一种通用编程语言,由Bjarne Stroustrup在1980年代初开发,作为C语言的扩展。 C支持多种编程范式,包括过程式编程、数据抽象、面向对象编程和泛型编程等。 这种语言在操作系统、游戏开发、图形界面、嵌入式系统、分布式系统、网…

啵啵啵啵啵啵啵啵啵啵啵啵啵啵啵

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

“安全生产月”专题报道:AI智能监控技术如何助力安全生产

今年6月是第23个全国“安全生产月”,6月16日为全国“安全宣传咨询日”。今年全国“安全生产月”活动主题为“人人讲安全、个个会应急——畅通生命通道”。近日,国务院安委会办公室、应急管理部对开展好2024年全国“安全生产月”活动作出安排部署。 随着科…

外贸自动化脚本编写会用到的源代码!

随着全球化的加速推进,外贸行业正迎来前所未有的发展机遇,为了提高工作效率、减少人为错误,并更好地把握市场机遇,越来越多的外贸企业开始关注自动化脚本的编写与应用。 自动化脚本不仅可以帮助企业实现业务流程的自动化&#xf…

python-windows10普通笔记本跑bert mrpc数据样例0.1.001

python-windows10普通笔记本跑bert mrpc数据样例0.1.000 背景参考章节获取数据下载bert模型下载bert代码windows10的cpu执行结果注意事项TODOLIST背景 看了介绍说可以在gpu或者tpu上去微调,当前没环境,所以先在windows10上跑一跑,看是否能顺利进行,目标就是训练的过程中没…

python面向过程与初始面向对象编程

让我们穿越到《龙珠》世界,一起揭开 面向对象编程 的神秘面纱吧。 面向过程编程与面向对象编程 天下第一武道会 选手登记 第 22 届天下第一武道会即将召开,各路武术高手齐聚一堂,其中最受瞩目的,当属卡卡罗特(孙悟…