Linux磁盘管理及LVM讲解

硬盘接口

从整体的角度上,硬盘接口分为IDE、SATA、SCSI和SAS四种,IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口的硬盘则主要应用于服务器市场,而SAS只在高端服务器上,价格昂贵。

硬盘种类

SATA硬盘:用SATA接口的硬盘又叫串口硬盘,是以后PC机的主流发展方向,因为其有较强的纠错能力,错误一经发现能自动纠正,这样就大大的提高了数据传输的安全性。新的SATA 使用了差动信号系统”differential-signal-amplified-system”。这种系统能有效的将噪声从正常讯号中滤除,良好的噪声滤除能力使得SATA只要使用低电压操作即可,和 Parallel ATA 高达5V的传输电压相比,SATA 只要0.5V(500mv) 的峰对峰值电压即可操作于更高的速度之上。”比较正确的说法是:峰对峰值’差模电压'”。一般转速可达7200转/分。
SCSI硬盘:SCSI硬盘即采用SCSI接口的硬盘。 优点:SCSI接口具有应用范围广、多任务、带宽大、CPU占用率低,以及热插拔等。它由于性能好、稳定性高,因此在服务器上得到广泛应用。缺点:由于SCSI硬盘价格非常昂贵,所以一般的PC是不会使用SCSI硬盘。 一般转速可达10000转/分。
SAS硬盘:SAS(Serial Attached SCSI)即串行连接SCSI,是新一代的SCSI技术,和现在流行的Serial ATA(SATA)硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。改善存储系统的效能、可用性和扩充性。 一般转速可达15000转/分,甚至更高。

分区符认识

MBR概述:全称为Master Boot Record,即硬盘的主引导记录。
*硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和分区有效标志(55AA)。在总共512字节的主引导扇区里主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。

分区编号:主分区1-4 ,逻辑分区5……
LINUX规定:逻辑分区必须建立在扩展分区之上,而不是建立在主分区上
分区作用:
主分区:主要是用来启动操作系统的,它主要放的是操作系统的启动或引导程序,/boot分区最好放在主分区上
扩展分区不能使用的,它只是做为逻辑分区的容器存在的,先创建一个扩展分区,在拓展分区之上创建逻辑分区;我们真正存放数据的是主分区和逻辑分区,大量数据都放在逻辑分区中。
注意:使用分区工具fdisk对磁盘进行操作,分区,格式化(重点)
注意:
逻辑分区和拓展分区,拓展分区是逻辑分区的资源池。拓展分区不能单独使用。
主分区+扩展分区 最多只能有4个
扩展分区可以是0个,最多是1个
扩展分区不能直接使用,扩展分区必须首先创建成逻辑分区才能使用
逻辑分区可以是0个 1个 多个
查看磁盘;ls /dev/sd*
命名方式: /dev/sd[a-z]n
其中:a-z 表示设备的序号,如sda表示第一块scsi硬盘,sdb就是第二块……
n 表示每块磁盘上划分的磁盘分区编号

文件系统与数据资料

用户在硬件存储设备中执行的文件建立、写入、读取、修改、转存与控制等操作都是依靠文件系统来完成的。文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。Linux系统支持数十种的文件系统,而最常见的文件系统如下所示。
Ext3:是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。
Ext4:Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。
XFS:是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为18EB,这几乎满足了所有需求。
EXT4;是cenots6默认的文件管理系统
XFS;是centos7默认的文件系统

fdisk管理分区

参数 作用
m 查看全部可用的参数
n 添加新的分区
d 删除某个分区信息
l 列出所有可用的分区类型
t 改变某个分区的类型
p 查看分区表信息
w 保存并退出
q 不保存直接退出

第一步:关机添加磁盘

第二步:查看磁盘
[root@ken ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb

第三步:fdisk创建主分区
[root@ken ~]# fdisk /dev/sdb
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.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xe140b235.
Command (m for help): n #新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #选择主分区
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048): #分区磁盘起始位,默认值,回车即可
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G #磁盘大小选择,加号不能省略,回车即可
Partition 1 of type Linux and of size 5 GiB is set
Command (m for help): P #查看分区是否建立
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xe140b235
Device Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
Command (m for help): W #w保存退出,q是不保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

第四步:查看磁盘
[root@ken ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1

第五步:格式化,安装文件系统
[root@ken ~]# mkfs.xfs /dev/sdb1 #格式化成centos7系统默认的文件系统类型XFS
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

第六步:挂载磁盘至本地目录
[root@ken ~]# mkdir /xfs_ken #创建本地目录
[root@ken ~]# mount /dev/sdb1 /xfs_ken #使用mount进行挂载

第七步:查看挂载信息
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb1 5.0G 33M 5.0G 1% /xfs_ken

第八步:开机自动挂载
方法一:系统容易起不来
echo “/dev/sdb1 /xfs_ken xfs defaults 0 0” >> /etc/fstab
方法二:
[root@ken ~]# echo “mount /dev/sdb1 /xfs_ken” >> /etc/rc.local
[root@ken ~]# chmod +x /etc/rc.d/rc.local

fdisk分区演示–创建逻辑分区

第一步:fdisk添加扩展分区
[root@ken ~]# fdisk /dev/sdb
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): n #添加新分区
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e #选择扩展分区
Partition number (2-4, default 2):
First sector (10487808-41943039, default 10487808):
Using default value 10487808
Last sector, +sectors or +size{K,M,G} (10487808-41943039, default 41943039): +5G #5G大小
Partition 2 of type Extended and of size 5 GiB is set
Command (m for help): P #查看分区
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xe140b235
Device Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 20973567 5242880 5 Extended
Command (m for help): w #保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

第二步:创建逻辑分区
[root@ken ~]# fdisk /dev/sdb
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): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l #创建逻辑分区
Adding logical partition 5
First sector (10489856-20973567, default 10489856):
Using default value 10489856
Last sector, +sectors or +size{K,M,G} (10489856-20973567, default 20973567): +10G #逻辑分区大小不能超过扩展分区大小
Value out of range.
Last sector, +sectors or +size{K,M,G} (10489856-20973567, default 20973567): +2g
Unsupported suffix: ‘g’.
Supported: 10^N: KB (KiloByte), MB (MegaByte), GB (GigaByte)
2^N: K (KibiByte), M (MebiByte), G (GibiByte)
Last sector, +sectors or +size{K,M,G} (10489856-20973567, default 20973567): +2G
Partition 5 of type Linux and of size 2 GiB is set
Command (m for help): P
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xe140b235
Device Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 20973567 5242880 5 Extended
/dev/sdb5 10489856 14684159 2097152 83 Linux
Command (m for help): W
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
输入partprobe进行磁盘刷新或者重启。

第三步:创建文件系统
[root@ken ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb5
[root@ken ~]# mkfs.xfs /dev/sdb5
meta-data=/dev/sdb5 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

第四步:开机自动挂载
[root@ken ~]# echo “mount /dev/sdb5 /xfs_ken” >> /etc/rc.local

验证写入位置

第一步:挂载磁盘
[root@ken ~]# vim /etc/fstab
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@ken ~]# mount -a #可以吧文件fsta里面未挂载的磁盘进行挂载
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb1 5.0G 33M 5.0G 1% /xfs_ken

第二步:写入内容
[root@ken ~]# touch /xfs_ken/{1..100}.txt
[root@ken ~]# ls /xfs_ken/
100.txt 17.txt 24.txt 31.txt 39.txt 46.txt 53.txt 60.txt 68.txt 75.txt 82.txt 8.txt 97.txt
10.txt 18.txt 25.txt 32.txt 3.txt 47.txt 54.txt 61.txt 69.txt 76.txt 83.txt 90.txt 98.txt
11.txt 19.txt 26.txt 33.txt 40.txt 48.txt 55.txt 62.txt 6.txt 77.txt 84.txt 91.txt 99.txt
12.txt 1.txt 27.txt 34.txt 41.txt 49.txt 56.txt 63.txt 70.txt 78.txt 85.txt 92.txt 9.txt
13.txt 20.txt 28.txt 35.txt 42.txt 4.txt 57.txt 64.txt 71.txt 79.txt 86.txt 93.txt
14.txt 21.txt 29.txt 36.txt 43.txt 50.txt 58.txt 65.txt 72.txt 7.txt 87.txt 94.txt
15.txt 22.txt 2.txt 37.txt 44.txt 51.txt 59.txt 66.txt 73.txt 80.txt 88.txt 95.txt
16.txt 23.txt 30.txt 38.txt 45.txt 52.txt 5.txt 67.txt 74.txt 81.txt 89.txt 96.txt
[root@ken ~]#
[root@ken ~]# umount /xfs_ken/
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@ken ~]# ls /xfs_ken/

第三步:再次挂载磁盘
[root@ken ~]# mkdir /kenken
[root@ken ~]# mount /dev/sdb1 /kenken
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb1 5.0G 33M 5.0G 1% /kenken
[root@ken ~]# ls /kenken
100.txt 17.txt 24.txt 31.txt 39.txt 46.txt 53.txt 60.txt 68.txt 75.txt 82.txt 8.txt 97.txt
10.txt 18.txt 25.txt 32.txt 3.txt 47.txt 54.txt 61.txt 69.txt 76.txt 83.txt 90.txt 98.txt
11.txt 19.txt 26.txt 33.txt 40.txt 48.txt 55.txt 62.txt 6.txt 77.txt 84.txt 91.txt 99.txt
12.txt 1.txt 27.txt 34.txt 41.txt 49.txt 56.txt 63.txt 70.txt 78.txt 85.txt 92.txt 9.txt
13.txt 20.txt 28.txt 35.txt 42.txt 4.txt 57.txt 64.txt 71.txt 79.txt 86.txt 93.txt
14.txt 21.txt 29.txt 36.txt 43.txt 50.txt 58.txt 65.txt 72.txt 7.txt 87.txt 94.txt
15.txt 22.txt 2.txt 37.txt 44.txt 51.txt 59.txt 66.txt 73.txt 80.txt 88.txt 95.txt
16.txt 23.txt 30.txt 38.txt 45.txt 52.txt 5.txt 67.txt 74.txt 81.txt 89.txt 96.txt

添加交换分区

SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设计目的是为了解决真实物理内存不足的问题。但由于交换分区毕竟是通过硬盘设备读写数据的,速度肯定要比物理内存慢,所以只有当真实的物理内存耗尽后才会调用交换分区的资源。
交换分区的创建过程与前文讲到的挂载并使用存储设备的过程非常相似。在对/dev/sdb存储设备进行分区操作前,有必要先说一下交换分区的划分建议:在生产环境中,交换分区的大小一般为真实物理内存的1.5~2倍,为了让大家更明显地感受交换分区空间的变化,这里取出一个大小为5GB的主分区作为交换分区资源。在分区创建完毕后保存并退出即可:

创建交换分区SWAP–磁盘

第一步:创建分区
[root@ken ~]# fdisk /dev/sdb
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): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): p
Partition number (3,4, default 3):
First sector (20973568-41943039, default 20973568):
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039): +2G
Partition 3 of type Linux and of size 2 GiB is set
Command (m for help): P
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xe140b235
Device Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 20973567 5242880 5 Extended
/dev/sdb3 20973568 25167871 2097152 83 Linux
/dev/sdb5 10489856 14684159 2097152 83 Linux
/dev/sdb6 14686208 18880511 2097152 83 Linux
/dev/sdb7 18882560 20973567 1045504 83 Linux
Command (m for help): W
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

第二步:识别新创建的分区
[root@ken ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb5 /dev/sdb6 /dev/sdb7
[root@ken ~]# partprobe #加载新建分区
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
[root@ken ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5 /dev/sdb6 /dev/sdb7

第三步:格式化为swap类型
[root@ken ~]# mkswap /dev/sdb3
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=b184f890-2ec4-417d-9aef-1ac87a78464b

第四步:启动swap
[root@ken ~]# free -h
total used free shared buff/cache available
Mem: 974M 89M 751M 7.6M 133M 733M
Swap: 2.0G 0B 2.0G
[root@ken ~]# swapon /dev/sdb3
[root@ken ~]# free -h
total used free shared buff/cache available
Mem: 974M 90M 750M 7.6M 133M 732M
Swap: 4.0G 0B 4.0G
[root@ken ~]#

第五步:开机自启
方法一:
echo “/dev/sdb3 swap swap defaults 0 0” >> /etc/fstab
方法二:
echo “swapon /dev/sdb3” >> /etc/rc.local

创建交换分区SWAP–本地文件

第一步:创建目录
[root@ken ~]# mkdir /swap

第二步:创建文件
[root@ken ~]# dd if=/dev/zero of=/swap/swap bs=2M count=2014
2014+0 records in
2014+0 records out
4223664128 bytes (4.2 GB) copied, 29.3039 s, 144 MB/s

第三步:格式化
[root@ken ~]# mkswap /swap/swap
Setting up swapspace version 1, size = 4124668 KiB
no label, UUID=211cb23a-49b5-46fc-b568-f167d4b6d06a

第四步:写入文件
[root@ken ~]# echo “/swap/swap swap swap defaults 0 0” >> /etc/fsta
[root@ken ~]# mount -a
[root@ken ~]# free -h
total used free shared buff/cache available
Mem: 974M 85M 69M 7.6M 819M 712M
Swap: 4.0G 0B 4.0G
[root@ken ~]# swapon -a
swapon: /swap/swap: insecure permissions 0644, 0600 suggested.
[root@ken ~]# free -h
total used free shared buff/cache available
Mem: 974M 88M 66M 7.6M 819M 709M
Swap: 7.9G 0B 7.9G

第五步:修改权限
[root@ken ~]# chmod 0600 /swap/swap

关掉交换分区
[root@ken ~]# swapoff -a
[root@ken ~]# free -h
total used free shared buff/cache available
Mem: 974M 83M 70M 7.6M 820M 714M
Swap: 0B 0B 0B

LVM逻辑卷管理器

实战场景:对于生产环境下的服务器来说,如果存储数据的分区磁盘空间不够了怎么办?
答:只能换一个更大的磁盘。如果用了一段时间后,空间又不够了,怎么办?再加一块更大的?换磁盘的过程中,还需要把数据从一个硬盘复制到另一个硬盘,过程太慢了。
解决方案:使用LVM在线动态扩容
逻辑卷管理器是Linux系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。而LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区的动态调整。LVM的技术架构如图所示。

LVM常用的术语

物理存储介质(The physical media):LVM存储介质可以是磁盘分区,整个磁盘,RAID阵列或SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用
物理卷PV(physical volume) :物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数,创建物理卷它可以用硬盘分区,也可以用硬盘本身;
卷组VG(Volume Group) :一个LVM卷组由一个或多个物理卷组成
逻辑卷LV(logical volume) :LV建立在VG之上,可以在LV之上建立文件系统
PE(physical extents) :PV物理卷中可以分配的最小存储单元,PE的大小是可以指定的,默认为4MB
LE(logical extent) : LV逻辑卷中可以分配的最小存储单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应

LVM部署逻辑卷

常用的LVM部署命令;LVM: logical volumes manager
| 功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
| 扫描 | pvscan |vgscan | lvscan |
| 建立 | pvcreate | vgcreate | lvcreate |
| 显示 | pvdisplay | vgdisplay | lvdisplay |
| 删除 | pvremove | vgremove | lvremove |
| 扩展 | | vgextend | lvextend |
| 缩小 | | vgreduce | lvreduce |

Linux扩容逻辑卷ext4格式

物理卷–》卷组–》逻辑卷

第一步;添加磁盘
l略

第二步:查看磁盘
[root@ken ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc

第三步:创建物理卷
[root@ken ~]# pvcreate /dev/sd{b,c}
Physical volume “/dev/sdb” successfully created.
Physical volume “/dev/sdc” successfully created.

第四步:创建卷组
[root@ken ~]# vgcreate vg_ken /dev/sd{b,c} #卷组名为vg_ken,物理卷/dev/sd{b,c}
Volume group “vg_ken” successfully created

第五步:逻辑卷创建
方式一:使用L进行容量指定
[root@ken ~]# lvcreate -L 500M -n lv_ken1 vg_ken
Logical volume “lv_ken1” created.
方式二:使用 l 指定PE数量
[root@ken ~]# lvcreate -l 125 -n lv_ken2 vg_ken
Logical volume “lv_ken2” created.

第六步:格式化逻辑卷
[root@ken ~]# mkfs.xfs /dev/vg_ken/lv_ken1
meta-data=/dev/vg_ken/lv_ken1 isize=512 agcount=4, agsize=32000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=128000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@ken ~]# mkfs.xfs /dev/vg_ken/lv_ken2
meta-data=/dev/vg_ken/lv_ken2 isize=512 agcount=4, agsize=32000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=128000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

第七步:挂载使用
[root@ken ~]# mkdir /ken1
[root@ken ~]# mkdir /ken2
[root@ken ~]# mount /dev/vg_ken/lv_ken1 /ken1
[root@ken ~]# mount /dev/vg_ken/lv_ken2 /ken2

第八步:查看挂载信息
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg_ken-lv_ken1 497M 26M 472M 6% /ken1
/dev/mapper/vg_ken-lv_ken2 497M 26M 472M 6% /ken2

第九步:开机自启
方法一: 写入/etc/fstab
[root@ken ~]# echo “/dev/mapper/vg_ken-lv_ken1 /ken1 xfs defaults 0 0” >> /etc/fstab
方法二:写入rc.local
echo “mount /dev/vg_ken/lv_ken1 /ken1” >> /etc/rc.local

Linux扩容逻辑卷xfs格式

第一步:直接扩容
[root@ken ~]# lvextend -L 800M /dev/vg_ken/lv_ken1
Size of logical volume vg_ken/lv_ken1 changed from 500.00 MiB (125 extents) to 800.00 MiB (200 extents).
Logical volume vg_ken/lv_ken1 successfully resized.
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg_ken-lv_ken1 497M 26M 472M 6% /ken1
/dev/mapper/vg_ken-lv_ken2 497M 26M 472M 6% /ken2

第二步:xfs_growfs使配置生效
[root@ken ~]# xfs_growfs /dev/vg_ken/lv_ken1
meta-data=/dev/mapper/vg_ken-lv_ken1 isize=512 agcount=4, agsize=32000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=128000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 128000 to 204800
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg_ken-lv_ken1 797M 26M 772M 4% /ken1
/dev/mapper/vg_ken-lv_ken2 497M 26M 472M 6% /ken2
[root@ken ~]#
注意:

  1. xfs格式的磁盘不需要卸载即可直接在线进行扩容
  2. extX格式需要先卸载再进行扩容
  3. XFS格式的磁盘类型只支持扩容不支持缩容

Linux缩小逻辑卷

LVM扩容–EXT4格式

第一步:创建一个ext4格式的逻辑卷
[root@ken ~]# lvcreate -L 500M -n lv_ext4 vg_ken
Logical volume “lv_ext4” created.

第二步:格式化为ext4格式
[root@ken ~]# mkfs.ext4 /dev/vg_ken/lv_ext4

第三步:挂载
[root@ken ~]# mkdir /ext4
[root@ken ~]# mount /dev/vg_ken/lv_ext4 /ext4
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg_ken-lv_ken1 797M 26M 772M 4% /ken1
/dev/mapper/vg_ken-lv_ken2 497M 26M 472M 6% /ken2
/dev/mapper/vg_ken-lv_ext4 477M 2.3M 445M 1% /ext4

第四步:开始扩容
卸载
[root@ken ~]# umount /ext4
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg_ken-lv_ken1 797M 26M 772M 4% /ken1
/dev/mapper/vg_ken-lv_ken2 497M 26M 472M 6% /ken2

第五步:扩容lvextend
[root@ken ~]# lvextend -L 800M /dev/vg_ken/lv_ext4
Size of logical volume vg_ken/lv_ext4 changed from 500.00 MiB (125 extents) to 800.00 MiB (200 extents).
Logical volume vg_ken/lv_ext4 successfully resized.

第六步:磁盘检测
[root@ken ~]# e2fsck -f /dev/vg_ken/lv_ext4
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/vg_ken/lv_ext4: 11/128016 files (0.0% non-contiguous), 26684/512000 blocks

第七步:扩容resize2fs
[root@ken ~]# resize2fs //dev/vg_ken/lv_ext4
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on //dev/vg_ken/lv_ext4 to 819200 (1k) blocks.
The filesystem on //dev/vg_ken/lv_ext4 is now 819200 blocks long.

第八步:挂载使用
[root@ken ~]# mount //dev/vg_ken/lv_ext4 /ext4
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg_ken-lv_ken1 797M 26M 772M 4% /ken1
/dev/mapper/vg_ken-lv_ken2 497M 26M 472M 6% /ken2
/dev/mapper/vg_ken-lv_ext4 767M 2.5M 721M 1% /ext4

LVM缩容–EXT4格式

第一步:卸载
[root@ken ~]# umount /ext4
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg_ken-lv_ken1 797M 26M 772M 4% /ken1
/dev/mapper/vg_ken-lv_ken2 497M 26M 472M 6% /ken2

第二步:检测
[root@ken ~]# e2fsck -f /dev/vg_ken/lv_ext4
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/vg_ken/lv_ext4: 11/203200 files (0.0% non-contiguous), 36417/819200 blocks

第三步:缩容
[root@ken ~]# resize2fs /dev/vg_ken/lv_ext4 500M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg_ken/lv_ext4 to 512000 (1k) blocks.
The filesystem on /dev/vg_ken/lv_ext4 is now 512000 blocks long.

第四步:执行lvreduce
[root@ken ~]# lvreduce -L 500M /dev/vg_ken/lv_ext4
WARNING: Reducing active logical volume to 500.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg_ken/lv_ext4? [y/n]: y
Size of logical volume vg_ken/lv_ext4 changed from 800.00 MiB (200 extents) to 500.00 MiB (125 extents).
Logical volume vg_ken/lv_ext4 successfully resized.

第五步:挂载使用
[root@ken ~]# mount //dev/vg_ken/lv_ext4 /ext4
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg_ken-lv_ken1 797M 26M 772M 4% /ken1
/dev/mapper/vg_ken-lv_ken2 497M 26M 472M 6% /ken2
/dev/mapper/vg_ken-lv_ext4 477M 2.3M 445M 1% /ext4

Linux删除逻辑卷

逻辑卷 –》卷组–》物理卷

第一步:卸载正在使用的逻辑卷
[root@ken ~]# umount /ken1
[root@ken ~]# umount /ken2
[root@ken ~]# umount /ext4
[root@ken ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.4G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0

第二步:删除逻辑卷
[root@ken ~]# lvremove /dev/vg_ken/lv_
lv_ext4 lv_ken1 lv_ken2
[root@ken ~]# lvremove /dev/vg_ken/lv_*
Do you really want to remove active logical volume vg_ken/lv_ken1? [y/n]: y
Logical volume “lv_ken1” successfully removed
Do you really want to remove active logical volume vg_ken/lv_ken2? [y/n]: y
Logical volume “lv_ken2” successfully removed
Do you really want to remove active logical volume vg_ken/lv_ext4? [y/n]: y
Logical volume “lv_ext4” successfully removed

第三步:删除卷组
[root@ken ~]# vgremove vg_ken
Volume group “vg_ken” successfully removed

第四步:删除物理卷
[root@ken ~]# pvremove /dev/sd{b,c}
Labels on physical volume “/dev/sdb” successfully wiped.
Labels on physical volume “/dev/sdc” successfully wiped.

第五步:查看
[root@ken ~]# pvdisplay
— Physical volume —
PV Name /dev/sda2 #只有系统自带的了
VG Name centos
PV Size <19.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID MDIeKf-Tbul-ST5P-ua57-lCVG-bPWM-o32gdQ

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容