硬盘

二十一、文件操作

[亡魂溺海] 提交于 2020-01-25 12:16:11
Day 09 文件操作 什么是文件 文件是操作系统系统的虚拟单位,我们操作文件就是对操作系统发起请求,然后由操作系统将用户或应用程序对于文件的读写操作转换成对硬盘的读写操作 如何操作文件 打开文件 读写数据 保存文件 关闭文件 python程序控制文件 read 一次性读取数据 fr = open(file,mode='r',encoding='utf-8') #打开文件 print(fr.read()) #一次性读取所有的内容 fr.close() readline 读取一行,如果读完了所有数据,指针会移到文件末尾,再次读取则为空 fr = open(file,mode='r',encoding='utf-8') #打开文件 print(fr.readline()) #一次读取一行内容 fr.close() read模式打开文件 读取文件内容,向操作系统发起读的请求,汇报操作系统转成具体的硬盘操作,将内容由硬盘读入内存 由于python的垃圾回收机制只回收引用计数为0的变量,但是打开文件还占用操作系统的资源,所以我们需要回收操作系统的资源 del fr只是回收变量,我们必须使用fr.close()关闭文件 write模式打开文件 fw = open(file,mode='w',encoding='utf-8') #打开文件,并清空文件 fw.write(写入的数据) #写入数据

MinIO 分布式集群搭建

送分小仙女□ 提交于 2020-01-25 04:19:27
MinIO 分布式集群搭建 分布式 Minio 可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障。 Minio 分布式模式可以搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。 (1)数据保护 分布式 Minio 采用纠删码(erasure code)来防范多个节点宕机和位衰减(bit rot)。 分布式 Minio 至少需要 4 个节点,使用分布式 Minio 就自动引入了纠删码功能。 纠删码是一种恢复丢失和损坏数据的数学算法, Minio 采用 Reed-Solomon code 将对象拆分成 N/2 数据和 N/2 奇偶校验块。 这就意味着如果是 12 块盘,一个对象会被分成 6 个数据块、6 个奇偶校验块,你可以丢失任意 6 块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复。 纠删码的工作原理和 RAID 或者复制不同,像 RAID6 可以在损失两块盘的情况下不丢数据,而 Minio 纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全。 而且 Minio 纠删码是作用在对象级别,可以一次恢复一个对象,而RAID 是作用在卷级别,数据恢复时间很长。 Minio 对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复

按照这位大神的一步一步来的, 灰常成功.

蹲街弑〆低调 提交于 2020-01-24 19:17:44
目录: 查看centos7系统挂载点信息 扩展VMWare-centos7硬盘空间 对新增加的硬盘进行分区、格式化 添加新LVM到已有的LVM组,实现扩容 1、 查看centos7系统挂载点信息 df -h查看挂载点信息 2、扩展VMWare-centos7硬盘空间 关闭Vmware的centos7系统,才能在VMWare菜单中设置需要增加到的磁盘大小 如果这个选项是灰色的,说明此虚拟机建有快照,把快照全部删除再试试! 3、对新增加的硬盘进行分区、格式化 我们增加了空间的硬盘是 /dev/sda 分区: [root@localhost]# fdisk /dev/sda     p       查看已分区数量(我看到有两个 /dev/sda1 /dev/sda2) n       新增加一个分区 p       分区类型我们选择为主分区        分区号输入3(因为1,2已经用过了,sda1是分区1,sda2是分区2,sda3分区3) 回车      默认(起始扇区) 回车      默认(结束扇区) t        修改分区类型        选分区3 8e       修改为LVM(8e就是LVM) w       写分区表 q       完成,退出fdisk命令 使用partprobe命令 或者重启机器 格式化分区3命令: mkfs.ext3 /dev/sda3 4

redis持久化实现原理

爱⌒轻易说出口 提交于 2020-01-23 22:09:56
RDB rdb持久化原理: 会涉及到操作系统底层的fork调用,详情查看: https://zhangxueliang.blog.csdn.net/article/details/104076571 会fork出一个子进程用于持久化。 当redis主进程发生数据修改的时候,会触发内核级别的写时复制操作,写数据到持久化文件是子进程来完成的,数据的增删改是在父进程中进行的,所以redis的持久化是fork+copy on write来实现的。 比如8点fork出一个子进程用于持久化操作,此时子进程拷贝的是8点时的数据,父子进程的数据修改,彼此都不可见。假如10点redis数据发生了修改,此时会由内核的写时复制机制触发数据复制操作,将引用指向新的数据,此时子进程的引用还是指向旧数据。写时复制不是为了数据同步,而是数据隔离。 fork出来的子进程会一直等到数据持久化做完后才销毁。每次持久化开始时都会fork出一个子进程。每次拍快照(持久化)都是当前时间点的全量数据覆盖之前的快照数据,如果快照采用增量更新的方式的话,需要在内存中判断哪些数据有更新哪些没更新,反而消耗CPU资源。 拷贝引用的成本比拷贝数据的成本低很多,因为一个引用的大小是4个字节,但引用指向的数据可能是一个数组几百个字节。 redis RDB持久化配置方式: 如果想关闭持久化,只需在配置文件redis.conf中配置:

块存储,文件存储及对象存储 比较

徘徊边缘 提交于 2020-01-23 07:05:35
本质是一样的,底层都是块存储,只是在对外接口上表现不一致,分别应用于不同的业务场景。 通常来讲,磁盘阵列都是基于Block块的存储,而所有的NAS产品都是文件级存储。 一. 块存储:DAS,SAN 块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘、做Raid、或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘。 架构: 1. DAS(Direct Attach Storage): 是直接连接于主机服务器的一种存储方式,每台服务器有独立的存储设备,每台主机服务器的存储设备无法互通,需要跨主机存取资料室,必须经过相对复杂的设定,若主机分属不同的操作系统,则更复杂。 应用:单一网络环境下且数据交换量不大,性能要求不高的环境,技术实现较早。 2. SAN(Storage Area Network): 是一种高速(光纤)网络联接专业主机服务器的一种存储方式,此系统会位于主机群的后端,它使用高速I/O联接方式,如:SCSI,ESCON及Fibre-Channels.特点是,代价高、性能好。但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。 应用:对网速要求高、对数据可靠性和安全性要求高、对数据共享的性能要求高的应用环境中。 典型设备: 磁盘阵列,硬盘,虚拟硬盘 使用角度:

linux centos7分区

瘦欲@ 提交于 2020-01-22 19:24:11
哈喽! 我今天来分享一下Linux的分区,本次我使用的是LinuxCentos7版本为例,使用虚拟机,命令是fdisk Linux分区有4个主分区及扩展分区,逻辑分区。 首先给虚拟机添加8G硬盘(硬盘用给分区做实验)硬盘大小可以根据你的需求,我这里是实验。 使用命令fdisk -l查看系统硬盘及分区。 1表示我的第一块硬盘系统盘,2表示我的第二块硬盘(刚刚添加的8G硬盘)。 使用fdisk /dev/sdb命令进行分区 注意:我这里的sdb是第二块硬盘,sda表示第一块硬盘,Linux 硬盘表示法 sda.b.c...... 命令回车后可以看到有帮助命令 这里我们输入m命令可以看到以下命令,我全部翻译出来了。 这里我们先用p命令查看磁盘的分区情况,可以看到此时没任何分区。 接下来我们进行分区操作,先分一个主分区。 n命令开始分区,可以看到有p和e命令,这里的p命令是主分区e命令是扩展分区。+2G是分区的大小,我这里分了2个G。 接下来我们在使用p命令查看分区情况,可以看到此时有一个分区。 接下来我们分一个扩展分区,输入命令n ,这里我们选择e命令流程和上面一样,我这里是+3G。使用p命令查看此时的分区情况,这时我们这里有2个分区。 注意;扩展分区不能使用,要分区为逻辑分区,我们继续n命令,我们看到这里变了此时是p和l命令,(分区流程和上面一样

LVM磁盘管理学习

邮差的信 提交于 2020-01-21 16:44:08
LVM磁盘管理学习 LVM简介 LVM基本术语 具体操作步骤 LVM简介 LVM是 Logical VolumeManager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上进行组合,做为一个大的硬盘空间来使用,当硬盘的剩余空间不够的时候,可以将其它的硬盘加入到分区当中,这样可以实现磁盘空间的动态管理。 LVM基本术语 物理卷(physical volume,PV):物理卷就是指硬盘分区,也可以是整个硬盘或已创建的RAID ,是LVM的基本存储设备,与普通物理存储介质的区别是该设备包含有LVM相关的管理参数。 卷组(volume group,VG):卷组是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个“LVM分区”(逻辑卷)。 逻辑卷(logical volume,LV):LVM的逻辑卷类似于非LVM系统中的硬盘分区,它建立在卷组之上,是一个标准的块设备,在逻辑卷之上可以建立文件系统。 物理块(physical extent,PE):物理卷以大小相等的物理块为存储的基本单位,同时也是LVM寻址的最小单元。 逻辑块(logical extent,LE):逻辑卷以大小相等的逻辑块为存储的基本单位,在同一个卷组中,LE的大小和PE是相等的

C#.NET里面抽象类和接口有什么区别

。_饼干妹妹 提交于 2020-01-21 13:59:28
1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。 2.接口的本质 接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子: interface InterfaceName { void Method1(); void Method2(int para1); void Method3(string para2,string para3); } 那么,接口的本质是什么呢?或者说接口存在的意义是什么。我认为可以从以下两个视角考虑: 1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。 例如,在自然界中,人都能吃饭,即“如果你是人,则必须能吃饭”。那么模拟到计算机程序中,就应该有一个IPerson(习惯上,接口名由“I”开头)接口,并有一个方法叫Eat(),然后我们规定,每一个表示“人”的类,必须实现IPerson接口,这就模拟了自然界“如果你是人,则必须能吃饭”这条规则。 从这里,我想各位也能看到些许面向对象思想的东西。面向对象思想的核心之一

三、依赖注入是什么?

寵の児 提交于 2020-01-21 08:52:27
接口 在说依赖注入之前,先了解下什么是接口。 我们在学编程的时候都知道,接口的相关规则: ( 来源百度百科 ) 1. 接口是一个引用类型,通过接口可以实现多重继承。 2. C#中接口的成员不能有new、public、protected、internal、private等修饰符。 3. 接口中只能声明"抽象"成员(所以不能直接下一步对接口进行实例化(即不能使用new操作符声明一个接口的实例对 象)),而不能声明共有的域或者私有的成员变量。 4. 接口声明不包括数据成员,只能包含方法、属性、事件、索引等成员。 5. 接口名称一般都以“I”作为首字母(当然不这样声明也可以),这也是接口和类的一个区别之一。 6. 接口成员的访问级别是默认的(默认为public),所以在声明时不能再为接口成员指定任何访问修饰符,否则 编译器会报错。 7. 接口成员不能有static、abstract、override、virtual修饰符,使用new修饰符不会报错,但会给出警告说不需要关键字new。 8. 在声明接口成员的时候,不准为接口成员编写具体的可执行代码,也就是说,只要在对接口进行声明时指明接口的成员名称和参数就可以了。 9. 接口一旦被实现,实现类必须实现接口中的所有成员,除非实现类本身是抽象类(通过具体的可执行代码实现接口抽象成员的操作)。 很多时候看到这么多的概念,也是云里雾里的

VirtualBox安装centos7(3)

微笑、不失礼 提交于 2020-01-20 15:45:05
在自己真实机上已经安装了VirtualBox虚拟机,具体安装方法可以参考Linux公社的文章。 下载 CentOS-7 的镜像 1. 在虚拟机中创建虚拟电脑 图(1) 如图(1)点击新建按钮,开始新建虚拟机电脑, 图(2) 在名称哪里填入CentOS-7,类型选择linux,版本选择other或者 RedHat 。如果cpu是64位的,就选择64位版本,否则就选择32位版本的。内存大小的选择不要超过真实机内存的一半大小,我这里分配2G大小。勾选上 现在创建虚拟硬盘,点击创建。 图(3) 文件位置就是你虚拟机创建后存放的位置,linux默认放在用户家目录里,windows默认放在系统盘,如果空间足够,默认就好。不够,点击右边的文件夹图标可以更换位置。文件大小就是分配给虚拟机的硬盘空间的大小,我这里给CentOS-7分配30G的硬盘。虚拟硬盘文件类型选择VDI,存储在物理磁盘上有动态分配和固定大小。区别是,动态分配会根据你硬盘空间的使用情况来动态分配硬盘多少。固定大小则是你分配多少硬盘,就一次性从硬盘上划出多少空间给虚拟机,相应的真实机硬盘就减少多少大小(有网友说固定大小,性能要好一点)。然后点击创建。 图(4) 现在虚拟电脑就创建好了,不过还不能启动,还要做一些简单的设置。 图(5) 点击设置,选择系统,在启动顺序哪里选中光驱,点击右边的向上箭头,把光驱升到第一位。 图(6)