首页 > 代码库 > Linux系统下磁盘配额、软RAID及LVM的配置与管理

Linux系统下磁盘配额、软RAID及LVM的配置与管理

Linux系统下磁盘配额、软RAID及LVM的

配置与管理

一、设定文件系统配额

1、概述:配额是操作系统的一个可选的功能, 它允许管理员以文件系统为单元, 限制分派给用户或组成员所使用的磁盘空间大小或是使用的总文件数量。这经常被用于那些分时操作的系统上, 对于这些系统而言, 通常希望限制分派到每一个用户或组的资源总量, 从而可以防止某个用户占用所有可用的磁盘空间。

2、配置文件系统配额(基于用户):

(1)配置配额前准备工作:

    1)备份/home目录,创建分区,进行挂载,将/home目录下的数据迁移到创建的分区上,删除/home目录下的数据,将新建分区挂载到/home目录下并开启配额功能。

    2)配置磁盘配额前工作:

[root@dayi123-6 ~]$cd /data/    

[root@dayi123-6 data]$tar -zcf bakhome.tar.gz /home/   #备份home目录

#进行分区挂载

[root@dayi123-6 data]$parted /dev/sdb mklabel msdos 

[root@dayi123-6 data]$parted /dev/sdb mkpart primary 1 10G

[root@dayi123-6 data]$mkfs.ext4 /dev/sdb1

[root@dayi123-6 data]$mount /dev/sdb1 /mnt/home/

#为了防止在数据迁移期间有用户登录,此处建议切换到单用户模式

[root@dayi123-6 data]$cp -av /home/* /mnt/home/  #home目录下的数据拷贝到分区

[root@dayi123-6 data]$du -sh /home/ /mnt/home/   #比较数据的大小是否一致

36K     /home/

36K     /mnt/home/

[root@dayi123-6 data]$rm -rf /home/*      #删除/home目录下的所有数据

#/etc/fstab文件中配置如下,同时开启用户和组的配额功能

[root@dayi123-6 data]$tail -1 /etc/fstab 

UUID=04602fe4-8b8f-487d-a606-3c8898550647 /home ext4 defaults,usrquota,grpquota 0 0

[root@dayi123-6 data]$mount –a          #使/etc/fstab配置生效

[root@dayi123-6 data]$ls /home/

dayi  dayi123  lost+found

[root@dayi123-6 data]$umount /mnt/home/

(2)创建配额数据库(只为用户创建则参数为cu,此处同时为用户和组创建,若未开启组的配额功能,此处会报错)

[root@dayi123-6 data]$quotacheck -cug /home/  

(3)启用数据库

     启用:quotaon

     关闭:quotaoff

[root@dayi123-6 data]$quotaon /home/    #启用数据库

[root@dayi123-6 data]$quotaon -p /home/  #查看数据库状态

group quota on /home (/dev/sdb1) is on

user quota on /home (/dev/sdb1) is on

(4)编辑配额

    1)直接编辑配额:edquota username

[root@dayi123-6 data]$edquota dayi123   #编辑用户的配额

Disk quotas for user dayi123 (uid 500):

  Filesystem   blocks   soft         hard     inodes     soft     hard

  /dev/sdb1     16    200000     250000     4        200      250

各参数说明:

    blocks:当前用户使用了磁盘多少k

    sort(第一个):用户使用多少磁盘时报警

    hard(第一个):用户最多可以使用多少kb磁盘

    inodes:当前用户使用了多少个inode

    sort(第二个):用户使用多少个inode时开始报警

    hard(第二个):用户最多可以使用多少个inode

    2)在shell中直接编辑配额

    setquota usename 150000 200000 200 3000 /目录

[root@dayi123-6 data]$setquota dayi 150000 200000 200 300 /home/

[root@dayi123-6 data]$edquota dayi

Disk quotas for user dayi (uid 501):

  Filesystem    blocks     soft       hard        inodes     soft     hard

  /dev/sdb1     16      150000      200000       4        200      300

3)参照前一个用户配额为后一个用户设置配额

edquota -p user1 user2

[root@dayi123-6 data]$edquota -p dayi123 dayi1  #参照dayi123dayi创建配额

[root@dayi123-6 data]$quota dayi1     #查看用户的配额

Disk quotas for user dayi1 (uid 502):

     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

      /dev/sdb1      16  200000  250000               4     200     250 

[root@dayi123-6 data]$repquota /home/    #查看所有用户的配额

*** Report for user quotas on device /dev/sdb1

Block grace time: 7days; Inode grace time: 7days

                        Block limits                File limits

User            used    soft    hard  grace    used  soft  hard  grace

----------------------------------------------------------------------

root      --      20       0       0              2     0     0      

dayi123   --      16  200000  250000              4   200   250      

dayi      --      16  150000  200000              4   200   300      

dayi1     --      16  200000  250000              4   200   250    

3、配置文件系统配额(基于用户组):

基于用户组的文件系统配额只对用户属组起作用,对用户的附加组没有作用,一个分区对用户组的配额容量为该组的所有用户的总容量。

二、基于Linux系统实现软RAID

1、软raid的实现

(1)支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10

(2)RAID设备在Linux系统下的名称: /dev/md0、/dev/md1、/dev/md2、/dev/md3等

(3)创建raid工具:mdadm

(4)命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>

(5)选项:

    1)创建模式:-C

       -n #: 使用#个块设备来创建此RAID

       -l #:指明要创建的RAID的级别

       -a {yes|no}:自动创建目标RAID设备的设备文件

       -c CHUNK_SIZE: 指明块大小

       -x #: 指明空闲盘的个数

    2)管理模式:

       -f: 标记指定磁盘为损坏

       -a: 添加磁盘

       -r: 移除磁盘

    3)-D:显示raid的详细信息;

       mdadm -D /dev/md#

    4)观察md的状态:

       cat /proc/mdstat

(6)软RAID的测试

    1)模拟磁盘故障:mdadm /dev/md0 –f /dev/sda1

    2)移除磁盘:mdadm /dev/md0 –r /dev/sda1

    3)添加磁盘:mdadm /dev/md0 –a /dev/sda1

(7)软RAID管理

    1)生成配置文件:mdadm –D –s >> /etc/mdadm.conf

    2)停止设备:mdadm –S /dev/md0

    3)激活设备:mdadm –A –s /dev/md0 激活

    4)强制启动:mdadm –R /dev/md0

    5)删除raid信息:mdadm --zero-superblock /dev/sdb1

2、用软RAID实现RAID0

(1)准备工作:准备两块硬盘(或大小相同的两块分区,如果是分区需要将磁盘标记为raid分区)

(2)创建

#创建raid0,创建时指定raid级别及磁盘个数

[root@dayi123-6 ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb /dev/sdc

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

[root@dayi123-6 ~]# lsblk         #查看创建后的设备

……

sdb      8:16   0   20G  0 disk 

└─md0    9:0    0   40G  0 raid0

sdc      8:32   0   20G  0 disk 

└─md0    9:0    0   40G  0 raid0

(3)对创建的RAID格式化:

[root@dayi123-6 ~]# mkfs.ext4 /dev/md0    #格式化创建的RAID

mke2fs 1.41.12 (17-May-2010)

……

[root@dayi123-6 ~]# blkid /dev/md0        #查看格式化后设备信息

/dev/md0: UUID="29768d99-002d-4b85-a3d1-1d3eb85a8420" TYPE="ext4"

(4)挂载RAID:

[root@dayi123-6 ~]# mkdir /mnt/md0     #常见挂载点

[root@dayi123-6 ~]# tail -1 /etc/fstab     #配置/etc/fstab

UUID=29768d99-002d-4b85-a3d1-1d3eb85a8420 /mnt/md0 swap defaults 0 0

[root@dayi123-6 ~]# mount –a           #使挂载生效

[root@dayi123-6 ~]# df -h /mnt/md0/     #查看挂载

Filesystem      Size  Used Avail Use% Mounted on

/dev/md0         40G   48M   38G   1% /mnt/md0

(5) 删除RAID:

    1)解除挂载

    2)停止RAID:mdadm -S /dev/md0

    3)清除磁盘RAID信息: mdadm -S /dev/md0

[root@dayi123-6 ~]# mdadm -S /dev/md0 #停止raid0,停止前先要解除挂载,删除配置

mdadm: stopped /dev/md0

[root@dayi123-6 ~]# mdadm --zero-superblock /dev/sdb   #删除磁盘raid信息

[root@dayi123-6 ~]# mdadm --zero-superblock /dev/sdc

[root@dayi123-6 ~]# lsblk   #设备中已经没有raid信息了

…….

sdb      8:16   0   20G  0 disk

sdc      8:32   0   20G  0 disk

[root@dayi123-6 ~]# blkid  #已经没有raid磁盘的及raid的信息

/dev/sda1: UUID="406c0f3c-c6ed-42d9-aac1-92fe4794b747" TYPE="ext4"

/dev/sda2: UUID="214985a7-c464-4ee5-bac6-48346f988c73" TYPE="swap"

/dev/sda3: UUID="579994ee-475f-4b91-9bfa-4a4b0a5705f9" TYPE="ex

3、软RAID实现RAID5

(1)准备工作:准备好大小相同的三块磁盘(或分区,分区需要将分区ID标识为fd)和一块热备盘(大小规格也要相同)。

(2)创建raid5

[root@dayi123 ~]$mdadm -C /dev/md5 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc /dev/sdd

 /dev/sde   #创建raid5指定raid5名称为/dev/md5,指定三块盘和一块热备盘

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md5 started.

[root@dayi123 ~]$mdadm -D /dev/md5   #查看创建的raid5的信息

/dev/md5:

…….

    Number   Major   Minor   RaidDevice State

       0       8       17        0      active sync   /dev/sdb1

       1       8       32        1      active sync   /dev/sdc

       4       8       48        2      active sync   /dev/sdd

 

       3       8       64        -      spare   /dev/sde

(3)对创建的raid5格式化

[root@dayi123 ~]$mkfs.ext4 /dev/md5

(4)挂载raid5

[root@dayi123 ~]$mkdir /mnt/raid5  #创建挂载点

[root@dayi123 ~]$mount /dev/md5 /mnt/raid5/ #挂载raid5,同时需要写入/etc/fstab

[root@dayi123 ~]$df -h            #查看挂载信息

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        18G  9.9G  6.7G  60% /

tmpfs           491M     0  491M   0% /dev/shm

/dev/sda1       190M   66M  115M  37% /boot

/dev/sr0        3.7G  3.7G     0 100% /mnt/cdrom

/dev/md5        3.9G  8.0M  3.7G   1% /mnt/raid5

(5)生成配置文件

[root@dayi123 ~]$mdadm -Ds >/etc/mdadm.conf

[root@dayi123 ~]$cat /etc/mdadm.conf

ARRAY /dev/md5 metadata=http://www.mamicode.com/1.2 spares=1 /

name=dayi123:5UUID=037252d2:9c644dfa:7644c7b8:f6cc5c90

(6)禁用和启用RAID

[root@dayi123 ~]$umount /dev/md5     #取消挂载

[root@dayi123 ~]$mdadm -S /dev/md5   #停用raid5

mdadm: stopped /dev/md5

[root@dayi123 ~]$mdadm -D /dev/md5   #停用后查看状态信息

/dev/md5:

        Version :

     Raid Level : raid0

  Total Devices : 0

 

          State : inactive

 

    Number   Major   Minor   RaidDevice

[root@dayi123 ~]$mdadm -A /dev/md5  #启用RAID5

mdadm: /dev/md5 has been started with 3 drives and 1 spare.

[root@dayi123 ~]$mdadm -D /dev/md5  #启用后查看状态信息

/dev/md5:

……

    Number   Major   Minor   RaidDevice State

       0       8       17        0      active sync   /dev/sdb1

       1       8       32        1      active sync   /dev/sdc

       4       8       48        2      active sync   /dev/sdd

       3       8       64        -      spare   /dev/sde

(7)模拟损坏、移处损坏盘

[root@dayi123 ~]$mdadm /dev/md5 -f /dev/sdd    #模拟/dev/sdd盘损坏

mdadm: set /dev/sdd faulty in /dev/md5

[root@dayi123 ~]$mdadm -D /dev/md5  #查看信息时,热备盘会顶替上去

/dev/md5:

    Number   Major   Minor   RaidDevice State

       0       8       17        0      active sync   /dev/sdb1

       1       8       32        1      active sync   /dev/sdc

       3       8       64        2      active sync   /dev/sde

 

       4       8       48        -      faulty   /dev/sdd

[root@dayi123 ~]$mdadm /dev/md5 -r /dev/sdd  #移处损坏盘

mdadm: hot removed /dev/sdd from /dev/md5

[root@dayi123 ~]$mdadm -D /dev/md5  #在此查看raid信息时,看不到损坏盘

/dev/md5:

   Number   Major   Minor   RaidDevice State

       0       8       17        0      active sync   /dev/sdb1

       1       8       32        1      active sync   /dev/sdc

       3       8       64        2      active sync   /dev/sde

(8)移除损坏盘后,添加新盘到raid成员

[root@dayi123 ~]$mdadm /dev/md5 -a /dev/sdf    #添加新盘到raid组中

mdadm: added /dev/sdf              

[root@dayi123 ~]$mdadm -D /dev/md5   #新添加的盘会变为热备盘

/dev/md5:

    Number   Major   Minor   RaidDevice State

       0       8       17        0      active sync   /dev/sdb1

       1       8       32        1      active sync   /dev/sdc

       3       8       64        2      active sync   /dev/sde

 

       4       8       80        -      spare   /dev/sdf

(9)增加raid组磁盘数量

[root@dayi123 ~]$mdadm -G /dev/md5 -n 5 -a /dev/sdg    #raid组添加新磁盘

mdadm: added /dev/sdg

[root@dayi123 ~]$lsblk          #查看新添加的磁盘

……

sdf       8:80   0    2G  0 disk 

└─md5     9:5    0    4G  0 raid5

sdg       8:96   0    2G  0 disk 

└─md5     9:5    0    4G  0 raid5

[root@dayi123 ~]$df –h        #查看raid容量,但容量没有增加

……

/dev/md5        3.9G  8.0M  3.7G   1% /mnt/raid5

[root@dayi123 ~]$resize2fs /dev/md5   #同步文件系统

[root@dayi123 ~]$df –h              #文件系统同步后,raid设备容量才会增加

……

/dev/md5        5.9G  8.0M  5.6G   1% /mnt/raid5

三、逻辑卷管理

1、LVM概述:

(1)lvm概述:LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

(2)lvm的工作原理:是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。

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

(4)基本的逻辑卷管理概念:

    1)PV(Physical Volume)物理卷:物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。

    2)VG(Volumne Group)卷组:卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。

    3)LV(Logical Volume)逻辑卷:逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。对创建的逻辑卷格式化后可以挂载使用

技术分享

Lvm关系图

2、Linux系统下创建与管理LVM

(1)准备工作:准备分区(分区ID为修改为8e)或者硬盘,也可以是raid,对磁盘及分区大小没有限制及要求

(2)创建pv(将物理存储设备转为为物理卷)

[root@dayi123-6 ~]# pvcreate /dev/sdb /dev/sdc   #使用物理存储设备创建物理卷

  Physical volume "/dev/sdb" successfully created

  Physical volume "/dev/sdc" successfully created

[root@dayi123-6 ~]# pvs

  PV         VG   Fmt  Attr PSize  PFree

  /dev/sdb        lvm2 ---- 20.00g 20.00g

  /dev/sdc        lvm2 ---- 20.00g 20.00g           

[root@dayi123-6 ~]# pvdisplay

  "/dev/sdb" is a new physical volume of "20.00 GiB"

  --- NEW Physical volume ---

  PV Name               /dev/sdb

  VG Name              

  PV Size               20.00 GiB

……

(3)创建卷组(将多个物理卷合为一个逻辑卷组)

#创建卷组,指定pe大小为16m(默认pe大小为4M

[root@dayi123-6 ~]# vgcreate -s 16 vg0 /dev/sdb /dev/sdc

  Volume group "vg0" successfully created

[root@dayi123-6 ~]# vgs

  VG   #PV #LV #SN Attr   VSize  VFree

  vg0    2   0   0 wz--n- 39.97g 39.97g

[root@dayi123-6 ~]# vgdisplay #查看卷组的详细信息

  --- Volume group ---

  VG Name               vg0

  System ID            

  Format                lvm2

  Metadata Areas        2

  Metadata Sequence No  1

  VG Access             read/write

  VG Status             resizable

  …….

  VG Size               39.97 GiB

  PE Size               16.00 MiB

  Total PE              2558

  Alloc PE / Size       0 / 0  

  Free  PE / Size       2558 / 39.97 GiB

  VG UUID               W2aY1g-3vpG-eDbD-HSyc-rlsW-PfKe-dULzaT

(4)创建逻辑卷(相当于对磁盘分区,卷组可以看成是一块磁盘)

#在卷组vg0上创建逻辑卷,卷名为lv0,大小为30G

[root@dayi123-6 ~]# lvcreate -n lv0 -L 30G vg0

  Logical volume "lv0" created.

[root@dayi123-6 ~]# lvs

  LV   VG   Attr   LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  lv0  vg0  -wi-a----- 30.00g                                                    

[root@dayi123-6 ~]# lvdisplay    #查看逻辑卷的详细信息

  --- Logical volume ---

  LV Path                /dev/vg0/lv0

  LV Name                lv0

  VG Name                vg0

  LV UUID                Y24sWa-EDEU-ceej-6ESf-6MzZ-y0l6-8CaVfg

  LV Write Access        read/write

  LV Creation host, time dayi123-6.9, 2017-04-19 11:41:56 +0800

  LV Size                30.00 GiB

……

(5)使用创建的逻辑卷(对创建的逻辑卷格式化,挂载)

[root@dayi123-6 ~]# mkfs.ext4 /dev/vg0/lv0    #格式化新建的逻辑卷

[root@dayi123-6 ~]# mkdir /mnt/lv0          #创建挂载点

[root@dayi123-6 ~]# mount /dev/vg0/lv0 /mnt/lv0/  #挂载逻辑卷

[root@dayi123-6 ~]# df -h /dev/vg0/lv0

Filesystem           Size  Used Avail Use% Mounted on

/dev/mapper/vg0-lv0   30G   44M   28G   1% /mnt/lv0

(6)扩展逻辑卷(当逻辑卷不够用时,可用卷组空余的空间对逻辑卷扩展)

    1)扩展逻辑卷方法一:

[root@dayi123-6 mnt]# vgdisplay     #查看卷组剩余可用空间

  --- Volume group ---

 ……

  Alloc PE / Size       1920 / 30.00 GiB

  Free  PE / Size       638 / 9.97 GiB

  VG UUID               W2aY1g-3vpG-eDbD-HSyc-rlsW-PfKe-dULzaT

[root@dayi123-6 mnt]# lvextend -L 32G /dev/vg0/lv0  #扩展逻辑卷

[root@dayi123-6 mnt]# resize2fs /dev/vg0/lv0       #扩展完成后同步文件系统

[root@dayi123-6 mnt]# df -h /dev/vg0/lv0

Filesystem           Size  Used Avail Use% Mounted on

/dev/mapper/vg0-lv0   32G  1.1G   29G   4% /mnt/lv0

    2)扩展逻辑卷方法二(一步到位,扩展完成后不需要同步文件系统):

[root@dayi123-6 mnt]# lvextend -r -L 35G /dev/vg0/lv0  #扩展逻辑卷

[root@dayi123-6 mnt]# df -h /dev/vg0/lv0   #扩展后不需要同步文件系统

Filesystem           Size  Used Avail Use% Mounted on

/dev/mapper/vg0-lv0   35G  1.1G   32G   4% /mnt/lv0

3)使用卷组剩余空间扩展逻辑卷:

[root@dayi123-6 mnt]# lvextend -l +100%FREE /dev/vg0/lv0  #使用卷组剩余空间扩展

#同步文件系统,centos7同步方法为xfs_growfs /dev/vg0/lv0

[root@dayi123-6 mnt]# resize2fs /dev/vg0/lv0

[root@dayi123-6 mnt]# df -h /dev/vg0/lv0

Filesystem           Size  Used Avail Use% Mounted on

/dev/mapper/vg0-lv0   40G  1.1G   37G   3% /mnt/lv0

(7)更换磁盘,迁移PE到新的磁盘上

[root@dayi123-6 mnt]# vgextend vg0 /dev/sd  #设置新的磁盘为物理卷

sda   sda1  sda2  sda3  sdb   sdc   sdd  

[root@dayi123-6 mnt]# vgextend vg0 /dev/sdd  #将物理卷扩展到卷组

  Volume group "vg0" successfully extended

[root@dayi123-6 mnt]# vgs                 #查看扩展后的卷组

  VG   #PV #LV #SN Attr   VSize   VFree 

  vg0    3   1   0 wz--n- 239.95g 199.98g

[root@dayi123-6 mnt]# vgdisplay            #查卷组的详细信息

[root@dayi123-6 mnt]# pvdisplay            #查看物理卷信息信息

[root@dayi123-6 mnt]# pvmove /dev/sdc     #对卷组成员/dev/sdc的数据迁移

  /dev/sdc: Moved: 0.0%

  /dev/sdc: Moved: 26.4%

  /dev/sdc: Moved: 58.5%

  /dev/sdc: Moved: 88.3%

  /dev/sdc: Moved: 100.0%

[root@dayi123-6 mnt]# vgreduce vg0 /dev/sdc  #标记/dev/sdc为无效的卷组成员

  Removed "/dev/sdc" from volume group "vg0"

[root@dayi123-6 mnt]# pvdisplay            #在此查看物理卷信息

[root@dayi123-6 mnt]# pvremove /dev/sdc    #移除物理卷

  Labels on physical volume "/dev/sdc" successfully wiped

(8)缩减逻辑卷(缩减之前需要备份逻辑卷上的数据,以防在缩减的过程中数据丢失,同时需要卸载挂载的逻辑卷)

[root@dayi123-6 mnt]# umount /dev/vg0/lv0   #取消挂载

[root@dayi123-6 mnt]# e2fsck -f /dev/vg0/lv0   #缩减前需要进行检测

[root@dayi123-6 mnt]# resize2fs /dev/vg0/lv0 20G  #重设分区大小

[root@dayi123-6 mnt]# lvreduce -L 20G /dev/vg0/lv0  #对逻辑卷缩减

[root@dayi123-6 mnt]# mount /dev/vg0/lv0 /mnt/lv0/ #缩减后挂载

[root@dayi123-6 mnt]# df -h /dev/vg0/lv0       #查看缩减后的容量

Filesystem           Size  Used Avail Use% Mounted on

/dev/mapper/vg0-lv0   20G  1.1G   18G   6% /mnt/lv0

3、快照创建与管理
(1)原理:当一个快照(snapshot)创建的时候,仅拷贝原始卷里数据的元数据(meta-data)。创建的时候,并不会有数据的物理拷贝,因此快照的创建几乎是实时的,当原始卷上有修改时候,原始卷上会将要改变的数据在改变之前拷贝到快照预留的空间里,再对元数据进行改变。

技术分享

创建快照原理

(2)快照卷组大小:估计快照创建到释放这段时间内,块的改变量有大小及数据更新的频率

(3)创建快照:(创建快照前要查看卷组的剩余空间大小,是否满足快照所需空间的需求,创建的快照名称要有实际意义)

#为逻辑卷newlv0创建一个名称为snaplv的快照,大小为2G,属性设置为只读

[root@dayi123-6 ~]# lvcreate -s -n snaplv -p r -L 2G /dev/newvg0/newlv0

  Logical volume "snaplv" created.

[root@dayi123-6 ~]# lvs

  LV     VG   Attr    LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  newlv0 newvg0 owi-aos--- 20.00g                                                   

  snaplv newvg0 sri-a-s---  2.00g      newlv0 0.00 

(4)恢复快照(快照为一次性的,使用完之后就不存在了,在恢复快照之前需要将挂载的逻辑卷取消挂载)

[root@dayi123-6 ~]# cd /mnt/lv0/   

[root@dayi123-6 lv0]# rm -rf cs      #删除逻辑卷newlv0挂载目录下数据

[root@dayi123-6 lv0]# cd ..

[root@dayi123-6 mnt]# umount /dev/newvg0/newlv0  #取消逻辑卷lv0挂载

[root@dayi123-6 mnt]# lvconvert --merge /dev/newvg0/snaplv  #恢复快照

  Merging of volume snaplv started.

  newlv0: Merged: 100.0%

  Merge of snapshot into logical volume newlv0 has finished.

  Logical volume "snaplv" successfully removed

[root@dayi123-6 mnt]# mount /dev/newvg0/newlv0 /mnt/lv0/  #挂载

[root@dayi123-6 mnt]# ll /mnt/lv0/cs   #查看删除的数据是否恢复

-rw-r--r--. 1 root root 1073741824 Apr 19 12:00 /mnt/lv0/cs

[root@dayi123-6 mnt]# lvs    #查看逻辑卷,逻辑卷(snaplv)已经不存在

  LV     VG     Attr  LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  newlv0 newvg0 -wi-ao---- 20.00g

4、逻辑卷的删除

(1)删除前准备工作(删除逻辑卷前需要先备份好逻辑卷中的数据。删除前先取消挂载,再删除逻辑卷,再删除卷组,最后删物理卷)

(2)删除逻辑卷

    1)删除逻辑卷

[root@dayi123-6 mnt]# umount /dev/newvg0/newlv0    #取消挂载

[root@dayi123-6 mnt]# lvremove /dev/newvg0/newlv0   #删除逻辑卷

Do you really want to remove active logical volume newlv0? [y/n]: y

  Logical volume "newlv0" successfully removed

[root@dayi123-6 mnt]# lvs   #删除逻辑卷后查看逻辑信息

    2)删除卷组

[root@dayi123-6 mnt]# vgremove newvg0    #删除卷组

  Volume group "newvg0" successfully removed

[root@dayi123-6 mnt]# vgs     #删除后确认卷组是否被删除

    3)删除物理卷

[root@dayi123-6 mnt]# pvremove /dev/sdb /dev/sdd   #删除物理卷

  Labels on physical volume "/dev/sdb" successfully wiped

  Labels on physical volume "/dev/sdd" successfully wiped

[root@dayi123-6 mnt]# pvs  #删除物理卷后确认物理卷是否被删除

5、案例:迁移卷组到新的系统中

1)在源计算机上的操作

    1)迁移前的准备工作:

[root@dayi123-6 mnt]# pvs     #查看卷粗使用的磁盘

  PV         VG   Fmt  Attr PSize   PFree 

  /dev/sdb   vg0  lvm2 a--u  19.98g      0

  /dev/sdd   vg0  lvm2 a--u 199.98g 199.97g

[root@dayi123-6 mnt]# umount /mnt/lv0  #取消lv0的挂载

[root@dayi123-6 mnt]# vgrename vg0 newvg0  #为了方便管理,对卷组重新命名

  Volume group "vg0" successfully renamed to "newvg0"

[root@dayi123-6 mnt]# lvrename /dev/newvg0/lv0 newlv0

  Renamed "lv0" to "newlv0" in volume group "newvg0" #对逻辑卷重新命名

    2)设置卷组

[root@dayi123-6 ~]# vgchange -a n newvg0   将卷组设置为非活动状态

  Volume group "newvg0" is exported

[root@dayi123-6 ~]# vgexport newvg0   #删除/etc/lvm.conf中关于这个newvg0的信息

  Volume group newvg0 is exported

  Cannot process volume group newvg0

[root@dayi123-6 ~]# pvscan           #扫描系统中的物理卷列表

    3)拔出与卷组相关的硬盘

2)在目标计算机上的操作

    1)在目标计算机上插入硬盘

    2)配置lvm

[root@dayi123 ~]$vgimport newvg0    #设置lvm的配置文件

  Volume group "newvg0" successfully imported

[root@dayi123 ~]$vgchange -a y newvg0    #激活卷组

  1 logical volume(s) in volume group "newvg0" now active

    3)挂载使用逻辑卷

[root@dayi123 ~]$mkdir /mnt/newlv0     #创建挂载点

[root@dayi123 ~]$mount /dev/newvg0/newlv0 /mnt/newlv0/  #挂载逻辑卷

[root@dayi123 ~]$df -h /dev/newvg0/newlv0 #查看逻辑卷的使用情况

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/newvg0-newlv0

                       20G  1.1G   18G   6% /mnt/newlv0

[root@dayi123 ~]$ll /mnt/newlv0/     #查看逻辑卷中的文件为原来的文件

total 1048596

-rw-r--r--. 1 root root 1073741824 Apr 19 12:00 cs

drwx------. 2 root root      16384 Apr 19 11:59 lost+found

本文出自 “dayi123” 博客,请务必保留此出处http://dayi123.blog.51cto.com/12064061/1919815

Linux系统下磁盘配额、软RAID及LVM的配置与管理