https://blog.51cto.com/sonlich

http://note.youdao.com/noteshare?id=17083150f38dd19343f82ea6cc0e0e62&sub=3378C27029BD400E909110E76C2667E5

https://blog.51cto.com/sonlich/1955665

一、raid概念

独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于计算机来说,看起来就像一个单独的硬盘或逻辑存储单元。分为RAID-0,RAID-1,RAID-5,RAID-6,RAID-7,RAID-01,RAID-10,RAID-50,RAID-60。

其中,RAID0、RAID1、RAID5、RAID10和RAID01是五种最常见的方案。

RAID功用

    将多个硬盘 按照特定的格式组织起来,当一块硬盘使用

        提升IO能力 :磁盘并行读写

        提升耐用性:磁盘冗余来实现

RAID实现的方式:

  外界式磁盘阵列: 通过扩展卡提供适配能力

  内接式RAID:主板集成RAID控制器

  Software RAID

二、raid的几种常用方案

2.1 raid0  (重点)

RAID 0亦称为条带卷(striping)。它将两个以上的磁盘并联起来,成为一个大容量的磁盘。在存放数据时,分段后分散存储在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失。

将多块硬盘平行组织起来当作一块硬盘 实现IO并行的磁盘组织结构

1、IO能力为1块磁盘的N倍,但有上限。磁盘块越多,能力不增反降

   写入时,对数据的切割时间

   读出时,对数据的合并时间

2、没有冗余能力,随着块数增加,损坏的可能性为单块的N倍。

3、可用空间为N * min(S1,S2,....),至少需要2个磁盘块。

如图所示:

2.2 raid1--mirror (重点)

RAID0技术虽然提高了存储设备的IO读写速度,但RAID0中数据是被分开存放的,也就是说其中任何一块硬盘出现问题都会破坏数据完整性。因此追求数据安全性的时候就不应该使用RAID0,而是使用RAID1。

raid1 是将两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,与RAID 0相同。另外写入速度有微小的降低。只要一个磁盘正常即可维持运作,可靠性最高。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。

但是raid1方案的磁盘利用率理论上只有50%,是所有raid方案中磁盘利用率最低的一个。

1、有冗余能力,可以坏掉一个盘

2、可用空间为 1*min (S1,S2)

3、IO能力:读:分散性,性能上升。写:不分散,性能略微下降

如图所示

2.3、RAID4(了解)

  校验盘:根据另外两个盘的值进行对位异或运算得出校验盘的块编号。

硬盘坏掉:监控指示灯,API接口,控制器支持多个空闲盘,用于做热备。(不停机备份)

优点:兼具RAID1,RAID0的特性

缺点:单个磁盘做校验,无论读写均要使用校验盘,对单个盘的IO压力大,则出现性能瓶颈。

1、有冗余能力,可以坏掉一个盘

2、可用空间为 (N - 1) * min (S1,S2,S3,...),至少3个盘

3、如果坏掉一个盘,转换为降级模式工作。依然能够读写。

2.4 raid5

RAID 5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。

RAID 5至少需要三个硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。

 

校验码循环放于不同的盘,默认为校验码为左对称,如图所示

1、有冗余能力,可以坏掉一个盘

2、可用空间为 (N - 1) * min (S1,S2,S3,...),至少3个盘

3、如果坏掉一个盘,转换为降级模式工作。依然能够读写。

2.5 raid 6(了解)

与RAID 5相比,RAID 6增加第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,任意两块磁盘同时失效时不会影响数据完整性。

 两个盘做校验盘,循环校验,根据异或值做校验。

1、有冗余能力,可以坏掉2个盘

2、可用空间为 (N - 2) * min (S1,S2,S3,S4...),至少4个盘

3、如果坏掉2个盘,转换为降级模式工作。依然能够读写。

2.6 raid 10(重点)

RAID10是对RAID1+RAID0的一个"组合体"。

RAID10的最大好处就是对数据价值进行了保障。

 

先用2个盘做RAID1,再用多个RAID做RAID0

1、有冗余能力,每组镜像最多只能坏一个盘

2、可用空间为(N/2) * min(S1,S2,S3,S4,...)最少4个盘

3、每组两个盘同时坏的可能性不大。

如图所示,raid10是先对磁盘进行raid1分组,形成镜像,保障数据安全,再对已经分好组的raid1 进行raid0方案的组合,提升磁盘读写性能

2.7 raid 01(了解)

raid01与raid10相反,是将磁盘先进行raid0的方案组合,再进行raid1组合。

 先用多个盘做RAID0,再用2个RAID做RAID1

1、有冗余能力,两个组不能同时坏,只能坏一个组

2、可用空间为(N/2) * min(S1,S2,S3,S4,...)最少4个盘

3、每组都坏的可能性很大

如果RAID0组中的一块磁盘坏了,对于这一个RAID0组来说,它已经失效了,并不是还可以从该组中的另一块磁盘中读取一半数据。

也就是说,RAID01只要坏了一块盘后,该RAID0组就失效,IO的压力就只在另一个RAID0组上,这很容易导致这一个raid0组也损坏磁盘,只要这时再坏一块盘,所有数据就丢失了。

所以RAID01基本无人使用,太不安全。

2.8 raid 50(了解)

多块磁盘先实现RAID5,再组合成RAID0

由于RAID 50是以RAID 5为基础,而RAID 5至少需要3颗硬盘,因此要以多组RAID 5构成RAID 50,至少需要6颗硬盘。

2.9、RAID7(昂贵)

Optimized Asynchrony for High I/O Rates as well as high Data Transfer Rates(最优化的异步高I/O速率和高数据传输率)”RAID 7 存储计算机操作系统(Storage Computer Operating System )是一套实时事件驱动操作系统

 2.10、 JBOD(Just a Bunch of Disks)

功能:将多块磁盘空间合并成一个大的连续的磁盘空间,存储数据时,先填满第一个,第二个,....

例如,需要存储3T数据,有3个1T磁盘,基于JBOD方式组织磁盘。

补充链接raid数据安全

三、软件raid的实现(生产环境不常用)

Linux内核提供一个模块(md模块,Multi Devices),程序员为了软件实现raid,就必须调用此模块,RAID是一种通用的功能,所以就有程序员开发程序,能够调用内核中模块,完成RAID的软件实现。我们仅需要调用用户空间中mdadm工具即可。

RAID设备可命名为/dev/md0、/dev/md1、/dev/md2、/dev/md3等

3.1 mdadm命令

mdadm - manage MD devices aka Linux Software RAID

mdadm [mode]  <raiddevice> [options]  <component-devices>

【创建模式】
-C:创建(create a new array)
  -l #:指定要创建的raid级别(Set RAID level,,,,)
  -c:指定chunk大小(Specify chunk size of kibibytes,default 512KB)
  -a:检测设备名称(--auto=yes),yes表示自动创建设备文件/dev/mdN
  -n #: 使用#个块设备来创建此RAID(--raid-devices:Specify the number of active devices in the array)
  -x #:空闲盘的个数,RAID0没有冗余能力不需要空闲盘
指定备用设备数量(--spare-devices:Specify the number of spare (eXtra) devices in the initial array)

-v:显示过程
-f:强制行为
-r:移除设备(remove listed devices)
-S:停止阵列(--stop:deactivate array, releasing all resources)
-A:装配阵列,将停止状态的阵列重新启动起来 【监控模式】
-Q:查看摘要信息(query)
-D:查看详细信息(Print details of one or more md devices)
mdadm -D --scan >/etc/mdadm.conf,以后可以直接mdadm -A进行装配这些阵列 【管理模式】
mdadm --manage /dev/md[-] [--add 设备名] [--remove 设备名] [--fail 设备名]
--manage :mdadm使用manage模式,此模式下可以做--add/--remove/--fail/--replace动作
-a (-add ) :将后面列出的设备加入到这个md
-r (--remove) :将后面列出的设备从md中移除,相当于硬件raid的拔出动作
-f (--fail) :将后面列出的设备设定为错误状态,即人为损坏,损坏后该设备放在raid中已经是无意义状态的

3.2 实现raid10

3.2.1 创建分区

首先需在虚拟机中创建4块磁盘设备,如果是以分区做实验,在用fdisk分区时注意要将分区表示符改为raid即fd模式

fdisk /dev/sdb    # 在sdb这块磁盘上划分2G分区实验raid
Welcome to fdisk (util-linux 2.23.). Changes will remain in memory only, until you decide to write them.
Be careful before using the write command. Command (m for help): n
Partition type:
p primary ( primary, extended, free)
e extended
Select (default p):
Using default response p
Partition number (-, default ):
First sector (-, default ):
Using default value
Last sector, +sectors or +size{K,M,G} (-, default ): +2G
Partition of type Linux and of size GiB is set Command (m for help): t
Selected partition
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect' Command (m for help): p Disk /dev/sdb: 21.5 GB, bytes, sectors
Units = sectors of * = bytes
Sector size (logical/physical): bytes / bytes
I/O size (minimum/optimal): bytes / bytes
Disk label type: dos
Disk identifier: 0x1d3bcd2a Device Boot Start End Blocks Id System
/dev/sdb1 fd Linux raid autodetect Command (m for help): w
The partition table has been altered! Calling ioctl() to re-read partition table.
Syncing disks. # 同理,sdc、sdd、sde也同样操作,因为我们前边学过文件系统和mbr分区,所以我们直接利用dd命令将sdb磁盘上的前512字节直接复制进入其他三块磁盘的头部即可。
dd if=/dev/sdb of=/dev/sdc bs= count=
dd if=/dev/sdb of=/dev/sdd bs= count=
dd if=/dev/sdb of=/dev/sde bs= count=
# 这样一共四块磁盘,每块磁盘都划出2G的分区。 lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda : 200G disk
├─sda1 : 1G part /boot
├─sda2 : 50G part /
├─sda3 : 30G part /data
├─sda4 : 1K part
└─sda5 : 4G part [SWAP]
sdb : 20G disk
└─sdb1 : 2G part
sdc : 40G disk
└─sdc1 : 2G part
sdd : 60G disk
└─sdd1 : 2G part
sde : 80G disk
└─sde1 : 2G part
sr0 : .8G rom /run/media/root/CentOS x86_64

3.2.2 使用mdadm创建raid10

mdadm  -C  /dev/md0  -n   -l   -a yes  /dev/sd{b,c,d,e}    # -C 表示创建md0的raid阵列卡;-n  表示由四块磁盘组成;-l 10表示组成raid10方案;-a yes 表示自动创建设备文件;最后再加上4块设备。

mdadm -C /dev/md0 -n  -l  -a yes /dev/sd{b,c,d,e}
mdadm: /dev/sdb1 appears to contain an ext2fs file system
size=10485760K mtime=Tue Dec ::
mdadm: /dev/sdc1 appears to contain an ext2fs file system
size=5242880K mtime=Thu Jan ::
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
# /dev/md0 raid10创建完成

查看/dev/md0 的信息:

mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Dec ::
Raid Level : raid10
Array Size : (3.99 GiB 4.29 GB) # 总空间
Used Dev Size : (2045.00 MiB 2144.34 MB) # 可用空间
Raid Devices :
Total Devices :
Persistence : Superblock is persistent Update Time : Wed Dec ::
State : clean
Active Devices :
Working Devices :
Failed Devices :
Spare Devices : Layout : near=
Chunk Size : 512K # chunk可理解为block,大小可以通过-c选项设置 Consistency Policy : resync Name : CentOS7.songtai: (local to host CentOS7.songtai)
UUID : d73acb7a:969432a5:eb51cbdc:af034d4c
Events : Number Major Minor RaidDevice State
active sync set-A /dev/sdb1
active sync set-B /dev/sdc1
active sync set-A /dev/sdd1
active sync set-B /dev/sde1 cat /proc/mdstat # raid10 创建好后,存储于内存中的md信息
Personalities : [raid10]
md0 : active raid10 sde1[] sdd1[] sdc1[] sdb1[]
blocks super 1.2 512K chunks near-copies [/] [UUUU] unused devices: <none>

再通过lsblk -f 和 blkid查看设备号

3.2.3 给md0创建文件系统

mke2fs -t ext4 /dev/md0

3.2.4 挂载md0

mount /dev/md0  /data/md0mnt/df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 50G .0G 47G % /
/dev/sda1 xfs 1014M 219M 796M % /boot
/dev/sda3 xfs 30G 64M 30G % /data
/dev/md0 ext4 .9G 16M .7G % /data/md0mnt # 如果要开机自动挂载md0,修改/etc/fstab 文件

四、练习

1:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录
2:创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录

在CentOS 6上软件实现RAID5

1、完成分区,调整为fd
[root@localhost ~]# fdisk /dev/sdb
显示分区表: p
添加/删除分区:n/d
主分区p,扩展分区e
调整id号: t n,, ,+5G,t,,fd
n,, ,+5G,t,,fd
n,, ,+5G,t,,fd
w
[root@localhost ~]# partx -a /dev/sdb
[root@localhost ~]# partx -a /dev/sdb 、创建RAID:
[root@localhost ~]# mdadm -C /dev/md0 -a yes -l -n /dev/sdb{,,} 、查看状态
[root@localhost ~]# watch -n1 'cat /proc/mdstat'
逐位对齐,异或运算 Personalities : [raid0] [raid6] [raid5] [raid4]
md0 : active raid5 sdb3[] sdb2[] sdb1[]
blocks super 1.2 level , 512k chunk, algorithm [/] [UUU] unused devices: <none> 、查看RAID状态
[root@localhost ~]# mdadm -D /dev/md0
Raid Level : raid5 ## -l 对应的级别
Array Size : (10.01 GiB 10.75 GB) ## 阵列大小
Used Dev Size : (5.01 GiB 5.38 GB) ## 已用空间(校验盘的空间)
Raid Devices : ## 创建时,-n # 指定RAID设备的个数
Total Devices : ## 创建时,-n 和-x指定设备的个数 Layout : left-symmetric ## 默认左对称
Chunk Size : 512K ## 没有指定的默认大小为512K [root@localhost ~]# 、创建ext3文件系统
[root@localhost ~]# mke2fs -j /dev/md0
mke2fs 1.41. (-May-)
文件系统标签=
块大小= (log=)
blocks (5.00%) reserved for the super user
Superblock backups stored on blocks:
, , , , , , ,
[root@localhost ~]# 、查看设备属性信息
[root@localhost ~]# blkid /dev/md0
/dev/md0: UUID="baf5e95b-fbb0-479a-9f69-97e890fdffbe" SEC_TYPE="ext2" TYPE="ext3" 、设定LABEL
[root@localhost ~]# tune2fs -L 'MY222' /dev/md0
[root@localhost ~]# e2label /dev/md0 ‘MY222' 、查看LABEL
[root@localhost ~]# e2label /dev/md0
MY222
[root@localhost ~]# blkid /dev/md0
/dev/md0: UUID="baf5e95b-fbb0-479a-9f69-97e890fdffbe" SEC_TYPE="ext2" TYPE="ext3" LABEL="MY222" 、查看默认挂载属性
[root@localhost ~]# tune2fs -l /dev/md0
[root@localhost ~]# dumpe2fs -h /dev/md0
Default mount options: (none)
Filesystem features: has_journal 文件系统 为日志型文件系统 、挂载文件系统至根文件系统下的某个空目录中,(如果有文件会被暂时隐藏)
)创建目录
[root@localhost ~]# install -d -m /mydata )查看目录是否存在
[root@localhost ~]# [ -d /mydata ]
[root@localhost ~]# echo $? [root@localhost ~]# find / -maxdepth -type d -perm -ls
-maxdepth levels ## 查看指定路径下的由Levels指定级别的目录 )挂载文件系统至目录
)、按设备名挂载
[root@localhost ~]# mount /dev/md0 /mydata
[root@localhost ~]# mount | fgrep /mydata
/dev/md0 on /mydata type ext3 (rw)
## 按设备卸载: [root@localhost ~]# umount /dev/md0 )、按UUID挂载
[root@localhost ~]# blkid /dev/md0
[root@localhost ~]# mount -U "baf5e95b-fbb0-479a-9f69-97e890fdffbe" /mydata
[root@localhost ~]# mount | fgrep /mydata
/dev/md0 on /mydata type ext3 (rw)
## 按目录卸载[root@localhost ~]# umount /mydata )、按LABEL挂载
# mount | fgrep /mydata )改变为降级模式
[root@localhost ~]# install -m /etc/fstab /mydata/not_exist ## 目标文件不存在,复制重命名
[root@localhost ~]# ls -l /mydata/not_exist
-rw-r----- root root 8月 : /mydata/not_exist [root@localhost ~]# mdadm /dev/md0 -f /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0 )查看状态
[root@localhost ~]# mdadm -D /dev/md0
Number Major Minor RaidDevice State
removed
active sync /dev/sdb8
active sync /dev/sdb9 - faulty /dev/sdb7 ## 设备标记为失败 )测试降级模式是否能查看文件内容
[root@localhost ~]# cat /mydata/not_exist #
# /etc/fstab
# Created by anaconda on Thu Aug ::
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(), findfs(), mount() and/or blkid() for more info
#
/dev/mapper/myvg-lv_root / ext4 defaults
UUID=5009dc18-28f5-4b32-8c7c-0ea1328ea224 /boot ext4 defaults )拆除坏的设备
[root@localhost ~]# mdadm /dev/md0 -r /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0 )换新设备,设备id: fd
[root@localhost ~]# mdadm /dev/md0 -a /dev/sdb1 )观察状态
)、恢复模式
[root@localhost ~]# watch -n1 'cat /proc/mdstat'
[root@localhost ~]# mdadm -D /dev/md0
State : clean, degraded, recovering # 降级和恢复模式
Active Devices : ## 活动设备2
Working Devices : ## 工作设备3
Failed Devices :
Spare Devices : Rebuild Status : % complete ## 恢复34%
spare rebuilding /dev/sdb1 ## 根据异或运算,对位重建/dev/sdb1
active sync /dev/sdb2
active sync /dev/sdb3 )、恢复完毕
[root@localhost ~]# mdadm -D /dev/md0
State : clean
Active Devices :
Working Devices :
Failed Devices :
Spare Devices : Layout : left-symmetric
Chunk Size : 512K
Number Major Minor RaidDevice State
active sync /dev/sdb1
active sync /dev/sdb2
active sync /dev/sdb3 )卸载
[root@localhost ~]# umount /mydata )停止设备
[root@localhost ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
 
 

十二、 RAID的更多相关文章

  1. 前端开发中SEO的十二条总结

    一. 合理使用title, description, keywords二. 合理使用h1 - h6, h1标签的权重很高, 注意使用频率三. 列表代码使用ul, 重要文字使用strong标签四. 图片 ...

  2. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  3. 我的MYSQL学习心得(十二) 触发器

    我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数 ...

  4. Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】

    2012年12月12日,[<Web 前端开发人员和设计师必读文章>系列十二]和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HT ...

  5. 第十二章Fundamental Data Types 基本数据类型

    目录: 12.1 数值概论 12.2整数 12.3浮点数 12.4 字符和字符串 12.5布尔变量 12.6枚举类型 12.7具名常量 12.8数组 12.9创建你自己的类型 12.1   数值概论 ...

  6. [分享] IT天空的二十二条军规

    Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...

  7. Bootstrap <基础三十二>模态框(Modal)插件

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用  ...

  8. Bootstrap <基础二十二>超大屏幕(Jumbotron)

    Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...

  9. Bootstrap <基础十二>下拉菜单(Dropdowns)

    Bootstrap 下拉菜单.下拉菜单是可切换的,是以列表格式显示链接的上下文菜单.这可以通过与 下拉菜单(Dropdown) JavaScript 插件 的互动来实现. 如需使用下列菜单,只需要在 ...

  10. AngularJs的UI组件ui-Bootstrap分享(十二)——Rating

    Rating是一个用于打分或排名的控件.看一个最简单的例子: <!DOCTYPE html> <html ng-app="ui.bootstrap.demo" x ...

随机推荐

  1. zookeeper安装和使用 windows环境

    简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提 ...

  2. Swiper 轮播插件 之 动态加载无法滑动

    1.原因:轮播图未完全动态加载完成,即初始化 2.方法一:ajax链式编程 $.ajax({ type: "get", url: serviceURL + "/listB ...

  3. WebSocket协议探究(一)

    一 复习和目标 1 复习 上一节使用wireshark抓包分析了WebSocket流量 包含连接的建立:HTTP协议升级WebSocket协议 使用建立完成的WebSocket协议发送数据 2 目标 ...

  4. Down State Flush Feature

    Down State Flush Feature ========================================================== Citrix NetScaler ...

  5. bootstrap 模态框在iphone微信内点击无效

    <a  data-toggle="modal" data-target="#wwww" href=""  οnclick=" ...

  6. 下拉框选择 <from:select>

  7. 【已解决】项目加载失败,Web应用程序项目XX已配置为使用IIS

    这个解决方法是我在网上参考了很多方法都不行,因为昨天还好好的,今天就不行,那跟项目没多大关系,跟环境有关. 解决方案: 本地iis和vs自带的iis冲突了,默认用了本地的iis,我删掉本地的就可以了. ...

  8. Mysql高可用集群-解决MMM单点故障

    目录 一.理论概述 组件介绍 三.部署 四.测试 五.总结 preface: MMM架构相比于MHA来说各方面都逊色不少,写这篇案例也算是整理下思路吧. 一.理论概述 MMM(Master-Maste ...

  9. libssh

    1.SSH概念 ssh(secure shell),安全外壳协议,由IETF的网络小组所制定.ssh为建立在应用层基础上的安全协议.SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议. ...

  10. 持续集成工具FinalBuilder使用心得

    FinalBuilder 使用这款自动化创建和发布管理工具,软件开发者可以定义和维护一个可靠的以及可重复创建的程序.FinalBuilder包括集成的带有版本的控制系统,文件和目录选项,重复器,源代码 ...