「Intel 80×86」- Paging(学习笔记)

分页工作原理
如何开启分页[……]

READ MORE

「x86」- 特权级(Privilege Level)学习笔记

该笔记是《x86 汇编语言:从实模式到保护模式》的「第 14 章 任务和特权级保护」的学习笔记。
程序,Program,是记录在载体上的指令与数据。
任务,Task,是正在执行的程序副本。
LDT – Local Descriptor Table
为了实现任务的隔离,处理器建议每个任务都应该具有自己的描述符表,局部描述符表(LDT,Local Descriptor Table),并将属于任务自己的段保存到 LDT 中。
与 GDT 不同,LDT 的零号槽位可是可用的。
LDTR – LDT Register
LDT 具有多个,为了追踪,处理器使用 LDTR(LDT Register)来追踪和访问 LDT,LDTR 的结构与 GDTR 相同,包含 32-bit 线性基地址 以及 16-bit 段界限 字段。
正在执行的任务为当前任务(Current Task),LDTR 只有一个,它指向当前正在运行的任务。任务发生切换时,会更新 LDTR 的内容,以指向新任务。
TSS – Task Status Segment
当任务发生切换时,需要保存当前任务的状态(比如各种寄存器),否则下次切换回该任务时无法继续执行。保存任务状态的段,本质上还是内存段,被成为任务状态段(TSS,Task Status Segment)。
该段格式固定,最小 104 字节,处理器固件能够识别 TSS 的每个元素。在任务切换时,处理器会读取其中的信息。
TR – Task Register
任务寄存器,TR,Task Register,用于指向当前任务的 TSS。当任务发生切换时,TR 也会指向新任务的 TSS。
切换过程(简述):处理器将当前任务状态保存到 TR 执行的 TSS 中,然后使 TR 指向新任务的 TSS,并从新的 TSS 中恢复任务状态
特权级别,Privilege Level
特权级别,Privilege Level,是存在于 Descriptor 及 Segment Selector 中一个数值,当这些 Descriptor 或 Segment Selector 要进行某些操作,或者被别的对象访问时,该数值用于控制它们能够进行的操作或者限制它们的可访问性。
Intel Processor 具有 4 个特特权级别(0-3)
描述符特权级(DPL,Descriptor Privilege Level)
每个 Descriptor 都具有描述符特权级(DPL,Descriptor Privilege Level)字段。Descriptor 总是指向它所“描述”的目标对象,代表带对象,因此该字段(DPL)实际上是目标对象的特权级。
当前特权级(C[……]

READ MORE

「Intel 80×86」- 寄存器(学习笔记)

Register,寄存器,在 CPU 中的存储电路,功能类似于在机器语言中的变量。
16-bit(8086, 8088, … 80286)
通用寄存器(General-Purpose Registers)
general-purpose registers (GPRs)

idx
Register
16-bit (15-00)
08-bit (15-08)
08-bit (07-00)
Descripton

1
Accumulator
AX
AH
AL
累加 寄存器

2
Counter
CX
CH
CL
计数 寄存器

3
Data
DX
DH
DL
数据 寄存器

4
Base
BX
BH
BL
基址 寄存器

对于在表中的 08-bit 寄存器(AH, AL, …),以 16-bit AX 为例: 1)0-7 为低 8 位,称为 AL;在汇编语言中,可以“使用 AH 寄存器” 2)8-15 为高 8 位,称为 AH;在汇编语言中,可以“使用 AL 寄存器”
因此,在 16-bit CPU 中,只有这 4 个通用寄存器。
每个寄存器为 16 位,因此存储 16 位二进制数。以前为 8 位,现在名称后缀 X 表示 extend 为 16 位。这 8 个寄存器共计 16 字节。
如上顺序是按照在机器语言中寄存器的编号进行排序的。
AX 用于计算,会使机器语言会更简洁: 1)ADD CX, 0x1234 => 81 C1 34 12 2)ADD AX, 0x1234 => 05 34 12
CX 方便计数而设计,BX 则适合作为计算内存地址的基点。
寻址寄存器(Index registers)
address registers, index registers

idx
Register
16-bit (15-00)
08-bit (15-08)
08-bit (07-00)
Descripton

5
Stack Pointer
SP
 
SPL
栈指[……]

READ MORE

「Intel 80×86」- Segment Limit(学习笔记)

数据段:0 <= EIP + Length of the Instruction – 1 <= (Segment Limit + 1 * G – 1)
栈段:(Segment Limit + 1 * G – 1) < ESP – Length of the Operand <= 0xFFFF_FFFF
也就是说: 1)对于数据段,EIP 的移动范围在段内,不会低于段基地址; 2)但是栈段不同,ESP 可以“在段外”(可以“一出绕回”);[……]

READ MORE

「nil」- x.Miscellanies

Intel 80×86
220 = 1048576
210 = 1024
512(10) = 200(16) / 1024(10) = 400(16)[……]

READ MORE

「COMPUTER-COOLING」- 风扇(FAN)

3 PIN vs. 4 PIN
百度知道 /CPU 散热器三线和四线的区别
散热器三线和四线的区别主要源自散热的风扇: 1)三线的风扇只带有转速侦测功能, 2)而四线的风扇不仅带有转速侦测功能,还具备自动调速功能;
四线风扇的引脚四条线的功能分别是: 1)GROUND:接地线; 2)PEOWER:电源,一般是 12V; 3)SENSE:传感器信号针; 4)CONTROL:风扇转速控制针,通过该针的电压控制风扇转速;
而三线风扇只有前三条功能线;
但是,这两块风扇的引线定义和通用性,如下图所示:
TPFanControl / Thinkpad Fan Controller
ThinkPad-WIKI/TPFanControl Thinkpad Fan Controller (tpfancontrol) – SourceForge
风扇转速控制
参考 Fan speed control 文档;
散热器品牌
老马散热器[……]

READ MORE

「Motherboard」- 主板

研究对象
主板
研究工具
教育培训
书籍文献
《主板维修从入门到精通》,张军,ISBN:9787030203045;该版本较旧,建议买最新版本; 《计算机主板维修不是事儿》,讯维,第二版,ISBN:9787121247736;学习配套视频; 《主板维修实践技术》,ISBN:9787121155345
官方文档
博客文章
研究结果
理论:理解主板的基本构造及工作原理; 实践:能够进行主板维护及排错;[……]

READ MORE

「MOTHERBOARD」- 华擎(ASRock)主板

Z370M Pro4
华擎科技 > Z370M Pro4

处理器 – 支持第八代 Intel® 酷睿™ 处理器 (1151 插槽) – 数字供电 – 支持 Intel® Turbo Boost 2.0 技术 – 支持 Intel® K 系列不锁倍频处理器 – 支持华擎 BCLK 全范围超频
内存 – 双通道 DDR4 内存技术 – 4 x DDR4 内存插槽 – 支持 DDR4 4300+(OC)* / 4266(OC) / 4133(OC) / 4000(OC) / 3866(OC) / 3800(OC) / 3733(OC) / 3600(OC) / 3200(OC) / 2933(OC) / 2800(OC) / 2666 / 2400 / 2133 (非 ECC), un-buffered 内存 – 支持 ECC UDIMM 内存模块 (运行于非 ECC 模式) – 系统内存最大容量: 64GB** – 支持 Intel® 极限内存配置 (XMP) 2.0 技术 – DIMM 插槽采用 15μ 镀金接针
*第八代 Intel® CPU 支持 DDR4 高达 2666。 请参考华擎网站上的内存支持列表获得更多信息。
**由于操作系统的限制,在 Windows® 32-bit 操作系统下实际能使用的內存将少于 4GB。在Windows® 64-bit 操作系统下使用 64 位元的 CPU 则不会有此限制。[……]

READ MORE

「STORAGE」- 学习指南

研究对象
存储技术
研究目标
1)理论:形成对存储的基本认识,理解存储的基本工作原理;
研究工具
信息收集
教育培训:
书籍文章: 1)《大话存储, 终极版, 存储系统底层架构原理极限剖析》 2)《Ceph Cookbook, 中文版, 2016》 3)《固态硬盘火力全开:超高速 SSD 应用详解与技巧》
社区论坛: https://bbs.pceva.com.cn/ https://www.mobile01.com/ https://www.coolaler.com/index/ http://www.ssdfans.com/
博客文章:
制定路线
学习存储体系的基本认识: 1)《大话存储, 终极版, 存储系统底层架构原理极限剖析》
学习某些特定的存储组件: 1)《固态硬盘火力全开:超高速 SSD 应用详解与技巧》
学习某个特定的存储系统: 1)《Ceph Cookbook, 中文版, 2016》
执行路线
WIP[……]

READ MORE

「STORAGE」- 概念术语

存储历史(The History of Computer Storage)
Network share: Performance differences between NFS & SMB[……]

READ MORE

「STORAGE」- CD vs. DVD

问题描述
下载 Debian 操作系统镜像的时候,经常会有 CD 和 DVD 之分,比如: 1)debian-9.8.0-amd64-xfce-CD-1.iso 2)debian-9.8.0-amd64-DVD-1.iso
针对两者的区别,我们有些好奇。为此我们查阅相关内容,并记录该笔记;
解决方案
CD(Compact Disc)
CD-ROM 介质 光盘只读存储器 (CD-ROM) 是只读光盘。这些类型的光盘可进行商业化生产,光盘在生产出来后您无法将数据保存到其中;
CD-R 介质 可录型光盘 (CD-R) 是一种一次写入多次读取 (WORM) 光盘。这些光盘只能刻录一次数据,之后数据将永久保存在光盘上。光盘无法进行第二次刻录。然后,可以将其作为标准 CD-ROM 进行读取。在写入 CD-R 后,它会变成 CD-ROM;
CD-RW 介质 可擦写光盘 (CD-RW) 是可重复使用的可擦光盘。CD RW 光盘上的数据可被擦除和刻录多次; CD-RW 介质只能由 CD-RW 设备读取;
DVD(Digital Video Disc)
DVD 介质 数字多功能光盘或数字视频光盘 (DVD) 类似于 CD-ROM,您只能读取其中的数据。但主要区别在于,与 CD-ROM、CD-R 或 CD-RW 相比,DVD 可以存储更多的数据;
DVD+R 介质 DVD+R 是类似于 CD-R 的可录 DVD 格式。DVD+R 只能刻录一次数据,之后数据将永久保存在光盘上。光盘无法进行第二次刻录;
DVD+RW 介质 DVD+RW 是一种可重复使用的可擦光盘,与 CD-RW 类似。DVD+RW 光盘上的数据可被擦除和刻录多次;
DVD-R 介质 DVD-R 是一种类似于 CD-R 和 DVD+R 的可录 DVD 格式。DVD-R 只能刻录一次数据,之后数据将永久保存在光盘上。光盘无法进行第二次刻录;
DVD-RW 介质 DVD-RW 是可重复使用的可擦光盘,与 CD-RW 或 DVD+RW 类似。DVD-RW 光盘上的数据可被擦除和刻录多次;
DVD+R DL 介质 DVD+R DL 是一种类似于 DVD+R 的双层可录 DVD 格式。DVD+R DL 每张盘片最多可刻录 8.3 GB,而标准 DVD+R 只能刻录 4.7 GB。DVD+R DL 只能刻录一次数据,之后数据将永久保存在光盘上。光盘无法进行第二次刻录;
DVD+R/RW 驱动器无法写入 DVD-R 或 DVD RW 光盘,而 DVD-R/RW 驱动器则无法写入 DVD+R 或 DVD+RW 光盘。如果光盘与驱动器类型相反,则无法写入。有些类型的驱动器能够写入两种介质。较新的 DVD+R/RW 和 DVD-R/[……]

READ MORE

「PVE」- 通过 PVE Metirc Server + InfluxDB + Grafana 监控

问题描述
该笔记将记录:通过 PVE Metirc Server + InfluxDB + Grafana Dashboard 监控 PVE Cluster 的方法,以及相关问题的解决办法。
解决方案
InfluxDB v2.4.0, Flux
第一步、部署 InfluxDB 服务
部署 InfluxDB 服务,具体细节不再赘述;
创建 Bucket: pve-metric-server 实例; 1)Load Data => Buckets => + CREATE BUCKET
创建 PVE Cluster 推送数据的 API Token 参数(读写权限): 1)Load Data => API Tokens => + GENERATE API TOKEN 2)选择要访问的 Bucket 实例;
创建 Grafana Dashboard 访问的 API Token 参数(只读权限): 1)Load Data => API Tokens => + GENERATE API TOKEN 2)选择 Read/Write API Token 选项; 3)在 Read 和 Write 中,选择该 Token 能够访问 BUCKET 实例;
第二步、PVE Metric Server
Metric Server => Add => InfluxDB
Name: pve-monitor Server: influxdb.example.org Port: 443 Protocol: HTTPS Organization: <influxdb org> Bucket: <influxdb bucket> Token: <influxdb api token>
补充说明: 1)配置文件路径:/etc/pve/status.cfg 2)如果配置成功,在 InfluxDB 的 Bucket: pve-metric-server 中,将看到监控数据; 3)查看 systemctl status pvestatd.service 服务,检查是否存在错误;
第三步、Grafana Dashboard
配置数据源,在 Grafana 中,添加 InfluxDB 数据源:

– name: Infra Mon Central (InfluxDB)
type: influxdb
access: proxy
url: <influxdb url>
secureJsonData:
token: <influxdb api token>
jsonData:[……]

READ MORE

「Screw」- 螺丝

该螺丝为 M3*6 尺寸,表示:螺纹直径 3mm * 螺身长度 6mm(尺寸必须卡尺测量)
螺丝通常会有负公差: 1)根据我们的观察,M2.5 的螺丝通常直径大约有 2.04mm;M3 的螺丝直径大约有 2.7mm; 2)所以,螺丝的测量值为 M2.5,则通常需要购买 M3 规格;
螺栓

螺母[……]

READ MORE

「Linux」- 数据库客户端

问题描述
该部分下整理了常用数据库客户端(一部分在本页面中介绍,一部分在分类下面介绍)。本页面中的只是一些简单的介绍。分类下的内容涉及到了数据库的使用、设置、特性等等更多的内容。
本部分并不包含一些数据库工具,比如(MySQL Utilities、sqlinform等等)。
# TeamSQL
需要注册帐号。 https://teamsql.io/download?os=linux
# SQLECTRON-GUI
https://sqlectron.github.io/
# SQuirreL
由Java语言开发的数据库管理工具。 http://squirrel-sql.sourceforge.net
# DbVisualizer
依旧分为免费版和专业版 支持的平台:Windows/MacOS/Linux/Unix https://www.dbvis.com
# Database Workbench
目前为止(08/24/2017)只能用于Windows平台 https://mariadb.com/kb/en/the-mariadb-library/database-workbench
开发工具
SQL Developer for Oracle
Download Page Oracle SQL Developer Documentation How to Set up Third Party Databases Drivers in Oracle SQL Developer
SQL Developer,一个免费的IDE,可简化传统和云部署中Oracle数据库的开发和管理。 SQL Developer提供完整的端到端开发PL/SQL应用程序、运行查询和脚本的工作表(worksheet)、用于管理数据库的DBA控制台、报告界面、完整的数据建模解决方案、迁移第三方数据库到Oracle。
针对其他数据库,仅支持对象和数据的浏览: MySQL, Microsoft SQL Server, Microsoft Access, Sybase, Teradata and IBM DB2
建模工具
SQL Developer Data Modeler
CSDN/oracle datamodeler,查看您的 Oracle SQL Developer Data Modeler 设计 ORACLE/使用 Oracle SQL Developer 进行数据建模 ORACLE/SQL Developer Data Modeler Downloads
Oracle SQL Developer Data Modeler 是一个免费的图形化工具,可提高工[……]

READ MORE

「STORAGE」- 逻辑卷管理

逻辑卷 —— 联合多个单盘,以形成更大的存储盘;
解决方案
IBM / Logical Volume Manager Hewlett-Packard / HP Logical Volume Manager FreeBSD / Vinum Volume Manager FreeBSD / ZFS NetBSD / Logical Volume Manager (a.k.a. LVM) NetBSD / ZFS NetBSD / bioctl arcmsr The OpenBSD Project / bioctl softraid …
RAID
参考文献
Logical volume management – Wikipedia[……]

READ MORE

「STORAGE」- JBOD, Just a Bunch Of Disk

解决方案
JBOD(just a bunch of disks,简单磁盘捆绑,简单驱动捆绑),其是个不太正规的术语,官方术语称作“Spanning”,它用来指「还没有根据 RAID(独立磁盘冗余阵列)系统配置以增加容错率和改进数据访问性能」的电脑硬盘;
原理简述
磁盘叠加

特性特征
顺序存放:资料的存放机制是由第一颗 磁碟开始依序往后存放,即作业系统看到的是一个大磁碟(由许多小磁碟组成)。
不支持容错:在某些分类上,JBOD并不算是RAID的等级。只是将多个磁碟空间合併成一个大的逻辑磁碟,不具有错误备援机制。
廉价(充分利用磁盘):
数据容易恢复:数据是存储到单个磁盘的,如果磁盘损坏可以进行单独修复(如果是 RAID 0 阵列,其数据是横向写入,则磁盘损坏后便无法恢复)。如果磁碟损毁,则该颗硬碟上的所有资料将无法救回。若第一颗硬碟损坏,通常无法作救援(因大部分文件系统将元数据存在磁碟前端,即第一颗),失去档案表即失去一切资料。
应用场景
该技术是为了组建更大的磁盘,为需要大量磁盘的应用提供存储;
JBOD 是个概念,而非类似于 RAID LVM 之类的存储技术,所以可能没有专门的 JBOD 软件或硬件,但是通过 LVM Linear 能够实现 JBOD 技术;
以三个硬盘组成的 Span 为例,其数据存储方式:Span 是在逻辑上把几个物理磁盘一个接一个串联到一起,从而提供一个大的逻辑磁盘。Span 上的数据简单的从第一个磁盘开始存储, 当第一个磁盘的存储空间用完后, 再依次从后面的磁盘开始存储数据。Span 存取性能完全等同于对单一磁盘的存取操作。Span 也不提供数据安全保障。它只是简单的提供一种利用磁盘空间的方法,Span 的存储容量等于组成 Span 的所有磁盘的容量的总和;
参考文献
百度百科/JBOD JBOD – Network Encyclopedia JBOD vs. RAID: What Are the Differences?[……]

READ MORE

「LVM」- 逻辑卷管理(Logical Volume Manager)

LVM(Logical Volume Manager,逻辑卷管理)是 Linux 环境下对磁盘分区进行管理的一种机制。可以简单的理解为将多张硬盘抽象成一张逻辑硬盘来使用,但实际上还包含了一些更高级的功能,比如便捷的扩容、动态增加存储池空间、镜像冗余等等。
简单说 LVM 的工作原理其实是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取。而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说,增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。
LVM 最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,所以不需要调整硬盘中的数据分布来扩容,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。[……]

READ MORE

「LVM」- 逻辑卷管理

TODO ! LVM 学习相关概念术语,存储类型;How to Create Thin Provisioned Logical Volumes in Linux
PV, VG, PE, LV

物理卷 – PV(Physical Volume)
在LVM中,PV处于最底层,它可以是物理硬盘上的分区,也可以是整个物理硬盘,也可以是RAID设备。
卷组 – VG(Volumne Group)
在PV之上,建立VG。一个VG由一个或多个PV组成,可以说VG是PV的集合。
在VG建立之后,可动态的向VG中添加PV。
可以只有一个VG,也可以拥有多个VG。
物理块 – PE(Physical Extent)
在整个LVM中,PE是最小的储存区块。也就是说,其实我们的数据都是写入PE的。简单的说,这个PE就有点像文件系统里面的block大小。
在LVM1中,默认使用4MB的PE区块,而LVM的LV最多仅能含有65534个PE(lvm1的格式),因此默认的LVM的LV最大容量为4M*65534/(1024M/G)=256G。所以,PE的大小会影响到LVM的最大容量。不过,在 CentOS 6.x 后,由于直接使用LVM2的各项格式功能,因此这个限制已经不存在了。
逻辑卷 – LV(Logical Volume)
在VG之上,建立LV。在VG中的未分配空间可以用于建立新的LV。
在LV建立后,依旧可以动态地扩展和缩小LV的空间。
系统中的多个LV可以属于同一个VG,也可以属于不同的多个VG。但是,一个LV只能属于一个VG。
Three Types of LV
3.3. LVM Logical Volumes Red Hat Enterprise Linux 5 | Red Hat Customer Portal
LV 有三种类型:linear volumes;striped volumes;mirrored volumes;
Linear Volumes
简单说,在该模式下,物理存储是串联的,依序分配 PE 给 LV,如下:

|——- LV1 ——-||— LV2 —||———– LV3 ——-||— LV4 —||— LV5 —|
|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|PE|
|—————————————- VG ———————————–[……]

READ MORE

「LVM」- 创建新分区

安装过程

apt-get install lvm2

解决方案
pvscan,物理卷扫描; pvcreate,物理卷创建:将普通的物理存储转换为物理卷。 pvdisplay,物理卷信息显示;
pvmove,移动物理卷; pvchange pvck
pvremove pvresize pvs[……]

READ MORE

「LVM」- 常见问题处理

[……]

READ MORE

「LVM」- 创建分区

问题描述
该笔记将记录:在 Linux 中,如何使用 LVM 创建逻辑卷,以及常见问题解决方法。
实验环境
磁盘:两块磁盘,各 2T,共 4T,分别为 /dev/sdb 和 /dev/sdc; 系统:ClearOS(是RHEL的衍生版);
第一步、创建物理磁盘
(1)使用fdisk命令处理磁盘,创建分区,(2)并将「磁盘类型」设置为 8e 类型(Linux LVM)

fdisk /dev/sdb
# 详细过程略过……

fdisk /dev/sdc
# 详细过程略过……

创建完后,分别为/dev/sdb1和/dev/sdc1
第二步、创建物理卷(PV)

# 创建PV:
pvcreate /dev/sdb1 /dev/sdc1

# 查看PV信息
pvs
pvdisplay

第三步、创建卷组(VG)

# 创建VG:
vgcreate lvm00 /dev/sdb1 /dev/sdc1

# 查看VG信息
vgs
vgdisplay

第四步、创建逻辑卷(LV)

# 创建 LV:
# lvcreate -n kvmimg -l 12.5%FREE lvm00
# lvcreate -n kvmimg -l 100%FREE lvm00 # 使用所有空闲空间
lvcreate -n kvmimg -L 500G lvm00

# 查看 LG 信息
lvs
lvdisplay

# 重命名逻辑卷
# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/logical_volume_manager_administration/lv_rename
lvrename /dev/vg02/lvold /dev/vg02/lvnew
lvrename vg02 lvold lvnew

第五步、格式化磁盘(创建文件系统)

# 找到磁盘格式化即可
mkfs.ext4 /dev/lvm00/kvmimg

参考文献
LFCS: How to Manage and Create LVM Using vgcreate, lvcreate and lvextend Commands – Part 11 Linux: How to Create Logical Volume Using Maximum Available Free Space in Volume Group “fdisk -l” like list of partitions and their types for LVM logical volumes?[……]

READ MORE

「Linux」- 访问 LVM 磁盘(已存在 LVM 管理)

问题描述
该笔记将记录:在 Linux 中,如何挂载启用 LVM 的磁盘,以及相关问题的解决方法。
环境要求
安装 LVM 工具:

# Debian
apt install lvm2

解决方案

# 查找卷组
vgscan

# 激活卷组
vgchange -ay

# 查找逻辑卷
lvdisplay # 或者执行“lvs”命令

# 挂载,使用mount命令进行挂载
mount “x” “y”

参考文献
Linux mount an LVM volume / partition command 如何挂载另一个lvm硬盘[……]

READ MORE

「LVM」- 增加 PV 大小(单个 PV 扩容)

问题描述
PV,其为物理磁盘的抽象,而物理磁盘的大小通常是固定的,通常不会变化,但也不是绝对的;
但是,如下场景会出现 PV 大小变化: 1)在虚拟化环境中,Linux 作为虚拟机运行,Guest VM 扩容比较简单; 2)PV 为磁盘的某个分区,我们针对分区进行调整,而导致 PV 变化;
该笔记将记录:在 Linux 中,当 PV 容量增加后的扩容操作,以及相关问题的解决办法;
解决方案
在我们的场景中,其针对虚拟化环境,笔记的后续部分操作也与虚拟化环境相关(毕竟非虚拟化环境中很少会调整磁盘大小);
第一步、调整磁盘大小
How to Resize a Partition using fdisk
如果扩容 Guest VM 之后,在 Guest VM 中,能够直接看到磁盘增大(/dev/sda):

[root@k8s-gw-wn122 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk —————— // 扩容到 50G
|-sda1 8:1 0 1G 0 part /boot
`-sda2 8:2 0 7G 0 part
|-centos-root 253:0 0 6.2G 0 lvm /
`-centos-swap 253:1 0 820M 0 lvm
sdb 8:16 0 100G 0 disk
sr0 11:0 1 4M 0 rom

如果 PV 使用物理盘,即 /dev/sda,则进入第二步,开始 PV 扩容;
如果 PV 使用物理盘的分区,如上 /dev/sda2,则需要分区扩容:

# growpart /dev/sda 2
CHANGED: partition=2 start=2099200 old: size=14678016 end=16777216 new: size=102758367 end=104857567

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
|-sda1 8:1 0 1G 0 part /boot
`-sda2 8:2 0 49G 0 part ——-[……]

READ MORE

「LVM」- 数据恢复

问题描述
虽然需要恢复数据,但并非应 LVM 经常故障,而是人为原因导致数据丢失。
该笔记将记录:在 Linux 中,如何从 LVM 中恢复数据,以及常见故障场景的处理方法。
解决方案
我们并非数据恢复专家,很多内容都参考自网络: 1)Recovering a Lost LVM Volume Disk
场景一、物理卷被格式化,且无元数据备份
将显示 unknown device 信息:

# pvs
WARNING: Couldn’t find device with uuid A11H2H-99zO-Urtx-NUkn-uRE3-umXU-P1hIWj.
WARNING: VG dt is missing PV A11H2H-99zO-Urtx-NUkn-uRE3-umXU-P1hIWj (last written to /dev/nvme0n1p4).
PV VG Fmt Attr PSize PFree
/dev/sda3 ubuntu-vg lvm2 a– <9.00g 0
/dev/sdb10 dt lvm2 a– 48.82g 0
/dev/sdb11 dt lvm2 a– 48.82g 0
/dev/sdb12 dt lvm2 a– 39.32g <9.94g
/dev/sdb5 dt lvm2 a– 48.82g <1.18g
/dev/sdb6 dt lvm2 a– 48.82g 0
/dev/sdb7 dt lvm2 a– 48.82g 0
/dev/sdb8 dt lvm2 a– 48.82g 0
/dev/sdb9 dt lvm2 a– 48.82g 48.82g
[unknown] dt lvm2 a-m 48.82g 0

结合 lsblk 输出:

# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 477G 0 disk
├─sdb1 8:17 0 300M 0 part
├─sdb2 8:18 0 128M 0 part
├─sdb3 8:19 0 46.6G 0 part /mnt/fix/rootfs
├─sdb4 8:20 0 48.8G 0 part[……]

READ MORE

「LVM」- 快照与恢复(备份与恢复的快速方法)

问题描述
在进行某些验证性操作时,我们需要创建测试数据,并在验证操作的过程中修改数据。但是如果验证操作失败,那么我们又需要重新创建测试数据。为了避免重新创建数据,我们常见的做法是备份测试数据,以在验证失败时能够从备份数据中快速进行恢复。
还有种场景是服务升级的时候:为了能够在升级失败时回滚,需要对服务数据进行备份,否则数据被破坏之后,服务回滚后也无法运行。但是由于服务数据较多,导致备份周期长,服务停机时间长。而且在升级过程中,并非所有的数据都需要备份,因为并非所有的数据都会被破坏。
该笔记将记录:在 LVM 中,使用 Snapshot 快照的方法(对数据进行快速的备份与恢复),以及常见问题的解决办法。
解决方案
当创建快照后,如果不小心删除任何文件,也不必担心,因为快照具有我们已删除的原始文件。
注意事项: 1)快照不能用于持久的备份策略 —— 备份是某些数据文件的主副本,而快照是块级别,所以不能使用快照作为备份选项; 2)不要更改快照卷,保持原样,而快照用于快速恢复。
环境概述

pvcreate /dev/sdb # 10G
vgcreate vgdt /dev/sdb
lvcreate -n source –size 3G vgdt

mkfs.ext4 /dev/vgdt/source
mount /dev/vgdt/source /mnt/
echo 123456 > /mnt/foo.txt
md5sum /mnt/foo.txt # f447b20a7fcbf53a5d5be013ea0b15af

第一步、创建快照

# lvcreate –size 1G –snapshot –name backup4source /dev/vgdt/source
Logical volume “backup4source” created.

# lvextend –size +1G /dev/vgdt/backup4source # 再额外增加 1G 空间
Size of logical volume vgdt/backup4source changed from 1.00 GiB (256 extents) to 2.00 GiB (512 extents).
Logical volume vgdt/backup4source succes[……]

READ MORE

「LVM」- 常见错误汇总

Device /dev/sdb excluded by a filter
Vgextend : “device excluded by a filter” pvcreate –restorefile fails “/dev/sdx device not found or ignored by filtering” in XenServer [linux-lvm] pvcreate can’t use entire disk? How to wipe a signature from a disk device on Linux with wipefs command [SOLVED] [LVM] pvcreate – ignored by filtering
问题描述: 执行pvcreate时,产生如下错误:

Device /dev/sdb excluded by a filter

如果想找到问题原因,可以使用-v选项来显示调试信息,使用多次可以增加调试信息的输出量。
问题原因: 执行pvcreate -vv /dev/sdb1输出调试信息,问题原因如下:

/dev/sdb: Skipping: Partition table signature found

具体的原因没有找到,难道是不能用整盘?但是我在CentOS下测试(虚拟机里的虚拟磁盘)了,没问题。
解决方法: 创建了新的分区,然后在分区上创建了PV:pvcreate /dev/sdb1
最开始,出错的时候是在/dev/sdb上创建PV的,那时候没有分区,但这个问题不是因为未分区导致的。
vgcreate — volume group directory or file already exists
Re: [linux-lvm] cannot create a volume group named the same as one already removed [linux-lvm] cannot create a volume group named the same as one already removed
问题描述: 当执行vgcreate命令创建卷组时,提示如下错误:

vgcreate — volume group directory or file already exists
vgcreate — please choose a different name

当执行vgremove删除该卷组时,又提示如下错误

vgremove — volume group “volgrp2” doesn’t exist

问[……]

READ MORE

「STORAGE」- 存储网络协议

iSCSI, Fibre Channel, FCoE, NFS, SMB/CIFS, HTTP and NVMe-oF
参考文献
Comparing 7 storage network protocols | TechTarget[……]

READ MORE

「NFS」- 概念术语

Port Number
Fixing Ports Used by NFSv3 Server Which ports do I need to open in the firewall to use NFS? Wikipedia/Network File System/NFSv4
常见服务通常只占用固定端口号,比如HTTP/80、SSH/22、FTP/21等等,但是NFS比较特殊。本将梳理NFS端口号相关内容。
NFS v4
在 NFS v4 中,只需要开启 tcp/2049, udp/2049 端口:

One big advantage of NFSv4 over its predecessors is that only one UDP or TCP port, 2049, is used to run the service, which simplifies using the protocol across firewalls.[1]

所以在防火墙环境中,仅仅需要放行开启 2049 端口便可正常使用 NFS 服务。
NFS v3
在 NFS v3 中,需要开启更多端口号,每个端口都有不同的作用: 1)rpcbind‘s listening port:tcp/111, udp/111 2)nfsd‘s listening port:tcp/2049, udp/2049 3)RQUOTAD_PORT:用于向远程用户提供配额信息; 4)MOUNTD_PORT:处理用户挂载请求; 5)LOCKD_TCPPORT:用于客户端锁定服务端文件,使用TCP连接; 6)LOCKD_UDPPORT:用于客户端锁定服务端文件,使用UDP连接; 7)STATD_PORT:用于服务端通知客户端自身状态;
最后面的五个端口号由rpcbind随机分配(但是可配置,在CentOS中,配置/etc/sysconfig/nfs文件)。
Hard Mount vs Soft Mount
What are the differences between hard mount and soft mount – NetApp Knowledge Base Hard Mount vs Soft Mount in NFS with Example
挂载 NFS 分为两种方式:Soft Mount;Hard Mount;
Soft Mount: 1)如果 NFS Client 未收到来自 NFS Server 的响应,此时 NFS Client 将向请求访问文件的进程返回错误信息。 2)优势:能够得到快速的响应; 3)缺点:容易导致文件损坏、数据丢失;

mount -o r[……]

READ MORE

「NFS」- 常用选项及概念术语

root_squash, no_root_squash, all_squash
控制是否将 uid/gid 0 映射到匿名用户(uid/gid);
sync, async
控制写入与返回: 1)sync:当写入磁盘万陈后,再将结果返回给 NFS Client; 2)async:在请求写入磁盘前,提前响应 NFS Client 的请求;[……]

READ MORE

「NFS」- 常见问题处理

性能测试
Network share: Performance differences between NFS & SMB
TODO NFS 文件锁
FIXME NFS 性能测试
与其他网络文件系统(CIFS、SSHFS)不同的是,NFS 是卷共享协议,客户端看到的是文件系统,并依赖于文件系统。而像 CIFS、SSHFS 等网络文件系统,则是在服务端管理用户。因此,NFS 的速度比其他文件系统更快,并且更见简单。
认证功能
# 03/19/2021 到目前为止,NFSv4 依旧没有认证功能,除了与 Kerbose 集成。
查看导出列表
显示主机中已导出的 NFS 文件系统列表:

showmount -e 192.168.1.34

默认用户及组
参考 man 5 exports 描述,参考 User ID Mapping 部分:root squashing,默认为 nobody 用户。
导出文件系统
linux – how to unexport NFS share on VCS HS cluster – Unix & Linux Stack Exchange

exportfs -ua[……]

READ MORE