英国雷迪RD1000非金属管线探测仪

群晖DSM6.0系统完美修改root账号密码

以下内容来源于网络,经过我的补充与完善,让小白们看的更加明白!

首先感谢贴吧:tom6781459的教程自从群晖NAS升级到DSM6.0以后,官方修改了系统的ROOT密码,原来一些老的教程都说是admin账户密码,其实已经修改过了。现如今已经有了完美修改root密码的方法,你可以修改成任意的,当然为了避免遗忘,还是建议你设置成admin账户的密码吧。方法很简单,几步操作就可以,开启后就可以做相应的修改了。

我主要是为了修改transmission自带的英文版web,修改的方法可以看其它群晖设置tansmission的相关教程。

工具/原料

  • 群晖NAS (DSM6.0以上版本)
  • PUTTY软件

方法/步骤

  1. 进入putty后开始修改操作,先切换到英文输入法。

    192.168.2.10为我的NAS地址,(请填写你要修改的NAS地址)

    链接类型选择SSH,点击“open”

    群晖DSM6.0系统完美修改root账号密码
  2. 输入admin账户的账号和密码后按Enter键

    群晖DSM6.0系统完美修改root账号密码
  3. 确定出现绿色字体的admin@xxx(XXX应该显示你设置的主机用户名)

    (ainrt为我的nas主机用户名)

    群晖DSM6.0系统完美修改root账号密码
  4. 然后输入    “sudo su -”

    (注意u和-之间有一个空格!!!)

    群晖DSM6.0系统完美修改root账号密码
  5. 再次输入admin密码 就会出现绿色字体root@xxx。

    (XXX应该显示你设置的主机用户名)

    群晖DSM6.0系统完美修改root账号密码
  6. 输入

    synouser –setpw root xxx

    (xxx是你打算要修改的root的密码 建议修改成和admin账户一样,注意–前有一个空格),按一下Enter键出现绿色字体的root@xxx,这样就成功了。 之后你可以进winscp 用root户名和你刚修改的密码登陆了。之后的权限修改操作都用winscp这个软件。

    群晖DSM6.0系统完美修改root账号密码
    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。

RAID有哪几种?有什么区别?

由于众所周知的原因,我决定无限期暂停在知乎发文,知乎的旧文也不再更新,新来的同学可以关注我的Blogger和微信公众号,详情请看:

黎小白:关于暂停在知乎发文的通知

目录

SSD、SSHD和HDD哪个好?

1. 日渐式微的机械硬盘

2. 电脑储存器的革命——固态硬盘

2.1 最佳固态硬盘品牌

2.2 固态硬盘主要规格剖析

2.2.1 固态硬盘的关键组件——控制器

2.2.2 固态硬盘的关键组件——内存

2.2.3 老司机带你理清各种固态硬盘接口

2.2.3.1 硬盘接口标准——IDE、AHCI和NVMe咋选?

2.3 如何看懂SSD评测数据?

2.4 固态硬盘的注意事项

2.5 2017年第三季度最佳固态硬盘

3. 尴尬的固态混合硬盘

4.聊聊磁盘阵列功能(本文)

聊聊磁盘阵列功能

★简介

独立硬盘冗余阵列RAIDRedundant Array of Independent Disks),旧称廉价磁盘冗余阵列Redundant Array of Inexpensive Disks),简称磁盘阵列

其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘数组组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。

最初的RAID分成不同的等级,每种等级都有其理论上的优缺点,不同的等级在两个目标间取得平衡,分别是增加数据可靠性以及增加存储器(群)读写性能。这些年来,出现对于RAID观念不同的应用。

★标准RAID

◇RAID 0

  • 优点:使用 n 颗硬盘,即可拥有将近 n 倍的读写效能。
  • 缺点:数据安全性较低,同组数组中任一硬盘发生问题就会造成数据遗失。
  • 硬盘数量:最少 2 个。

◇RAID 1

  • 优点:安全性依照数组里的实体硬盘数量倍数成长。
  • 缺点:空间利用率是所有 RAID 中最没有效率的。
  • 硬盘数量:最少 2 个。

在 RAID 0 追求效能极端的彼岸,存在着强调数据安全性的RAID 1,RAID 1 的数据储存方式恰好与 RAID 0相反,欲写入硬盘的数据被复制成与硬盘相同数量的份数,分别写入数组中的各颗硬盘。如此一来每个硬盘内都拥有着同份数据的不同拷贝,只要数组中的其中 1 颗硬盘还可使用,数据就不会遗失,可忍受 n-1 颗硬盘同时损毁(n 为数组中实体硬盘的个数)。

效能部分则分为写入和读取 2 种不同状况,写入时因为须将数据复制多份写入各颗硬盘,写入效能与单颗硬盘差不多;读取时则能够同时从各颗硬盘同时读取数据的不同部分,所以能够和 RAID 0 相提并论,约是单颗硬盘读取效能乘上数组中的硬盘个数,不过也有以单颗硬盘读取的设计。

数组可使用容量是 RAID 1 最大的缺点,由于各实体硬盘中的数据几乎是以镜像的方式储存,因此无论数组中放入了多少颗硬盘,可用容量都是以最小的那颗硬盘为主;同 RAID 0,如果数组中有着硬盘容量不一的情形,大硬盘的剩余容量能否可利用端看控制器的设计,之后的 RAID 模式也是如此,将不再赘述。

◇RAID 5

  • 优点:兼顾空间利用率与安全性。
  • 缺点:需要额外的运算资源,仅能忍受 1 个硬盘损毁。
  • 硬盘数量:至少 3 个。

◇RAID 6

  • 优点:容错硬盘数量比 RAID 5 多 1 颗。
  • 缺点:运算量比 RAID 5 大、空间利用率比 RAID 5 低。
  • 硬盘数量:至少 4 个。

◇RAID 2、3、4 呢?

RAID2、3、4较少实际应用,它们大多只在研究领域有实作。

★混合RAID

◇JBOD

JBOD 为 ”Just a Bunch Of Disks” 的缩写,意思就是「一堆硬盘」,指的是RAID 磁盘阵列以外的所有组态。

实作上 JBOD 有 2 种方式,第一种与我们直接将硬盘安装在计算机中相同,各颗实体各自管理自己的容量,当然也可进行磁盘区分割。第二种则是能够将不同实体硬盘的空间串在一起,例如 2 颗 1TB 硬盘串成 1 个 2TB 的空间运用,如此能够放入大于 1TB 的单一档案。

◇RAID 7

RAID 7并非公开的RAID标准,而是Storage Computer Corporation的专利硬件产品名称。

RAID 7的效能超越了许多其他RAID标准的实做产品,但也因为如此,在价格方面非常的高昂。

◇RAID N+N

在厂商支持的情况下,使用者甚至可以将 2 种以上的 RAID 组态放在同 1组磁盘阵列内,也就是有时可以看到的双位数 RAID 01、10、50、60……等。

建立的方式也很好理解,首先利用前位数字的 RAID 方式建立数组,接着再将后方数字所代表的数组建立其上。

譬如 RAID 10 就是先建立 2 组 RAID 1,接着这 2 组 RAID 1 再组合成 RAID 0;RAID50 就是先建立 2 组 RAID 5,接着再组合成 1 组 RAID 0。

当然,这种组合等级的成本一般都非常昂贵,因此只在少数特定场合应用。

★1+1大于2,SSD组RAID 0真的值得吗?[3] [4]

◇引言

在HDD机械硬盘横行的时代,有人为了追求性能而组RAID 0,理论上能获得双倍的读写速度提升,而在SSD固态硬盘时代中,RAID似乎变得更加麻烦了,因为二者的工作原理太不一样了,光是一个RIAD下的TRIM问题就困扰了玩家很久,直到RST 11驱动才解决。

SSD组RAID 0还有一个问题就是性能提升与成本提升不那么明显,因为主流SSD的速度已经够快,组RAID对随机性能提升也不明显,再加上成本方面的影响,SSD组RAID只是少数玩家才会考虑的事。

◇测试

Tom’s Hardware就做了一个类似的测试,对比是256GB SSD vs.128GB RAID 0、512GB vs.256GB
RAID 0下的SSD性能,包括连续读写、随机及日常应用等各个方面。

组成RIAD 0模式之后,SSD性能提升最明显的就是连续读写速度了,简单来说就是从500MB/s量级提高到了900-1000MB/s量级。

其实从随机性能上的测试来看,IOMeter中的数据库IOPS之类的性能也是有变化的,但是从延迟上来看RAID 0的延迟确实比单SSD要高了一点,PCMark及日常应用测试中其性能并没有随读写速度的提升而改善,有的甚至还下降了。

◇小结:读写速度提升,但总体弊大于利

所以,Tom’s Hardware的最终态度就是不赞成SSD组RAID 0,用户还是选择大容量的SSD产品,组RAID 0还要面临成本更高、风险更大等问题,所以还是单块大容量SSD算了,除非用户对连续读写速度有非常强烈的需要。

★选择适合的 RAID 模式

对于玩家们或是强调系统效能的主机来说,通常都是为了要来增加数据传输的速度。而对于重视数据备援及安全性的用户或是企业用户来说,磁盘阵列就是一个很好的数据保护模式。

像我们这种屌丝,一般只有一块SSD或一块SSD+一块机械硬盘,RAID好像没什么卵用。

但是近几年 NAS 这项产品的需求大开,不论是什么原因而购买了NAS 这项产品,大部分的用户都很难逃过「该选哪种 RAID 模式」这一关。

RAID 0 和 RAID 1 最少都需要 2 颗硬盘,RAID 0 是效能和储存空间的最大化,不注重安全性,因此比较适合放一些消失不见也没关系的档案,例如快取、或是整理档案时的暂存空间,RAID 1 则是安全性最大化,适合放一些重要的数据。

在 4颗硬盘规格的 NAS 产品中,RAID 5、RAID6、RAID 10则是可以放在一起探讨,以安全性来排序由高至低为 RAID 6>RAID 10>RAID5,空间利用率则是 RAID 5>RAID 6=RAID 10。此外还必须加入处理效能去探讨,如果处理效能不高,那么使用 RAID 10能够获得比 RAID 6、RAID 5 还要高的访问速度(因为不用运算校验码)。

★参考文献

1. RAID – 维基百科,自由的百科全书

2. 组建 NAS 磁盘脑袋不再卡卡,RAID 模式全方位分析 | T客邦 – 我只推荐好东西

3. 1+1大于2?SSD组RAID 0真的值得吗? – 超能网

4. One SSD Vs. Two In RAID: Which Is Better?

继续浏览内容
知乎
发现更大的世界
打开
Chrome
继续

更多回答

一共有0~6一共7种,这其中RAID 0、RAID1、RAID 5和RAID6比较常用。
RAID 0:如果你有n块磁盘,原来只能同时写一块磁盘,写满了再下一块,做了RAID 0之后,n块可以同时写,速度提升很快,但由于没有备份,可靠性很差。n最少为2。
RAID 1:正因为RAID 0太不可靠,所以衍生出了RAID 1。如果你有n块磁盘,把其中n/2块磁盘作为镜像磁盘,在往其中一块磁盘写入数据时,也同时往另一块写数据。坏了其中一块时,镜像磁盘自动顶上,可靠性最佳,但空间利用率太低。n最少为2。
RAID 3:为了说明白RAID 5,先说RAID 3.RAID 3是若你有n块盘,其中1块盘作为校验盘,剩余n-1块盘相当于作RAID 0同时读写,当其中一块盘坏掉时,可以通过校验码还原出坏掉盘的原始数据。这个校验方式比较特别,奇偶检验,1 XOR 0 XOR 1=0,0 XOR 1 XOR 0=1,最后的数据时校验数据,当中间缺了一个数据时,可以通过其他盘的数据和校验数据推算出来。但是这有个问题,由于n-1块盘做了RAID 0,每一次读写都要牵动所有盘来为它服务,而且万一校验盘坏掉就完蛋了。最多允许坏一块盘。n最少为3.
RAID 5:在RAID 3的基础上有所区别,同样是相当于是1块盘的大小作为校验盘,n-1块盘的大小作为数据盘,但校验码分布在各个磁盘中,不是单独的一块磁盘,也就是分布式校验盘,这样做好处多多。最多坏一块盘。n最少为3.


RAID 6:在RAID 5的基础上,又增加了一种校验码,和解方程似的,一种校验码一个方程,最多有两个未知数,也就是最多坏两块盘。
总体来说,

以上。

继续浏览内容
知乎
发现更大的世界
打开
Chrome
继续

title: RAID磁盘阵列配置和调优小结
date: 2016-03-10 15:52:17
categories: 学习 | Study
description: RAID的本质是平衡可用性与成本

## 前言

RAID解释我偷个小懒引用WikipediA,独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于电脑来说,看起来就像一个单独的硬盘或逻辑存储单元。写这篇文章当然不是单纯的介绍概念和使用方法,更重要的是如何针对不同的业务场景做合理的RAID配置和参数优化,对于SSD固态硬盘的加入我引入小米运维团队的实验数据,同时我也相信分布式存储会逐步走向成熟,以OpenStack,VSAN,Nutanix为代表头顶软件定义和超融合概念的技术也已经开始了暗战。


> RAID的本质是平衡可用性与成本

## 更新历史

2016年03月11日 – 初稿

阅读原文 – RAID磁盘阵列配置和调优小结

**扩展阅读**

RAID – zh.wikipedia.org/wiki/R
RAID技术发展综述 – RAID技术发展综述
SSD阵列卡方案优化:考虑使用RAID 50替代RAID 10 – SSD阵列卡方案优化:考虑使用RAID 50替代RAID 10

## RAID基础知识

>感谢@刘爱贵,详细知识点可参考扩展阅读

### 基本原理

RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。 RAID 是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。 SNIA 对 RAID 的定义是 :一种磁盘阵列,部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中某一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据。磁盘条带化虽然与 RAID 定义不符,通常还是称为 RAID (即 RAID0 )。

RAID 的初衷是为大型服务器提供高端的存储功能和冗余的数据安全。在整个系统中, RAID 被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的 I/O 性能。大多数 RAID 等级具有完备的数据校验、纠正措施,从而提高系统的容错性,甚至镜像方式,大大增强系统的可靠性, Redundant 也由此而来。

这里要提一下 JBOD ( Just a Bunch of Disks )。最初 JBOD 用来表示一个没有控制软件提供协调控制的磁盘集合,这是 RAID 区别与 JBOD 的主要因素。目前 JBOD 常指磁盘柜,而不论其是否提供 RAID 功能。

RAID 的两个关键目标是提高数据可靠性和 I/O 性能。磁盘阵列中,数据分散在多个磁盘中,然而对于计算机系统来说,就像一个单独的磁盘。通过把相同数据同时写入到多块磁盘(典型地如镜像),或者将计算的校验数据写入阵列中来获得冗余能力,当单块磁盘出现故障时可以保证不会导致数据丢失。有些 RAID 等级允许更多地 磁盘同时发生故障,比如 RAID6 ,可以是两块磁盘同时损坏。在这样的冗余机制下,可以用新磁盘替换故障磁盘, RAID 会自动根据剩余磁盘中的数据和校验数据重建丢失的数据,保证数据一致性和完整性。数据分散保存在 RAID 中的多个不同磁盘上,并发数据读写要大大优于单个磁盘,因此可以获得更高的聚合 I/O 带宽。当然,磁盘阵列会减少全体磁盘的总可用存储空间,牺牲空间换取更高的可靠性和性能。比如, RAID1 存储空间利用率仅有 50% , RAID5 会损失其中一个磁盘的存储容量,空间利用率为 (n-1)/n 。

磁盘阵列可以在部分磁盘(单块或多块,根据实现而论)损坏的情况下,仍能保证系统不中断地连续运行。在重建故障磁盘数据至新磁盘的过程中,系统可以继续正常运行,但是性能方面会有一定程度上的降低。一些磁盘阵列在添加或删除磁盘时必须停机,而有些则支持热交换 ( Hot Swapping ),允许不停机下替换磁盘驱动器。这种高端磁盘阵列主要用于要求高可能性的应用系统,系统不能停机或尽可能少的停机时间。一般来说, RAID 不可作为数据备份的替代方案,它对非磁盘故障等造成的数据丢失无能为力,比如病毒、人为破坏、意外删除等情形。此时的数据丢失是相对操作系统、文件系统、卷管理器或者应用系统来说的,对于 RAID 系统来身,数据都是完好的,没有发生丢失。所以,数据备份、灾 备等数据保护措施是非常必要的,与 RAID 相辅相成,保护数据在不同层次的安全性,防止发生数据丢失。

RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )。镜像,将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。数据条带,将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升 。数据校验,利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。 不同等级的 RAID 采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和 I/O 性能。至于设计何种 RAID (甚至新的等级或类型)或采用何种模式的 RAID ,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。

RAID 思想从提出后就广泛被业界所接纳,存储工业界投入了大量的时间和财力来研究和开发相关产品。而且,随着处理器、内存、计算机接口等技术的不断发展, RAID 不断地发展和革新,在计算机存储领域得到了广泛的应用,从高端系统逐渐延伸到普通的中低端系统。 RAID 技术如此流行,源于其具有显著的特征和优势,基本可以满足大部分的数据存储需求。总体说来, RAID 主要优势有如下几点:
(1) 大容量
这是 RAID 的一个显然优势,它扩大了磁盘的容量,由多个磁盘组成的 RAID 系统具有海量的存储空间。现在单个磁盘的容量就可以到 1TB 以上,这样 RAID 的存储容量就可以达到 PB 级,大多数的存储需求都可以满足。一般来说, RAID 可用容量要小于所有成员磁盘的总容量。不同等级的 RAID 算法需要一定的冗余开销,具体容量开销与采用算法相关。如果已知 RAID 算法和容量,可以计算出 RAID 的可用容量。通常, RAID 容量利用率在 50% ~ 90% 之间。
(2) 高性能
RAID 的高性能受益于数据条带化技术。单个磁盘的 I/O 性能受到接口、带宽等计算机技术的限制,性能往往很有 限,容易成为系统性能的瓶颈。通过数据条带化, RAID 将数据 I/O 分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合 I/O 性能。
(3) 可靠性
可用性和可靠性是 RAID 的另一个重要特征。从理论上讲,由多个磁盘组成的 RAID 系统在可靠性方面应该比单个磁盘要差。这里有个隐含假定:单个磁盘故障将导致整个 RAID 不可用。 RAID 采用镜像和数据校验等数据冗余技术,打破了这个假定。 镜像是最为原始的冗余技术,把某组磁盘驱动器上的数据完全复制到另一组磁盘驱动器上,保证总有数据副本可用。 比起镜像 50% 的冗余开销 ,数据校验要小很多,它利用校验冗余信息对数据进行校验和纠错。 RAID 冗余技术大幅提升数据可用性和可靠性,保证了若干磁盘出错时,不 会导致数据的丢失,不影响系统的连续运行。
(4) 可管理性
实际上, RAID 是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器。对于外部主机系统来说, RAID 是一个单一的、快速可靠的大容量磁盘驱动器。这样,用户就可以在这个虚拟驱动器上来组织和存储应用系统数据。 从用户应用角度看,可使存储系统简单易用,管理也很便利。 由于 RAID 内部完成了大量的存储管理工作,管理员只需要管理单个虚拟驱动器,可以节省大量的管理工作。 RAID 可以动态增减磁盘驱动器,可自动进行数据校验和数据重建,这些都可以 大大简化管理工作。

### 关键技术

> 镜像

镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。对于 RAID 而言,采用镜像技术 典型地 将会同时在阵列中产生两个完全相同的数据副本,分布在两个不同的磁盘驱动器组上。镜像提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。而且,镜像不需要额外的计算和校验,故障修复非常快,直接复制即可。镜像技术可以从多个副本进行并发读取数据,提供更高的读 I/O 性能,但不能并行写数据,写多个副本会会导致一定的 I/O 性能降低。

镜像技术提供了非常高的数据安全性,其代价也是非常昂贵的,需要   至少双倍的存储空间。高成本限制了镜像的广泛应用,主要应用于至关重要的数据保护,这种场合下数据丢失会造成巨大的损失。另外,镜像通过 “ 拆分 ” 能获得特定时间点的上数据快照,从而可以实现一种备份窗口几乎为零的数据备份技术。

> 数据条带

磁盘存储的性能瓶颈在于磁头寻道定位,它是一种慢速机械运动,无法与高速的 CPU 匹配。再者,单个磁盘驱动器性能存在物理极限, I/O 性能非常有限。 RAID 由多块磁盘组成,数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。这样写入和读取数据就可以在多个磁盘上同时进行,并发产生非常高的聚合 I/O ,有效提高了整体 I/O 性能,而且具有良好的线性扩展性。这对大容量数据尤其显著,如果不分块,数据只能按顺序存储在磁盘阵列的磁盘上,需要时再按顺序读取。而通过条带技术,可获得数倍与顺序访问的性能提升。

数据条带技术的分块大小选择非常关键。条带粒度可以是一个字节至几 KB 大小,分块越小,并行处理能力就越强,数据存取速度就越高,但同时就会增加块存取的随机性和块寻址时间。实际应用中,要根据数据特征和需求来选择合适的分块大小,在数据存取随机性和并发处理能力之间进行平衡,以争取尽可能高的整体性能。

数据条带是基于提高 I/O 性能而提出的,也就是说它只关注性能, 而对数据可靠性、可用性没有任何改善。实际上,其中任何一个数据条带损坏都会导致整个数据不可用,采用数据条带技术反而增加了数据发生丢失的概念率。

> 数据校验

镜像具有高安全性、高读性能,但冗余开销太昂贵。数据条带通过并发性来大幅提高性能,然而对数据安全性、可靠性未作考虑。数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。相对镜像,数据校验大幅缩减了冗余开销,用较小的代价换取了极佳的数据完整性和可靠性。数据条带技术提供高性能,数据校验提供数据安全性, RAID 不同等级往往同时结合使用这两种技术。

采用数据校验时, RAID 要在写入数据同时进行校验计算,并将得到的校验数据存储在 RAID 成员磁盘中。校验数据可以集中保存在某个磁盘或分散存储在多个不同磁盘中,甚至校验数据也可以分块,不同 RAID 等级实现各不相同。当其中一部分数据出错时,就可以对剩余数据和校验数据进行反校验计算重建丢失的数据。校验技术相对于镜像技术的优势在于节省大量开销,但由于每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件 RAID 控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多。

海明校验码和 异或校验是两种最为常用的 数据校验算法。海明校验码是由理查德 · 海明提出的,不仅能检测错误,还能给出错误位置并自动纠正。海明校验的基本思想是:将有效信息按照某种规律分成若干组,对每一个组作奇偶测试并安排一个校验位,从而能提供多位检错信息,以定位错误点并纠正。可见海明校验实质上是一种多重奇偶校验。异或校验通过异或逻辑运算产生,将一个有效信息与一个给定的初始值进行异或运算,会得到校验信息。如果有效信息出现错误,通过校验信息与初始值的异或运算能还原正确的有效信息。

## 常见RAID类型

> 常见5种RAID类型对比,n位磁盘数量,详细介绍可参考扩展阅读

RAID 等级 | RAID0 | RAID1 | RAID5 | RAID6 | RAID10
—-|—-|—-|—-|—-|—-
别名 | 条带 | 镜像 | 分布奇偶校验条带 | 双重奇偶校验条带 | 镜像加条带
容错性 | 无 | 有 | 有 | 有 | 有
冗余类型 | 无 | 有 | 有 | 有 | 有
热备盘 | 无 | 有 | 有 | 有 | 有
读性能 | 高 | 低 | 高 | 高 | 高
随机写性能 | 高 | 低 | 一般 | 低 | 一般
连续写性能 | 高 | 低 | 低 | 低 | 一般
需要磁盘数 | n≥1 | 2n (n≥1) | n≥3 | n≥4 | 2n(n≥2)≥4
可用容量 | 全部 | 50% | (n-1)/n | (n-2)/n | 50%

## RAID 等级

### 标准 RAID 等级

SNIA 、 Berkeley 等组织机构把 RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七个等级定为标准的 RAID 等级,这也被业界和学术界所公认。标准等级是最基本的 RAID 配置集合,单独或综合利用数据条带、镜像和数据校验技术。标准 RAID 可以组合,即 RAID 组合等级,满足 对性能、安全性、可靠性要求更高的存储应用需求。

### JBOD

JBOD ( Just a Bunch Of Disks )不是标准的 RAID 等级,它通常用来表示一个没有控制软件提供协调控制的磁盘集合。 JBOD 将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘。 JBOD 的数据存放机制是由第一块磁盘开始按顺序往后存储,当前磁盘存储空间用完后,再依次往后面的磁盘存储数据。 JBOD 存储性能完全等同于单块磁盘,而且也不提供数据安全保护。它只是简单提供一种扩展存储空间的机制, JBOD 可用存储容量等于所有成员磁盘的存储空间之和。目前 JBOD 常指磁盘柜,而不论其是否提供 RAID 功能。

### RAID0

RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,因为它并不提供任何形式的冗余策略。 RAID0 将所在磁盘条带化后组成大容量的存储空间,将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验, RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。

RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。

### RAID1

RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。

RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高。 RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。

### RAID5

RAID5 应该是目前最常见的 RAID 等级,它的原理与 RAID4 相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。另外, RAID5 还具备很好的扩展性。当阵列磁盘 数量增加时,并行操作量的能力也随之增长,可比 RAID4 支持更多的磁盘,从而拥有更高的容量以及更高的性能。

RAID5 的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。

RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。

### RAID6

前面所 述的各个 RAID 等级都只能保护因单个磁盘失效而造成的数据丢失。如果两个磁盘同时发生故障,数据将无法恢复。 RAID6 引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。 RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式,它可以看作是一种扩展的 RAID5 等级。

RAID6 不仅要支持数据的恢复,还要支持校验数据的恢复,因此实现代价很高,控制器的设计也比其他等级更复杂、更昂贵。 RAID6 思想最常见的实现方式是采用两个独立的校验算法,假设称为 P 和 Q ,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。当两个磁盘同时失效时,即可通过求解两元方程来重建两个磁盘上的数据。

RAID6 具有快速的读取性能、更高的容错能力。但是,它的成本要高于 RAID5 许多,写性能也较差,并有设计和实施非常复杂。因此, RAID6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。它一般是替代 RAID10 方案的经济性选择

### RAID 组合等级

标准 RAID 等级各有优势和不足。自然地,我们想到把多个 RAID 等级组合起来,实现优势互补,弥补相互的不足,从而达到在性能、数据安全性等指标上更高的 RAID 系统。目前在业界和学术研究中提到的 RAID 组合等级主要有 RAID00 、 RAID01 、 RAID10 、 RAID100 、 RAID30 、 RAID50 、 RAID53 、 RAID60 ,但实际得到较为广泛应用的只有 RAID01 和 RAID10 两个等级。当然,组合等级的实现成本一般都非常昂贵,只是在 少数特定场合应用。

### RAID10 和 RAID01

一些文献把这两种 RAID 等级看作是等同的,本文认为是不同的。 RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像;而 RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。相同的配置下,通常 RAID01 比 RAID10 具有更好的容错能力。

RAID01 兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。 RAID01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。 RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50% 。


### RAID 50

RAID 5与RAID 0的组合,先作RAID 5,再作RAID 0,也就是对多组RAID 5彼此构成Stripe访问。由于RAID 50是以RAID 5为基础,而RAID 5至少需要3颗硬盘,因此要以多组RAID 5构成RAID 50,至少需要6颗硬盘。以RAID 50最小的6颗硬盘配置为例,先把6颗硬盘分为2组,每组3颗构成RAID 5,如此就得到两组RAID 5,然后再把两组RAID 5构成RAID 0。

RAID 50在底层的任一组或多组RAID 5中出现1颗硬盘损坏时,仍能维持运作,不过如果任一组RAID 5中出现2颗或2颗以上硬盘损毁,整组RAID 50就会失效。

RAID 50由于在上层把多组RAID 5构成Stripe,性能比起单纯的RAID 5高,容量利用率比RAID5要低。比如同样使用9颗硬盘,由各3颗RAID 5再组成RAID 0的RAID 50,每组RAID 5浪费一颗硬盘,利用率为(1-3/9),RAID 5则为(1-1/9)。

### RAID 60

RAID 6与RAID 0的组合:先作RAID 6,再作RAID 0。换句话说,就是对两组以上的RAID 6作Stripe访问。RAID 6至少需具备4颗硬盘,所以RAID 60的最小需求是8颗硬盘。

由于底层是以RAID 6组成,所以RAID 60可以容许任一组RAID 6中损毁最多2颗硬盘,而系统仍能维持运作;不过只要底层任一组RAID 6中损毁3颗硬盘,整组RAID 60就会失效,当然这种情况的概率相当低。

比起单纯的RAID 6,RAID 60的上层通过结合多组RAID 6构成Stripe访问,因此性能较高。不过使用门槛高,而且容量利用率低是较大的问题。


## 关于RAID参数调优

> 通常情况下建议系统(RAID1)与数据(RAID[5|10])分离,这里引用@叶金荣老师的一段话

1. 使用SSD或者PCIe SSD设备,至少获得数百倍甚至万倍的IOPS提升
2. 购置阵列卡同时配备CACHE及BBU模块,可明显提升IOPS(主要是指机械盘,SSD或PCIe SSD除外。同时需要定期检查CACHE及BBU模块的健康状况,确保意外时不至于丢失数据)
3. 有阵列卡时,设置阵列写策略为WB,甚至FORCE WB(若有双电保护,或对数据安全性要求不是特别高的话),严禁使用WT策略。并且闭阵列预读策略
4. 尽可能选用RAID-10,而非RAID-5(`这句话有待商榷`)
5. 使用机械盘的话,尽可能选择高转速的,例如选用15KRPM,而不是7.2KRPM的盘,不差几个钱的;

## SSD阵列卡方案优化

> 感谢@小米noops运维团队,详细实验数据请参考扩展阅读


**性能测试结论**

性能测试显示,相同容量的R50和R10性能接近:其中小块文件的随机读R50要全面好于R10,随机写4K虽然R50和R10差距在28%,但是块增大后R50要全面优于R10。顺序读写方面,R50和R10十分接近。

容错方面,R50接近R10:第二块盘容错率R50十分接近R10,两者相差30%。R10的优势主要是在有一定的概率提供第三、甚至第四块磁盘的容错率,但是考虑到并非100%容错,因此从容错角度来看R50虽然和R10有一些差距,但也已体现出较好的容错率,至少优于R5。而且R50搭配灵活,甚至可以指定3组R5以达到最大3块磁盘的容错;

成本方面,R50有很大优势:按这个配置计算R50只有R10的3/4。

**总结**

RAID 50提供了接近RAID 10性能、可用性以及接近RAID 5成本的特性,具有较好的整体性价比优势,所以考虑使用RAID 50替换RAID 10吧

虚拟机硬盘直通挽救黑群晖数据

我这个黑群晖是1个U盘作为引导盘,一块1T硬盘安装DSM和存放数据.无法被群晖助手搜索的原因应该是安装DSM的硬盘分区出现了问题。因为我使用PE使用Diskgenius,还是可以看到这块硬盘的分区情况。如下图

经检查,这个硬盘没有发现坏道,用SMART或者DG自带的坏道检测都没查出来

个人感觉无法进入DSM的原因是硬盘系统区由于频繁快速断电导致某些文件受损,在读写的时候可能只保存了一半就断电导致文件缺失。而非硬件故障。这种情况恢复数据是很有希望的。

在无法启动DSM的情况下,我用DG把硬盘的第一个分区,也是群晖DSM的安装分区给备份后重新格式化掉,原来格式为EXT4,格式化成FAT(但是千万不要删除任何一个分区)准备重新安装DSM

但是,重新安装DSM也失败,报错无法安装此文件,文件可能已经损毁如下

其实这也是早就料到的事情,只要DSM发生损坏,不把硬盘上所有的分区都删掉的话,是无法直接安装DSM的。换句话说,黑群晖的DSM安装的时候必须挂一块空白盘。但是删除分区意味着这块盘上的所有数据都没了。

但是好处是,虽然自带DSM已经损坏,又无法安装新DSM,但是数据区的东西还是在硬盘上的,只不过因为是Linux 软 raid形式的磁盘分区,所以拆下来用Windows系统是看不了的,我们这里可以采用群晖官网的方法,制作一个Ubuntu的启动盘(和制作PE启动盘差不多),然后在linux中读取软raid分区中的数据,参考文章如下

https://www.synology.com/zh-cn/knowledgebase/DSM/tutorial/Storage/How_can_I_recover_data_from_my_DiskStation_using_a_PC

如果你打不开上面的连接,那么通过输入下面命令来读取即可

在Ubuntu的Disk工具或者PE下面的Diskgenius工具中可以看到这块硬盘的分区结构如下

第一分区安装DSM,第二个和最大那个分区就是群晖里设置的一个存储“集群”

通过这种方式,可以像开启了群晖中的终端机一样读取文件,可以在Ubuntu中把数据拷贝出来(硬盘是只读的),放到其他磁盘上去,挽救数据。

可是我现在没有那么大的硬盘把数据拷贝出来,而是想把这块硬盘插到黑群晖里继续读写数据。此时有原理相同的两种方案。

1、在一个黑群晖物理中插入至少两块硬盘,一块新硬盘,一块是我坏掉的那个,先使用USB加那个新硬盘引导并安装DSM,不要插旧硬盘,正常启动后,再插入坏掉的硬盘到SATA口上。正常启动,就可以在新的DSM中看到老硬盘中的“储存空间”和“储存集群”了。

2、在普通操作系统上装VirtualBox虚拟机,然后在虚拟机中使用两块虚拟硬盘安装DSM,正常运行后,再使用VirtualBox的物理硬盘直通方式把坏掉的硬盘转为vmdk文件,挂到虚拟机的下面。和第一种方法一样,能在新的DSM中看到原来的文件。

两种方法下,原先DSM中安装的套件,Docker容器都无法找回,只能找回原来的文件。

使用虚拟机的方法成本较低,因为只需要把坏掉的硬盘插入到随便一台比较好的机器就可以了,具体方法可以看我上一篇博客《Windows10下VirtualBox 硬盘直通设置方式》我是用的Ubuntu宿主机开的VirtualBox,因为linux下面的权限更方便调整

下面是我的VirtualBox上虚拟机的配置截图

第一块是虚拟硬盘,写入了1.04b的引导文件,第二块是用来安装DSM的,第三块是我的物理直通硬盘。

首先只插入第一块和第二块虚拟硬盘,安装全新的DSM。启动正常运行后,再插入第三块物理直通硬盘,就可以在新DSM中看到原来的文件了。由于这块硬盘原来安装了一个DSM,所以系统会提示你

原先建立的存储空间可以直接看到

存储集群也能正常看到,不过由于DSM所在分区已经损毁,会提示你“无法存取系统集群”,但是健康状态仍然为良好

虽然有红色叹号,但是并不影响我们读写原来存储的数据文件


使用File Station可读可写,跟用普通的一样。

至于套件,就相当于都卸载了,如果你之前用了moments,那么照片的实体文件还在,只是不大好找,需要开“终端机”找。同样Docker如果持久化了,那么物理文件还在,如果你原先的DSM版本和现在的DSM版本一致或者相似,那么可以去“套件中心”再下载Docker和Moments的套件,这样原先的套件和里面的内容据都恢复了。另外也可以通过docker命令行的技术把原先docker恢复出来,不过这就是另外一项高深的技术了。

下面是我恢复后的Docker套件里原来的容器,不仅还都在,而且能正常的启动,恢复dou效果非常好,同样Moments,Chat,Note Station都可以重新安装试一下,不要忘记把现在DSM的用户新建几个成为原来DSM一样名称的用户哦

下面是我恢复后的Docker原来的容器,还可以正常的启动和运行,wordpress里面的图片和文章都还在

系统配置,原来的用户、权限设定,网络设定肯定都没了,因为是新DSM了,如果你之前备份出单独文件来的话,那就非常好了。

对了,我坏掉的旧DSM版本为DSM_DS918+_24922,恢复到虚拟机的新DSM版本为DSM_DS918+_25426,小小升级了一下,引导程序都是918+的1.04b

Bing必应背景你也能有,BingBot每天更换你的电脑背景.

必应(Bing)网站每天登录都会加载一张漂亮,而且文艺气息十足的背景图片.如果能把这个背景图片设置为电脑背景,那我们也可以每天看到不同的背景了.让自己的桌面不再枯燥,于是发现一款神器.还真是用来修改电脑背景的.Windows和Mac系统都能安装.现在还在beta版.不过windows用户可以先尝尝鲜.操作十分简单.只需下载程序,双击运行即可.

这款神器叫BingBot.下载地址为:https://github.com/ser163/bingbot/releases 这个软件开放源代码,有兴趣的同学可以去看下源代码,是基于Scrapy爬虫框架开发.

GitHUB地址:https://github.com/ser163/bingbot

中文文档:https://www.ser163.cn/doc/BingBot/startbingbot.html

1.到下载页面,选择.bb_Windows.zip 然后解压到,D盘或者E盘就可以了.看到bb.exe双击一下.程序就会自动运行:

img

双击bb.exe即可运行.

2.程序会弹出运行界面,具体内容不用理会,都是scrapy的启动信息.

img

BingBot运行

3.现在我们可以看下桌面背景是不是变化了.是不是与必应 一模一样了.

img

桌面背景更换

4.是不是很方便.但是这种模式,只适合于手动运行.还可以利用Windows的定时任务计划,实现自动更换.在同一目录下.右键install.cmd.选择”以管理员身份运行”.便可以自动添加定时任务.到系统中,默认4小时运行一次.这样就可以实现自动更换桌面了.

img

添加任务计划到系统

img

任务计划

5.你可以可以更改install.cmd文件,自定义更新时间.用记事本打开.install.cmd.更改为你想要更新的时间即可.默认时间为240分钟更新一次,也就是4小时.

img

更改时间

好了.小伙伴们,经过以上设置.我们就可以每天自动实现更新背景了.现在我们的桌面也可以和必应一样文艺范十足.而且很多高清大图,美丽风景.每天都不一样.

系统内部服务 [pgsql, synoindexd] 无法启动

本人小白一枚!前几天家里的216Play消息里出现“系统事件——系统内部服务 [pgsql, synoindexd] 无法启动。请联络 Synology 支持小组以获得帮助”,同时手机端套件DS photo、DS vedio等都无法远程访问了!并且,在升级photo station、download station等套件时无法升级还会提示“此套件需要您启动 [pgsql]”。
我已将上述问题通过技术支持中心反馈给了群晖,得到了邮件回复,是通过putty登录admin账户,再sudo -i获取root权限,然后逐行输入
rm /var/services/pgsql
servicetool –set-pgsql
synoservicecfg –resume-by-reason pgsql no-volume
另实例:

ssh进去把 /volume1/@database/pgsql 重命名下,然后新建一个 pgsql 目录,用 chown 把所属用户组改成和原来相同,然后重启试试。

wordpress代码高亮显示

具体步骤为:

1,拷贝文件 highlight.css 到主题目录下。

2,在主题头文件 header.php 的 </header>之后,</header> 之前添加:

  1. <link rel=“stylesheet” href=“<?php bloginfo(‘template_url’); ?>/highlight.css” />

3,记住以下两个网站:

在线代码高亮转换

在线C语言格式化

4,在上述两个网站中进行在线转换。将格式化后的代码进行高亮转换,然后复制 html 代码,粘贴到wordpress的文本框,记住一定要粘贴到文本框,最好不要粘贴到可视化框。

5,最后进行字体、字号调整等操作,以免在文本框粘贴时格式符太多,不容易查找粘贴位置。

高亮效果:

转换前:
#include <iostream>

int main()
{
std::cout << “Hello World!” << std::endl;
return 0;
}

转换后:

  1. #include <iostream>
  2. int main()
  3. {
  4.     std::cout << “Hello World!” << std::endl;
  5.     return 0;

『Wordpress』自定义代码高亮

# TODO: 

关于 WordPress 的代码高亮,以前的解决方案着实让人哭笑不得。最初为了代码高亮,直接截图。然后实在是受不了了,安装了代码高亮插件,但是效果差强人意,样式太丑,弃用了。最后,将代码从编辑器复制到 Evernote 里面,然后再复制到 WordPress 里面,真是累啊。

文章太过久远,可能已不具备参考价值。没删,只因为留作纪念。

今天朋友推荐了个 css 库,可以直接使用这些css,来进行代码高亮,这是原文地址:

http://archerzz.ninja/ios/code-highlight.html

本文,将讲解作为一名iOS开发人员,如何使用xcode风格的代码高亮,以及注意事项。

正文:

一、下载官方库

首先,下载官方的js与css库:

https://highlightjs.org/download/

然后,将highlight.pack.js上传到服务器上(能通过URL访问即可),然后看到highlight目录下的style文件夹,里面放的是各种风格的代码高亮样式。

二、修改xcode.css样式

找到xcode.css,这个样式是xcode中的default主题风格,即白色背景的那种风格。但在博客中,白色背景并不友好,一般会给一定的底色,所以,打开xcode.css,对代码做如下修改:

.hljs {
  display: block;
  overflow-x: auto;
  padding: 0.5em;
  background: #fff; // 将这一行的#fff改为#e9e9e9(浅灰色)
  color: black;
  -webkit-text-size-adjust: none;
}

三、上传xcode.css

上传的方式与highlight.pack.js一样,路径随便选,只要能访问到就行。

四、在wordpress中引入上传的文件

进入wordpress后台,找到【外观】->【编辑】,在右侧选择顶部(header.php),将以下代码放到之前。

<link rel="stylesheet" href="上传的xcode.css路径">
<script src="上传的highlight.pack.js路径"></script>
<script>hljs.initHighlightingOnLoad();</script>

五、关闭wordpress默认pre样式

这一步完了以后,还需要关闭wordpress自带的pre样式,否则会与xcode.css中的样式冲突。

  1. 进入wordpress后台,找到【外观】->【编辑】,在右侧选择样式表(style.css);
  2. 全局搜索pre,找到以下代码并删除(如果怕删错,可以先备份):
pre {
    background: #eee;
    font-family: "Courier 10 Pitch", Courier, monospace;
    font-size: 15px;
    font-size: 1.3rem;
    line-height: 1.6;
    margin-bottom: 0.5em;
    padding: 1em;
    overflow: auto;
    max-width: 100%;
}
  1. 如果代码字体大小或样式不喜欢,可以在将pre下面的code做如下改动:
code, kbd, tt, var {
    font: 15px Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
}
  1. 删除后,更新文件

六、如何使用

在需要插入代码的地方,将wordpress的富文本编辑器从【可视化】切换到【文本】,然后使用以下代码包住需要显示的代码

<pre><code class='html'> // 需要什么语言,class中就写什么语言,不清楚可以看官方文档
// 放的代码,如
<head></head>
</code></pre>

七、html代码的高亮显示

如果需要高亮现实html或者以’<’开头的代码,如,<?php等,需要对’<’进行转义,否则会被当成html代码解析,导致无法显示。

如需显示以’<’开头的代码,将’<’写成’&lt;’即可。

linux shell 命令获取字符串/文件的MD5值

字符串“hello”的MD5:

$ echo -n 'hello'|md5sum|cut -d ' ' -f1
  • 1

得到的MD5值:

5d41402abc4b2a76b9719d911017c592
  • echo -n 'admin'|md5sum|cut -d ' ' -f1
  • echo -n 'qss20180219'|md5sum|cut -d ' ' -f1

命令解释:
md5sum: 显示或检查 MD5(128-bit) 校验和,若没有文件选项,或者文件处为”-“,则从标准输入读取。
echo -n : 不打印换行符。
cut: cut用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件。
-d 指定与空格和tab键不同的域分隔符。-f1 表示第一个域。参考这里。

获取文件的MD5值:

$ md5sum linuxmint-12-gnome-dvd-32bit.iso|cut -d ' ' -f1
  • 1

得到的MD5值:
ee3d6e2ca498bc7685b7f17cdb5f2eea

使用MD5校验iso文件:

$ md5sum linuxmint-12-gnome-dvd-32bit.iso >linuxmint-12-gnome-dvd-32bit.md5
  • 1

注意linuxmint-12-gnome-dvd-32bit.md5的内容是:

ef3d6e2ca498bc7685b7f17cdb5f2eea linuxmint-12-gnome-dvd-32bit.iso
  • 1

把linuxmint-12-gnome-dvd-32bit和其验证文件
linuxmint-12-gnome-dvd-32bit.md5放到同一目录下用下面的命令:

$ md5sum -c linuxmint-12-gnome-dvd-32bit.md5
  • 1

如果校验正确则输出:

linuxmint-12-gnome-dvd-32bit.iso: 确定
  • 1

如果校验错误则输出:

linuxmint-12-gnome-dvd-32bit.iso: 失败
md5sum: 警告:1/1 生成的校验和不匹配
  • 1
  • 2

命令解释:
md5 -c: 从文件中读取MD5 的校验值并予以检查

Message Digest Algorithm MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)
keywords:Hash,SHA,Ronald L. Rivest,MD5,IETF(Internet Engineering Task Force)

Linux下使用MySQL教程

是最流行的关系型数据库管理系统之一,属于 Oracle 旗下产品

安装启动操作

1.安装mysql命令 :$ sudo apt-get install -y mysql-server
2.查看mysql的版本命令(注意-V是大写,不然会出现如下错误):$ mysql -V
3.启动mysql命令(关闭,重启等只需将start换成stop,restart等即可):$sudo service mysql start
4.登录mysql命令为:$ mysql -u用户名 -p密码
5.连接远程数据库:$ mysql -h <host> -P <port> -u<username> -p<password>

数据库操作

1.查看数据库:> show databases; (注意分号“;”不要落下)
2.新建一个数据库命令:> create database 数据库名称;
删除一个数据库命令:> drop database 数据库名称;
3.使用某个数据库:> use 数据库名称;

表操作

1.查看表命令:> show tables;
2.建立一个新表:> create table 表名 (字段参数); 或 >create table if not exists 表名(字段参数);
删除一个旧表:> drop table 表名; 或 >drop table if exists 表名;
3.查看表结构:> desc 表名称; 或 >show columns from 表名称;
4.对表数据的操作:
增:>insert into 表名称 (字段名1,字段名2,字段名3......) values(字段名1的值,字段名2的值,字段名3的值......);
删:>delete from 表名称 where 表达式;

建立一个新表:> create table 表名 (字段参数); 或 >create table if not exists 表名(字段参数)

删除一个旧表:>drop table 表名; 或 >drop table if exists 表名

改:>update 表名称 set 字段名=“新值” where 表达式;
查:>select 字段名1,字段名2,字段名3..... from 表名称;
5.增加字段:>alter table 表名称 add 字段名 数据类型 其它; (其它包括默认初始值的设定等等)
6.删除字段:>alter table 表名称 drop 字段名;

用户相关操作

注:以下命令均需先以root身份登录mysql:mysql -uroot -p

show databases;  显示此用户下的数据库;

use 数据库名;       切换数据库

show tables;    显示该数据库下所有表

desc users;   显示users这个表的详细信息

1.添加新用户
(1)创建新用户:> insert into mysql.user(Host,User,Password) values("localhost","user1",password("password1"));


(2)为用户分配权限:
设置用户可以在本地访问mysql:grant all privileges on *.* to username@localhost identified by "password" ;
设置用户只能访问指定数据库:grant all privileges on 数据库名.* to username@localhost identified by "password" ;
(3)刷新系统权限表:>flush privileges;
2.查看MySql当前所有的用户:>SELECT DISTINCT User FROM mysql.user;
3.删除用户及其数据字典中包含的数据:>drop user 'xbb'@'localhost';

实例:

mysql使用手册

1、mysql登录

1.1 远程登陆mysql

mysql -h ip -u root -p 密码

1.2 本地登陆mysql

mysql -u root -p 密码

2、为数据库配置远程连接权限

采用授权法

例如:以用户名:root 密码:888888从任何主机连接到mysql服务器

先在服务器上用root用户登录:

mysql –uroot –p

出现命令行提示符:

mysql>

输入:

mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’IDENTIFIED BY ‘1qaz2wsx’ WITH GRANT OPTION;

然后使配置生效:

mysql>FLUSH PRIVILEGES;

mysql>exit;

如果仅仅允许用户root 从ip为192.168.1.6的主机连接到mysql服务器,并使用888888作为密码

mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root’@’192.168.1.6’ IDENTIFIED BY ‘888888’ WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES ;

mysql>exit;

3、用户使用权限

mysql> use mysql;

Database changed

mysql> select host, user, password from user;

+———–+———+——————————————-+

| host      | user    | password                                  |

+———–+———+——————————————-+

| localhost | root    | *535CC5FDC76618DED475584E5F5957B9F7E63D4B |

| 127.0.0.1 | root    | *7C057B0B526E12B8D3AFBD4B9C187CA3E62DA280 |

| ::1       | root    | *7C057B0B526E12B8D3AFBD4B9C187CA3E62DA280 |

| %         | phptest | *523DF7DC12DF59EC98AD12A7125000A5B4E63721 |

| %         | root    |                                           |

| %         | mysqld  | *83D34C89B8E0F100D54C6D9276D357DB43E8779F |

| %         | server  | *866D5A029D62EC05ACC4584CE50F1CD2F50E0E82 |

+———–+———+——————————————-+

7 rows in set (0.00 sec)

4、用户登陆及密码更改

#修改当前登录用户密码:

mysql> SET PASSWORD = PASSWORD(‘1qaz2wsx’);

mysql> exit;

 

#添加ydlm用户查询、插入、更新、删除的权限:

grant select,insert,update,delete on *.* to test@”%” identified by “123456“;

grant select,insert,delete,update,create,drop on *.* to test@”%” identified by “123456”;

flush privileges;

5、限制root用户远程登陆

mysql> delete from user where user=”root” and host=”%”;

mysql> flush privileges;

mysql> exit;

#启用root用户远程登陆

mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’IDENTIFIED BY ‘1qaz2wsx’ WITH GRANT OPTION;

然后使配置生效:

mysql>FLUSH PRIVILEGES;

mysql>exit;

6、删除某用户

drop user 用户名@’%’;

drop user ydlm@’%’;

DELETE FROM user WHERE user=’test’;

或者

drop user test@”%”;

delete from user Where User=’test’ and Host=’%’; #指定用户和主机名

7、数据库导入

source /opt/test.dump_20171124_112640.sql

8、数据库的备份与恢复

— 备份数据库

— /var/lib/mysql

— 备份

— mysqldump -u 用户名 -p [密码]  [选项]  [数据库名]   [表名]  > /备份路径/备份文件名 ,选项有 –all-databases 表示备份所有数据库

mysqldump -u root -p studb > /studb.sql

mysqldump -uroot -p –all-databases >/studb.sql   #不建议用,恢复麻烦

— 还原数据库

mysql -u root -p studb < /studb.sql

9、mysql数据库使用

mysql> show databases;   查看数据库列表信息

mysql> use mysql;        USE  数据库名

mysql> show tables;

— 创建新的数据库

— CREATE DATABASE 数据库名

— 创建新的数据表

— CREATE TABLE 表名 (字段定义……)

— 删除指定的数据表

— DROP TABLE [数据库名.]表名

— 删除指定的数据库

— DROP DATABASE 数据库名

— 建表:

— create  table  student (表名称是student

— studentName  varchar(30)  not  null,   字段studentName

— studentId   int  not  null,                 字段studentId

— studentAge  int  not  null,                字段studentAge

— loginPass  varchar(10) 字段loginPass

— );

10、重置mysql数据库root用户密码

1、修改MySQL的登录设置:

vi /etc/my.cnf

在[mysqld]的段中加上一句:skip-grant-tables

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

skip-name-resolve

skip-grant-tables

2、重新启动mysqld:

/etc/init.d/mysqld restart

3、登录并修改MySQL的root密码:

/usr/bin/mysql

USE mysql ;

UPDATE user SET Password = password ( ‘new-password’ ) WHERE User = ‘root’

flush privileges ;

Quit;

4、再把配置文件修改回来,再重启服务

11、Mysql备份脚本

#!/bin/sh

# File: /root/mysql_dump/mysql_back.sh

# Database info

DB_NAME=”test”

DB_USER=”root”

DB_PASS=”123456″

# Others vars

# whereis mysqldump

# IS ` but not ‘

BIN_DIR=”/usr/bin”

BCK_DIR=”/root/mysql_dump/data”

DATE=`date +%Y%m%d_%H%M%S`

# TODO DATABASE BAK AND DELETE 15 DAYS AGO BAKFILES

mkdir -p $BCK_DIR

$BIN_DIR/mysqldump –opt -u$DB_USER -p$DB_PASS $DB_NAME \

 > $BCK_DIR/$DB_NAME.dump_$DATE.sql

find $BCK_DIR -mtime +15 -name “test.dump_*” -exec rm -rf {} \;

linu mysql数据导出来_linux下如何导入导出MySQL数据库

用mysqldump命令行

命令格式

mysqldump -u 用户名 -p 数据库名 > 数据库名.sql

范例:

mysqldump -u root -p abc > abc.sql

(导出数据库abc到abc.sql文件)

提示输入密码时,输入该数据库用户名的密码。

二、导入:

用mysql命令行

命令格式

mysql -u 用户名 -p 数据库名

三、直接COPY

如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。

3.1 将原始数据库用tar打包为一个文件

tar -zcvf mydb.tar.gz mydb

3.2 创建空数据库

3.3 解压

在临时目录中解压,如:

cd /tmp

tar -zxvf mydb.tar.gz

3.4 拷贝

将解压后的数据库文件拷贝到相关目录

cd mydb/

cp * /var/lib/mysql/mydb/

对于FreeBSD:

cp * /var/db/mysql/mydb/

3.5 权限设置

将拷贝过去的文件的属主改为mysql:mysql,权限改为660

chown mysql:mysql /var/lib/mysql/mydb/*

chmod 660 /var/lib/mysql/mydb/*

//——————————————————————————————————–mysqldump -u 用户名 -p 数据库名 > 导出的文件名  mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql2.mysql导出数据库一个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名  mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql3.mysql导出一个数据库结构mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:wcnc_db.sql  -d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table4.mysql导入数据库常用source 命令  进入mysql数据库控制台,  如mysql -u root -p  mysql>use 数据库  然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

mysql>source d:wcnc_db.sql

//————————————————————————————————————-

一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):

1、导出数据和表结构:

mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql

#/usr/local/mysql/bin/mysqldump -uroot -p abc > abc.sql

敲回车后会提示输入密码

2、只导出表结构

mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql

#/usr/local/mysql/bin/mysqldump -uroot -p -d abc > abc.sql

二、导入数据库

1、首先建空数据库

mysql>create database abc;

2、导入数据库

方法一:

(1)选择数据库

mysql>use abc;

(2)设置数据库编码

mysql>set names utf8;

(3)导入数据(注意sql文件的路径)

mysql>source /home/abc/abc.sql;

方法二:

mysql -u用户名 -p密码 数据库名 < 数据库名.sql

#mysql -uabc_f -p abc < abc.sql

注意:有命令行模式,有sql命令

泥质粉砂岩

泥质粉砂岩(Sandstone),是由沙粒经过水搬运沉淀于河床上,经千百年的堆积坚固并经地质物理作用胶结而成的岩石。砂岩结构呈颗粒状,透水性能良好,
中文名
泥质粉砂岩
结    构
颗粒
直    径
1/16-1/250mm
用    途
建筑行业

目录

结构

编辑

泥质粉砂岩结构呈颗粒状,透水性能良好,颗粒特别细小,其砂直径约为1/16-1/250mm。

组成

编辑

泥质粉砂岩成分主要为粉砂,含少量粘土矿物及胶结物
泥质粉砂岩—其意思是粘土含量为50——25%,粉砂含量为70——50%。

常用辨别方法

编辑

泥质粉砂岩的断口较粗糙,用手搓泥质粉砂岩的会有砂感。

用途

编辑

粉砂岩主要用于建筑行业,人们正在努力的开发着它的商业价值。由于粉砂岩极具吸引力的外观,成为了备受追捧的工艺品。在一些生活用品中,如瓷砖,也可以用粉砂岩来制作。粉砂岩石粉也可以用来保护地雷或其他危险的爆炸区域。在艺术领域,雕塑家们的接嘴往往从粉砂岩开始。
词条图册更多图册

扩展资料:

特点

粉砂岩中常具有薄的水平层理,沉积物含水时易受液化产生变形层理及其它滑动构造。粉砂岩按粒度分为:粗粉砂岩(0.0625~0.0312mm)和细粉砂岩(0.0312~0.0039mm);按混入物成分分为:泥质粉砂岩、铁质粉砂岩、钙质粉砂岩等  。

分类

按照种类粉为:粉砂岩文化石、粉砂岩蘑菇石、粉砂岩板岩、粉砂岩脚踏石、粉砂岩网贴。

粉砂岩形成于弱的水动力条件下,常堆积于潟湖、湖泊、沼泽、河漫滩、三角洲和海盆地环境。

按碎屑成分划分为石英粉砂岩、长石粉砂岩、岩屑粉砂岩(少见)和它们间的过渡类型。根据胶结物成分划分为粘土质粉砂岩、铁质粉砂岩、钙质粉砂岩和白云质粉砂岩。黄土也是一种疏松的或半固结的粉砂质沉积物。粉砂岩多形成于河漫滩、三角洲、潟湖和海洋的较深水部位。

粉砂岩是指颗bai粒粒径在0.05-0.005mm范围内质量大于该岩石总质量一半的一种碎屑岩。

泥质粉砂岩则是指泥质成分(即颗粒粒径小于0.005mm的物质)占到粉砂岩总质量的25%~50%。中风化是指该岩石的风化程度,一般认为,中风化的岩石裂隙比较发育,沿裂隙有较多的次生矿物生成;

次生矿物质量大于岩石总质量的10%,岩体强度较岩块强度已明显降低,钻取的岩芯一般都较破碎,多为碎块状,风化系数0.4-0.8,波速比0.6-0.8。

中风化泥质粉砂岩已经是软的了,岩体基本质量等级一般是Ⅴ级。

扩展材料:

强风化、中风化和弱风化的区分方法

岩石风化是通过波速比和风化系数来划分的 波速比是风化岩石与新鲜岩石的压缩波速之比。 风化系数是风化岩石与新鲜岩石饱和单轴抗压强度之比风化程度

1、未风化:岩质新鲜偶见风化痕迹。

2、微风化:结构基本未变,仅节理面有渲染或略有变色,有少量风化裂隙。

3、中风化:结构部分破坏,沿节理面有次生矿物,有风化裂隙发育,岩体被切割成岩块。用镐难挖,干钻不易钻进。

4、强风化:结构大部分破坏,矿物成分显著变化,风化裂隙发育,岩体破碎,用镐可挖,干钻不易钻进。

5、全风化:结构基本破坏,但尚可辨认,有残余结构强度,可用镐挖,干钻可钻进。

6、残积土:组织结构全部破坏,已成土状,锹镐易开挖,干钻易钻进,具可塑。

参考资料:百度百科-岩体风化

怎么分辨泥质粉砂岩粉砂质泥岩的区别

鉴于大家对泥质粉砂岩与粉砂质泥岩的分辨不知怎么入手,我们特地从大量资源中整合出下面的文章,

以帮助大家更好的分辨泥质粉砂岩与粉砂质泥岩的区别,让我们先来区分一下砂岩和泥岩的概念。

砂岩——沙粒在经过长期的水搬运后留在河床上,经过数千年的堆积,并在地质物理作用下胶结而成的岩石。结构呈颗粒状,有良好的透水性,颗粒直径非常细小,大约在1/16-2mm。而粉砂岩的颗粒大约在1/16-1/250mm,几乎是砂岩中颗粒最小的一种。

泥岩(页岩)——泥岩是属于粘土岩的一种,由粘土物质经压实、脱水、重结晶后形成。

颗粒十分微小,一般小于1/256mm,比砂岩中颗粒最小的粉砂岩还要小很多。结构通常为页状或薄片状,用硬物击打易裂成碎片,透水性很差。

泥岩与页岩也是有区别的,通常情况下,

页岩的层理较泥岩清晰的多,相邻两层组成颗粒大小有明显差异,单层厚度小于25cm总厚度可达到数十米;

泥岩层理不明显,单层厚度大于1米,且质地较均匀。

野外分辨粉砂岩与泥岩的最好方法是用牙咬一下,泥岩不碜牙,而粉砂岩,咬起来会有明显的碜牙的感觉。

另外,也可以在粉砂岩与泥岩的断口用手搓一下,粉砂岩有明显的砂感,相比之下,泥岩要细腻的多。

在物质的命名中,一般遵循这样的规则。当某一成份含量在50%以上则构成基本名称;另一成份含量在50—25%之间,以“质”表示之。比如,泥质粉砂岩——其意思是粘土含量为50——25%,粉砂含量为50%或以上;又比如,粉砂质泥岩——其意思是粉砂含量为25—50%,粘土含量为50%或以上。

希望这篇文章能够更好的帮助大家分辨泥质粉砂岩与粉砂质泥岩的区别!

推荐阅读:

什么是粉砂岩

本文由粉砂岩

http://www.leixinstone.com

整理提供