一: 磁盘
首先磁盘我们都知道,是真正的用来存储数据的,当然帮我们往里面写的软件就是磁盘驱动了
但是,磁盘写了擦擦了写,就会诞生很多不连续的物理空间,
于是,诞生了逻辑分区,即在逻辑层面模拟了磁盘分区,划分的单位称为逻辑卷,即一个逻辑上连续的逻辑卷可能地下连着多个不连续的物理空间
为了描述实现这种映射,于是诞生了物理卷等的概念,所以说所谓"物理"是相对于"逻辑"而言,其实是先有逻辑卷后有物理卷
此时帮上层应用往逻辑卷中写数据的就是"逻辑卷驱动"了
从底层向上层,一层层来阐述吧
一. 硬件1:磁盘的组成原理
磁盘: 由很多个盘片组成的柱状设备,其他器件比如主轴,控制器,磁头等协作工作将数据写到磁盘中。
参考链接: https://mp.weixin.qq.com/s?src=11×tamp=1591758659&ver=2391&signature=O9LSbW4ID2jVfPIcd3RLiBMfKnS-L19FBttwHx0laKOuYe4gqnJQUK7H8jNvGY4Wx08F8KYdjkkj-DZNhbvugrrV6lwHpMpl1bdpnvDLvTMWhoc2fchuRqllZFMQ0i&new=1
platter:盘片
head:磁头,每个盘片一般有上下两面,分别对应1个磁头,共2个磁头
wxy: 难道还存在有3个磁头的?
track:磁道,是从盘片外圈往内圈编号0磁道,1磁道…,靠近主轴的同心圆用于停靠磁头,不存储数据
wxy: 其作用貌似就是用于划分的,即我就是分"圈圈"维度的分割符
cylinder:柱面/磁柱,圆柱体被磁道划分后得到的就是一个个cylinder,一个磁盘具有cylinder数等同track的数量
wxy: 我的理解称为磁柱更合适,因为无论是从其英文的含义还是划分方式,都可以看做是一个空心的水桶,
磁盘是多个水桶套水桶,当然水桶也是有厚度的,这就跟扇区有关系了,下面会说。
另外,为了理解的方便往往称之为"圈",即内外圈…
sector:扇区, 每个磁道都被切分成很多扇形区域,每道的扇区数量相同。
wxy: 查了一些资料,sector即扇区确实是指每个磁柱的横截面上被切分的小区域,切分者是半径,
所以这里其实还隐藏一个新的概念: 扇面, 顾名思义就是指横截面被半径切分得到的像蛋糕一样的一个"小面",称为"扇面"
track 和 扇面的结合就得到了 sector
扇区的大小: 每一个扇区可存储的字节数据,一般为512B,扇区为数据存储的最小单元。
之前,外圈的扇区面积比内圈的大,但是因为使用的磁物质密度不同,所以内外圈(即内外cylinder)上的扇区大小都相同。
现在,内外圈已经采用相同密度物质来存储数据,但是内外圈扇区数量不同
wxy: 内外圈大小不同,划分数量又不同,就表示有可能每个扇区大小相同
综上所述:
磁盘的容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数。
=有几面(比如一般都是2面) × 从圆心向外一共有多少层 × 每一层有多少个小扇面单元 × 每一个单元中有多少字节
二. 分区
硬件是死的,想要能用起来就需要驱动,操作系统这些软件的操作,于是从安装系统开始来讲讲到底是怎么使用这一坨"死的"存储设备
所以接下来的概念,就有软件层面的元素注入了。
- windows的分区
首先,一块物理硬盘是没有什么分区的概念的,但是为了众所周知的原因需要分成一块一块分区,如何分呢?谁来分呢?
在装机(安装操作系统)之前就需要利用单独的软件为其分区,然后将分区的信息保存在主引导记录(Master Boot Record,MBR)中,
之后开始安装系统,相当于将操作系统程序放到一个分区中,然后将启动程序(用来启动操作系统的启动程序)也放到MBR中
所以,MBR:这是一块存在于磁盘驱动器开始部分的一个特殊的启动扇区,正如上面所说的,MBR有两个作用:记录分区情况和启动程序
最后,再回到分区,有以下几个特性
1, 分区只能分成主分区和扩展分区,其实就是只能划分出来一个或几个主分区,剩下的就叫做扩展分区。所以之有主分区才是真正官方圈出的地盘,也才是可以安装操作系统的
2,主分区最多有4个,因为MBR中只能容纳4条记录
3,扩展分区里可以再在操作系统层面进行划分成若干逻辑分区
4,当然分区后还是不能直接安装操作系统的,和Linux一样要格式化,也就是安装文件系统。
5,一般我们的划分都是一个主分区(第一分区),有了操作系统后就是C盘,然后操作系统会 在剩下的扩展分区中划分出DEF…盘符
分区是硬件,盘符是操作系统即软件层面的东西,所谓分配盘符,就相当于挂载......
6,据说现在使用机械硬盘,所以没有划分分区的必要了,具体也没有深究…
- Linux的分区
硬盘为什么要分区,这就像整理房间一样,东西都要分门别类,所以我们就提前规划好这一区域做什么那一区域做什么,而在这里"区域"就是"分区"
学院派说: 数据安全和性能考虑? 哈哈哈哈哈哈…
另外,分配单元是cylinder?,每一个分区都是连续的cylinder组成。
第一部分: 主引导记录分区
称为第1分区,占用刚好1个扇区,硬盘的重要信息都在这一分区中,包含三部分
1)MBR(Master Boot Record)区:
规定专门用来存放开机引导程序,占用446byte,因为主机上电后首先就是从这里读取数据,这样才能进行操作系统的启动。
2)DPT(Disk Partition table)区:
硬盘分区表,记录硬盘上的分区元信息,占用64byte,每条分区记录占用16字节,所以一块磁盘最多只能分4个。那么我们首先来看看是如何进行分区的。
3)特殊标记
用2个字节存放一个固定值:0x55AA,用来标识这个是第一分区
wxy:前面说分区的单元是cylinder,那么这个分区只占用了一个扇区,剩余的扇区呢?
第二部分: 数据分区们
主要用来存放数据,分为2类分区: 主分区 和 逻辑分区
为什么这么划分,那是为了能够不受只能分4区所限。
试想一下,如果一块磁盘就划分成4个分区,那么如果一旦我又插入一个磁盘,我该将他分到哪里了?你又不能去变更划分好的分区吧(wxy:为什么不能)
所以,我就搞了一个扩展分区,类似于二级指针这种,可以在这个分区里可以进一步划分,即逻辑分区
附: 用来存放诗句的分区单元我们称之为"基本分区",每一个基本分区分为:引导扇区 和 数据扇区
主分区(Primary Partion):就是普通用于存放数据的分区,主分区就是"基本分区",分区的元信息被记录在DPT。这块分区直接就可以使用。
扩展分区(Extension Partion): 需要再划分得到逻辑分区才能使用,每一个逻辑分区都是好比一个带分区磁盘,麻雀虽小五脏俱全,所以每一个逻辑分区也包含两部分:
1) 扩展引导记录,类似于DPT,只不过不用包含MBR,就只有扩展分区表和0x55AA结束符
2) 扩展基本分区/逻辑分区(Logical Partion):也是两部分,引导扇区和数据扇区
为了实现逻辑分区的划分,每个逻辑分区都需要软件层面的支持即"逻辑驱动器"
小小结:
主引导记录分区
数据分区 — 主分区(1 - 4号分区)
扩展分区(2 - 4号分区) ---- 扩展引导记录区
逻辑分区 ( > 5号分区) ----- 引导扇区
数据扇区
总结几个要点:
1 - 4号都是给主分区和扩展分区用的,5号之后才是给逻辑分区使用;
主分区是实实在在的分区,而扩展分区类似是指针的存在,其指向的下一级才是真正代表存储介质的分区;
主分区可以有多个,但是扩展分区要么没有(都是主分区), 要么只有一个(用来指向下一级)
- Linux磁盘分区命名及分区示例
1). 磁盘设备的命名
(1) IDE磁盘为hdx, 其中x取值a ~ d,即hda,hdb, hdc,hdd, 因为IDE磁盘最多四个;
(2) SCSI,SATA,USB磁盘为sdx, 其中x取值为a ~ z, 即sda,sdb,sdc,sdd,sde,…sdz, 也就是说最多可以有26个磁盘
- 分区的命名
hda1 - 4
sdb1 - 4
复制代码
fdisk -l —查看所有磁盘,以及磁盘的分区情况
磁盘 /dev/sda:1000.2 GB, 1000204886016 字节,1953525168 个扇区 -----第一个磁盘:/dev/sda, 1000G的硬盘
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘标签类型:dos
磁盘标识符:0x000809ff
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 104859647 52428800 83 Linux ----这个磁盘的主分区
/dev/sda2 104859648 1953523711 924332032 8e Linux LVM
磁盘 /dev/mapper/cl-root:53.7 GB, 53687091200 字节,104857600 个扇区 -----第二个磁盘: 53.7G
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘 /dev/mapper/cl-swap:34.4 GB, 34359738368 字节,67108864 个扇区 ------第三个磁盘
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘 /dev/mapper/cl-home:858.5 GB, 858464976896 字节,1676689408 个扇区 ------第四个磁盘
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
复制代码
- 磁盘分区相关操作命令
<<<<<<待补充>>>>>>>>>>>>>>>>
- 分区格式化与挂载
物理磁盘分区好之后,如下想要真正被使用,还需要进行格式化,即安装上文件系统,从软件层面将硬件纳入到软件层面的管理中来
详细的原理参见另一篇博文
https://www.cnblogs.com/shuiguizi/p/12100859.html
三:逻辑卷/物理卷的概念
- 为什么使用卷
为了解决分区空间不够用或者分区空间绰绰有余的情况.
解决基本磁盘分区的边界是不能随意扩展的问题,分区大小是在刚刚划分分区的时候就决定了。
LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,与硬件相关的存储设置被其隐藏,你可以不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样可以减少操作成本.
LVM与直接使用物理存储相比,有以下优点: - 灵活的容量.
当使用逻辑卷时,文件系统可以扩展到多个磁盘上,你可以聚合多个磁盘或磁盘分区成单一的逻辑卷.
2.可伸缩的存储池.
你可以使用简单的命令来扩大或缩小逻辑卷大小,不用重新格式化或分区磁盘设备.
3.在线的数据再分配.
你可以在线移动数据,数据可以在磁盘在线的情况下重新分配.比如,你可以在线更换可热插拔的磁盘. - 方便的设备命名
逻辑卷可以按你觉得方便的方式来起任何名称.
5.磁盘条块化.
你可以生成一个逻辑盘,它的数据可以被条块化存储在2个或更多的磁盘上.这样可以明显提升数据吞吐量.
6.镜像卷
逻辑卷提供方便的方法来镜像你的数据.
7.卷快照
使用逻辑卷,你可以获得设备快照用来一致性备份或者测试数据更新效果而不影响真实数据.
wxy: 即分区在使用一段时间后碎片化了无法使用连续的空间,另外看来前面想的是对的,果然划分完了就不能再划分了。
所以为了解决划分完还想继续加工,那么我们可以将划分好的存储空间重新虚拟化出来一个"磁盘",然后对他进行分区。
2.实现原理
【核心思想】:
将整个存储空间在逻辑上划分成一个一个卷称为逻辑卷,为了方便和底层硬件映射,又将物理存储介质统一用一个一个卷来划分称为物理卷
而管理这种映射关系的称为LVM。这个实现可以用如下的一张图进行阐述。
注意: 物理卷实际是逻辑层面的抽象,只不过是对物理介质的抽象而已,实际上并不存在物理卷。所以按照这样的思路我们自上而下的开始研究。
LV(Logical Volume): 逻辑卷,相当于为上层提供的存储单元,类似于实际的物理层面中的磁盘扇区,在逻辑卷之上可以建立文件系统。
它建立在卷组之上,于是引入VG的概念。
VG(Volume Group:卷组,起到一个中间转换的角色,卷组是由一个或多个物理卷组成的存储池,在卷组上又能创建一个或多个逻辑卷。
wxy: 其实很好理解这个概念,把底层分布在各处的物理扇区整合成一个个物理卷然后集合在一起成为一个池子,最后就可以将其划分成整块的逻辑卷。
PV(Physical Volume): 物理卷,是指在Logical层看到的磁盘分区或从与磁盘分区具有同样功能的设备(如RAID),对于LVM来说就是基本的存储逻辑块。
PE(Physical Extent):物理块,每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。
PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。(当PV没有加入卷组的时候 这时候PV的PE是未定的,
当PV加入卷组,PV的PE大小与卷组设定的PE大小相同)
wxy:我的理解是让逻辑层面的物理卷并不是直接一对一对应到物理存储介质,而是用PE来作为度量衡,然后这个度量衡还可配置。
例如上面的图中,一个物理设备驱动而能属于不同的PV,也就是说为了收集各个磁盘设备上的零散分区,用小单元去丈量。
PhysicalStorageMedia:物理存储介质,指系统的物理存储设备,如磁盘(/dev/hda、/dev/sda)等,是存储系统最底层的存储单元。
逻辑卷(lv)是将几个磁盘分区或者块设备(pv,pv的id必须是8e的,pv可以位于不同的磁盘分区里,pv大小可以不一)组织起来形成一个大的扩展分区(vg,卷组,一个vg至少要包含一个pv。),该扩展分区不能直接用,需要将其划分成逻辑卷(lv)才能使用,lv可以格式化成不同的文件系统,挂载后直接使用。 lv的扩展和缩减是不会影响原有数据的,但逻辑卷缩减的风险大于逻辑卷扩展的风险。逻辑卷可以支持快照功能。
逻辑卷只能属于一个卷组。一个逻辑卷可以:
· 位于一个物理卷
· 跨越一个卷组的多个物理卷
· 多个镜像位于同一卷组的不同物理卷
https://github.com/users/cecqa72/projects/1000
https://www.github.com/users/cecqa72/projects/1000
https://github.com/users/cecqa72/projects/1001
https://www.github.com/users/cecqa72/projects/1001
https://github.com/users/cecqa72/projects/1002
https://www.github.com/users/cecqa72/projects/1002
https://github.com/users/cecqa72/projects/1003
https://www.github.com/users/cecqa72/projects/1003
https://github.com/users/cecqa72/projects/1004
https://www.github.com/users/cecqa72/projects/1004
https://github.com/users/cecqa72/projects/1005
https://www.github.com/users/cecqa72/projects/1005
https://github.com/users/cecqa72/projects/1006
https://www.github.com/users/cecqa72/projects/1006
https://github.com/users/cecqa72/projects/1007
https://www.github.com/users/cecqa72/projects/1007
https://github.com/users/cecqa72/projects/1008
https://www.github.com/users/cecqa72/projects/1008
https://github.com/users/cecqa72/projects/1009
https://www.github.com/users/cecqa72/projects/1009
https://github.com/users/cecqa72/projects/1010
https://www.github.com/users/cecqa72/projects/1010
https://github.com/users/cecqa72/projects/1011
https://www.github.com/users/cecqa72/projects/1011
https://github.com/users/cecqa72/projects/1012
https://www.github.com/users/cecqa72/projects/1012
https://github.com/users/cecqa72/projects/1013
https://www.github.com/users/cecqa72/projects/1013
https://github.com/users/cecqa72/projects/1014
https://www.github.com/users/cecqa72/projects/1014
https://github.com/users/cecqa72/projects/1015
https://www.github.com/users/cecqa72/projects/1015
https://github.com/users/cecqa72/projects/1016
https://www.github.com/users/cecqa72/projects/1016
https://github.com/users/cecqa72/projects/1017
https://www.github.com/users/cecqa72/projects/1017
https://github.com/users/cecqa72/projects/1018
https://www.github.com/users/cecqa72/projects/1018
https://github.com/users/cecqa72/projects/1019
https://www.github.com/users/cecqa72/projects/1019
https://github.com/users/cecqa72/projects/1020
https://www.github.com/users/cecqa72/projects/1020
https://github.com/users/cecqa72/projects/1021
https://www.github.com/users/cecqa72/projects/1021
https://github.com/users/cecqa72/projects/1022
https://www.github.com/users/cecqa72/projects/1022
https://github.com/users/cecqa72/projects/1023
https://www.github.com/users/cecqa72/projects/1023
https://github.com/users/cecqa72/projects/1024
https://www.github.com/users/cecqa72/projects/1024
https://github.com/users/cecqa72/projects/1025
https://www.github.com/users/cecqa72/projects/1025
https://github.com/users/cecqa72/projects/1026
https://www.github.com/users/cecqa72/projects/1026
https://github.com/users/cecqa72/projects/1027
https://www.github.com/users/cecqa72/projects/1027
https://github.com/users/cecqa72/projects/1028
https://www.github.com/users/cecqa72/projects/1028
https://github.com/users/cecqa72/projects/1029
https://www.github.com/users/cecqa72/projects/1029
https://github.com/users/cecqa72/projects/1030
https://www.github.com/users/cecqa72/projects/1030
https://github.com/users/cecqa72/projects/1031
https://www.github.com/users/cecqa72/projects/1031
https://github.com/users/cecqa72/projects/1032
https://www.github.com/users/cecqa72/projects/1032
https://github.com/users/cecqa72/projects/1033
https://www.github.com/users/cecqa72/projects/1033
https://github.com/users/cecqa72/projects/1034
https://www.github.com/users/cecqa72/projects/1034
https://github.com/users/cecqa72/projects/1035
https://www.github.com/users/cecqa72/projects/1035
https://github.com/users/cecqa72/projects/1036
https://www.github.com/users/cecqa72/projects/1036
https://github.com/users/cecqa72/projects/1037
https://www.github.com/users/cecqa72/projects/1037
https://github.com/users/cecqa72/projects/1038
https://www.github.com/users/cecqa72/projects/1038
https://github.com/users/cecqa72/projects/1039
https://www.github.com/users/cecqa72/projects/1039
https://github.com/users/cecqa72/projects/1040
https://www.github.com/users/cecqa72/projects/1040
https://github.com/users/cecqa72/projects/1041
https://www.github.com/users/cecqa72/projects/1041
https://github.com/users/cecqa72/projects/1042
https://www.github.com/users/cecqa72/projects/1042
https://github.com/users/cecqa72/projects/1043
https://www.github.com/users/cecqa72/projects/1043
https://github.com/users/cecqa72/projects/1044
https://www.github.com/users/cecqa72/projects/1044
https://github.com/users/cecqa72/projects/1045
https://www.github.com/users/cecqa72/projects/1045
https://github.com/users/cecqa72/projects/1046
https://www.github.com/users/cecqa72/projects/1046
https://github.com/users/cecqa72/projects/1047
https://www.github.com/users/cecqa72/projects/1047
https://github.com/users/cecqa72/projects/1048
https://www.github.com/users/cecqa72/projects/1048
https://github.com/users/cecqa72/projects/1049
https://www.github.com/users/cecqa72/projects/1049
https://github.com/users/cecqa72/projects/1050
https://www.github.com/users/cecqa72/projects/1050
https://github.com/users/cecqa72/projects/1051
https://www.github.com/users/cecqa72/projects/1051
https://github.com/users/cecqa72/projects/1052
https://www.github.com/users/cecqa72/projects/1052
https://github.com/users/cecqa72/projects/1053
https://www.github.com/users/cecqa72/projects/1053
https://github.com/users/cecqa72/projects/1054
https://www.github.com/users/cecqa72/projects/1054
https://github.com/users/cecqa72/projects/1055
https://www.github.com/users/cecqa72/projects/1055
https://github.com/users/cecqa72/projects/1056
https://www.github.com/users/cecqa72/projects/1056
https://github.com/users/cecqa72/projects/1057
https://www.github.com/users/cecqa72/projects/1057
https://github.com/users/cecqa72/projects/1058
https://www.github.com/users/cecqa72/projects/1058
https://github.com/users/cecqa72/projects/1059
https://www.github.com/users/cecqa72/projects/1059
https://github.com/users/cecqa72/projects/1060
https://www.github.com/users/cecqa72/projects/1060
https://github.com/users/cecqa72/projects/1061
https://www.github.com/users/cecqa72/projects/1061
https://github.com/users/cecqa72/projects/1062
https://www.github.com/users/cecqa72/projects/1062
https://github.com/users/cecqa72/projects/1063
https://www.github.com/users/cecqa72/projects/1063
https://github.com/users/cecqa72/projects/1064
https://www.github.com/users/cecqa72/projects/1064
https://github.com/users/cecqa72/projects/1065
https://www.github.com/users/cecqa72/projects/1065
https://github.com/users/cecqa72/projects/1066
https://www.github.com/users/cecqa72/projects/1066
https://github.com/users/cecqa72/projects/1067
https://www.github.com/users/cecqa72/projects/1067
https://github.com/users/cecqa72/projects/1068
https://www.github.com/users/cecqa72/projects/1068
https://github.com/users/hbfs25505/projects/1
https://www.github.com/users/hbfs25505/projects/1
https://github.com/users/hbfs25505/projects/2
https://www.github.com/users/hbfs25505/projects/2
https://github.com/users/hbfs25505/projects/3
https://www.github.com/users/hbfs25505/projects/3
https://github.com/users/hbfs25505/projects/4
https://www.github.com/users/hbfs25505/projects/4
https://github.com/users/hbfs25505/projects/5
https://www.github.com/users/hbfs25505/projects/5
https://github.com/users/hbfs25505/projects/6
https://www.github.com/users/hbfs25505/projects/6
https://github.com/users/hbfs25505/projects/7
https://www.github.com/users/hbfs25505/projects/7
https://github.com/users/hbfs25505/projects/8
https://www.github.com/users/hbfs25505/projects/8
https://github.com/users/hbfs25505/projects/9
https://www.github.com/users/hbfs25505/projects/9
https://github.com/users/hbfs25505/projects/10
https://www.github.com/users/hbfs25505/projects/10
https://github.com/users/hbfs25505/projects/11
https://www.github.com/users/hbfs25505/projects/11
https://github.com/users/hbfs25505/projects/12
https://www.github.com/users/hbfs25505/projects/12
https://github.com/users/hbfs25505/projects/13
https://www.github.com/users/hbfs25505/projects/13
https://github.com/users/hbfs25505/projects/14
https://www.github.com/users/hbfs25505/projects/14
https://github.com/users/hbfs25505/projects/15
https://www.github.com/users/hbfs25505/projects/15
https://github.com/users/hbfs25505/projects/16
https://www.github.com/users/hbfs25505/projects/16
https://github.com/users/hbfs25505/projects/17
https://www.github.com/users/hbfs25505/projects/17
https://github.com/users/hbfs25505/projects/18
https://www.github.com/users/hbfs25505/projects/18
https://github.com/users/hbfs25505/projects/19
https://www.github.com/users/hbfs25505/projects/19
https://github.com/users/hbfs25505/projects/20
https://www.github.com/users/hbfs25505/projects/20
https://github.com/users/hbfs25505/projects/21
https://www.github.com/users/hbfs25505/projects/21
https://github.com/users/hbfs25505/projects/22
https://www.github.com/users/hbfs25505/projects/22
https://github.com/users/hbfs25505/projects/23
https://www.github.com/users/hbfs25505/projects/23
https://github.com/users/hbfs25505/projects/24
https://www.github.com/users/hbfs25505/projects/24
https://github.com/users/hbfs25505/projects/25
https://www.github.com/users/hbfs25505/projects/25
https://github.com/users/hbfs25505/projects/26
https://www.github.com/users/hbfs25505/projects/26
https://github.com/users/hbfs25505/projects/27
https://www.github.com/users/hbfs25505/projects/27
https://github.com/users/hbfs25505/projects/28
https://www.github.com/users/hbfs25505/projects/28
https://github.com/users/hbfs25505/projects/29
https://www.github.com/users/hbfs25505/projects/29
https://github.com/users/hbfs25505/projects/30
https://www.github.com/users/hbfs25505/projects/30
https://github.com/users/hbfs25505/projects/31
https://www.github.com/users/hbfs25505/projects/31
https://github.com/users/hbfs25505/projects/32
https://www.github.com/users/hbfs25505/projects/32
https://github.com/users/hbfs25505/projects/33
https://www.github.com/users/hbfs25505/projects/33
https://github.com/users/hbfs25505/projects/34
https://www.github.com/users/hbfs25505/projects/34
https://github.com/users/hbfs25505/projects/35
https://www.github.com/users/hbfs25505/projects/35
https://github.com/users/hbfs25505/projects/36
https://www.github.com/users/hbfs25505/projects/36
https://github.com/users/hbfs25505/projects/37
https://www.github.com/users/hbfs25505/projects/37
https://github.com/users/hbfs25505/projects/38
https://www.github.com/users/hbfs25505/projects/38
https://github.com/users/hbfs25505/projects/39
https://www.github.com/users/hbfs25505/projects/39
https://github.com/users/hbfs25505/projects/40
https://www.github.com/users/hbfs25505/projects/40
https://github.com/users/hbfs25505/projects/41
https://www.github.com/users/hbfs25505/projects/41
https://github.com/users/hbfs25505/projects/42
https://www.github.com/users/hbfs25505/projects/42
https://github.com/users/hbfs25505/projects/43
https://www.github.com/users/hbfs25505/projects/43
https://github.com/users/hbfs25505/projects/44
https://www.github.com/users/hbfs25505/projects/44
https://github.com/users/hbfs25505/projects/45
https://www.github.com/users/hbfs25505/projects/45
https://github.com/users/hbfs25505/projects/46
https://www.github.com/users/hbfs25505/projects/46
https://github.com/users/hbfs25505/projects/47
https://www.github.com/users/hbfs25505/projects/47
https://github.com/users/hbfs25505/projects/48
https://www.github.com/users/hbfs25505/projects/48
https://github.com/users/hbfs25505/projects/49
https://www.github.com/users/hbfs25505/projects/49
https://github.com/users/hbfs25505/projects/50
https://www.github.com/users/hbfs25505/projects/50
https://github.com/users/hbfs25505/projects/51
https://www.github.com/users/hbfs25505/projects/51
https://github.com/users/hbfs25505/projects/52
https://www.github.com/users/hbfs25505/projects/52
https://github.com/users/hbfs25505/projects/53
https://www.github.com/users/hbfs25505/projects/53
https://github.com/users/hbfs25505/projects/54
https://www.github.com/users/hbfs25505/projects/54
https://github.com/users/hbfs25505/projects/55
https://www.github.com/users/hbfs25505/projects/55
https://github.com/users/hbfs25505/projects/56
https://www.github.com/users/hbfs25505/projects/56
https://github.com/users/hbfs25505/projects/57
https://www.github.com/users/hbfs25505/projects/57
https://github.com/users/hbfs25505/projects/58
https://www.github.com/users/hbfs25505/projects/58
https://github.com/users/hbfs25505/projects/59
https://www.github.com/users/hbfs25505/projects/59
https://github.com/users/hbfs25505/projects/60
https://www.github.com/users/hbfs25505/projects/60
https://github.com/users/hbfs25505/projects/61
https://www.github.com/users/hbfs25505/projects/61
https://github.com/users/hbfs25505/projects/62
https://www.github.com/users/hbfs25505/projects/62
https://github.com/users/hbfs25505/projects/63
https://www.github.com/users/hbfs25505/projects/63
https://github.com/users/hbfs25505/projects/64
https://www.github.com/users/hbfs25505/projects/64
https://github.com/users/hbfs25505/projects/65
https://www.github.com/users/hbfs25505/projects/65
https://github.com/users/hbfs25505/projects/66
https://www.github.com/users/hbfs25505/projects/66
https://github.com/users/hbfs25505/projects/67
https://www.github.com/users/hbfs25505/projects/67
https://github.com/users/hbfs25505/projects/68
https://www.github.com/users/hbfs25505/projects/68
https://github.com/users/hbfs25505/projects/69
https://www.github.com/users/hbfs25505/projects/69
https://github.com/users/hbfs25505/projects/70
https://www.github.com/users/hbfs25505/projects/70
https://github.com/users/hbfs25505/projects/71
https://www.github.com/users/hbfs25505/projects/71
https://github.com/users/hbfs25505/projects/72
https://www.github.com/users/hbfs25505/projects/72
https://github.com/users/hbfs25505/projects/73
https://www.github.com/users/hbfs25505/projects/73
https://github.com/users/hbfs25505/projects/74
https://www.github.com/users/hbfs25505/projects/74
https://github.com/users/hbfs25505/projects/75
https://www.github.com/users/hbfs25505/projects/75
https://github.com/users/hbfs25505/projects/76
https://www.github.com/users/hbfs25505/projects/76
https://github.com/users/hbfs25505/projects/77
https://www.github.com/users/hbfs25505/projects/77
https://github.com/users/hbfs25505/projects/78
https://www.github.com/users/hbfs25505/projects/78
https://github.com/users/hbfs25505/projects/79
https://www.github.com/users/hbfs25505/projects/79
https://github.com/users/hbfs25505/projects/80
https://www.github.com/users/hbfs25505/projects/80
https://github.com/users/hbfs25505/projects/81
https://www.github.com/users/hbfs25505/projects/81
https://github.com/users/hbfs25505/projects/82
https://www.github.com/users/hbfs25505/projects/82
https://github.com/users/hbfs25505/projects/83
https://www.github.com/users/hbfs25505/projects/83
https://github.com/users/hbfs25505/projects/84
https://www.github.com/users/hbfs25505/projects/84
https://github.com/users/hbfs25505/projects/85
https://www.github.com/users/hbfs25505/projects/85
https://github.com/users/hbfs25505/projects/86
https://www.github.com/users/hbfs25505/projects/86
https://github.com/users/hbfs25505/projects/87
https://www.github.com/users/hbfs25505/projects/87
https://github.com/users/hbfs25505/projects/88
https://www.github.com/users/hbfs25505/projects/88
https://github.com/users/hbfs25505/projects/89
https://www.github.com/users/hbfs25505/projects/89
https://github.com/users/hbfs25505/projects/90
https://www.github.com/users/hbfs25505/projects/90
https://github.com/users/hbfs25505/projects/91
https://www.github.com/users/hbfs25505/projects/91
https://github.com/users/hbfs25505/projects/92
https://www.github.com/users/hbfs25505/projects/92
https://github.com/users/hbfs25505/projects/93
https://www.github.com/users/hbfs25505/projects/93
https://github.com/users/hbfs25505/projects/94
https://www.github.com/users/hbfs25505/projects/94
https://github.com/users/hbfs25505/projects/95
https://www.github.com/users/hbfs25505/projects/95
https://github.com/users/hbfs25505/projects/96
https://www.github.com/users/hbfs25505/projects/96
https://github.com/users/hbfs25505/projects/97
https://www.github.com/users/hbfs25505/projects/97
https://github.com/users/hbfs25505/projects/98
https://www.github.com/users/hbfs25505/projects/98
https://github.com/users/hbfs25505/projects/99
https://www.github.com/users/hbfs25505/projects/99
https://github.com/users/hbfs25505/projects/100
https://www.github.com/users/hbfs25505/projects/100
https://github.com/users/hbfs25505/projects/101
https://www.github.com/users/hbfs25505/projects/101
https://github.com/users/hbfs25505/projects/102
https://www.github.com/users/hbfs25505/projects/102
https://github.com/users/hbfs25505/projects/103
https://www.github.com/users/hbfs25505/projects/103
https://github.com/users/hbfs25505/projects/104
https://www.github.com/users/hbfs25505/projects/104
https://github.com/users/hbfs25505/projects/105
https://www.github.com/users/hbfs25505/projects/105
https://github.com/users/hbfs25505/projects/106
https://www.github.com/users/hbfs25505/projects/106
https://github.com/users/hbfs25505/projects/107
https://www.github.com/users/hbfs25505/projects/107
https://github.com/users/hbfs25505/projects/108
https://www.github.com/users/hbfs25505/projects/108
https://github.com/users/hbfs25505/projects/109
https://www.github.com/users/hbfs25505/projects/109
https://github.com/users/hbfs25505/projects/110
https://www.github.com/users/hbfs25505/projects/110
https://github.com/users/hbfs25505/projects/111
https://www.github.com/users/hbfs25505/projects/111
https://github.com/users/hbfs25505/projects/112
https://www.github.com/users/hbfs25505/projects/112
https://github.com/users/hbfs25505/projects/113
https://www.github.com/users/hbfs25505/projects/113
https://github.com/users/hbfs25505/projects/114
https://www.github.com/users/hbfs25505/projects/114
https://github.com/users/hbfs25505/projects/115
https://www.github.com/users/hbfs25505/projects/115
https://github.com/users/hbfs25505/projects/116
https://www.github.com/users/hbfs25505/projects/116
https://github.com/users/hbfs25505/projects/117
https://www.github.com/users/hbfs25505/projects/117
https://github.com/users/hbfs25505/projects/118
https://www.github.com/users/hbfs25505/projects/118
https://github.com/users/hbfs25505/projects/119
https://www.github.com/users/hbfs25505/projects/119
https://github.com/users/hbfs25505/projects/120
https://www.github.com/users/hbfs25505/projects/120
https://github.com/users/hbfs25505/projects/121
https://www.github.com/users/hbfs25505/projects/121
https://github.com/users/hbfs25505/projects/122
https://www.github.com/users/hbfs25505/projects/122
https://github.com/users/hbfs25505/projects/123
https://www.github.com/users/hbfs25505/projects/123
https://github.com/users/hbfs25505/projects/124
https://www.github.com/users/hbfs25505/projects/124
https://github.com/users/hbfs25505/projects/125
https://www.github.com/users/hbfs25505/projects/125
https://github.com/users/hbfs25505/projects/126
https://www.github.com/users/hbfs25505/projects/126
https://github.com/users/hbfs25505/projects/127
https://www.github.com/users/hbfs25505/projects/127
https://github.com/users/hbfs25505/projects/128
https://www.github.com/users/hbfs25505/projects/128
https://github.com/users/hbfs25505/projects/129
https://www.github.com/users/hbfs25505/projects/129
https://github.com/users/hbfs25505/projects/130
https://www.github.com/users/hbfs25505/projects/130
https://github.com/users/hbfs25505/projects/131
https://www.github.com/users/hbfs25505/projects/131
https://github.com/users/hbfs25505/projects/132
https://www.github.com/users/hbfs25505/projects/132
https://github.com/users/hbfs25505/projects/133
https://www.github.com/users/hbfs25505/projects/133
https://github.com/users/hbfs25505/projects/134
https://www.github.com/users/hbfs25505/projects/134
https://github.com/users/hbfs25505/projects/135
https://www.github.com/users/hbfs25505/projects/135
https://github.com/users/hbfs25505/projects/136
https://www.github.com/users/hbfs25505/projects/136
https://github.com/users/hbfs25505/projects/137
https://www.github.com/users/hbfs25505/projects/137
https://github.com/users/hbfs25505/projects/138
https://www.github.com/users/hbfs25505/projects/138
https://github.com/users/hbfs25505/projects/139
https://www.github.com/users/hbfs25505/projects/139
https://github.com/users/hbfs25505/projects/140
https://www.github.com/users/hbfs25505/projects/140
https://github.com/users/hbfs25505/projects/141
https://www.github.com/users/hbfs25505/projects/141
https://github.com/users/hbfs25505/projects/142
https://www.github.com/users/hbfs25505/projects/142
https://github.com/users/hbfs25505/projects/143
https://www.github.com/users/hbfs25505/projects/143
https://github.com/users/hbfs25505/projects/144
https://www.github.com/users/hbfs25505/projects/144
https://github.com/users/hbfs25505/projects/145
https://www.github.com/users/hbfs25505/projects/145
https://github.com/users/hbfs25505/projects/146
https://www.github.com/users/hbfs25505/projects/146
https://github.com/users/hbfs25505/projects/147
https://www.github.com/users/hbfs25505/projects/147
https://github.com/users/hbfs25505/projects/148
https://www.github.com/users/hbfs25505/projects/148
https://github.com/users/hbfs25505/projects/149
https://www.github.com/users/hbfs25505/projects/149
https://github.com/users/hbfs25505/projects/150
https://www.github.com/users/hbfs25505/projects/150
https://github.com/users/hbfs25505/projects/151
https://www.github.com/users/hbfs25505/projects/151
https://github.com/users/hbfs25505/projects/152
https://www.github.com/users/hbfs25505/projects/152
https://github.com/users/hbfs25505/projects/153
https://www.github.com/users/hbfs25505/projects/153
https://github.com/users/hbfs25505/projects/154
https://www.github.com/users/hbfs25505/projects/154
https://github.com/users/hbfs25505/projects/155
https://www.github.com/users/hbfs25505/projects/155
https://github.com/users/hbfs25505/projects/156
https://www.github.com/users/hbfs25505/projects/156
https://github.com/users/hbfs25505/projects/157
https://www.github.com/users/hbfs25505/projects/157
https://github.com/users/hbfs25505/projects/158
https://www.github.com/users/hbfs25505/projects/158
https://github.com/users/hbfs25505/projects/159
https://www.github.com/users/hbfs25505/projects/159
https://github.com/users/hbfs25505/projects/160
https://www.github.com/users/hbfs25505/projects/160
https://github.com/users/hbfs25505/projects/161
https://www.github.com/users/hbfs25505/projects/161
https://github.com/users/hbfs25505/projects/162
https://www.github.com/users/hbfs25505/projects/162
https://github.com/users/hbfs25505/projects/163
https://www.github.com/users/hbfs25505/projects/163
https://github.com/users/hbfs25505/projects/164
https://www.github.com/users/hbfs25505/projects/164
https://github.com/users/hbfs25505/projects/165
https://www.github.com/users/hbfs25505/projects/165
https://github.com/users/hbfs25505/projects/166
https://www.github.com/users/hbfs25505/projects/166
https://github.com/users/hbfs25505/projects/167
https://www.github.com/users/hbfs25505/projects/167
https://github.com/users/hbfs25505/projects/168
https://www.github.com/users/hbfs25505/projects/168
https://github.com/users/hbfs25505/projects/169
https://www.github.com/users/hbfs25505/projects/169
https://github.com/users/hbfs25505/projects/170
https://www.github.com/users/hbfs25505/projects/170
https://github.com/users/hbfs25505/projects/171
https://www.github.com/users/hbfs25505/projects/171
https://github.com/users/hbfs25505/projects/172
https://www.github.com/users/hbfs25505/projects/172
https://github.com/users/hbfs25505/projects/173
https://www.github.com/users/hbfs25505/projects/173
https://github.com/users/hbfs25505/projects/174
https://www.github.com/users/hbfs25505/projects/174
https://github.com/users/hbfs25505/projects/175
https://www.github.com/users/hbfs25505/projects/175
https://github.com/users/hbfs25505/projects/176
https://www.github.com/users/hbfs25505/projects/176
https://github.com/users/hbfs25505/projects/177
https://www.github.com/users/hbfs25505/projects/177
https://github.com/users/hbfs25505/projects/178
https://www.github.com/users/hbfs25505/projects/178
https://github.com/users/hbfs25505/projects/179
https://www.github.com/users/hbfs25505/projects/179
https://github.com/users/hbfs25505/projects/180
https://www.github.com/users/hbfs25505/projects/180
https://github.com/users/hbfs25505/projects/181
https://www.github.com/users/hbfs25505/projects/181
https://github.com/users/hbfs25505/projects/182
https://www.github.com/users/hbfs25505/projects/182
https://github.com/users/hbfs25505/projects/183
https://www.github.com/users/hbfs25505/projects/183
https://github.com/users/hbfs25505/projects/184
https://www.github.com/users/hbfs25505/projects/184
https://github.com/users/hbfs25505/projects/185
https://www.github.com/users/hbfs25505/projects/185
https://github.com/users/hbfs25505/projects/186
https://www.github.com/users/hbfs25505/projects/186
https://github.com/users/hbfs25505/projects/187
https://www.github.com/users/hbfs25505/projects/187
https://github.com/users/hbfs25505/projects/188
https://www.github.com/users/hbfs25505/projects/188
https://github.com/users/hbfs25505/projects/189
https://www.github.com/users/hbfs25505/projects/189
https://github.com/users/hbfs25505/projects/190
https://www.github.com/users/hbfs25505/projects/190
https://github.com/users/hbfs25505/projects/191
https://www.github.com/users/hbfs25505/projects/191
https://github.com/users/hbfs25505/projects/192
https://www.github.com/users/hbfs25505/projects/192
https://github.com/users/hbfs25505/projects/193
https://www.github.com/users/hbfs25505/projects/193
https://github.com/users/hbfs25505/projects/194
https://www.github.com/users/hbfs25505/projects/194
https://github.com/users/hbfs25505/projects/195
https://www.github.com/users/hbfs25505/projects/195
https://github.com/users/hbfs25505/projects/196
https://www.github.com/users/hbfs25505/projects/196
https://github.com/users/hbfs25505/projects/197
https://www.github.com/users/hbfs25505/projects/197
https://github.com/users/hbfs25505/projects/198
https://www.github.com/users/hbfs25505/projects/198
https://github.com/users/hbfs25505/projects/199
https://www.github.com/users/hbfs25505/projects/199
https://github.com/users/hbfs25505/projects/200
https://www.github.com/users/hbfs25505/projects/200
https://github.com/users/hbfs25505/projects/201
https://www.github.com/users/hbfs25505/projects/201
https://github.com/users/hbfs25505/projects/202
https://www.github.com/users/hbfs25505/projects/202
https://github.com/users/hbfs25505/projects/203
https://www.github.com/users/hbfs25505/projects/203
https://github.com/users/hbfs25505/projects/204
https://www.github.com/users/hbfs25505/projects/204
https://github.com/users/hbfs25505/projects/205
https://www.github.com/users/hbfs25505/projects/205
https://github.com/users/hbfs25505/projects/206
https://www.github.com/users/hbfs25505/projects/206
https://github.com/users/hbfs25505/projects/207
https://www.github.com/users/hbfs25505/projects/207
https://github.com/users/hbfs25505/projects/208
https://www.github.com/users/hbfs25505/projects/208
https://github.com/users/hbfs25505/projects/209
https://www.github.com/users/hbfs25505/projects/209
https://github.com/users/hbfs25505/projects/210
https://www.github.com/users/hbfs25505/projects/210
https://github.com/users/hbfs25505/projects/211
https://www.github.com/users/hbfs25505/projects/211
https://github.com/users/hbfs25505/projects/212
https://www.github.com/users/hbfs25505/projects/212
https://github.com/users/hbfs25505/projects/213
https://www.github.com/users/hbfs25505/projects/213
https://github.com/users/hbfs25505/projects/214
https://www.github.com/users/hbfs25505/projects/214
https://github.com/users/hbfs25505/projects/215
https://www.github.com/users/hbfs25505/projects/215
https://github.com/users/hbfs25505/projects/216
https://www.github.com/users/hbfs25505/projects/216
https://github.com/users/hbfs25505/projects/217
https://www.github.com/users/hbfs25505/projects/217
https://github.com/users/hbfs25505/projects/218
https://www.github.com/users/hbfs25505/projects/218
https://github.com/users/hbfs25505/projects/219
https://www.github.com/users/hbfs25505/projects/219
https://github.com/users/hbfs25505/projects/220
https://www.github.com/users/hbfs25505/projects/220
https://github.com/users/hbfs25505/projects/221
https://www.github.com/users/hbfs25505/projects/221
https://github.com/users/hbfs25505/projects/222
https://www.github.com/users/hbfs25505/projects/222
https://github.com/users/hbfs25505/projects/223
https://www.github.com/users/hbfs25505/projects/223
https://github.com/users/hbfs25505/projects/224
https://www.github.com/users/hbfs25505/projects/224
https://github.com/users/hbfs25505/projects/225
https://www.github.com/users/hbfs25505/projects/225
https://github.com/users/hbfs25505/projects/226
https://www.github.com/users/hbfs25505/projects/226
https://github.com/users/hbfs25505/projects/227
https://www.github.com/users/hbfs25505/projects/227
https://github.com/users/hbfs25505/projects/228
https://www.github.com/users/hbfs25505/projects/228
https://github.com/users/hbfs25505/projects/229
https://www.github.com/users/hbfs25505/projects/229
https://github.com/users/hbfs25505/projects/230
https://www.github.com/users/hbfs25505/projects/230
https://github.com/users/hbfs25505/projects/231
https://www.github.com/users/hbfs25505/projects/231
https://github.com/users/hbfs25505/projects/232
https://www.github.com/users/hbfs25505/projects/232
https://github.com/users/hbfs25505/projects/233
https://www.github.com/users/hbfs25505/projects/233
https://github.com/users/hbfs25505/projects/234
https://www.github.com/users/hbfs25505/projects/234
https://github.com/users/hbfs25505/projects/235
https://www.github.com/users/hbfs25505/projects/235
https://github.com/users/hbfs25505/projects/236
https://www.github.com/users/hbfs25505/projects/236
https://github.com/users/hbfs25505/projects/237
https://www.github.com/users/hbfs25505/projects/237
https://github.com/users/hbfs25505/projects/238
https://www.github.com/users/hbfs25505/projects/238
https://github.com/users/hbfs25505/projects/239
https://www.github.com/users/hbfs25505/projects/239
https://github.com/users/hbfs25505/projects/240
https://www.github.com/users/hbfs25505/projects/240
https://github.com/users/hbfs25505/projects/241
https://www.github.com/users/hbfs25505/projects/241
https://github.com/users/hbfs25505/projects/242
https://www.github.com/users/hbfs25505/projects/242
https://github.com/users/hbfs25505/projects/243
https://www.github.com/users/hbfs25505/projects/243