linux下raid学习心得和raid0的实现

常见的硬盘:SATA一般pc机主流的硬盘。SCSI一般服务器应用广泛。IDE比较老,二者均可。

RAID 的意思是廉价磁盘冗余阵。是一些列放在一起,成为一个逻辑卷的磁盘集合。

软件RAID和硬件RAID

软件RAID的性能低,使用主机资源,加载RAID软件,从软件RAID卷中读取数据。无需物理硬件,成本低。

硬件RAID性能高,使用pciexpress 卡物理的提供专有RAID控制器。不使用主机资源。有NVRAM用于缓存的读取和写入。缓存用于RAID重建,即使出现电源故障,也会使用后背电池电源保持缓存,但十分昂贵。

几个概念:

1条带化:将切片数据随机存储到多个磁盘。至少要用两块磁盘。

2镜像:镜像用来自动备份数据。保存相同的内容到其他磁盘。

3热备份:自动更换发生故障的驱动器。

4块:每次读写数据的最小单位。

5校验:用于重新生成丢失的内容。

 

首先,raid级别代表的是种类不同,在不同的场合有不同的应用。

raid0是条带化

linux下raid学习心得和raid0的实现_第1张图片

好处是读写速度快。

坏处是零容错。

 

raid1是镜像化

linux下raid学习心得和raid0的实现_第2张图片

好处是当一个坏掉可以完全回复。

坏处是磁盘利用率变为原来的1/2,写性能也会变慢

 

raid4是奇偶校验

一块磁盘做校验,好处是如果坏了一块磁盘的话可以恢复数据,利用率为n-1/n。坏处是每次存储数据都要访问校验磁盘

 

raid5是分布式奇偶校验

linux下raid学习心得和raid0的实现_第3张图片

校验码分布在不同磁盘快。好处是如果坏了一块磁盘的话可以恢复数据,利用率为n-1/n。

但坏两块就不行了

 

raid6是双分布式奇偶校验

利用率为n-2/n

坏三块内都可以恢复

 

raid0+1或1+0

linux下raid学习心得和raid0的实现_第4张图片

先镜像再条带或先条带再镜像。

1/2利用率,可重建。可用于数据库存储

 

mdadm:将任何块设备做成raid

模式化命令:

         创建模式-c

                   -l:级别

                   -n:设备个数

                   -a:设备文件

                   -c:数据块大小

                   -x #:指定空闲盘个数

         管理模式

                   mdadm/dev/md# --fail /dev/sda#

                   mdadm/dev/md# --remove /dev/sda#

         监控模式-f

         增长模式-g

         装配模式-a

         -d --detail 查看设备文件详情

 

第一步fdisk -l

先查看一下磁盘的分区大小情况

fdisk -l

 

Disk /dev/sda: 21.5 GB, 21474836480 bytes----------------------磁盘21.5G
255 heads, 63 sectors/track, 2610 cylinders-----------------------磁头,扇区,柱面
Units = cylinders of 16065 * 512 = 8225280 bytes---------------柱面大小
Sector size (logical/physical): 512 bytes / 512 bytes-------------扇区512
I/O size (minimum/optimal): 512 bytes / 512 bytes-------------i/o大小
Disk identifier: 0x0006a64d


 

   Device Boot      Start        End      Blocks  Id  System
/dev/sda1   *           1          39      307200  83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              39        2489   19680256   83  Linux
/dev/sda3            2489        2611      983040  82  Linux swap / Solaris


这里已经把2610个柱面全部使用了。因此需要重新划分一下。

 

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


sdb是新加的磁盘,还未使用。

 

第二步:磁盘分区。fdisk /dev/sdb

Command (m for help):


这一行后面输入 n,代表创建分区。如果不知道命令的话输入m会弹出所有命令的列表。

Command action
  e   extended
  p   primary partition (1-4)


输入n后会出现这个选项。选e还是选p。这里需要普及一下。linux的磁盘文件,最多有四个主分区,如果有扩展分区的,扩展分析必须是小于等于第四个的位置,也就是扩展分区之前的设置为主分区。扩展分区的主要作用是用来划分逻辑分区的。逻辑分区的个数不限制,但不能超过15号,只要磁盘够大就可以。

因此,我们可以先创建3个主分区。输入命令p

Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610,default 2610): +400


上面涉及三个操作。第一个是选择主分区号,我们选1.第二个是选择主分区的开始柱面号,默认是1,我们直接回车,使用默认1,作为主分区1的第一个柱面。第三个是选择最后一个柱面号,也就是设置第一主分区的结尾。我们使用+400,意思是在主分区1的大小为400的柱面。

Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (402-2610, default 402):
Using default value 402
Last cylinder, +cylinders or +size{K,M,G}(402-2610, default 2610): +400


继续重复这个过程,直到创建3个主分区。我们可以看到,使用的柱面号是被自动识别的。因此,我们可以可以根据提示,选择默认的第二个主分区的初始柱面号,依然使用+400的操作来设置大小。

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
e
Selected partition 4
First cylinder (1204-2610, default 1204):
Using default value 1204
Last cylinder, +cylinders or +size{K,M,G}(1204-2610, default 2610): +1200


当创建最后一个时候,我们选择e,输入4,然后将扩展分区设置大小为1200个柱面。

接下来是设置逻辑分区。

Command (m for help): n
First cylinder (1204-2404, default 1204):
Using default value 1204
Last cylinder, +cylinders or +size{K,M,G}(1204-2404, default 2404): +200
 
Command (m for help): n
First cylinder (1405-2404, default 1405):
Using default value 1405
Last cylinder, +cylinders or +size{K,M,G}(1405-2404, default 2404): +200
 
Command (m for help): n
First cylinder (1606-2404, default 1606):
Using default value 1606
Last cylinder, +cylinders or +size{K,M,G}(1606-2404, default 2404): +200
 
Command (m for help): n
First cylinder (1807-2404, default 1807):
Using default value 1807
Last cylinder, +cylinders or +size{K,M,G}(1807-2404, default 2404): +200


逻辑分区创建是递增的,不用你选号码,大小还是要设置的,我们依然使用默认的初始柱面,大小设置为200

 

Command (m for help): t
Partition number (1-8): 5
Hex code (type L to list codes): fd
Changed system type of partition 5 to fd(Linux raid autodetect)


t命令是设置划分的分区的类别的,这里我们把5-8都设置为fd,fd就是linux raidautodetect

 

点一下w,别用q,不保存就退出的话,就完了。

 

partprobe /dev/sda       ---让系统识别分区。只要是fdisk -l 有显示就说明成功了。

 

第三步:创建raid

mdadm -C /dev/md0 -a yes -l 0 -n 2/dev/sda{5,8}

-a yes 选项是默认的,不加也是这个参数。自动扩展

-l指定等级,raid0,可以raid1等等

-n 指定设备,raid0使用两个就可以条带了。

后面指定用那些设备,sda5,sda8。当然可以分开写,/dev/sda5  /dev/sda6

 

第四步:查看一下

cat /proc/mdstat

 

Personalities : [raid0]
md0 : active raid0 sdb8[1] sdb5[0]
     3226624 blocks super 1.2 512k chunks


第五步:格式化md0,格式化是为了稍后的挂载。

mke2fs -j /dev/md0

 

mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
202000 inodes, 806656 blocks
40332 blocks (5.00%) reserved for the superuser
First data block=0
Maximum filesystem blocks=826277888
25 block groups
32768 blocks per group, 32768 fragments pergroup
8080 inodes per group
Superblock backups stored on blocks:
         32768,98304, 163840, 229376, 294912
 
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystemaccounting information: done
 
This filesystem will be automaticallychecked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


 

第六步:挂载md0

mount /dev/md0 /mnt

 

第七步:查看md0详情

mdadm --detail /dev/md0

 

/dev/md0:
       Version : 1.2
 Creation Time : Wed Oct 12 00:41:09 2016
    Raid Level : raid0
    Array Size : 3226624 (3.08 GiB 3.30 GB)
  Raid Devices : 2
 Total Devices : 2
   Persistence : Superblock is persistent
 
   Update Time : Wed Oct 12 00:41:09 2016
         State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
 Spare Devices : 0
 
    Chunk Size : 512K
 
          Name : slave-01:0  (local to hostslave-01)
          UUID : 01dc4e54:2db8007e:48a85eed:575bf4ba
        Events : 0
 
   Number   Major   Minor  RaidDevice State
      0       8       21       0      active sync   /dev/sdb5
       1      8       24        1     active sync   /dev/sdb8

你可能感兴趣的:(服务器运维)