Linux学习第五单元-使用逻辑卷管理器管理灵活存储

来源:互联网 发布:2016年十大网络神曲 编辑:程序博客网 时间:2024/06/05 14:16

第五单元-使用逻辑卷管理器管理灵活存储


一、LVM

1.定义
1> Partition physical storage
物理分区或磁盘是 LVM 的第一构建块。这些可以是分区、完整磁盘、 RAID 集或 SAN 磁盘。物理区块是物理卷中存储的小型数据区块 , 用作 LVM 存储的后端
2> Create physical volume (PV)
物理卷是 LVM 所使用的基础 “ 物理 ” 存储。这通常是块设备 ,例如分区或完整磁盘。设备必须初始化为 LVM 物理卷 , 才能与 LVM 结合使用
3> Create volume group (VG)
卷组是存储池 , 由一个或多个物理卷组成
4> Create logical volume (LV)
逻辑区块映射到物理区块 , 构成 LVM 存储的前端。默认情况下 , 每个逻辑区块映射到一个物理区块。启用某些选项将更改此映射。例如 , 镜像会导致每个逻辑区块映射到两个物理区块。逻辑卷是逻辑区块组。逻辑卷可以像硬盘驱动器分区一样使用

2.为什么使用逻辑卷
逻辑卷和逻辑卷管理有助于更加轻松地管理磁盘空间。如果文件系统需要更多的空间 ,可以将其卷组的可用空间分配给逻辑卷 , 并且可以调整文件系统的大小。如果磁盘开始出现错误 , 可以通过卷组将替换磁盘注册为物理卷 , 并且逻辑卷的范围可迁移到新磁盘。

3.使用命令行工具实施LVM存储
1>准备物理卷
 disk 用于创建与 LVM 结合使用的新分区。在要与 LVM 结合使用的分区上 , 始终将“ 类型 ” 设置为 “ 0x8e Linux LVM”

 pvcreate /dev/vdaN 用于初始化分区 ( 或其他物理设备 ), 使其作为物理卷与 LVM 结合使用。直接在物理卷中创建用于存储 LVM 配置数据的表头
示图:建立PV

2>创建卷组
vgcreate vgname /dev/vdaN 将创建名为 vgname 且由物理卷 /dev/vdaN 组成的卷组。您可以在创建时指定其他物理卷 ( 以空格隔开 ), 也可以随后使用 vgextend 添加新物理卷
示图:建立vg0

3>创建和使用新逻辑卷
 lvcreate -n lvname -L 100M vgname 从 vgname 上可用物理区块创建名为 lvname 、容量为 100M 的新逻辑卷
示图:建立lv0

 mkfs.xfs /dev/vgname/lvname 将在新逻辑卷上创建 xfs 文件系统
 mkdir /data 建立所需目录作为挂载点,mount 挂载在/data

示图:格式设备/dev/vg0/lv0使其可以使

示图:挂载设备/dev/vg0/lv0


示图:lv0源指向文件查看
 
 可向 /etc/fstab 文件中添加一下条目:/dev/mapper/vgname-lvname /data xfs defaults 1 2,可进行开机自动挂载
 运行 mount -a 可在 /etc/fstab 中挂载所有文件系统 , 包括您刚刚添加的条目

4.查看LVM状态信息
 pvdisplay /dev/vdaN 将显示有关特定物理卷的信息
示图:查看特定物理卷信息

 vgdisplay vgname 将显示有关特定卷组的信息
示图:查看特点卷组信息

 lvdisplay /dev/vgname/lvname 将显示有关特定逻辑卷的信息
示图:查看特定逻辑卷信息

二、管理LVM


1.拓展
1> 验证已挂载文件系统 /data 的当前大小
df -h /data
2> 验证 “ 可用物理区块 ” 是否够用 vgdisplay vgname
3> 使用部分或全部可用区块扩展逻辑卷 lvextend -L 150M /dev/vgname/lvname
示图:扩展逻辑卷

4> 扩展在 /data 上挂载的关联文件系统xfs_growfs /dev/vgname/lvname验证已挂载文件系统 /data 的新的大小
df -h /data
示图:扩展挂载的关联系统

5> 新加物理卷进行扩展方法
[root@localhost ~]# pvcreate /dev/vdb2  ##添加物理卷/dev/vdb2
  Physical volume "/dev/vdb2" successfully created

示图:



[root@localhost ~]# vgextend vg0 /dev/vdb2  ##将新的物理卷加入到之前建立的vg0中
  Volume group "vg0" successfully extended

示图:


[root@localhost ~]# lvextend -L 300M /dev/vg0/lv0  ##扩展逻辑卷到300M
  Extending logical volume lv0 to 300.00 MiB
  Logical volume lv0 successfully resized

示图:


[root@localhost ~]# xfs_growfs /dev/vg0/lv0  ##扩展挂载的关联系统
meta-data=/dev/mapper/vg0-lv0    isize=256    agcount=7, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=38912, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 38912 to 76800
示图:

2.压缩【必须先压缩逻辑卷里文件内容,再压缩逻辑卷依次倒回】【实验环境为/dev/vdb1和/dev/vdb2全部为大小为1G的LVM型文件系统】
[root@localhost ~]# e2fsck -f /dev/vg0/lv0  ##查看逻辑卷中被占用大小
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg0/lv0: 11/128016 files (0.0% non-contiguous), 26684/512000 blocks

[root@localhost ~]# resize2fs /dev/vg0/lv0 300M  ##将逻辑卷中文件压缩到300M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg0/lv0 to 307200 (1k) blocks.
The filesystem on /dev/vg0/lv0 is now 307200 blocks long.

[root@localhost ~]# lvreduce -L 100 /dev/vg0/lv0  ##将逻辑卷压缩到300M
 WARNING: Reducing active and open logical volume to 300.00 MiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv0? [y/n]: y
  Reducing logical volume lv0 to 300.00 MiB
  Logical volume lv0 successfully resized

[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2  ##若要移除/dev/vdb1,则需要将PV中的vdb1中的占用内容全部移到vdb2上
 /dev/vdb1: Moved: 41.3%
  /dev/vdb1: Moved: 100.0%

[root@localhost ~]# pvremove /dev/vdb1   ##将/dev/vdb1在PV中移除

  Labels on physical volume "/dev/vdb1" successfully wiped
示图:移除vdb1

3.删除
[root@localhost ~]# umount /weixindata  ##卸载
[root@localhost ~]# lvremove /dev/vg0/lv0backup  ##删除逻辑卷lv0的快照
Do you really want to remove active logical volume lv0backup? [y/n]: y
  Logical volume "lv0backup" successfully removed
[root@localhost ~]# lvremove /dev/vg0/lv0  ##删除逻辑卷lv0
Do you really want to remove active logical volume lv0? [y/n]: y
  Logical volume "lv0" successfully removed
[root@localhost ~]# vgremove vg0  ##删除卷组vg0
  Volume group "vg0" successfully removed
[root@localhost ~]# pvremove /dev/vdb2  ##删除PV中vdb2
  Labels on physical volume "/dev/vdb2" successfully wiped
示图:删除

三、设备快照


1.作用
快照逻辑卷是 LVM 存储的另一项灵活功能。LVM 快照是临时保留所更改的逻辑卷的原始数据的逻辑卷。快照提供原始卷的静态视图 , 从而能够以一致状态备份其数据
2.特点
快照卷大小只需足以存储在它存在期间更改的数据即可。如果数据更改量大于快照存储容量 , 则快照将自动变为不可用。 ( 原始卷原封不动 , 仍然需要从卷组
中手动解除挂载和删除不可用的快照。 )
3.建立快照
为了便于观察快照作用,将/dev/vg0/lv0挂载,并在挂载目录中建立文件file

示图:


创建 /dev/vgname/lvname 的名为 lv0backup 、大小
为 50M 的新快照卷
lvcreate -s -n lv0backup -L 50M /dev/vg0/lv0
如果备份软件要求 , 请挂载该快照 , 并使备份程序指向新
挂载点
– mkdir /data
– mount -o ro /dev/vgname/snaplv /snapmount
• 验证快照逻辑卷的状态
– lvs /dev/vgname/snaplv
• 不再使用快照时 , 请解除挂载并删除它
– umount /snapmount
– lvremove /dev/vgname/snaplv

示图:挂载快照,查看之前建立的file文件情况,在快照中删除所有文件,模仿现实中损坏快照


示图:删除被“损坏”的快照,重新建立快照,挂载快照后查看文件file情况

四、企业环境中的设置用户使用指定设备的大小【建立/dev/vdb1大小为1G的分区,格式化激活使可以使用】


未设置使用大小效果:

[root@localhost Desktop]# mount /dev/vdb1 /pub
[root@localhost Desktop]# chmod 777 /pub
[root@localhost Desktop]# su - westos
Last login: Sun Apr 16 04:16:40 EDT 2017 on pts/0
[westos@localhost ~]$ dd if=/dev/zero of=/pub/file bs=1M count=200  ##建立一个大小为200M的数据文件
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 0.343957 s, 610 MB/s  ##建立成功
[westos@localhost ~]$ dd if=/dev/zero of=/pub/file bs=1M count=500  ##建立一个大小为500M的数据文件
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 0.727235 s, 721 MB/s  ##未超过分区范围,建立成功
[westos@localhost ~]$ dd if=/dev/zero of=/pub/file bs=1M count=1500  ##建立一个大小为1500M的数据文件
dd: error writing ‘/pub/file’: No space left on device  ##建立失败,超过分区范围,分区范围为1024M
982+0 records in
981+0 records out  
1029517312 bytes (1.0 GB) copied, 8.29018 s, 124 MB/s  
[westos@localhost ~]$ exit
logout

设置用户指定分区大小:

[root@localhost Desktop]# umount /pub
[root@localhost Desktop]# mount -o usrquota,grpquota /dev/vdb1 /pub  
[root@localhost Desktop]# ls -ld /pub
drwxrwxrwx. 2 root root 17 Apr 22 01:51 /pub
[root@localhost Desktop]# quotaon -ugv /dev/vdb1  ##激活设备,-ugv用户,组,显示激活过程
quotaon: Enforcing group quota already on /dev/vdb1
quotaon: Enforcing user quota already on /dev/vdb1
[root@localhost Desktop]# edquota -u westos  ##设置westos用户在此设备的使用大小
[root@localhost Desktop]# ls -l /pub
total 1005388
-rw-rw-r--. 1 westos westos 1029517312 Apr 22 01:52 file
[root@localhost Desktop]# rm -rf /pub/file
[root@localhost Desktop]# su - westos   ##进入westos用户测试
Last login: Sat Apr 22 01:51:06 EDT 2017 on pts/0
[westos@localhost ~]$ dd if=/dev/zero of=/pub/file bs=1M count=100  ##写入大小为100M的数据,成功
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.104443 s, 1.0 GB/s
[westos@localhost ~]$ dd if=/dev/zero of=/pub/file bs=1M count=200  ####写入大小>为200M的数据,成功
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 0.20946 s, 1.0 GB/s
[westos@localhost ~]$ dd if=/dev/zero of=/pub/file bs=1M count=201  ####写入大小>为201M的数据,失败
dd: error writing ‘/pub/file’: Disk quota exceeded
201+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 0.659626 s, 318 MB/s
[westos@localhost ~]$ ls -l /pub
total 204800
-rw-rw-r--. 1 westos westos 209715200 Apr 22 01:55 file
[westos@localhost ~]$ du /pub/file
204800    /pub/file
[westos@localhost ~]$ exit
logout

五、raid
硬盘加速:
文件/etc/proc/mdstat下的变化
Personalities : [raid1]
md0 : active raid1 vdb3[2](S) vdb2[1] vdb1[0]  ##[s]闲置 [UU]使用,其中留一块为备用
      1048000 blocks super 1.2 [2/2] [UU]

unused devices: <none>
命令行设置:
[root@localhost Desktop]# mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}     ##/dev/md0 -a yes 确定建立新的目录 -l级别:1(读),0(写),5(读写)  -n(几块用来使用) -x(用来闲置,当使用的被损坏时,顶替上去)

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
mdadm: /dev/vdb2 appears to be part of a raid array:
    level=raid0 devices=0 ctime=Wed Dec 31 19:00:00 1969
mdadm: partition table exists on /dev/vdb2 but will be lost or
       meaningless after creating array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
示图:新建md0

[root@localhost ~]# mkfs.xfs /dev/md0  ##格式/dev/md0,以供使用
meta-data=/dev/md0               isize=256    agcount=4, agsize=65500 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=262000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/md0 /mnt  ##挂载/dev/md0到/mnt上
示图:格式,挂载

[root@localhost Desktop]# mdadm -D /dev/md0  ##显示/dev/md0的磁盘情况
/dev/md0:
        Version : 1.2
  Creation Time : Sat Apr 22 02:43:38 2017
     Raid Level : raid1
     Array Size : 1048000 (1023.61 MiB 1073.15 MB)
  Used Dev Size : 1048000 (1023.61 MiB 1073.15 MB)
   Raid Devices : 2  ##使用两块设备
  Total Devices : 3  ##一共三块设备
    Persistence : Superblock is persistent

    Update Time : Sat Apr 22 02:44:31 2017
          State : clean
 Active Devices : 2  ##正在使用的为两块设备
Working Devices : 3  ##一共工作的为三块设备
 Failed Devices : 0  ##没有损坏的设备
  Spare Devices : 1  ##空闲的设备为1个

           Name : localhost:0  (local to host localhost)
           UUID : d4b879ee:76ee1437:a2b56b99:e1fa5078
         Events : 17

    Number   Major   Minor   RaidDevice State
       0     253       17        0      active sync   /dev/vdb1
       1     253       18        1      active sync   /dev/vdb2

       2     253       19        -      spare   /dev/vdb3
[root@localhost Desktop]# mdadm -f /dev/md0 /dev/vdb2  #损坏/dev/vdb2这块设备
mdadm: set /dev/vdb2 faulty in /dev/md0
[root@localhost Desktop]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Apr 22 02:43:38 2017
     Raid Level : raid1
     Array Size : 1048000 (1023.61 MiB 1073.15 MB)
  Used Dev Size : 1048000 (1023.61 MiB 1073.15 MB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sat Apr 22 02:53:55 2017
          State : clean, degraded, recovering
 Active Devices : 1
Working Devices : 2
 Failed Devices : 1  ##一个损坏设备
  Spare Devices : 1

 Rebuild Status : 31% complete

           Name : localhost:0  (local to host localhost)
           UUID : d4b879ee:76ee1437:a2b56b99:e1fa5078
         Events : 24

    Number   Major   Minor   RaidDevice State
       0     253       17        0      active sync   /dev/vdb1
       2     253       19        1      spare rebuilding   /dev/vdb3

       1     253       18        -      faulty   /dev/vdb2  

[root@localhost Desktop]# mdadm -r /dev/md0 /dev/vdb2  ##删除/dev/vdb2
mdadm: hot removed /dev/vdb2 from /dev/md0
[root@localhost Desktop]# mdadm -a /dev/md0 /dev/vdb2  ##添加一个新的硬盘分区
mdadm: added /dev/vdb2
[root@localhost Desktop]# mdadm -D /dev/md0  ##查看
/dev/md0:
        Version : 1.2
  Creation Time : Sat Apr 22 02:43:38 2017
     Raid Level : raid1
     Array Size : 1048000 (1023.61 MiB 1073.15 MB)
  Used Dev Size : 1048000 (1023.61 MiB 1073.15 MB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sat Apr 22 02:54:40 2017
          State : clean
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

           Name : localhost:0  (local to host localhost)
           UUID : d4b879ee:76ee1437:a2b56b99:e1fa5078
         Events : 40

    Number   Major   Minor   RaidDevice State
       0     253       17        0      active sync   /dev/vdb1  ##vdb1和3在使用
       2     253       19        1      active sync   /dev/vdb3

       3     253       18        -      spare   /dev/vdb2   ##vdb2闲置
[root@localhost ~]# umount /mnt  ##在/mnt中卸载/dev/md0

[root@localhost Desktop]# mdadm -S /dev/md0  ##停止
mdadm: stopped /dev/md0
示图:关闭md0

0 0
原创粉丝点击