磁盘管理

磁盘管理

一、磁盘简介

1、接口类型

IDE ——> SATA I/II/III 个人pc机
SCSI ——> SAS 服务上
PCIE
FC

2、命名方式

/dev/sda2 s=硬件接口类型(sata/scsi),d=disk(硬盘),a=第1块硬盘(b,第二块),2=第几个分区
/dev/hd h=IDE硬盘 /dev/hdd3
/dev/vd v=虚拟硬盘 /dev/vdf7

  • HP服务器

/dev/cciss/c0d0
/dev/cciss/c0d0p1 c0第一个控制器, d0第一块磁盘, p1分区1
/dev/cciss/c0d0p2 c0第一个控制器, d0第一块磁盘, p2分区2

3、磁盘分区方式

MBR <2TB fdisk 4个主分区或者3个主分区+1个扩展分区(N个逻辑分区)

MBR(Master Boot Record)的缩写,由三部分组成,即:

MBR=512字节=446个字节【Bootloader(主引导程序)】+64个字节【DPT分区表(Disk Partition Table)】+2个字节【硬盘有效标志(校验位)】

MBR引导扇区

  • 主引导程序:引导操作系统的主程序

  • 分区表:分区表定义与保存了硬盘的分区信息,操作系统通过读取分区表内的信息,就能够获得该硬盘的分区信息。

  • 每个分区表需要占用16个字节大小,所以MBR分区方案最多只能分4个主分区和3个主分区+1个扩展分区(n个逻辑分区)

  • 16个字节的分区信息保存有分区活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、起始扇区位置(4个字节)、分区总扇区数目(4个字节)等内容。

  • MBR中的DPT分区表中保存的分区信息都是主分区与扩展分区的分区信息,扩展分区不能直接使用,需要在扩展分区内划分一个或多个逻辑分区后才能使用。

  • 逻辑分区的分区信息保存在扩展分区内而不是保存在MBR分区表内,这样,就可以突破MBR分区表只能保存4个分区的限制。

    GPT >2TB gdisk(parted) 128个主分区

注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!

二、基本分区管理

1、fdisk分区

  • 分区命令介绍
[root@server01 ~]# fdisk /dev/sdb
Command(m for help): m                          输出帮助信息
Commandaction
   a  toggle a bootable flag                    设置启动分区
   b  edit bsd disklabel                        编辑分区标签
   c  toggle the dos compatibility flag
   d  delete a partition                        删除一个分区
   l  list known partition types                列出分区类型
   m  print this menu                           帮助
   n  add a new partition                       建立一个新的分区
   o  create a new empty DOS partition table      创建一个新的空白DOS分区表
   p  print the partition table                   打印分区表
   q  quit without saving changes                 退出不保存设置
   s   createa new empty Sun disklabel           创建一个新的空的SUN标示
   t   changea partition's system id              改变分区的类型
   u   changedisplay/entry units                  改变显示的单位
   v   verifythe partition table                  检查验证分区表
   w  write table to disk and exit                保存分区表
  • 创建新分区
[root@server01 ~]# fdisk /dev/sdb          
Command (m for help): n             //创建新分区
Command action
   e   extended                     //扩展分区
   p   primary partition (1-4)       //主分区
p  
Partition number (1-4): 1            //创建第一个主分区
First cylinder (1-1958, default 1):   //分区开始位置(直接回车,默认从之前位置开始)
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1958, default 1958): +2G
                                   //第一个主分区分2G空间
Command (m for help): p              //显示设置
Command (m for help):w               //保存设置
  • 查看分区
[root@server01 ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 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
//解释
硬盘容量 = 柱面数 × 盘面数(磁头数) × 扇区数 × 扇区大小(一般为512字节)
Disk /dev/sda: 26.8 GB, 26843545600 bytes   磁盘空间
 255 heads, 63 sectors/track, 3263 cylinders   255磁头    63个扇区 每 磁道   3263个圆柱体
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 大小(最小/最大) 都是512字节。
Disk identifier: 0x00030124   设备识别码

[root@server01 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  4.2G  0 rom  /mnt/dvd
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
└─sda2   8:2    0 19.5G  0 part 
  ├─vg_server-lv_root (dm-0)
       253:0    0 17.6G  0 lvm  /
  └─vg_server-lv_swap (dm-1)
       253:1    0    2G  0 lvm  [SWAP]
sdb      8:16   0   15G  0 disk 
  • 格式化分区
# mkfs.ext4 /dev/sdb1
或者
# mkfs -t ext4 /dev/sdb1
//显示内容
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131648 inodes, 526120 blocks
26306 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=541065216
17 block groups
32768 blocks per group, 32768 fragments per group
7744 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 filesystem accounting information: done

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


# blkid /dev/sdb1 查看分区的详细信息(UUID和文件系统类型)
/dev/sdb1: UUID="92e3f43b-d28b-42ee-a243-25e457e8946d" TYPE="ext4" 
  • 挂载使用
[root@server01 ~]# mkdir -p /sdb/01                    //创建文件夹
[root@server01 ~]# mount /dev/sdb1 /sdb/01          //挂载
[root@server01 ~]# lsblk                           //查看
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  4.2G  0 rom  /mnt/dvd
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
└─sda2   8:2    0 19.5G  0 part 
  ├─vg_server-lv_root (dm-0)
       253:0    0 17.6G  0 lvm  /
  └─vg_server-lv_swap (dm-1)
       253:1    0    2G  0 lvm  [SWAP]
sdb      8:16   0   15G  0 disk 
└─sdb1   8:17   0    2G  0 part /sdb/01

或者以UUID方式挂载
[root@server01 ~]# mount UUID="92e3f43b-d28b-42ee-a243-25e457e8946d" /sdb/01

手动挂载:
mount   [options]     需要挂载的设备     挂载点
特点:系统重启后需要重新挂载;手动卸载后需要手动挂载

-o:挂在选项

挂载设备:真实设备、设备UUID,设备的卷标

[root@server ~]# e2label /dev/sdb1 DISK1

说明:e2label只能够对ext2~ext4的文件系统设置卷标
  • 开机自动挂载
[root@server01 ~]# blkid
/dev/sdb1: UUID="92e3f43b-d28b-42ee-a243-25e457e8946d" TYPE="ext4" 
/dev/sda1: UUID="48deeacb-ce34-4e0a-bbfe-1b59a4dfa53a" TYPE="ext4" 
/dev/sda2: UUID="IiKSj8-55Ww-qZp1-Wkvv-WReQ-2HNz-jiKhPt" TYPE="LVM2_member" 
/dev/mapper/vg_server-lv_root: UUID="0e417dd4-aed2-47dc-ac5e-ae0b63c610ca" TYPE="ext4" 
/dev/mapper/vg_server-lv_swap: UUID="ffb49d2b-5075-4a0f-9f94-f4e3bdda4413" TYPE="swap" 

1、开机自动挂载文件/etc/fstab
# vim /etc/fstab        //开机自动挂载
UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" /mnt/disk1   auto    defaults    0 0     UUID="4d26172c-7aff-4388-baa5-c6756c014d52" /mnt/disk2    ext4    ro    0 0
# mount -a
特点:系统重启后自动挂载;手动卸载后重启会自动挂载或者使用mount -a自动挂载

/etc/fstab文件:
格式:
要挂载的资源路径    挂载点 文件系统类型  挂载选项    dump备份支持  文件系统检测
UUID=289370eb-9459-42a8-8cee-7006507f1477   /      ext4    defaults        1 1
1段:挂载的设备(磁盘设备的文件名或设备的卷标或者是设备的UUID)
2段:挂载点(建议用一个空目录)
3段:文件系统类型(ext3、ext4、vfat、ntfs、swap等等)
4段:文件系统选项
async/sync  异步/同步:
auto/noauto     自动/非自动:
rw/ro   读写/只读:
exec/noexec     可被执行/不可被执行:
remount     重新挂在一个已经挂载的文件系统,常用于修改挂载参数
user/nouser     允许/不允许其他用户挂载:
suid/nosuid     具有/不具有suid权限:该文件系统是否允许SUID的存在。
usrquota    这个是在启动文件系统的时候,让其支持磁盘配额,这个是针对用户的。
grpquota    支持用户组的磁盘配额。
....
defaults 同时具有rw, dev, exec, acl, async,nouser等参数。

5段:是否支持dump备份。//dump是一个用来备份的命令,0代表不要做dump备份,1代表要每天进行dump的动作,2也代表其他不定日期的dump备份。通常这个数值不是0就是1。数字越小优先级越高。
6段:是否用 fsck 检验扇区。//开机的过程中,系统默认会用fsck检验文件系统是否完整。0是不要检验,1表示最先检验(一般只有根目录会设定为1),2也是要检验,只是1是最先,2是其次才进行检验。

说明:
要挂载的资源路径可以是文件系统的UUID,设备路径,文件系统的标签 ,光盘镜像文件(iso),亦或是来自网络的共享资源等

2、 /etc/rc.local文件(推荐)
/etc/rc.local  操作系统启动后读取的最后一个文件
将挂载命令写到此文件里,就可以在开机后自动执行命令。
注:
    这个文件是开机启动后的最后一个文件,如果出错,不影响系统,但是/etc/fstab文件中如果有错误会造成系统无法启动,所以推荐使用rc.local文件。

3、自动挂载软件Automount
特点:挂载是由访问产生;卸载是由超时产生;依赖于后台的autofs服务
思路:
        所有的监控都是由一个程序完成  autofs
        服务启动后才会监控挂载的设备
        修改配置文件来指定需要监控的设备
安装:
        [root@review1 ~]# rpm -ql autofs
        package autofs is not installed
        [root@review1 ~]# yum install -y autofs
软件文件列表:
        /etc/rc.d/init.d/autofs
        /etc/auto.master
        /etc/auto.misc
        /usr/share/man/man5/auto.master.5.gz
配置文件:
        vim /etc/auto.master                    //主配置文件
        /u01    /etc/auto.test -t 120            //定义一级挂载点、子配置文件和退出后挂载时间(/-表示直接挂载在根目录下)
配置子配置文件:
        //必须以auto开头
        test1   -fstype=ext4,ro  :/dev/sdb1      //挂载子目录,挂载类型,方式 挂载的设备
        //文件夹自动创建,不必手动创建   :表示本地,前面可以加IP地址
启动和测试:
        [root@server01 etc]# service autofs restart
        Loading autofs4:                                 [  OK  ]
        Starting automount:                              [  OK  ]
        //测试
        [root@server01 etc]# lsblk              //刚开始检查,设备未挂载
        NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
        sr0     11:0    1  4.2G  0 rom  /mnt/dvd
        sda      8:0    0   20G  0 disk 
        ├─sda1   8:1    0  500M  0 part /boot
        └─sda2   8:2    0 19.5G  0 part 
          ├─vg_server-lv_root (dm-0)
               253:0    0 17.6G  0 lvm  /
          └─vg_server-lv_swap (dm-1)
               253:1    0    2G  0 lvm  [SWAP]
        sdb      8:16   0   15G  0 disk 
        └─sdb1   8:17   0    2G  0 part 
        [root@server01 etc]# cd /u01            //文件夹可直接进入
        [root@server01 u01]# cd test1
        [root@server01 test1]# ls
        lost+found
        [root@server01 test1]# lsblk            //再监测发现已经挂载
        NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
        sr0     11:0    1  4.2G  0 rom  /mnt/dvd
        sda      8:0    0   20G  0 disk 
        ├─sda1   8:1    0  500M  0 part /boot
        └─sda2   8:2    0 19.5G  0 part 
          ├─vg_server-lv_root (dm-0)
               253:0    0 17.6G  0 lvm  /
          └─vg_server-lv_swap (dm-1)
               253:1    0    2G  0 lvm  [SWAP]
        sdb      8:16   0   15G  0 disk 
        └─sdb1   8:17   0    2G  0 part /u01/test1
        [root@server01 ~]# cd                  //退出目录后,120s后再监测,发现已卸载
        [root@server01 ~]# lsblk
        NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
        sr0     11:0    1  4.2G  0 rom  /mnt/dvd
        sda      8:0    0   20G  0 disk 
        ├─sda1   8:1    0  500M  0 part /boot
        └─sda2   8:2    0 19.5G  0 part 
          ├─vg_server-lv_root (dm-0)
               253:0    0 17.6G  0 lvm  /
          └─vg_server-lv_swap (dm-1)
               253:1    0    2G  0 lvm  [SWAP]
        sdb      8:16   0   15G  0 disk 
        └─sdb1   8:17   0    2G  0 part 

2、扩容swap空间

  • 增加硬盘或者分区来扩容swap空间
[root@server01 ~]# fdisk /dev/sdb          //创建一个分区sdb2

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): 2
First cylinder (263-1958, default 263): 
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-1958, default 1958): +2G
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@server01 ~]# mkswap /dev/sdb2                        //格式化为swap格式
Setting up swapspace version 1, size = 2104508 KiB
no label, UUID=cf54708f-e1c1-48eb-b49c-e1677a5b2eed
[root@server01 ~]# blkid /dev/sdb2                     //查看分区格式
/dev/sdb2: UUID="cf54708f-e1c1-48eb-b49c-e1677a5b2eed" TYPE="swap" 
[root@server01 ~]# swapon /dev/sdb2                        //激活swap分区
[root@server01 ~]# swapon -s
Filename                Type          Size  Used    Priority
/dev/dm-1                               partition     2031608   0   -1
/dev/sdb2                               partition     2104504   0   -2
  • 使用dd命令来模拟大文件扩容swap
[root@server01 ~]# dd if=/dev/sr0  of=/mnt/dvd2            //可以用来备份
[root@server01 ~]# dd if=/dev/zero of=/dev/sda1 bs=1M count=100  //不要执行,会损坏sda1
if=源文件
of=目标文件
bs=复制数据的大小
count=复制的个数
注意:
1. 一般可以使用dd命令做块设备文件的备份
2. /dev/zero 特殊设备,一般用来模拟一个大文件,源源不断的二进制的bit流

//扩展swap
1. 使用dd命令模拟大文件
# dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024
2. 格式化大文件
[root@server01 ~]# mkswap /tmp/swapfile 

3.激活大文件
[root@server01 ~]# swapon -p 1 /tmp/swapfile

4. 查看
[root@server01 ~]# swapon -s
Filename                Type        Size    Used    Priority
/tmp/swapfile                           file        1048568 0   1
  • GTP分区方式
====gdisk====
GPT  128个主分区
1.创建分区
# gdisk -l /dev/sdc
# gdisk /dev/sdc
# partprobe /dev/sdc
# ll /dev/sdc*

2.创建文件系统(格式化)redhat7默认使用xfs
# mkfs.xfs /dev/sdb1

3.挂载(手动、开机自动、autofs自动)
# mkdir /mnt/disk1
# mkdir /mnt/disk2
# mount -t xfs -o ro /dev/sdb1 /mnt/disk1       //手动挂载
# umount /mnt/disk1

三、逻辑卷管理

1、逻辑卷介绍

逻辑卷:
逻辑卷(LVM):它是Linux环境下对磁盘分区进行管理的一种机制,它是建立在物理存储设备之上的一个抽象层,优点在于灵活管理。
特点:
1、动态在线态扩容
2、离线裁剪
3、数据条带化
4、数据镜像

2、逻辑卷基本概念

  • 物理卷(Physical Volume,PV)

物理卷是底层真正提供容量,存放数据的设备,它可以是整个硬盘、硬盘上的分区等。

  • 卷组(Volume Group, VG)

卷组建立在物理卷之上,它由一个或多个物理卷组成。即把物理卷整合起来提供容量分配。
一个LVM系统中可以只有一个卷组,也可以包含多个卷组。

  • 逻辑卷(Logical Volume, LV)

逻辑卷建立在卷组之上,它是从卷组中“切出”的一块空间。它是最终用户使用的逻辑设备。逻辑卷创建之后,其大小可以伸缩。

  • 物理区域 PE(physical extent)

每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是能被LVM寻址的最小单元。PE的大小可指定,默认为4 MB。 PE的大小一旦确定将不能改变,同一个卷组中的所有物理卷的PE的大小是一致的。
4MB=4096kb=4096kb/4kb=1024个block

  • 逻辑区域 LE(logical extent)

逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

真实的物理设备 逻辑上 物理卷(pv)——>卷组(vg)——>逻辑卷(lv)

3、逻辑卷LVM应用

3.1 创建一个逻辑卷
思路:
    1. 物理的设备
    2. 将物理设备做成物理卷
    3. 创建卷组并将物理卷加入其中
    4. 创建逻辑卷
    5. 格式化逻辑卷
    6. 挂载使用
步骤:
1、创建物理卷
[root@server01 ~]# pvcreate /dev/sdb1                  //创建物理卷
  Physical volume "/dev/sdb1" successfully created       
[root@server01 ~]# pvs /dev/sdb1                       //简单查看
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb1       lvm2 a--  2.01g 2.01g
[root@server01 ~]# pvdisplay  /dev/sdb1                    //详细查看
  "/dev/sdb1" is a new physical volume of "2.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               2.01 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               KkAOLF-Euhd-GmMQ-GXQO-9ECs-Az5c-0G88T1

2、创建卷组
[root@server01 ~]# vgcreate vg01 /dev/sdb1             //创建卷组,并将sdb1加入其中
  Volume group "vg01" successfully created
[root@server01 ~]# vgs vg01                               //查看卷组vg01
  VG   #PV #LV #SN Attr   VSize VFree
  vg01   1   0   0 wz--n- 2.00g 2.00g
[root@server01 ~]# vgdisplay vg01                     //查看详细信息
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               2.00 GiB
  PE Size               4.00 MiB
  Total PE              513
  Alloc PE / Size       0 / 0   
  Free  PE / Size       513 / 2.00 GiB
  VG UUID               2U0A0x-nuDq-65Hy-0bST-B1hC-PHuA-OvnzOS
3、创建逻辑卷
[root@server01 ~]# lvcreate -n lv01 -L 1.5G vg01
  Logical volume "lv01" created
说明:
-n:指定逻辑卷名字
-L:指定逻辑卷大小
//创建完逻辑卷后,可到以下目录查看
[root@server01 ~]# ls -l /dev/vg01/lv01 
lrwxrwxrwx. 1 root root 7 Jul  5 20:51 /dev/vg01/lv01 -> ../dm-2
[root@server01 ~]# ls -l /dev/mapper/vg01-lv01 
lrwxrwxrwx. 1 root root 7 Jul  5 20:51 /dev/mapper/vg01-lv01 -> ../dm-2
//查看
[root@server01 ~]# lvs /dev/vg01/lv01              
  LV   VG   Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  lv01 vg01 -wi-a----- 1.50g   
[root@server01 ~]# lvdisplay /dev/vg01/lv01 
  --- Logical volume ---
  LV Path                /dev/vg01/lv01
  LV Name                lv01
  VG Name                vg01
  LV UUID                EnRUBe-YrlQ-Uv6C-WVlp-DfaW-ITdv-eXfMK5
  LV Write Access        read/write
  LV Creation host, time server01.yu.net, 2018-07-05 20:51:10 +0800
  LV Status              available
  # open                 0
  LV Size                1.50 GiB
  Current LE             384
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2
4、格式化逻辑卷
[root@server01 ~]# mkfs.ext4 /dev/mapper/vg01-lv01 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
98304 inodes, 393216 blocks
19660 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=402653184
12 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912

Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@server01 ~]# blkid  /dev/mapper/vg01-lv01 
/dev/mapper/vg01-lv01: UUID="11b5bc9c-8048-40a4-b7a9-f8512650af55" TYPE="ext4" 
5、挂载使用
[root@server01 ~]# mkdir /data
[root@server01 ~]# mount /dev/vg01/lv01 /data/
[root@server01 ~]# cd /data/
[root@server01 data]# ls                //查看
lost+found
[root@server01 data]# lsblk
NAME                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0                   11:0    1  4.2G  0 rom  /mnt/dvd
sda                    8:0    0   20G  0 disk 
├─sda1                 8:1    0  500M  0 part /boot
└─sda2                 8:2    0 19.5G  0 part 
  ├─vg_server-lv_root (dm-0)
                     253:0    0 17.6G  0 lvm  /
  └─vg_server-lv_swap (dm-1)
                     253:1    0    2G  0 lvm  [SWAP]
sdb                    8:16   0   15G  0 disk 
├─sdb1                 8:17   0    2G  0 part 
│ └─vg01-lv01 (dm-2) 253:2    0  1.5G  0 lvm  /data
└─sdb2                 8:18   0    2G  0 part [SWAP]
3.2 逻辑卷动态扩容
扩容/data目录到3G
思路:
    1. 查看/data目录所对应的逻辑卷是哪一个  /dev/vg01/lv01
    2. 查看当前逻辑卷所在的卷组vg01剩余空间是否足够
    3. 如果vg01空间不够,得先扩容卷组,再扩容逻辑卷
    4. 如果vg01空间足够,直接扩容逻辑卷
扩容卷组:
[root@server01 ~]# pvcreate /dev/sdb5                  //添加物理卷
  Physical volume "/dev/sdb5" successfully created
[root@server01 ~]# pvcreate /dev/sdb6
  Physical volume "/dev/sdb6" successfully created
[root@server01 ~]# vgextend vg01 /dev/sdb5             //扩容卷组
  Volume group "vg01" successfully extended
[root@server01 ~]# vgextend vg01 /dev/sdb6
  Volume group "vg01" successfully extended
[root@server01 ~]# vgs vg01                              //查看卷组,扩容成功
  VG   #PV #LV #SN Attr   VSize  VFree
  vg01   3   1   0 wz--n- 10.98g 9.48g
[root@server01 ~]# lvextend -L +4G /dev/vg01/lv01      //扩容逻辑卷
  Extending logical volume lv01 to 5.50 GiB
  Logical volume lv01 successfully resized

[root@server01 ~]# resize2fs /dev/vg01/lv01            //同步文件系统
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg01/lv01 to 1441792 (4k) blocks.
The filesystem on /dev/vg01/lv01 is now 1441792 blocks long.

[root@server01 ~]# df -h                           //验证查看      
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/vg_server-lv_root   18G  1.9G   15G  12% /
tmpfs                          491M     0  491M   0% /dev/shm
/dev/sda1                      485M   33M  427M   8% /boot
/dev/sr0                       4.2G  4.2G     0 100% /mnt/dvd
/dev/mapper/vg01-lv01          5.5G   35M  5.2G   1% /data

注:
    [root@server01 ~]# lvcreate -n lv02 -l 30%free vg01
    [root@server01 ~]# lvcreate -n lv03 -l 100 vg01
    说明:
    -l 指定lv的大小,30%free 代表卷组剩余空间的百分比
    -l 100 100代表pe的个数,一个4M
3.3 离线裁剪逻辑卷
[root@server01 ~]# lsblk                           //检查是否挂载,挂载需卸载
NAME                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0                   11:0    1  4.2G  0 rom  /mnt/dvd
sda                    8:0    0   20G  0 disk 
├─sda1                 8:1    0  500M  0 part /boot
└─sda2                 8:2    0 19.5G  0 part 
  ├─vg_server-lv_root (dm-0)
                     253:0    0 17.6G  0 lvm  /
  └─vg_server-lv_swap (dm-1)
                     253:1    0    2G  0 lvm  [SWAP]
sdb                    8:16   0   15G  0 disk 
├─sdb1                 8:17   0    3G  0 part 
│ └─vg01-lv01 (dm-2) 253:2    0  5.5G  0 lvm  
├─sdb2                 8:18   0    3G  0 part 
├─sdb3                 8:19   0    1K  0 part 
├─sdb5                 8:21   0    3G  0 part 
└─sdb6                 8:22   0    6G  0 part 
  └─vg01-lv01 (dm-2) 253:2    0  5.5G  0 lvm  
[root@server01 ~]# e2fsck -f /dev/vg01/lv01         //检验文件系统
e2fsck 1.41.12 (17-May-2010)
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/vg01/lv01: 11/360448 files (9.1% non-contiguous), 31590/1441792 blocks
[root@server01 ~]# resize2fs  /dev/vg01/lv01 2G         //裁剪文件系统到2G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg01/lv01 to 524288 (4k) blocks.
The filesystem on /dev/vg01/lv01 is now 524288 blocks long.

[root@server01 ~]# lvreduce /dev/vg01/lv01 -L 2G    //裁剪逻辑卷到2G
  WARNING: Reducing active logical volume to 2.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv01? [y/n]: y
  Reducing logical volume lv01 to 2.00 GiB
  Logical volume lv01 successfully resized
[root@server01 ~]# mount /dev/vg01/lv01 /data/     //挂载使用
[root@server01 ~]# lsblk                         //检查
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  4.2G  0 rom  /mnt/dvd
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
└─sda2   8:2    0 19.5G  0 part 
  ├─vg_server-lv_root (dm-0)
       253:0    0 17.6G  0 lvm  /
  └─vg_server-lv_swap (dm-1)
       253:1    0    2G  0 lvm  [SWAP]
sdb      8:16   0   15G  0 disk 
├─sdb1   8:17   0    3G  0 part 
│ └─vg01-lv01 (dm-2)
       253:2    0    2G  0 lvm  /data
├─sdb2   8:18   0    3G  0 part 
├─sdb3   8:19   0    1K  0 part 
├─sdb5   8:21   0    3G  0 part 
└─sdb6   8:22   0    6G  0 part 
3.4 逻辑卷条带化
条带化:
        把保存到逻辑卷的数据分成n等分,分别写到不同的物理卷,可以提高数据的读写效率;
        如果任何一个涉及到的物理卷出现故障,数据都会无法恢复。     
//首先加到逻辑卷vg01里
[root@server01 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  4.2G  0 rom  /mnt/dvd
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
└─sda2   8:2    0 19.5G  0 part 
  ├─vg_server-lv_root (dm-0)
       253:0    0 17.6G  0 lvm  /
  └─vg_server-lv_swap (dm-1)
       253:1    0    2G  0 lvm  [SWAP]
sdb      8:16   0   15G  0 disk 
├─sdb1   8:17   0    3G  0 part 
├─sdb2   8:18   0    1K  0 part 
├─sdb5   8:21   0    3G  0 part 
├─sdb6   8:22   0    3G  0 part 
├─sdb7   8:23   0    2G  0 part 
├─sdb8   8:24   0    2G  0 part 
└─sdb9   8:25   0    2G  0 part 
[root@server01 ~]# pvcreate /dev/sdb[56]
  Physical volume "/dev/sdb5" successfully created
  Physical volume "/dev/sdb6" successfully created
[root@server01 ~]# pvs /dev/sdb[56]
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb5       lvm2 a--  3.01g 3.01g
  /dev/sdb6       lvm2 a--  3.01g 3.01g
[root@server01 ~]# vgcreate vg01 /dev/sdb[56]
  Volume group "vg01" successfully created
[root@server01 ~]# pvs /dev/sdb[56]
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb5  vg01 lvm2 a--  3.01g 3.01g
  /dev/sdb6  vg01 lvm2 a--  3.01g 3.01g
[root@server01 ~]# vgs vg01
  VG   #PV #LV #SN Attr   VSize VFree
  vg01   2   0   0 wz--n- 6.02g 6.02g

//创建实现条带化
[root@server01 ~]#lvcreate -n lv01 -L 3G -i 2 vg01 /dev/sdb[56]     //2指条带化数量
  Using default stripesize 64.00 KiB
  Logical volume "lv01" created

[root@server01 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  4.2G  0 rom  /mnt/dvd
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
└─sda2   8:2    0 19.5G  0 part 
  ├─vg_server-lv_root (dm-0)
       253:0    0 17.6G  0 lvm  /
  └─vg_server-lv_swap (dm-1)
       253:1    0    2G  0 lvm  [SWAP]
sdb      8:16   0   15G  0 disk 
├─sdb1   8:17   0    3G  0 part 
├─sdb2   8:18   0    1K  0 part 
├─sdb5   8:21   0    3G  0 part             //观察此处sdb5和sdb6的状况
│ └─vg01-lv01 (dm-2)
       253:2    0    3G  0 lvm  
├─sdb6   8:22   0    3G  0 part 
│ └─vg01-lv01 (dm-2)
       253:2    0    3G  0 lvm  
├─sdb7   8:23   0    2G  0 part 
├─sdb8   8:24   0    2G  0 part 
└─sdb9   8:25   0    2G  0 part 

[root@server01 ~]# mkfs.ext4 /dev/vg01/lv01
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=16 blocks, Stripe width=32 blocks
196608 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8192 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 filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@server01 ~]# mount /dev/vg01/lv01 /data          //挂载使用

//测试
向条带化的分区中导入一个大文件(1M*1024)
[root@server01 ~]# dd if=/dev/zero of=/data/test  bs=1M count=1024
dd: writing `/data/test': No space left on device
294+0 records in
293+0 records out
3082006528 bytes (3.1 GB) copied, 4.09068 s, 753 MB/s

//在导入大文件的同时,查看导入速度,可以发现sdb5与sdb6速度基本一致,证明条带化成功
[root@server01 ~]# iostat -d -m /dev/sdb[56] 2
Linux 2.6.32-431.el6.x86_64 (server01.yu.net)   07/08/2018  _x86_64_    (1 CPU)

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sdb5              0.40         0.00         0.04          1         56
sdb6              0.30         0.00         0.04          0         56

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sdb5              0.50         0.00         0.00          0          0
sdb6              0.50         0.00         0.00          0          0

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sdb5            962.37         0.01       262.53          0        509
sdb6            960.31         0.00       262.53          0        509

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sdb5           1699.50         0.01       465.87          0        931
sdb6           1697.50         0.00       465.84          0        931

注意:

​ 将分区条带化之前,要先将其加入逻辑卷!

3.5 逻辑卷实现镜像
//检查物理卷
[root@server01 data]# pvs /dev/sdb[789]
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb7       lvm2 a--  2.01g 2.01g
  /dev/sdb8       lvm2 a--  2.01g 2.01g
  /dev/sdb9       lvm2 a--  1.95g 1.95g

//创建逻辑卷vg02
[root@server01 data]# vgcreate vg02 /dev/sdb[78]
  Volume group "vg02" successfully created
[root@server01 data]# vgs vg02
  VG   #PV #LV #SN Attr   VSize VFree
  vg02   2   0   0 wz--n- 4.01g 4.01g

//创建逻辑卷镜像  -m :给出镜像个数
[root@server01 data]# lvcreate -n lv02 -L 2G -m 1 vg02 /dev/sdb[78] 
  Logical volume "lv02" created
[root@server01 data]# lvs
  LV      VG        Attr       LSize  Pool Origin Data%  Move Log       Cpy%Sync Convert
  lv01    vg01      -wi-ao----  3.00g                                                   
  lv02    vg02      mwi-a-m---  2.00g                         lv02_mlog    53.71        
  lv_root vg_server -wi-ao---- 17.57g                                                   
  lv_swap vg_server -wi-ao----  1.94g                                                   
[root@server01 data]# lvs
  LV      VG        Attr       LSize  Pool Origin Data%  Move Log       Cpy%Sync Convert
  lv01    vg01      -wi-ao----  3.00g                                                   
  lv02    vg02      mwi-a-m---  2.00g                         lv02_mlog   100.00        
  lv_root vg_server -wi-ao---- 17.57g                                                   
  lv_swap vg_server -wi-ao----  1.94g     

  //Cpy%Sync 19.92该值是100%说明复制ok

 //查看镜像
[root@server01 data]# pvs /dev/sdb[78]
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb7  vg02 lvm2 a--  2.00g 4.00m
  /dev/sdb8  vg02 lvm2 a--  2.00g    0 

//格式化分区
[root@server01 data]# mkfs -t ext4  /dev/vg02/lv02
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 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 filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

//挂载使用
[root@server01 data]# mkdir /data2 
[root@server01 data]# mount /dev/vg02/lv02 /data2

//测试,查看分区状况
[root@server01 data2]# lsblk

......

├─sdb7                         8:23   0    2G  0 part 
│ └─vg02-lv02_mimage_0 (dm-4)
                             253:4    0    2G  0 lvm  
│   └─vg02-lv02 (dm-6)       253:6    0    2G  0 lvm  /data2
├─sdb8                         8:24   0    2G  0 part 
│ ├─vg02-lv02_mlog (dm-3)    253:3    0    4M  0 lvm  
│ │ └─vg02-lv02 (dm-6)       253:6    0    2G  0 lvm  /data2
│ └─vg02-lv02_mimage_1 (dm-5)
                             253:5    0    2G  0 lvm  
│   └─vg02-lv02 (dm-6)       253:6    0    2G  0 lvm  /data2
└─sdb9                         8:25   0    2G  0 part 
  • 测试验证

思路:损坏一个磁盘,测试数据是否在第二个物理卷中

//在镜像分区中创建文件
[root@server01 data2]# touch /data2/file{1..5}  
[root@server01 data2]# ls
file1  file2  file3  file4  file5  lost+found

//生成一个大文件,模拟损坏sdb7
[root@server01 data2]# dd if=/dev/zero of=/dev/sdb7 bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.102654 s, 1.0 GB/s

//检查sdb7,发现sdb7已经损坏
[root@server01 data2]# pvs /dev/sdb[78]
  No physical volume label read from /dev/sdb7
  Failed to read physical volume "/dev/sdb7"
  Couldn't find device with uuid RoLKpM-ANds-VPqq-8wEv-deMK-NhjJ-bvb7Uv.
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb8  vg02 lvm2 a--  2.00g    0 

 //移除已经损坏的sdb7
[root@server01 data2]# vgreduce vg02 --removemissing --force        
  Couldn't find device with uuid RoLKpM-ANds-VPqq-8wEv-deMK-NhjJ-bvb7Uv.
  Wrote out consistent volume group vg02

 //检查挂载的文件分区/data2,发现文件仍然存在,表示镜像制作成功

[root@server01 data2]# cd /data2
[root@server01 data2]# ls
file1  file2  file3  file4  file5  lost+found
3.6 逻辑卷实现快照
//将逻辑卷扩容
[root@server01 ~]# vgextend vg02 /dev/sdb9
  Volume group "vg02" successfully extended

//为lv03创建快照  -L指明快照大小,-n指明快照名字
[root@server01 ~]# lvcreate -L 128M -s -n lv2-snap /dev/vg02/lv02 
  Logical volume "lv2-snap" created

//查看快照信息
[root@server01 ~]# lvscan
  ACTIVE   Original '/dev/vg02/lv02' [2.00 GiB] inherit
  ACTIVE   Snapshot '/dev/vg02/lv2-snap' [128.00 MiB] inherit

[root@server01 ~]# dmsetup ls --tree
vg_server-lv_swap (253:1)
 └─ (8:2)
vg_server-lv_root (253:0)
 └─ (8:2)
vg02-lv2--snap (253:4)
 ├─vg02-lv2--snap-cow (253:6)
 │  └─ (8:25)
 └─vg02-lv02-real (253:5)
    └─ (8:24)
vg01-lv01 (253:3)
 ├─ (8:22)
 └─ (8:21)
vg02-lv02 (253:2)
 └─vg02-lv02-real (253:5)
    └─ (8:24)

//挂载查看
[root@server01 ~]# mount -o ro /dev/vg02/lv2-snap /mnt/lv3-snap/
[root@server01 ~]# lsblk
NAME                          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0                            11:0    1  4.2G  0 rom  /mnt/dvd
sda                             8:0    0   20G  0 disk 
├─sda1                          8:1    0  500M  0 part /boot
└─sda2                          8:2    0 19.5G  0 part 
  ├─vg_server-lv_root (dm-0)  253:0    0 17.6G  0 lvm  /
  └─vg_server-lv_swap (dm-1)  253:1    0    2G  0 lvm  [SWAP]
sdb                             8:16   0   15G  0 disk 
├─sdb1                          8:17   0    3G  0 part 
├─sdb2                          8:18   0    1K  0 part 
├─sdb5                          8:21   0    3G  0 part 
│ └─vg01-lv01 (dm-3)          253:3    0    3G  0 lvm  
├─sdb6                          8:22   0    3G  0 part 
│ └─vg01-lv01 (dm-3)          253:3    0    3G  0 lvm  
├─sdb7                          8:23   0    2G  0 part 
├─sdb8                          8:24   0    2G  0 part 
│ └─vg02-lv02-real (dm-5)     253:5    0    2G  0 lvm  
│   ├─vg02-lv02 (dm-2)        253:2    0    2G  0 lvm  /data2
│   └─vg02-lv2--snap (dm-4)   253:4    0    2G  0 lvm  /mnt/lv3-snap
└─sdb9                          8:25   0    2G  0 part 
  └─vg02-lv2--snap-cow (dm-6) 253:6    0  128M  0 lvm  
    └─vg02-lv2--snap (dm-4)   253:4    0    2G  0 lvm  /mnt/lv3-snap
//挂载成功

注:

​ ① 在创建快照时,如果卷组没有空间了,那么快照无法创建。会报以下错误:

[root@server01 ~]# lvcreate  -L 128M -s -n lv2-snap /dev/vg02/lv02
  Volume group "vg02" has insufficient free space (1 extents): 32 required.

​ ②挂载快照,尽量使用ro的方式,将不会破坏快照卷中的数据。

​ ③快照实现自动扩容:

/etc/lvm/lvm.conf 
snapshot_autoextend_threshold = 80
snapshot_autoextend_percent = 20
//当快照使用到80%时,自动扩容20%
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值