1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Linux - 磁盘基础知识 磁盘管理(类型 引导 分区 挂载 raid LVM loop overlayfs)

Linux - 磁盘基础知识 磁盘管理(类型 引导 分区 挂载 raid LVM loop overlayfs)

时间:2022-08-26 21:24:16

相关推荐

Linux - 磁盘基础知识 磁盘管理(类型 引导 分区 挂载 raid LVM loop overlayfs)

相关链接: lvm ⭐️使用LVM方式安装Ubuntu 16.04 - /xiaogan/p/6071892.htmlUbuntu LVM 分区实战 /w670165403/article/details/82081773Ubuntu16.04.5以lvm方式安装全记录 /loong576/2323927 linux之fstab文件详解 - /richerg85/article/details/17917129#linux 磁盘管理 - /watch?v=nmEJKylZv6o扩容 【笔记】openwrt 扩容 overlay文件系统 - https://lawsssscat./article/details/105237099

文章目录

硬盘结构硬盘类型# Raid 技术、Raid卡 引导# MBR(Master boot record)主引导记录# GPT(GUID Partition Table)全局唯一标识磁盘分区表# 扩展:efi,uefi和bios三种主板固件的区别 文件系统磁盘管理# 查看可用存储设备# 对磁盘分区# 对分区格式化# mount 创建一个挂载点⭐️ # 查看挂载情况扩展:df 命令扩展:lsblk 命令 ⭐️ # 查看占用挂载设备的进程⭐️ # 自动挂载@例子:给/home扩容 # 自动挂载(光盘)# 挂载光盘镜像# 只读挂载# 卸载分区 LVM# 介绍 PV、VG、LV# LVM 创建# LVM 删除⭐️ # 扩充vg(卷组)⭐️ # 拉伸 LV(逻辑卷)# 缩小一个逻辑卷# 缩小卷组 loop(伪设备)overlayfs# 基本规则# 例子 END

硬盘(Hard Disk Drive ,简称HDD)是计算机常用的存储设备之一

硬盘结构

物理结构

盘片:硬盘有多个盘片,每个盘片2面磁头:每面一个磁头

数据结构

扇区:磁盘上的每个磁道被分为若干个弧段,这些弧段便是硬盘的扇区。硬盘的第一个扇区,叫做引导扇区。磁道:当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。柱面:在有多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面。

存储容量

磁盘存储容量 = 磁头数 ∗ 磁道(柱面)数 ∗ 每道扇区数 ∗ 每扇区字节数 磁盘存储容量=磁头数*磁道(柱面)数*每道扇区数*每扇区字节数 磁盘存储容量=磁头数∗磁道(柱面)数∗每道扇区数∗每扇区字节数

硬盘类型

硬盘类型有以下几种

SAS硬盘

广泛应用与企业的硬盘

(是新一代的scSI技术,和sATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 6Gb/s)SATA硬盘

我们常常所谓的机械硬盘

(抗干扰性强,支持热插拔等功能,速度快,纠错能力强)ATA硬盘

并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代SSD硬盘

固态硬盘(性能比传统硬盘好,通常做系统盘)SCSI硬盘

现在少用(09月06日)

(小型机系统接口,SCSI硬盘广为工作站级个人电脑以及服务器所使用,资料传输时CPU占用率较低,转速快,支持热插拔等)IDE硬盘

老古董,能卖钱

💡 提示

关于磁盘接口,这里有详细描述:

《【扫盲】硬盘接口『 SATA 、 mSATA 、 m.2 ( NGFF )、PCI-E ( PICe 、 PCI Express ) 』及其协议 『 NVMe 、 AHCI 』

https://lawsssscat./article/details/127515050

# Raid 技术、Raid卡

RAID 是英文 Redundant Array of Independent Disk 的首字母缩写,中文意思是:独立磁盘冗余阵列

通俗的讲就是把多块硬盘组成一个独立的磁盘阵列进行管理。

实现raid技术的radi卡

(当然也可以软件实现,但是性能必然没有硬件实现的好)

文字: 各种 RAID 详解

视频:怎么组 RAID?其实很简单!

引导

引导即引导计算机如何识别硬盘。硬盘的引导分MBR和GPT两种

三分钟告诉你MBR和GPT的区别 /content/18/0901/23/11935121_783145790.shtml

# MBR(Master boot record)主引导记录

MBR是IBM公司早年间提出的,它是存在于磁盘驱动器开始部分的一个特殊的启动扇区

位置:

MBR扇区的具体位置在磁盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。由三个部分组成:

主引导程序磁盘分区表DPT(Disk Partition table)分区有效标志(55AA)

大小:

MBR扇区(主引导扇区),大小共512字节

其中:

主引导程序(boot loader)占用446个字节分区表(Partition table,即DPT)占64个字节

(硬盘中分区有多少以及每个分区的大小都记在其中,其中一个分区占用16个字节,所以主分区+扩展分区最多4个)(16*4=64

其中,扩展分区不能直接存储数据,需要通过在扩展分区上创建逻辑分区才能存储数据。且逻辑分区没有数量限制,所以我磁盘能有4个以上的分区

第三部分是分区有效标识(magic number),结束标志字,占2个字节,固定位55AA(称为“魔数” magic number)

(55AA是一个固定的值,不能变,一旦变了分区就失效了。)

# GPT(GUID Partition Table)全局唯一标识磁盘分区表

由于磁盘空间越来越大,而mbr分区最多只支持2T的磁盘,于是提出的新的磁盘组织方案。

gpt不在有分区的概念,所有CDEF盘都在一段信息中存储。因为兼容问题,gpt其实在引导的最开始部分也有一段mbr引导,也叫做“保护引导”,为了防止设备不支持uefi。

GPT和MBR的区别

mbr最多支持2T,而gpt理论上是无限制的mbr最多支持四个主分区,gpt没有限制gpt由uefi启动的,mbr由bios启动。

如何选择

如果你的硬盘超过2T,那么你必须选择GPT+UEFI,2t以下就无所谓了;

但毕竟gpt代表了未来,可以预见早晚uefi会会替代掉bios。

# 扩展:efi,uefi和bios三种主板固件的区别

BIOS(Basic Input Output System 基本输入输出系统)是个程序,存储在主板BIOS芯片中。它保存着计算机最重要的基本输入输出的程序,主要功能是从 CMOS 中读写系统设置的具体信息,为计算机提供最底层、最直接的硬件设置和控制。

简单来说,BIOS 是计算机启动时加载的第一个软件。

EFI或UEFI的一部分也是存储在一个主板芯片中,由于它们在功能上和BIOS差不多,所以习惯上也把存储EFI/UEFI的芯片叫做EFI/UEFI BIOS芯片,EFI/UEFI也叫做EFI/UEFI BIOS,但在实际上它们和BIOS根本是不一样的,所以最好还是把后面的“BIOS”尾巴去掉为好,下面就来具体谈一下BIOS、EFI和UEFI。

⭐️下面谈一下BIOS启动计算机的具体过程⭐️

稳定电压

当按下电源开关时,电源就开始向主板和其他设备供电,这时电压还不稳定,在早期的南北桥主板上,由主板北桥向CPU发复位信号,对CPU初始化;稳定电压后复位信号便撤掉。而对于现在的单南桥主板,则由CPU自身调整稳定电压达到初始化的目的,当电压稳定后,CPU便在系统BIOS保留的内存地址处执行跳转BIOS起始处指令,开始执行POST自检。

POST自检(Power On Self Test)

在POST自检中,BIOS只检查系统的必要核心硬件是否有问题,主要是CPU、640K基本内存、显卡是否正常,PS/2键盘控制器、系统时钟是否有错误等等。由于POST检查在显卡初始化以前,因此在这个阶段如发生错误,是无法在屏幕上显示的,不过主板上还有个报警扬声器,而且如果主板的8255外围可编程接口芯片没有损坏的话,POST报警声音一定是会出来的。可以根据报警声的不同大致判断错误所在,一般情况下,一声短“嘀”声基本代表正常启动,不同的错误则是不同的短“嘀”声和长“嘀”声组合。POST自检结束后,BIOS开始调用中断完成各种硬件初始化工作。

硬件初始化

硬件初始化工作中,主要说明两点,首先经过POST检测后,电脑终于出现了开机启动画面,这就是已经检测到了显卡并完成了初始化。

但是请注意

由于BIOS是在16位实模式运行,因此该画面是以VGA分辨率(640*480,纵横比4:3)显示的,因为实模式最高支持的就是VGA。以前的小14-17寸CRT显示器由于都是4:3比例,最高分辨率也比较低,因此这个开机启动画面没有什么违和感,但现在的液晶显示器基本上都是宽屏16:9的,分辨率也较高,因此在这样的显示屏下,启动画面上的一切东西显示都可以说“惨不忍睹”——图形被拉长,字体很大很模糊,可以很明显看到显示字体的锯齿。

BIOS只识别到由主引导记录(MBR)初始化的硬盘,之所以说明这点,是因为后续的EFI或UEFI采用了一种新的GUID磁盘分区系统(GPT)格式,这种硬盘在BIOS下是无法识别的

硬件全部初始化完毕后,接下来进入更新ESCD阶段。

ESCD更新阶段中

(Extended System Configuration Data 扩展系统配置数据)

在ESCD更新阶段中,BIOS将对存储在CMOS中和操作系统交换的硬件配置数据进行检测,如果系统硬件发生变动,则会更新该数据,否则不更新保持原状不变,ESCD检测或更新结束后,BIOS将完成最后一项工作,就是启动操作系统。

启动操作系统

最后这一步中,BIOS根据CMOS中用户指定的硬件启动顺序,读取相应设备的启动或引导记录,引导相应设备上的操作系统启动,进入操作系统,此后便由操作系统接替BIOS负责硬件和软件间的相互通信。如果发现所有硬件都没有能引导操作系统的记录,则会在屏幕上显示相应错误信息,并将电脑维持在16位实模式。

⭐️EFI、UEFI的发展⭐️

.

虽然BIOS作为电脑加电启动所必不可少的部分,但是从其于1975年诞生之日起近30余年,16位汇编语言代码,1M内存寻址,调用中断一条条执行的理念和方式竟然一点都没有改变,虽然经各大主板商不懈努力,BIOS也有了ACPI、USB设备支持,PnP即插即用支持等新东西,但是这在根本上没有改变BIOS的本质,而英特尔为了迁就这些旧技术,不得不在一代又一代处理器中保留着16位实模式(否则根本无法开机的)。

.

但是,英特尔在2001年开发了全新的安腾处理器,采用IA-64架构,并推出了全新的EFI。后来证明,安腾处理器、IA-64架构没有推广开来,而EFI和后继的UEFI却发扬光大,成为现在电脑的主要预启动环境

.

EFI(Extensible Firmware Interface 可扩展固件接口),它是用模块化、高级语言(主要是C语言)构建的一个小型化系统,它和BIOS一样,主要在启动过程中完成硬件初始化,但它是直接利用加载EFI驱动的方式,识别系统硬件并完成硬件初始化,彻底摒弃读各种中断执行。EFI驱动并不是直接面向CPU的代码,而是由EFI字节码编写成,EFI字节码是专用于EFI的虚拟机器指令,需要在EFI驱动运行环境DXE下解释运行,这样EFI既可以实现通配,又提供了良好的兼容。

.

此外,EFI完全是32位或64位,摒弃16位实模式,在EFI中就可以实现处理器的最大寻址,因此可以在任何内存地址存放任何信息。另外,由于EFI的驱动开发非常简单,基于EFI的驱动模型原则上可以使EFI接触到所有硬件功能,在EFI上实现文件读写,网络浏览都是完全可能的。

.

BIOS上的的CMOS设置程序在EFI上是作为一个个EFI程序来执行的,硬件设置是硬件设置程序、而启动管理则是另一个程序,保存CMOS又是另一个程序,虽然它们在形式的Shell上是在一起的。

.

EFI在功能上完全等同于一个轻量化的OS,但是EFI在制定时就定位到不足以成为专业OS的地位上,有下面几个原因:

它只是一个硬件和操作系统间的一个接口EFI不提供中断访问机制,EFI必须用轮询的方式检查并解释硬件,较OS下的驱动执行效率较低EFI只有简单的存储器管理机制,在段保护模式下只将存储器分段,所有程序都可以存取任何一段位置,不提供真实的保护服务。

.

伴随着EFI,一种全新的GUID磁盘分区系统(GPT)被引入支持

传统MBR磁盘只能存在4个主分区,只有在创建主分区不足4个时,可以建立一个扩展分区,再在其上建立被系统识别的逻辑分区,逻辑分区也是有数量的,太多的逻辑分区会严重影响系统启动,MBR硬盘分区最大仅支持2T容量,对于现在的大容量硬盘来说也是浪费。GPT支持任意多的分区,每个分区大小原则上是无限制的,但实际上受到OS的规定限制不能做到无限,不过比MBR的2T限制是非常重要的进步。GPT的分区类型由GUID表唯一指定,基本不可能出现重复,其中的EFI系统分区可以被EFI存取,用来存取部分驱动和应用程序,虽然这原则上会使EFI系统分区变得不安全,但是一般这里放置的都是些“边缘”数据,即使其被破坏,一般也不会造成严重后果,而且也能够简单的恢复回来。

.

当EFI发展到1.1的时候,英特尔决定把EFI公之于众,于是后续的2.0吸引了众多公司加入,EFI也不再属于英特尔,而是属于了Unified EFI Form的国际组织,EFI在2.0后也遂改称为UEFI(Unified EFI 统一的可扩展固件接口 ),与前身EFI相比,UEFI主要有以下改进:

UEFI具有完整的图形驱动功能,之前的EFI虽然原则上加入了图形驱动,但为了保证EFI和BIOS的良好过渡,EFI多数还是一种类DOS界面(仍然是640480VGA分辨率),只支持PS/2键盘操作(极少数支持鼠标操作),不支持USB键盘和鼠标。到了UEFI,则是拥有了完整的图形驱动,无论是PS/2还是USB键盘和鼠标,UEFI一律是支持的,而且UEFI在显卡也支持GOP VBIOS的时候,显示的设置界面是显卡高分辨率按640480或1024*768显示,因此画面虽小但很清楚,但是这样会导致屏幕周围大片留黑,不过鱼和熊掌不可兼得,除非UEFI默认窗口大小也是最高分辨率。

UEFI具有一个独特的功能,安全启动,而EFI是没有安全启动的,安全启动(Secure Boot),实际上通俗的解释是叫做固件验证。开启UEFI的安全启动后,主板会根据TPM芯片(或者CPU内置的TPM)记录的硬件签名对各硬件判断,只有符合认证的硬件驱动才会被加载,而Win8以后的Windows则是在操作系统加载的过程中对硬件驱动继续查签名,符合Windows记录的硬件才能被Windows加载,这在一定程度上降低了启动型程序在操作系统启动前被预加载造成的风险,但是这也会造成系统安装变得垄断。

.

无论EFI还是UEFI,都必须要有预加载环境、驱动执行环境、驱动程序等必要部分组成,为了支持部分旧设备(如在UEFI下挂载传统MBR硬盘,不支持UEFI启动的显卡在UEFI下仍然支持运行等),还需要一个CSM兼容性支持模块、EFI或UEFI都是仅支持GPT磁盘引导系统的

⭐️下面就具体谈一下EFI或UEFI启动计算机的过程。⭐️

预加载环境(≈稳定电压+POST自检)

一般地,预加载环境和驱动执行环境是存储在UEFI(UEFI BIOS)芯片中的,当打开电源开关时,电脑的主要部件都开始有了供电,与BIOS不同的是,UEFI预加载环境首先开始执行,负责CPU和内存(是全部容量)的初始化工作,这里如出现重要问题,电脑即使有报警喇叭也不会响,因为UEFI没有去驱动8255发声,不过预加载环境只检查CPU和内存,如果这两个主要硬件出问题,屏幕没显示可以立即确定,另外一些主板会有提供LED提示,可根据CPU或内存亮灯大致判断故障。驱动执行环境(DXE)载入(≈硬件初始化)

CPU和内存初始化成功后,驱动执行环境(DXE)载入,当DXE载入后,UEFI就具有了枚举并加载UEFI驱动程序的能力,在此阶段,UEFI会枚举搜索各个硬件的UEFI驱动并相继加载,完成硬件初始化工作,这相比BIOS的读中断加载速度会快的多,同样如加载显卡的UEFI驱动成功,电脑也会出现启动画面,硬件驱动全部加载完毕后,最后同BIOS一样,也得去启动操作系统。启动操作系统

在启动操作系统的阶段,同样是根据启动记录的启动顺序,转到相应设备(仅限GPT设备,如果启动传统MBR设备,则需要打开CSM支持)的引导记录,引导操作系统并进入,这里需要注意的是,UEFI在检测到无任何操作系统启动设备时,会直接进入UEFI设置页面,而不是像BIOS那样黑屏显示相关信息。

综上对BIOS和UEFI启动计算机过程的叙述,可以概括为:

BIOS先要对CPU初始化,然后跳转到BIOS启动处进行POST自检,此过程如有严重错误,则电脑会用不同的报警声音提醒,接下来采用读中断的方式加载各种硬件,完成硬件初始化后进入操作系统启动过程;而UEFI则是运行预加载环境先直接初始化CPU和内存,CPU和内存若有问题则直接黑屏,其后启动PXE采用枚举方式搜索各种硬件并加载驱动,完成硬件初始化,之后同样进入操作系统启动过程。

此外,寻址空间:

BIOS是16位汇编语言程序,只能运行在16位实模式,可访问的内存只有1MB而UEFI是32位或64位高级语言程序(C语言程序),突破实模式限制,可以达到要求的最大寻址。

最后,它们三兼容性的区别:

BIOS支持MBR、不支持GPTEFI兼容MBR、支持GPTUEFI同EFI

文件系统

文件系统类型决定了向分区中存放、读取文件数据的方式和效率,在对分区进行格式化时需要选择使用的文件系统类型。

最常用的文件系统主要包括以下几种格式:

EXT4:第4代扩展文件系统,用于存放文件和目录数据的分区,是 Linux系统中默认使用的文件系统。

是典型的日志型文件系统,其特点是保存有磁盘存取记录的日志数据,便于恢复,在存取性能和稳定性方面更加出色。

SWAP:交换文件系统,用于为Linux系统建立交换分区。交换分区的作用相当于虚拟内存,能够在一定程度上缓解物理内存不足的问题。

一般建议将交换分区的大小设置为物理内存的 1.5~2倍。

例如,对于拥有512MB物理内存的主机,其交换分区的大小建议设置为1024NB。如果服务器的物理内存足够大(如 8GB以上),也可以不设置交换分区。交换分区不用于直接存储用户的文件和目录等数据。

XFS:是一种高性能的日志文件系统,特别擅长于处理大文件,可支持上百万T字节的存储空间。

由于XFS文件系统开启日志功能,所以即便发生宕机也不怕数据遭到破坏,这种文件系统可以根据日志记录在短时间内进行数据恢复。

Linux系统还广泛支持其他各种类型的文件系统:

如JFS、FAT16、FAT32、NTFS 等。

Centos 6默认使用EXT4而Centos 7默认使用XFS

磁盘管理

添加设备、分区、格式化(创建文件系统)、创建挂载点、修改配置文件

# 查看可用存储设备

fdisk -l[root@localhost ~]#fdisk -l磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x00090272设备 BootStart EndBlocks Id System/dev/sda1 * 20481026047512000 83 Linux/dev/sda2 102604894146554194304 82 Linux swap / Solaris/dev/sda3 9414656 125829119 58207232 83 Linux磁盘 /dev/sdb:85.9 GB, 85899345920 字节,167772160 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x4b3de2b9设备 BootStart EndBlocks Id System/dev/sdb1 2048 41945087 20971520 83 Linux

上面输出信息中包含了各硬盘的整体情况和分区情况:

Decice:分区的设备文件名称Boot:是否引导分区。是,则有“*”标识Start:该分区在硬盘中的起始位置(柱面数)End:该分区在硬盘中的结束位置(柱面数)Blocks:分区的大小,以Blocks(块)为单位,默认的块大小为1024字节Id:分区对应的系统ID号。83表示Linux 中的EXT4分区、8e 表示LVM逻辑卷System:分区类型

# 对磁盘分区

fdisk /dev/sda

a toggle a bootable flag #设置启动分区d delete a partition #删除分区mprint thie menu#打印帮助界面nadd a new partition#新建一个分区pprint the partition table #打印分区表qquit without saving changes#退出不保存w wite table to disk and exit#退出并保存

如果出现下面这种情况:

是说当前磁盘正在被使用,修改记录只有在重启后才能生效。(或者输入指令强制生效)

生产上不能重启,因此多用强制指令:partprobe /dev/sda

注:如果是RHEL6操作系统,使用partx -a /dev/sda重新获取分区表。

# 对分区格式化

RHEL(Red Hat Enterprise Linux)系列

mkfs.ext3 /dev/sdb1 或 mkfs -t ext3 /dev/sdb1#RHEL5格式化mkfs.ext4 /dev/sdb1 或 mkfs -t ext4 /dev/sdb1#RHEL6格式化# RHEL7文件系统改为了xfsmkfs.xfs /dev/sda5 或 mkfs -t xfs /dev/sda5#RHEL7格式化

-t ext4表示将分区格式化成ext4文件系统类型。

ubuntu 20.4

# mount 创建一个挂载点

⭐️ # 查看挂载情况

很多命令可以完成

# 如下三选一lsblk # (list block)更好看 详细介绍:/lsblkdf -hmount | grep sda5 # mount信息过多,必须过滤

扩展:df 命令

不带选项及参数的mount 命令可以显示分区的挂载情况,若要了解系统中已挂载的文件系统磁盘使用情况,如剩余磁盘空间比例等,可以使用 df 命令。

命令格式如下:

df [选项] [文件] 或[设备]

常用选项如下:

扩展:lsblk 命令

lsblk 命令能列出系统上所有的磁盘

命令格式如下:

lsblk [参数]

常用选项和参数如下:

⭐️ # 查看占用挂载设备的进程

查看占用挂载设备的进程

fuser -v 挂载点

fuser -km 挂载点

问题:卸载时,磁盘busy怎么办

当卸载一个文件系统时,如果出现如下信息,表示该设备有人正在使用。

[root@zibbix ~]# umount /dev/sda5umount: /mnt/sda5: device is busy.(In some cases useful info about processes that usethe device is found by lsof(8) or fuser(1))

先查看

[root@zibbix ~]# fuser -c /mnt/sda5/mnt/sda5: 13796c[root@zibbix ~]# fuser -c /mnt/sda5/find//mnt/sda5/find/:13796c

杀死正在使用该文件系统的用户,然后才能进行卸载

[root@zibbix ~]# fuser -km /mnt/sda5/mnt/sda5: 13796c

⭐️ # 自动挂载

需要修改一个配置文件/etc/fstab(开机读取)

sudo vim /etc/fstab

UUID作用

UUID是一个标识你系统中的存储设备的字符串,其目的是帮助使用者唯一的确定系统中的所有存储设备,不管它们是什么类型的。它可以标识DVD驱动器,USB存储设备以及你系统中的硬盘设备等。

特点

它是正真唯一标识符(随机生成一个,重复的几率小于中彩票,因此认为唯一标识)

Linux中的许多关键功能现在linux赖于UUID

注意

注意

注意

注意

注意

修改完/etc/fstab文件后,运行

sudo mount -a

验证配置是否正确,配置不正确可能会导致系统无法正常启动。

@例子:给/home扩容

扩容前:

/home/dev/mapper/ubuntu-lv--root下的文件夹

扩容后:

/dev/mapper/ubuntu-lv--home挂载在/home,并且释放/dev/mapper/ubuntu-lv--root中原来/home占据的空间

实现:

# 复制文件mkdir /tmp/t1 mount /dev/mapper/ubuntu-lv--home /tmp/t1 cp -adp /home/* /tmp/t1/# cp 参数:# -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。# -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。# -f:覆盖已经存在的目标文件而不给出提示。# -i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。# -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。# -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。# -l:不复制文件,只是生成链接文件# 自动挂载配置echo "/dev/mapper/ubuntu-lv--home /homeext4 defaults 0 0" >> /etc/fstab# 挂载mount -a # 重启(测试新挂载修改是否有问题)reboot# 如果没问题,可以释放原来home的磁盘空间mount /dev/mapper/ubuntu-lv--root /tmp/t1rm /tmp/t1/home -rf

# 自动挂载(光盘)

vim /etc/fstab

写入

/dev/sr0/mntiso9660defaults00

或者

/dev/cdrom/mntiso9660defaults00

因为常识,cdrom是一个软连接,指向sr0

# 挂载光盘镜像

比如挂载镜像rhel-server-7.2-x86_64-dvd

mount -o loop rhel-server-7.2-x86_64-dvd /mnt

# 只读挂载

前提是 /sda5 这个目录已经挂载过了。

mount -o remount,ro /sda5

# 卸载分区

卸载分区

umount /dev/sda5

或者卸载挂载点

umount /sda5

如果有人在使用挂载目录,或出现无法卸载的情况。

看提示信息可知道处理方法

1.1lsof /sda5查看正在使用的情况

1.2. 可以通过杀死PID进程方式终止分区的使用。

2.1 或者使用fuser

LVM

参考:/p/126309480

LVM Logical Volume Manager 逻辑卷管理是针对磁盘管理的一项技术,与 RAID 有很多的相似点,也是把多个物理磁盘组合起来使用,LVM 甚至可以把多个 RAID 逻辑分区组合起来使用。

好处就是:LVM 管理的磁盘灵活性高,磁盘逻辑空间可以根据实际需要扩大或者缩小。

# 介绍 PV、VG、LV

介绍 LVM 的使用之前我们先来看几个和 LVM 使用相关的概念。

PV(Physical Volume)物理卷

物理卷可以是一块硬盘、一个物理硬盘的分区、RAID 逻辑分区等VG(Volume Group)卷组

卷组是由一个或者多个 PV 组成,可动态扩展和缩小存储空间的一种逻辑上的概念。VG 的存储空间可以被分割为 LV。LV(Logical Volume)逻辑卷

我们使用 LVM 技术将硬盘空间组成 VG 卷组后是不能直接使用的,就像我们把硬盘组成 RAID 之后也是不能直接使用的,要通过划分逻辑分区才能使用,LV 就是我们组好 VG 后划分出来的逻辑卷,逻辑卷就和硬盘的分区概念差不多,所以 LV 是可以格式化为具体的文件系统的。

PE(Physical extent)物理范围

PE 有点类似于磁盘的扇区,通过 LVM 技术组成的 PV 物理卷可以被划分为 PE,它是 LVM 技术中存储的基本单元,具有唯一的编号,用于对存储在硬盘中的数据进行寻址,它也是可以被 LVM 寻址的最小单元,默认大小是 4MB,当然这个大小是可以修改的。LE(Logical extent)逻辑范围

LE 和 PE 类似,PE 是物理上的 LVM 最小寻址单元,LE 是逻辑上的 LVM 最小寻址单元,在同一个 VG 卷组中,LE 的大小和 PE 的大小是相同的,并且是一一对应的。

LVM 本质就是把一堆物理硬盘逻辑的组合在一起,然后再逻辑的进行分区然后使用。

我们安装系统的时候可以选择使用 LVM 技术对磁盘进行管理,这样我们就可以动态的扩容或者减少硬盘的容量。LVM 技术虽然能够动态的扩容或者减少容量,但是它本身是没有容错机制的,所以我们只有结合 RAID 技术来做 LVM 的容错。还需要注意的是 LVM 组成的逻辑卷不适合用于分区给 /boot 和 swap 分区使用,这两个分区还是应该直接使用物理的磁盘分区。

在安装系统的过程中使用 LVM 技术的视频:LVM 磁盘逻辑卷组管理技术在安装系统中的使用

接着,是长达两个小时的理论视频,个人觉得能填补很多空缺。

Linux LVM分区与应用与详解

零基础Linux入门42.磁盘和文件系统管理(六)LVM详解

# LVM 创建

均在root权限下操作,所以要小心

查看新加的硬盘

fdisk -l

看到两块大小10G的硬盘 /dev/sdb /dev/sdc

创建物理卷pv

pvcreate /dev/sdb /dev/sdc

查看物理卷信息:

pvdisplay # 详细pvs

创建卷组vg

vg用于管理pv空间

# 创建名字为linuxcost的卷组vgcreate linuxcost /dev/sdb /dev/sdc

后续也能往卷组中添加pv

查看卷组信息

vgdisplay # 详情vgs

创建逻辑卷lv

# -n 逻辑卷名# -L 逻辑卷大小# 从 linuxcost 卷组中获取空间lvcreate -n mylv -L 2G linuxcost

查看逻辑卷信息

lvdisplay # 详细lvs

每创建成功一个逻辑卷,就会在 /dev 目录下多出一个所属卷组的逻辑卷文件夹

/dev/linuxcost/mylv

就是/dev下的属于/linuxcost卷组的/mylv逻辑卷

格式化逻辑卷,建立文件系统

mkfs.ext4 /dev/linuxcost/mylv

挂载使用

mount /dev/linuxcost/mylv /mnt

mount 命令查看挂载情况

我们可以看到,逻辑卷挂载的分区实际位置在/dev/mapper目录下(只是为了方便我们使用,给了一个链接路径)

# LVM 删除

注意,一定要按着 LV 》VG 》PV 的顺序删除

删除LV

lvremove /dev/linuxcost/mylv

删除VG

vgremove linuxcost

删除物理卷

pvremove /dev/sdb

⭐️ # 扩充vg(卷组)

如果在拉升lvm的第一步,查看vg中的空闲空间不够了,怎么办?

这时候需要扩充vg(卷组)

查看vg是否有空闲的物理卷

vglisplay

将要添加到vg的硬盘格式化为pv

pvcreate /dev/sdd

将新的pv添加到指定卷组中

vgextend linuxcost /dev/sdd

最终可以看到,现在多出了10g 可用

⭐️ # 拉伸 LV(逻辑卷)

保证VG中有足够的空闲空间

vgdisplay

可以看到,有一个lv(逻辑卷)大小是2g,并且已经挂载了

可以看到,我们的vg(卷组)还有17g的空间

扩充逻辑卷

lvextend -L +1G /dev/linuxcost/mylv

执行后,提示已经成功拉伸逻辑卷。

查看扩充后的LV大小

lvdisplay

看到逻辑卷大小确实扩充了,mount还在线,数据也没有丢失

但是,df -h 查看到, /dev/mapper/linuxcos-mylv 大小还是2G

原因是,逻辑卷是个底层的东西,操作系统使用任何底层的东西,都要先进行格式化(也就是说创建文件系统)。

我们在逻辑卷上创建的文件系统是2g,现在拉升后,没有更新文件系统,所以文件系统显示出来的还是2g。

更新文件系统

resize2fs /dev/linuxcost/mylv

问题:

Linux LV扩容时resize2fs: Bad magic number in super-block while trying to open问题

解决:

不同格式的文件需要使用不同命令

df -T

查看文件系统格式

如果是xfs系统格式,需要用xfs_growfs命令

xfs_growfs /dev/linuxcost/mylv

查看更新后的文件系统

df -h

# 缩小一个逻辑卷

逻辑卷的缩小是无法在线执行的,必须要离线

卸载已经挂载的逻辑卷

umount /dev/linuxcost/mylv

缩小文件系统

# 文件系统的空间缩小1Gresize2fs /dev/linuxcost/mylv 1G

上面的命令行中,第一次执行没有成功,而是提示要执行命令,进行磁盘校验

resize2fs -f /dev/linuxcost/mylv

之后再次执行下面命令,才能成功

resize2fs /dev/linuxcost/mylv 1G

centos 7 lvm 扩容刷新lv 报错Couldn’t find valid filesystem superblock.的解决

df -Txfs_growfs /dev/centos/root

缩小lv

lvreduce -L -1G /dev/linuxcost/mylv

命令执行过程中,有提示this may destroy your data

是因为不同工具的单位换算可能不一样,因此尽量要留有缓冲空间,如文件系统缩小10G,而逻辑卷只缩小9G。

查看缩小后的lv

lvdisplay

挂载

mount /dev/linuxcost/mylv /mnt

# 缩小卷组

要确保vg(卷组)中的空闲空间比要拿走的硬盘的空间要大

将一个PV从制定卷组中移除

vgreduce linuxcost /dev/sdd

查看缩小后的卷组大小

vgdisplay

可见,当前的物理卷也从三块变成了两块

移除物理卷

pvremove /dev/sdd

loop(伪设备)

在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备。

它能使我们像块设备一样访问一个文件

即:

如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被 mount 起来

例如:

CD 或 DVD 的ISO 光盘镜像文件或者是软盘(硬盘)的*.img 镜像文件通过这种 loop mount (回环mount)的方式,这些镜像文件就可以被 mount 到当前文件系统的一个目录下。

loop 含义:

对于第一层文件系统,它直接安装在我们计算机的物理设备之上;

而对于这种被 mount 起来的镜像文件(它也包含有文件系统),它是建立在第一层文件系统之上,这样看来,它就像是在第一层文件系统之上再绕了一圈的文件系统,所以称为 loop。

losetup命令

losetup [ -e encryption ] [ -o offset ] loop_device filelosetup [ -d ] loop_device-e 表示加密的方式-o 设置数据偏移量-d 卸载设备loop_device 循环设备名,在 linux 下如 /dev/loop0 , /dev/loop1 等。file 要与循环设备相关联的文件名,这个往往是一个磁盘镜象文件,如 *.img

使用举例

# 创建空的磁盘镜像文件,这里创建一个1.44M的软盘dd if=/dev/zero of=floppy.img bs=512 count=2880# 使用 losetup将磁盘镜像文件虚拟成快设备losetup /dev/loop1 floppy.img# 挂载块设备mount /dev/loop0 /tmp# 经过上面的三步之后,我们就可以通过/tmp目录,像访问真实快设备一样来访问磁盘镜像文件floppy.img。# 卸载loop设备umount /tmplosetup -d /dev/loop1

overlayfs

mount -t overlay -o <options> overlay <mount point># <mount point> 是最终overlay的挂载点。# 其中overlay的options有如下:# lowerdir=<dir>#指定用户需要挂载的lower层目录#lower层支持多个目录,用“:”间隔,优先级依次降低。最多支持500层。# upperdir=<dir>#指定用户需要挂载的upper层目录,upper层优先级高于所有的lower层目录。# workdir=<dir>#指定文件系统挂载后用于存放临时和间接文件的工作基础目录。# default_permissions# redirect_dir=on/off#开启或关闭redirect directory特性#开启后可支持merged目录和纯lower层目录的rename/renameat系统调用。# index=on/off #开启或关闭index特性,开启后可避免hardlink copyup broken问题。

下面将lower和upper进行overlay,挂载到merge目录,临时workdir为work目录

mount -t overlay -o lowerdir=lower,upperdir=upper,workdir=work overlay merge

如下同样将lower和upper进行overlay到merge,但是merge为只读属性

mount -t overlay -o lowerdir=upper:lower overlay merge

# 基本规则

在使用如上mount进行OverlayFS合并之后,遵循如下规则:

lowerdir和upperdir两个目录存在同名文件时,lowerdir的文件将会被隐藏,用户只能看到upperdir的文件。lowerdir低优先级的同目录同名文件将会被隐藏。如果存在同名目录,那么lowerdir和upperdir目录中的内容将会合并。当用户修改mergedir中来自upperdir的数据时,数据将直接写入upperdir中原来目录中,删除文件也同理。当用户修改mergedir中来自lowerdir的数据时,lowerdir中内容均不会发生任何改变。因为lowerdir是只读的,用户想修改来自lowerdir数据时,overlayfs会首先拷贝一份lowerdir中文件副本到upperdir中。后续修改或删除将会在upperdir下的副本中进行,lowerdir中原文件将会被隐藏。如果某一个目录单纯来自lowerdir或者lowerdir和upperdir合并,默认无法进行rename系统调用。但是可以通过mv重命名。如果要支持rename,需要CONFIG_OVERLAY_FS_REDIRECT_DIR

# 例子

#!/bin/shcreate() {mkdir -p lower/common-dir lower/lower-dir upper/common-dir upper/upper-dir merge worktouch lower/common-dir/lower-file lower/lower-dir/lower-file upper/common-dir/upper-file upper/upper-dir/upper-fileecho "From lower." > lower/common-fileecho "From upper." > upper/common-fileecho "From lower." > lower/lower-fileecho "From upper." > upper/upper-filemount -t overlay -o lowerdir=lower,upperdir=upper,workdir=work overlay merge# mount -t overlay -o lowerdir=upper:lower overlay merge}delete() {umount mergerm -rf lower upper merge work}case $1 increate)create;;delete)delete;;esac

通过sudo ./overlayfs_test.sh create/delete创建测试环境或者清空。

├── lower│ ├── common-dir│ │ └── lower-file│ ├── common-file│ ├── lower-dir│ │ └── lower-file│ └── lower-file├── merge│ ├── common-dir│ │ ├── lower-file│ │ └── upper-file│ ├── common-file│ ├── lower-dir│ │ └── lower-file│ ├── lower-file│ ├── upper-dir│ │ └── upper-file│ └── upper-file├── overlayfs_test.sh├── upper│ ├── common-dir│ │ └── upper-file│ ├── common-file│ ├── upper-dir│ │ └── upper-file│ └── upper-file└── work└── work [error opening dir]

如上的脚本构建的OverlayFS结果如下:

两者共同目录common-dir内容进行了合并;重复文件common-file为uppderdir中的common-file。

更多,增删查改的结果参考:

《OverlayFS初识以及使用 》

/arnoldlu/p/13055501.html

END

能看到这里,真是辛苦你了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。