首页  :: 新随笔  :: 管理

CentOS逻辑卷管理

Posted on 2021-12-08 15:03  高&玉  阅读(620)  评论(0编辑  收藏  举报

介绍

        逻辑卷(Logical Volume)是由逻辑磁盘形成的虚拟盘,也可称为磁盘分区。

        逻辑卷的工作原理:逻辑卷(lv)是将几个磁盘分区或者块设备(pv,pv的id必须是8e的,pv可以位于不同的磁盘分区里,pv大小可以不一)组织起来形成一个大的扩展分区(vg,卷组,一个vg至少要包含一个pv。),该扩展分区不能直接用,需要将其划分成逻辑卷(lv)才能使用,lv可以格式化成不同的文件系统,挂载后直接使用。 lv的扩展和缩减是不会影响原有数据的,但逻辑卷缩减的风险大于逻辑卷扩展的风险。逻辑卷可以支持快照功能。

 

        快照的工作原理:保存数据某一时刻的状态。快照刚刚建立的时候,它的大小是空的。快照是访问原文件的另一条路径。快照是在数据改变之前将数据原封不动的保存到快照空间里面。注意数据变化的幅度不能超过给定快照空间的大小,否则快照将崩溃。

        快照的作用:对某一时刻数据状态的备份提供另一条访问路径,通过快照来备份数据到其它位置,备份完成后,快照就没用了,卸载和移除该快照卷。快照空间的大小取决于数据改变的频度和所需要使用的时间长度,即有限的时间内原文件数据改变的空间大小。

 

LVM与直接使用物理存储相比,有以下优点:

  • 灵活的容量:当使用逻辑卷时,文件系统可以扩展到多个磁盘上,你可以聚合多个磁盘或磁盘分区成单一的逻辑卷。
  • 可伸缩的存储池:你可以使用简单的命令来扩大或缩小逻辑卷大小,不用重新格式化或分区磁盘设备。
  • 在线的数据再分配:你可以在线移动数据,数据可以在磁盘在线的情况下重新分配.比如,你可以在线更换可热插拔的磁盘。
  • 方便的设备命名:逻辑卷可以按你觉得方便的方式来起任何名称。
  • 磁盘条块化:你可以生成一个逻辑盘,它的数据可以被条块化存储在2个或更多的磁盘上.这样可以明显提升数据吞吐量。
  • 镜像卷:逻辑卷提供方便的方法来镜像你的数据。
  • 卷快照:使用逻辑卷,你可以获得设备快照用来一致性备份或者测试数据更新效果而不影响真实数据。

磁盘分区

此步骤是可选的,可以直接将一块磁盘创建为PV(物理卷)。

 

创建分区有两种方式:

  • fdisk
  • parted

 

fdisk和parted的区别:

  • fdisk 只支持msdos格式。
  • parted 支持 msdos 和gpt格式。

 

msdos和gpt的区别:

  • msdos 支持小于2T硬盘,不支持大于2T硬盘,有主分区,扩展分区,逻辑分区,最多四个主分区。
  • gpt 支持大小容量的硬盘,不区分主分区,扩展分区,逻辑分区,也没有四个分区数量的限制。

fdisk创建分区

[root]# fdisk /dev/sda
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p	#打印磁盘信息

Disk /dev/sda: 6001.2 GB, 6001175126016 bytes, 11721045168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: gpt
Disk identifier: CB4AE8A4-5C81-4598-8D67-B7B5E7489AD6


#         Start          End    Size  Type            Name

Command (m for help): n	#新增分区
Partition number (1-128, default 1): 1	#指定分区NUMBER
First sector (34-11721045134, default 2048): 2048	#指定扇区起始位置
Last sector, +sectors or +size{K,M,G,T,P} (2048-11721045134, default 11721045134): 11721045134	#指定扇区结束位置
Created partition 1


Command (m for help): p	#打印磁盘信息

Disk /dev/sda: 6001.2 GB, 6001175126016 bytes, 11721045168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: gpt
Disk identifier: CB4AE8A4-5C81-4598-8D67-B7B5E7489AD6


#         Start          End    Size  Type            Name
 1         2048  11721045134    5.5T  Linux filesyste 

Command (m for help): w	#保存退出
The partition table has been altered!

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

 

parted创建分区

[root]# parted /dev/sdn
GNU Parted 3.1
Using /dev/sdn
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help                                                             
  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  
  resizepart NUMBER END                    resize partition NUMBER
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  disk_set FLAG STATE                      change the FLAG on selected device
  disk_toggle [FLAG]                       toggle the state of FLAG on selected device
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted
(parted) mklabel gpt	#创建gpt格式新分区                                                      
Warning: The existing disk label on /dev/sdn will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes                                                               
Error: Partition(s) 1 on /dev/sdn have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You
should reboot now before making further changes.
Ignore/Cancel? Ignore
(parted) mkpart XFS 0 480G	#指定分区格式及大小                                                
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore                                                     
(parted) print	#打印磁盘信息及分区信息                                                            
Model: ATA Micron_5200_MTFD (scsi)
Disk /dev/sdn: 480GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name  Flags
 1      17.4kB  480GB  480GB               XFS

(parted) q	#退出                                                               
Information: You may need to update /etc/fstab.

创建逻辑卷

创建逻辑卷的流程:

  • 第一步:创建PV(物理卷):pvcreate /dev/sdb1
  • 第二步:创建VG(卷组):vgcreate datavg /dev/sdb1
  • 第三步:创建LVM(逻辑卷):lvcreate -l 17283957 -n datavg-lv datavg
  • 第四步:格式化LVM(逻辑卷):mkfs.xfs /dev/LVM_NAME
  • 第五步:挂载目录:mount /dev/LVM_NAME /data

检查磁盘

检查磁盘是SSD还是STAT盘

[root]# cat /sys/block/sda/queue/rotational
0

 

磁盘状态:

  • 0:SSD盘
  • 1:SATA盘

 

检查磁盘是SSD还是STAT的脚本

[root]# vi disk_check.sh
for DISK_NAME in `ls /sys/block/`
do
  echo "$DISK_NAME: `cat /sys/block/$DISK_NAME/queue/rotational`"
done

[root# sh disk_check.sh 
nvme0n1: 0
nvme1n1: 0
sda: 1
sdn: 0

创建PV(物理卷)

安装逻辑卷管理工具

[root]# yum install lvm2 -y

 

创建PV(物理卷)

[root]# pvcreate /dev/{nvme0n1,nvme1n1,sdn}
WARNING: gpt signature detected on /dev/nvme0n1 at offset 512. Wipe it? [y/n]: y
  Wiping gpt signature on /dev/nvme0n1.
WARNING: gpt signature detected on /dev/nvme0n1 at offset 3200631791104. Wipe it? [y/n]: y
  Wiping gpt signature on /dev/nvme0n1.
WARNING: PMBR signature detected on /dev/nvme0n1 at offset 510. Wipe it? [y/n]: y
  Wiping PMBR signature on /dev/nvme0n1.
WARNING: gpt signature detected on /dev/nvme1n1 at offset 512. Wipe it? [y/n]: y
  Wiping gpt signature on /dev/nvme1n1.
WARNING: gpt signature detected on /dev/nvme1n1 at offset 3200631791104. Wipe it? [y/n]: y
  Wiping gpt signature on /dev/nvme1n1.
WARNING: PMBR signature detected on /dev/nvme1n1 at offset 510. Wipe it? [y/n]: y
  Wiping PMBR signature on /dev/nvme1n1.
WARNING: dos signature detected on /dev/sdn at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/sdn.
  Physical volume "/dev/nvme0n1" successfully created.
  Physical volume "/dev/nvme1n1" successfully created.
  Physical volume "/dev/sdn" successfully created.

 

查看PV(物理卷)

[root]# pvdisplay 
  "/dev/nvme1n1" is a new physical volume of "2.91 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/nvme1n1
  VG Name               
  PV Size               2.91 TiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               xHMYDk-MiU8-z1Bt-YyVd-J2FV-Iqwe-lPf81T
   
  "/dev/sdn" is a new physical volume of "447.13 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdn
  VG Name               
  PV Size               447.13 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               33M6Kc-ftyp-FT1U-oCBR-ydIS-rvIY-n3rRqd
   
  "/dev/nvme0n1" is a new physical volume of "2.91 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/nvme0n1
  VG Name               
  PV Size               2.91 TiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               vm9Sve-BBHC-keOD-O4dI-Etba-ZjNC-9VVW1V

创建VG(卷组)

创建VG(卷组)

[root]# vgcreate datavg /dev/{nvme0n1,nvme1n1,sdn}
  Volume group "datavg" successfully created

 

扫描VG(卷组)

[root]# vgscan
  Reading volume groups from cache.
  Found volume group "datavg" using metadata type lvm2

 

查看VG(卷组)

[root]# vgdisplay 
  --- Volume group ---
  VG Name               datavg
  System ID             
  Format                lvm2
  Metadata Areas        3
  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                3
  Act PV                3
  VG Size               <6.26 TiB
  PE Size               4.00 MiB
  Total PE              1640643
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1640643 / <6.26 TiB
  VG UUID               Tku0cw-GI5J-pgQQ-HkXN-gODj-Sa3u-skfQJA

创建LVM(逻辑卷)

创建LVM(逻辑卷)

[root]# lvcreate -l 1640643 -n datavg-lv datavg
  Logical volume "datavg-lv" created.

 

扫描LVM(逻辑卷)

[root]# lvscan
  ACTIVE            '/dev/datavg/datavg-lv' [<6.26 TiB] inherit

 

查看逻辑卷

[root]# lvdisplay /dev/datavg/datavg-lv
  --- Logical volume ---
  LV Path                /dev/datavg/datavg-lv
  LV Name                datavg-lv
  VG Name                datavg
  LV UUID                4uHgQv-JZxd-pGJP-P4Fe-gUzL-N7oj-5M0SyF
  LV Write Access        read/write
  LV Creation host, time nm05-monitor-10e5e65e14, 2021-12-23 17:00:25 +0800
  LV Status              available
  # open                 0
  LV Size                <6.26 TiB
  Current LE             1640643
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

格式化LVM并挂载

格式化逻辑卷

[root]# mkfs.xfs /dev/datavg/datavg-lv
meta-data=/dev/datavg/datavg-lv  isize=512    agcount=7, agsize=268435455 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1680018432, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

 

挂载目录

[root]# mkdir -p /data
[root]# mount /dev/datavg/datavg-lv /data

 

配置自动挂载

[root]# vi /etc/fstab
/dev/datavg/datavg-lv                       /data                   xfs     defaults        0 0