当前位置:   article > 正文

ISCSI服务基础:磁盘分区、RAID、LVM、LVM snapshot_iscsi 盘 创建分区

iscsi 盘 创建分区

一、磁盘分区操作逻辑

[root@localhost ~]# fdisk /dev/sdb 
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xee9f9ba4.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
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): +2G

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

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

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[root@localhost ~]# ls /dev/sdb*
/dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb3

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created

[root@localhost ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2 /dev/sdb3
  Volume group "vg01" successfully created

[root@localhost ~]# lvcreate -n lv01 -L 2G vg01
  Logical volume "lv01" created


[root@localhost ~]# mkfs.ext4 /dev/vg01/lv01 

[root@localhost ~]# mkdir /test
[root@localhost ~]# mount /dev/vg01/lv01 /test
[root@localhost ~]# ls /test/
lost+found
[root@localhost test]# dd if=/dev/zero of=testdb bs=100M count=1
记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,0.836092 秒,125 MB/秒
[root@localhost test]# ll 
总用量 102416
drwx------. 2 root root     16384 3月  30 17:16 lost+found
-rw-r--r--. 1 root root 104857600 3月  30 17:19 testdb

[root@localhost test]# lvcreate -s -n lv01bak -L 200M /dev/vg01/lv01 
  Logical volume "lv01bak" created

[root@localhost test]# tar -zcf /root/backlv.tar.gz /dev/vg01/lv01bak 
tar: 从成员名中删除开头的“/”
[root@localhost test]# ls /root/
backlv.tar.gz  

把这个包拖拽出来  待会测试一下去其他环境还好不好用

去其他环境下不可用,因为逻辑卷快照也算是一个逻辑卷,恢复快照的时候必须有逻辑卷快照才行,根据逻辑卷快照恢复逻辑卷,如果到了其他的环境,逻辑卷快照没有了,自然也就不能恢复了



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92

二、RAID

RAID 0

在这里插入图片描述

定义:

RAID 0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。

工作原理:

系统向三个磁盘组成的逻辑硬盘(RAID0 磁盘组)发出的I/O数据请求被转化为3项操作,其中的每一项操作都对应于一块物理硬盘。通过建立RAID 0,原先顺序的数据请求被分散到所有的三块硬盘中同时执行。从理论上讲,三块硬盘的并行操作使同一时间内磁盘读写速度提升了3倍。 但由于总线带宽等多种因素的影响,实际的提升速率肯定会低于理论值,但是,大量数据并行传输与串行传输比较,提速效果显著显然毋庸置疑。

优缺点:

  • 读写性能是所有RAID级别中最高的。

  • RAID 0的缺点是不提供数据冗余,因此一旦用户数据损坏,损坏的数据将无法得到恢复。RAID0运行时只要其中任一块硬盘出现问题就会导致整个数据的故障。一般不建议企业用户单独使用。

总结:

  • 磁盘空间使用率:100%,故成本最低。

  • 读性能:N*单块磁盘的读性能

  • 写性能:N*单块磁盘的写性能

  • 冗余:无,任何一块磁盘损坏都将导致数据不可用。

RAID 1

在这里插入图片描述

定义:

RAID 1通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。

工作原理:

RAID1是将一个两块硬盘所构成RAID磁盘阵列,其容量仅等于一块硬盘的容量,因为另一块只是当作数据“镜像”。RAID1磁盘阵列显然是最可靠的一种阵列,因为它总是保持一份完整的数据备份。它的性能自然没有RAID0磁盘阵列那样好,但其数据读取确实较单一硬盘来的快,因为数据会从两块硬盘中较快的一块中读出。RAID1磁盘阵列的写入速度通常较慢,因为数据得分别写入两块硬盘中并做比较。RAID1磁盘阵列一般支持“热交换”,就是说阵列中硬盘的移除或替换可以在系统运行时进行,无须中断退出系统。RAID1磁盘阵列是十分安全的,不过也是较贵一种RAID磁盘阵列解决方案,因为两块硬盘仅能提供一块硬盘的容量。RAID1磁盘阵列主要用在数据安全性很高,而且要求能够快速恢复被破坏的数据的场合。

在这里,需要注意的是,读只能在一块磁盘上进行,并不会进行并行读取,性能取决于硬盘中较快的一块。写的话通常比单块磁盘要慢,虽然是并行写,即对两块磁盘的写入是同时进行的,但因为要比较两块硬盘中的数据,所以性能比单块磁盘慢。

优缺点:

  • RAID1通过硬盘数据镜像实现数据的冗余,保护数据安全,在两块盘上产生互为备份的数据,当原始数据繁忙时,可直接从镜像备份中读取数据,因此RAID1可以提供读取性能。
  • RAID1是硬盘中单位成本最高的,但提供了很高的数据安全性和可用性,当一个硬盘失效时,系统可以自动切换到镜像硬盘上读/写,并且不需要重组失效的数据。

总结:

  • 磁盘空间使用率:50%,故成本最高。

  • 读性能:只能在一个磁盘上读取,取决于磁盘中较快的那块盘

  • 写性能:两块磁盘都要写入,虽然是并行写入,但因为要比对,故性能单块磁盘慢。

  • 冗余:只要系统中任何一对镜像盘中有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行。

RAID 5

在这里插入图片描述
图中Aβ Bβ Cβ 为奇偶校验信息

定义:

RAID 5是RAID 0和RAID 1的折中方案。RAID 5具有和RAID0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。

工作原理:

  • RAID5把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据,也就是说有相当于一块磁盘容量的空间用于存储奇偶校验信息。因此当RAID5的一个磁盘发生损坏后,不会影响数据的完整性,从而保证了数据安全。当损坏的磁盘被替换后,RAID还会自动利用剩下奇偶校验信息去重建此磁盘上的数据,来保持RAID5的高可靠性。

  • 做raid 5阵列所有磁盘容量必须一样大,当容量不同时,会以最小的容量为准。 最好硬盘转速一样,否则会影响性能,而且可用空间=磁盘数n-1,Raid 5 没有独立的奇偶校验盘,所有校验信息分散放在所有磁盘上, 只占用一个磁盘的容量。

总结:

  • 磁盘空间利用率:(N-1)/N,即只浪费一块磁盘用于奇偶校验。

  • 读性能:(n-1)*单块磁盘的读性能,接近RAID0的读性能。

  • 写性能:比单块磁盘的写性能要差(这点不是很明白,不是可以并行写入么?)

  • 冗余:只允许一块磁盘损坏。

RAID 10

在这里插入图片描述

定义:

RAID10也被称为镜象阵列条带。象RAID0一样,数据跨磁盘抽取;象RAID1一样,每个磁盘都有一个镜象磁盘, 所以RAID 10的另一种会说法是 RAID 0+1。RAID10提供100%的数据冗余,支持更大的卷尺寸,但价格也相对较高。对大多数只要求具有冗余度而不必考虑价格的应用来说,RAID10提供最好的性能。使用RAID10,可以获得更好的可靠性,因为即使两个物理驱动器发生故障(每个阵列中一个),数据仍然可以得到保护。RAID10需要4 + 2*N 个磁盘驱动器(N >=0), 而且只能使用其中一半(或更小, 如果磁盘大小不一)的磁盘用量, 例如 4 个 250G 的硬盘使用RAID10 阵列, 实际容量是 500G。

实现原理:

  • Raid10其实结构非常简单,首先创建2个独立的Raid1,然后将这两个独立的Raid1组成一个Raid0,当往这个逻辑Raid中写数据时,数据被有序的写入两个Raid1中。磁盘1和磁盘2组成一个Raid1,磁盘3和磁盘4又组成另外一个Raid1;这两个Raid1组成了一个新的Raid0。如写在硬盘1上的数据1、3、5、7,写在硬盘2中则为数据1、3、5、7,硬盘中的数据为0、2、4、6,硬盘4中的数据则为0、2、4、6,因此数据在这四个硬盘上组合成Raid10,且具有raid0和raid1两者的特性。
  • 虽然Raid10方案造成了50%的磁盘浪费,但是它提供了200%的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一Raid1中,就能保证数据安全性。假如磁盘中的某一块盘坏了,整个逻辑磁盘仍能正常工作的。
  • 当我们需要恢复RAID10中损坏的磁盘时,只需要更换新的硬盘,按照RAID10的工作原理来进行数据恢复,恢复数据过程中系统仍能正常工作。原先的数据会同步恢复到更换的硬盘中。

总结:

  • 磁盘空间利用率:50%。

  • 读性能:N/2*单块硬盘的读性能

  • 写性能:N/2*单块硬盘的写性能

  • 冗余:只要一对镜像盘中有一块磁盘可以使用就没问题。

RAID操作

创建raid使用mdadm命令,关于此命令,参数如下:

1)进入各个模式的选项 
①创建模式:-C 
②管理模式:-add 或者 –del 
③监控模式:-F 
④增长模式:-G 
⑤装配模式:-A
2)创建模式下的专用选项 
①指定RAID级别:-l
②指定设备个数:-n #
③是否自动创建设备文件:-a {yes|no}
④指定创建RAID设备的数据块(CHUNK)大小(默认64K): -c #unit
⑤指定空闲盘个数:-x #
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

fdisk /dev/sdb 创建数个分区,供下列实验用

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         132     1060258+  83  Linux
/dev/sdb2             133         264     1060290   83  Linux
/dev/sdb3             265         396     1060290   83  Linux
/dev/sdb4             397        2610    17783955    5  Extended
/dev/sdb5             397         528     1060258+  83  Linux
/dev/sdb6             529         660     1060258+  83  Linux
/dev/sdb7             661         792     1060258+  83  Linux
/dev/sdb8             793         924     1060258+  83  Linux
/dev/sdb9             925        1056     1060258+  83  Linux
/dev/sdb10           1057        1188     1060258+  83  Linux
/dev/sdb11           1189        1320     1060258+  83  Linux

查看分区是否已建立
# cat /proc/partitions
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
1. 创建raid 0
[root@localhost ~]# mdadm -C /dev/md0 -l 0 -a yes -n 2 /dev/sdb1 /dev/sdb2
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

查看当前系统上所有处于启动状态的RIAD设备的状态,看raid设备是否创建成功。
[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid0] 
md0 : active raid0 sdb2[1] sdb1[0]
      2119680 blocks super 1.2 512k chunks
      
unused devices: <none>


格式化并挂载使用
   66  mkdir /mn
   67  mount /dev/md0 /mn
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
2. 创建raid 1
# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb3 /dev/sdb5 -x 1 /dev/sdb6
# cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md1 : active raid1 sdb6[2](S) sdb5[1] sdb3[0]
      1059200 blocks super 1.2 [2/2] [UU]
      
md0 : active raid0 sdb2[1] sdb1[0]
      2119680 blocks super 1.2 512k chunks
      
unused devices: <none>

之后可以格式化、然后挂载使用

查看详细信息:
[root@localhost ~]# mdadm -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Sat Mar 30 21:46:56 2019
     Raid Level : raid1
     Array Size : 1059200 (1034.55 MiB 1084.62 MB)
  Used Dev Size : 1059200 (1034.55 MiB 1084.62 MB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sat Mar 30 21:47:02 2019
          State : clean 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

           Name : localhost.localdomain:1  (local to host localhost.localdomain)
           UUID : 5f40231d:f9d89d9e:d3b08a1a:ff1c159a
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       19        0      active sync   /dev/sdb3
       1       8       21        1      active sync   /dev/sdb5

       2       8       22        -      spare   /dev/sdb6

模拟磁盘损坏:
[root@localhost ~]# mdadm /dev/md1 -f /dev/sdb5
mdadm: set /dev/sdb5 faulty in /dev/md1

查看磁盘信息: 可以发现,sdb5损坏之后,sd6顶上去了
[root@localhost ~]# mdadm /dev/md1 -f /dev/sdb5
mdadm: set /dev/sdb5 faulty in /dev/md1
[root@localhost ~]# mdadm -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Sat Mar 30 21:46:56 2019
     Raid Level : raid1
     Array Size : 1059200 (1034.55 MiB 1084.62 MB)
  Used Dev Size : 1059200 (1034.55 MiB 1084.62 MB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sat Mar 30 21:54:08 2019
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0

           Name : localhost.localdomain:1  (local to host localhost.localdomain)
           UUID : 5f40231d:f9d89d9e:d3b08a1a:ff1c159a
         Events : 36

    Number   Major   Minor   RaidDevice State
       0       8       19        0      active sync   /dev/sdb3
       2       8       22        1      active sync   /dev/sdb6

       1       8       21        -      faulty   /dev/sdb5

移除已损坏的磁盘:
[root@localhost ~]# mdadm /dev/md1 -r /dev/sdb5
mdadm: hot removed /dev/sdb5 from /dev/md1

查看磁盘信息: mdadm -D /dev/md1
    Number   Major   Minor   RaidDevice State
       0       8       19        0      active sync   /dev/sdb3
       2       8       22        1      active sync   /dev/sdb6


提供空闲磁盘做备用:
[root@localhost ~]# mdadm /dev/md1 -a /dev/sdb5
mdadm: added /dev/sdb5

查看磁盘信息: mdadm -D /dev/md1
    Number   Major   Minor   RaidDevice State
       0       8       19        0      active sync   /dev/sdb3
       2       8       22        1      active sync   /dev/sdb6

       3       8       21        -      spare   /dev/sdb5

停止raid阵列
[root@localhost ~]# mdadm -S /dev/md1
mdadm: stopped /dev/md1


把阵列重新装配启动:
[root@localhost ~]# mdadm -C /dev/md2 -l 1 -n 2 /dev/sdb7 /dev/sdb8 -x 1 /dev/sdb9
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? 
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
[root@localhost ~]# mdadm -D --scan >> /etc/mdadm.conf
[root@localhost ~]# mdadm -S /dev/md2
mdadm: stopped /dev/md2
[root@localhost ~]# mdadm -A /dev/md2
mdadm: /dev/md2 has been started with 2 drives and 1 spare.
尽量在每次创建RAID的时候更新一下/etc/mdadm.conf配置文件

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
3. 创建raid 5
创建raid5:
# mdadm -C /dev/md3 -l 5 -n 3 /dev/sdb7 /dev/sdb8 /dev/sdb9
# mdadm /dev/md3 -a /dev/sdb10
mdadm: added /dev/sdb10

格式化、挂载使用


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

三、LVM

在这里插入图片描述

1. 关于LVM

LVM——Logical Volume Manager
LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。

2. 相关概念

  • PE(Physical Extend) 物理拓展
  • PV(Physical Volume) 物理卷
  • VG(Volume Group) 卷组
  • LV(Logical Volume) 逻辑卷

3. 特点

LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性

4. 工作原理

(1)物理磁盘被格式化为PV,空间被划分为一个个的PE

(2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内

(3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘

(4)LV现在就直接可以格式化后挂载使用了

(5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

5. 操作命令

1. 查看:

pes、pedisplay                查看pe的大小(pes==pescan)
pvs、pvdisplay                查看物理卷
vgs、vgdisplay、              查看卷组
lvs、lvdisplay、              查看逻辑卷
fdisk -L                     查看磁盘分区


2. 创建:

pvcreate 设备路径               创建物理卷
vgcreate 名字 pv路径            创建卷组
lvcreate -n 名字 -L 大小 vg名   创建逻辑卷
格式化:mkfs.ext4 lv完整路径               格式化逻辑卷(mkfs.文件系统格式或-t 文件系统格式)
挂载:mount  lv完整路径  挂载点          挂载使用(可以使用/etc/fstab或autofs)


3. 逻辑卷删除:

卸载:umount 
删lv:lvremove lv完整路径 
删vg:vgremove vg名 
删PV:pvremove 设备完整路径 


4、逻辑卷扩展:

扩展pv:相当于创建pv 
扩展vg: vgextend vg名 新增pv路径 
扩展lv: lvextend -L +扩展量 lv完整路径
刷新文件系统:resize2fs lv完整路径 
注意:灵活运用,看实际情况,注意顺序 (支持在线操作)

5、逻辑卷的缩小:

1) 首先进行卸载 umount 检查文件系统:e2fsck -f lv完整路径
2) 减少文件系统:resize2fs lv完整路径 减少到的大小
3) 减少lv卷大小:lvreduce -L -减少量的大小 lv的完整路径
4) 挂载使用
减小需谨慎,文件系统的减小后大小一定要和lv卷最终大小相等
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

6. 操作逻辑

创建PV:
[root@localhost ~]# pvcreate /dev/sdb1
 Physical volume "/dev/sdb1" successfully created
[root@localhost ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created

创建VG:
[root@localhost ~]# vgcreate mail_store /dev/sdb1 /dev/sdc1
  Volume group "mail_store" successfully created 

创建LV:
[root@localhost ~]# lvcreate  -L  60G  -n  mail  mail_store
  Logical volume "mail" created

制作文件系统:
[root@localhost ~]# mkfs -t ext4 /dev/mail_store/mail

挂载使用:
[root@localhost ~]# mount /dev/mail_store/mail /mount
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

四、LVM snapshot

1. 原理

LVM中snapshot通过“写时复制”(copy on write) 来实现,即当一个snapshot创建的时候,仅拷贝原始卷里数据的元数据(meta-data);创建的时候,并不会有数据的物理拷贝,因此snapshot的创建几乎是实时的,当原始卷上有写操作执行时,snapshot跟踪原始卷块的改变,这个时候原始卷上将要改变的数据在改变之前被拷贝到snapshot预留的空间里,也就是对原始卷进行修改时,会将原始数据复制到快照预留区域。
逻辑卷快照只记录拍照逻辑卷的这个时刻发生变化的数据,以及从快照创建到释放这段时间里写入的数据,这是快照记录的两种数据。其他的不变的数据,快照只记录数据的存储信息,没有发生数据的物理拷贝。

注意:采取CoW实现方式时,snapshot的大小并不需要和原始卷一样大,其大小仅仅只需要考虑两个方面:从shapshot创建到释放这段时间内,估计块的改变量有多大;数据更新的频率。一旦 snapshot的空间记录满了原始卷块变换的信息,那么这个snapshot立刻被释放,从而无法使用,从而导致这个snapshot无效,所以非常重要的一点,一定要在snapshot的生命周期里,做完你需要做得事情。

元数据:任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元
数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode…)等等。在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。

关于逻辑卷的大小:
逻辑卷快照记录的数据有元数据、拍快照瞬间改变的数据、拍快照瞬间写入的数据,所以一般设置为最大I/O的两倍比较合适,如果最大I/O为100M,则快照大小设置为200M

问题: 脱离了原始的环境,逻辑卷快照还有没有意义?

答: 没有意义。去其他环境下不可用,因为逻辑卷快照也算是一个逻辑卷,恢复快照的时候必须有逻辑卷快照才行,根据逻辑卷快照恢复逻辑卷,如果到了其他的环境,逻辑卷快照没有了,自然也就不能恢复了

2. 操作

1.生成快照
-s:创建快照;-n:快照卷名;-L:大小
lvcreate -s -n snap-lv0 -L 500M /dev/vg0/lv0

2.还原逻辑卷

1) 原来的逻辑卷挂载使用,比如原来挂载在/mount目录
2) 在挂载目录创建文件,比如创建一个200M文件
dd if=/dev/zero of=/media/lv-zhi/temp.txt bs=100M count=1
3) 创建逻辑卷快照
lvcreate -s -L 120M -n zhi-back /dev/zhi/lv-zhi
4) 卸载原来的逻辑卷
 umount /dev/zhi/lv-zhi
 5) 还原逻辑卷 还原后原来的逻辑卷会恢复
 lvconvert --merge /dev/zhi/zhi-back
 6)挂载原来的逻辑卷,发现还是原来的文件,没有200M的文件
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

上边涉及到用dd命令创建测试文件,说明如下:

dd if=/dev/zero of=sun.txt bs=1M count=1

  if代表输入文件。
  of代表输出文件。
  bs代表字节为单位的块大小。
  count代表被复制的块。
其中/dev/zero是一个字符设备,会不断返回0值字节
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

逻辑卷恢复,具体操作如下:

   80  fdisk /dev/sdb
   81  pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
   83  vgcreate vg01 /dev/sdb1 /dev/sdb2 /dev/sdb3
   84  lvcreate -n lv01 -L 2G vg01
   85  mkfs.ext4 /dev/vg01/lv01 
   86  mkdir /test
   87  mount /dev/vg01/lv01 /test/
   88  ls /test/
   89  dd if=/dev/zero of=/test/testdb bs=100M count=2

[root@localhost ~]# lvcreate -s -n lvbak -L 200M /dev/vg01/lv01 
  Logical volume "lvbak" created
[root@localhost ~]# rm -rf /test/testdb 
[root@localhost ~]# umount /test/
[root@localhost ~]# lvconvert --merge /dev/vg01/lvbak 
  Merging of volume lvbak started.
  lv01: Merged: 100.0%
  Merge of snapshot into logical volume lv01 has finished.
  Logical volume "lvbak" successfully removed
[root@localhost ~]# mount /dev/vg01/lv01 /test/
[root@localhost ~]# ls /test/
lost+found  testdb

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

做逻辑卷快照的时候,原来的逻辑卷里包含testdb文件,后来由于错误操作导致文件误删除,用逻辑卷快照进行恢复

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/192186
推荐阅读
相关标签
  

闽ICP备14008679号