Linux磁盘管理与LVM磁盘配额
一 磁盘的结构与分区
1.1 物理结构
盘片:硬盘有多个盘片,每个盘片2面
磁头:每面一个磁头
1.2 数据结构
扇区:盘面被分成多个扇形区域,每个扇区存放512个字节的数据
PS:硬盘的第一个扇区,叫做引导扇区
磁道:同一盘片不同半径的同心圆(当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道(Track))
柱面:不同盘片相同半径构成的圆柱面(在有多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面(Cylinder))
PS:固态硬盘:电子芯片存储,速度快,但是数据丢失无法恢复
机械硬盘:磁道存储,速度一般,数据丢失有几率恢复
1.3 磁盘接口类型
ATA(IDE 并口):现在已经很少见到,逐渐被SATA所取代
SATA(串口):全称是Serial ATA,抗干扰性强,支持热插热拔等功能,速度快,纠错能力强。
SCSI:全称是 Small Computer System Interface(小型机系统接口),SCSI硬盘广为工作站级个人电脑以及服务器所使用的,资料传输时CPU占用率较低,转速快,支持热插热拔等
SAS(Serial Attached SCSI):是新一代的SCSI技术,和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到6Gb/s
1.4 磁盘分区
主引导记录MBR
1.Master Boot Record,位于硬盘第一个物理扇区处(引导扇区)
2.MBR中包含硬盘的主引导程序和硬盘分区表。分区表有4个分区记录区,每个分区记录区占16个字节
3.MBR最多四个分区,可创建逻辑分区
磁盘分区类型
常见的硬盘可以划分为主分区,扩展分区和逻辑分区,通常情况下主分区只有四个,而扩展分区可以看成是一个特殊的主分区类型,在扩展分区中可以建立逻辑分区。
二 磁盘检测与创建
2.1 fdisk 命令
用于查看和管理磁盘分区
fdisk -l [磁盘设备]
fdisk [磁盘设备]
fdisk /dev/sdb 进入交互式的分区管理界面
交互式界面常用指令
参数 | 释义 |
---|---|
p | 列出硬盘中的分区情况,信息显示的格式与执行"fdisk -l"命令相同 |
n | 创建新分区 |
d | 删除分区 |
t | 变更分区类型,转换格式 |
w | 保存配置 |
q | 退出 |
l | 查看分区对应的系统ID号 |
2.2 mkfs命令
在Linux系统中使用mkfs(Make Filesystem,创建文件系统)命令格式可以格式化XFS , EXT4 ,FAT等不同类型的分区,而使用mkswap命令可以格式化Swap交换分区
创建文件系统(格式化)
mkfs -t 文件系统类型 分区设备
[root@localhost ~]# mkfs.xfs /dev/卷组名/逻辑卷名
创建EXT4文件系统
mkfs -t ext4 /dev/sda2
创建FAT32文件系统
方法一:
[root@hostname ~]# mkfs -t vfat -F 32 /dev/sdb3
方法二:
[root@hostname ~]# mkfs.vfat -F 32 /dev/sdb3
2.3 mkswap命令
在指定的分区上创建交换文件系统,目标分区应先通过fdisk工具将ID号设为82。Swap分区的作用类似于Windows系统中的“虚拟内存”,可以在一定程度上缓解物理内存不足的情况。
mkswap 分区设备
三 文件的挂载与卸载
在Linux系统中,对各种存储设备中的资源访问(如读取,保存文件等)都是通过目录结构进行的,虽然系统核心能够通过“设备文件”的方式操纵各种设备,但是对于用户来说,还需要增加一个“挂载”的过程,才能像正常访问目录一样访问存储设备中的资源
3.1 mount命令
挂载文件系统
-a :all,挂载fstab中的所有文件系统
-o:options 挂载选项列表,以英文逗号隔开
[root@node1 home]# mount /dev/cdrom /mnt/
3.2 umount命令
卸载文件系统
[root@node1 home]# umount /dev/cdrom
3.3 永久挂载
系统中的/etc/fstab文件可以视为mount命令的配置文件,其中存储了文件系统的静态挂载数据,Linux系统在每次开机时,会自动读取这个文件的内容,自动挂载所指定的文件系统。在/etc/fstab文件中添加挂载目录即可实现永久挂载。
在/etc/fstab文件中,每一行记录对应一个分区或设备的挂载配置信息,从左到右包括六个字段,含义如下:
字段 | 释义 |
---|---|
第一字段 | 分区/设备名/设备卷标名 |
第二字段 | 挂载点,文件系统的挂载点目录的位置 |
第三字段 | 文件系统类型,如xfs,Swap等 |
第四字段 | 挂载参数(包括权限和功能),即mount命令“-o”选项后可使用的参数。例如:defaults,rw,ro,noexec分别表示默认参数,可写,只读,禁用执行程序。 |
第五字段 | 表示文件系统是否需要dump备份(dump是一个备份工具),设为1时表示需要,设为0时将被dump忽略 |
第六字段 | 该字段用于决定系统启动时进行磁盘检查的顺序。0:不进行检查。1:优先检查。2:其次检查、对于根分区应设为1,其他分区设为2 |
四 LVM逻辑卷管理
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制
4.1 物理卷PV
物理卷是 LVM 机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录 LVM 的属性,并把存储空间分割成默认大小为 4MB 的基本单元(Physical Extent,PE),从而构成物理卷
4.2 卷组VG
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷
4.3 逻辑卷LV
逻辑卷建立在卷组之上,与物理卷没有直接关系。对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷
4.4 LVM的管理
LVM管理 | Scan(显示概要信息) | Create(建立) | Display(显示详细信息) | Remove(删除) | Extend(扩展) | Reduce(减少) |
---|---|---|---|---|---|---|
物理卷管理(PV) | pvscan | pvcreate | pvdisplay | pvremove | ||
卷组管理(VG) | vgscan | vgcreate | vgdisplay | vgremove | vgextend | vgreduce |
逻辑卷管理(LV) | lvscan | lvcreate | lvdisplay | lvremove | lvextend | lvreduce |
常用命令格式:
pvcreate 设备名(磁盘) [设备名2 … …]
vgcreate 卷组名 物理卷名1 物理卷名2
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
lvextend -l +大小 /dev/卷组名/逻辑卷名
五 LVM案例
5.1 在centos 7系统中添加两块磁盘,查看磁盘是否添加成功
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c1f00
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 12584959 6291456 83 Linux
/dev/sda2 12584960 54527999 20971520 83 Linux
/dev/sda3 54528000 62916607 4194304 82 Linux swap / Solaris
/dev/sda4 62916608 83886079 10484736 5 Extended
/dev/sda5 62918656 83886079 10483712 83 Linux
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
5.2 创建分区,并以同样的方法创建/dev/sdc
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x50f1e234 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e //分区ID改成8e,8e是lvm格式,我们保持前后格式相同
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
5.3 查看分区创建情况
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c1f00
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 12584959 6291456 83 Linux
/dev/sda2 12584960 54527999 20971520 83 Linux
/dev/sda3 54528000 62916607 4194304 82 Linux swap / Solaris
/dev/sda4 62916608 83886079 10484736 5 Extended
/dev/sda5 62918656 83886079 10483712 83 Linux
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x50f1e234
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 8e Linux LVM
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6a90762a
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 41943039 20970496 8e Linux LVM
5.4 创建物理卷PV
[root@localhost ~]# pvcreate /dev/sd[b-c]1
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
[root@localhost ~]# pvscan '//查看物理卷'
PV /dev/sdc1 lvm2 [<20.00 GiB]
PV /dev/sdb1 lvm2 [<20.00 GiB]
Total: 2 [<40.00 GiB] / in use: 0 [0 ] / in no VG: 2 [<40.00 GiB]
5.5 创建卷组VG
5.创建卷组
[root@localhost ~]# vgcreate mail_stor /dev/sd[b-c]1
Volume group "mail_stor" successfully created
[root@localhost ~]# vgscan '//扫描卷组'
Reading volume groups from cache.
Found volume group "mail_stor" using metadata type lvm2
[root@localhost ~]# vgdisplay '//查看卷组详细信息'
--- Volume group ---
VG Name mail_stor
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB
VG UUID iEKi0I-hg0i-it0a-cOwe-DfPj-FkXs-fnSP4N
5.6 创建逻辑卷
[root@localhost ~]# lvcreate -L 20G -n mbox mail_stor
Logical volume "mbox" created.
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/mail_stor/mbox
LV Name mbox
VG Name mail_stor
LV UUID VXD0B0-wxqV-wXgk-b7N4-GEPE-c1au-u6nGBs
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2019-11-04 14:45:59 +0800
LV Status available
# open 0
LV Size 20.00 GiB
Current LE 5120
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
5.7 格式化逻辑卷
[root@localhost 1]# mkfs.xfs /dev/mail_stor/mbox
meta-data=/dev/mail_stor/mbox isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, 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
5.8 创建挂载点,设置自动挂载
[root@localhost 1]# mkdir mailbox
[root@localhost 1]# vim /etc/fstab
5.9 启用挂载
[root@localhost 1]# mount -a
[root@localhost 1]# df -hT '//查看是否挂载成功'
5.10给逻辑卷扩容10G
[root@localhost 1]# lvextend -L +10G /dev/mail_stor/mbox
Size of logical volume 1/11 changed from 20.00 GiB (5120 extents) to 30.00 GiB (7680 extents).
Logical volume 1/11 successfully resized.