磁盘文件管理(第二部)
接下来学习
->LVM逻辑卷的创建和管理
->磁盘配额的设置方法
先看理论
许多Linux使用者在安装系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初当初估计不准确,一旦分区不够使用时可能不得不备份,删除相关的数据,甚至被迫重新规划分区并重新安装操作系统,以满足应用系统需要。
本小结将通过LVM逻辑卷管理机制的学习,掌握动态调整Linux分区容量的方法。
LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制,它建立在硬盘和分区之上,文件系统之下的一个逻辑层,能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘的管理的灵活性。
1.1 PV(PhysicalVolume,物理卷)
物理卷是LVM机制的基本存储设备,通常对应一个普通分区或整个硬盘,创建物理卷时,会在分区或硬盘的头部创建一个保留区块(PE,Physical Extent) 从而构成物理卷。(物理卷一般直接使用设备文件名称。如/dev/sdb1、/dev/sdb2、/dev/sdd等..)
对于转换成物理卷的普通分区,建议先使用fdisk工具,将分区类型的ID号改为“8e”。若是整个硬盘,可以将所有磁盘空间划分一个主分区后在作相应调整
1.2 VG(Volume Group,卷组)
是由一个或多个物理卷组成一个整体,既称为卷组,在卷组中可以动态添加或移出物理卷,
1.3 LV (Logical Volume,逻辑卷)
逻辑卷是建立在卷组之上,与物理卷没有直接关系,对于逻辑卷来说,每个卷组就是一个整体,从这个整体中 "切出" 一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷。(使用mkfs等分区工具在逻辑卷上创建文件系统以后,就可以挂载到Linux系统中的目录下使用。)
通过上述对物理卷,卷组,逻辑卷的解释可以看出,建立LVM分区管理机制的过程就是,首先将普通分区或整个硬盘创建为物理卷,接下,将物理卷上比较分散的各个物理卷的存储空间组成组成一个逻辑整体,卷组:最后,基于卷组这个整体,分割不同的数据存储空间,形成逻辑卷,逻辑卷才是最终用户可以格式化并且挂载使用的存储单位。
LVS的管理命令
为了便于理解,先用fdisk工具现在磁盘设备"/dev/sdb"中划分三个主分区 sdb1 sdb2
sdb3,每个磁盘大小为20G ,将ID号改为8e。若是分区已被挂载,必须先进行卸载,在进行分区调整操作。
功能 PV管理命令 VG管理命令 LV管理命令
Scan扫描 Pvscan vgscan lvscan
Create建立 pvcreate vgcreate lvcreate
Display显示 pvdisplay vgdisplay lvdisplay
Remove移出 pvremove vgremove lvremove
Extend扩展 vgextend lvextend
Reduce减少 vgreduce lvreduce
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-7832, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G}(1-7832, default 7832): +20000M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (2552-7832, default 2552):
Using default value 2552
Last cylinder, +cylinders or +size{K,M,G}(2552-7832, default 7832): +20000M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (5103-7832, default 5103):
Using default value 5103
Last cylinder, +cylinders or +size{K,M,G}(5103-7832, default 7832): +20000M
Command (m for help): p
Disk /dev/sdb: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0xa53c58e2
Device Boot Start End Blocks Id System
/dev/sdb1 1 2551 20490876 83 Linux
/dev/sdb2 2552 5102 20490907+ 83 Linux
/dev/sdb3 5103 7653 20490907+ 83 Linux
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e(Linux LVM)
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e(Linux LVM)
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e(Linux LVM)
Command (m for help): p
Disk identifier: 0xa53c58e2
Device Boot Start End Blocks Id System
/dev/sdb1 1 2551 20490876 8e Linux LVM
/dev/sdb2 2552 5102 20490907+ 8e Linux LVM
/dev/sdb3 5103 7653 20490907+ 8e Linux LVM
1. PV物理卷管理
pvscan 命令用于扫描系统中的说有物理卷,并输出相关信息
pvscan
PV/dev/sdb1 lvm2[19.54 GiB]
PV/dev/sdb2 lvm2[19.54 GiB]
PV/dev/sdb3 lvm2[19.54 GiB]
Total: 3 [58.62 GiB] / in use: 0 [0 ] / in no VG: 3 [58.62 GiB]
pvcreate命令用于分区或整个硬盘转换成物理卷。主要是添加LVM属性信息并划分PE存储单位。例如将/dev/sdb1 /dev/sdb2 /dev/sdb3转换成物理卷。
pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
Physical volume"/dev/sdb1" successfully created
Physical volume "/dev/sdb2"successfully created
Physical volume "/dev/sdb3"successfully created
pvdisplay用于显示物理卷的详细信息,需要指定物理卷作为命令参数。例如pvdisplay /dev/sdb3 命令可以查看物理卷/dev/sdb3的详细信息。
pvdisplay /dev/sdb3
"/dev/sdb3" is a new physical volume of "19.54 GiB"
---NEW Physical volume ---
PVName /dev/sdb3
VGName
PVSize 19.54 GiB
Allocatable NO
PESize 0
Total PE 0
Free PE 0
Allocated PE 0
PVUUID 1b0U7f-dXic-7pgx-CYX0-JU44-9xTT-UzKexG
pvremove命令用于将物理卷还原成普通分区或磁盘,不在用于LVM体系,被移出的物理卷将无法pvscan识别,例如"pvremove /dev/sdb3"命令可以将物理卷/dev/sdb3从LVM体系中移出。
pvremove /dev/sdb3
/dev/cdrom:openfailed : 只读文件系统
Attemptto close device ‘/dev/cdrom‘ which is not open.
Lableson physical volume "/dev/sdb3" successfully woped
创建时不要做这步
2. VG卷组管理
vgscan命令用于扫描系统中以建立的LVM卷组及相关信息。
vgscan
Reading all physical volumes. This may take a while...
Found volume group "VG" usingmetadata type lvm2
vgcreate 命令用于将一个或多个物理卷创建为一个卷组,第一个命令参数用于设置新卷组的
名称,其后依次指定需要加入到该卷组的物理卷做为参数。例如:
vgcreateVG /dev/sdb1 /dev/sdb2
Volume group "VG" successfullycreated
vgdisplay命令用于显示系统中各卷的详细信息。
vgdisplayVG
--- Volume group ---
VG Name VG
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.08 GiB
PE Size 4.00 MiB
Total PE 10004
Alloc PE / Size 0 / 0
Free PE / Size 10004 / 39.08 GiB
VG UUID Cr7Pai-Sk8C-9iD0-akCQ-9Qjz-sY40-eVuFwn
vgremove命令用于删除指定的卷组,指定卷组名称作为参数既可。
vgremove VG
Volumegroup "VG" successfully removed
vgextend命令用于扩展卷组的磁盘空间。当创建了新的物理卷,并需要将其添加到已有卷组中时,就可以使用vgextend命令。该命令的第一个参数为需要扩展容量的卷组名称,其后为需要添加到该卷组的各物理卷。例如,一下操作将重新创建卷组VG,之包含物理卷"/dev/sdb1",然后通过vgextend命令将物理卷"/dev/sdb2"添加到卷组VG中。
LV逻辑卷管理
lvscan命令使用
lvcreate命令用于从指定的卷组中分割空间。例如:从VG卷组中建立一个新的逻辑卷,容量为10G,名称为benet。
lvcreate-L 10G -n benet VG
Logical volume "benet" created
lvdisplay命令用于显示逻辑卷相许信息,需要指定逻辑卷的设备文件作为参数也可以使用卷组名作为参数,以显示该卷组中所有逻辑卷的信息,例如:!!!
lvdisplay/dev/VG/benet
--- Logical volume ---
LV Path /dev/VG/benet
LV Name benet
VG Name VG
LV UUID u3CPkX-4Kci-7Ah9-I5Ci-31ND-PdSB-LUEnhT
LV Write Access read/write
LV Creation host, time Centos, 2015-09-0504:05:28 +0800
LV Status available
# open 0
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
lvextend命令用于动态扩展逻辑卷的空间,当前使用的逻辑卷空间不足时,可以从所在的卷组中分割额外的空间进行扩展。
lvextend-L +5G /dev/VG/benet
Extending logical volume benet to 15.00 GiB
Logical volume benet successfully resized
lvdisplay/dev/VG/benet
--- Logical volume ---
LV Path /dev/VG/benet
LV Name benet
VG Name VG
LV UUID u3CPkX-4Kci-7Ah9-I5Ci-31ND-PdSB-LUEnhT
LV Write Access read/write
LV Creation host, time Centos, 2015-09-0504:05:28 +0800
LV Status available
# open 0
LV Size 15.00 GiB
Current LE 3840
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
lvremove命令用于删除指定的逻辑卷直接使用逻辑的设备文件作为参数即可,例如:!!!
lvremove/dev/VG/benet
Do you really want to remove acticvelogical volume ‘benet‘?[y/n ]:y
Logical volume"benet" successfully remove
LVM应用实例:
1.关闭服务器主机,打开机箱,正确挂载两块SCSI新硬盘。
2.开启服务器主机,并执行"fdisk -l" 命令进行查看,确认已识别新增的硬盘(sdb、sdc)。
3.在新磁盘中进行分区,将每块硬盘的所有空间划分一个独立的主分区,并将分区类型更改文件8e 。分好区后使用"fdisk -l" 命令查看,确认结果如下。
disk -l/dev/sdb /dev/sdc
Diskidentifier: 0xa53c58e2
Device Boot Start End Blocks Id System
/dev/sdb1 1 2551 20490876 8e Linux LVM
/dev/sdb2 2552 5102 20490907+ 8e Linux LVM
/dev/sdb3 5103 7653 20490907+ 8e Linux LVM
4. 将/devsdb1和/dev/sdc1 分区转换为物理卷。
pvcreate /dev/sdb1/dev/sdc1
Physical volume "/dev/sdc1"successfully created
5. 将上述两个物理卷整合,创建名为VG的卷组
vgcreateVG /dev/sdb1 /dev/sdc1
Volumegroup "VG" successfully created
6. VG卷组中创建一个名为benet的逻辑卷,容量为120G
lvreate-L 120G -n benet VG
Logicalvolume "benet" created
7.使用mkfs命令对逻辑卷benet进行格式化,创建EXT3文件系统,并挂载/mailbox目录下。
mkfs -text3 /dev/VG/benet
mkdir/dtylt
mount/dev/VG/benet /dtylt
df -hT/dtylt
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VG-benetext3 15G 166M 14G 2% /dtylt