Windows系统存储结构
windows系统新加一块硬盘后,需要进行格式化,再进行盘符分配如D盘、确定文件系统如ntfs后格式化,再分区,此时磁盘在操作系统中变成了卷,后期还可以方便的对卷进行分割和合并等操作,这一切都是在图形界面中进行,方便快捷,如下图:
如图,四块磁盘,一块1T,一块512G,两块各2T,其中两块2T的做了RAID0,此时在系统的磁盘管理器就识别为三个物理卷,即磁盘0/1/2,之后根据需求进行分区划分为逻辑卷,如磁盘0分为两个区并分配盘符C和F,并分配文件系统ntfs后格式化,之后C和F就成为系统中识别的数据盘可以正常使用了。
Linux系统存储结构
windows系统由于友好的图形界面,使用起来比较方便,但是linux系统就没有这么友好了,需要通过命令行的方式进行分区、配置文件系统等。
Linux系统中所有对象都以文件的方式存储,包括硬盘,如我们将加入一个硬盘到linux系统中,经过fdisk格式化成一个分区后,在系统中这个硬盘会生成一个如dev/sda的文件。
存储结构
如图,linux中同样也有很多存储系统的组件,分别是LVM、PV、VG、LV以及文件系统如EXT、XFS等。
LVM
即逻辑卷管理,Logical Volume Manager,相当于windows中的磁盘管理,它将几个实体的partitions (或 disk) 通过软件组合成为一块看起来是独立的大磁盘 (VG) ,然后将这块大磁盘再经过分区成为可使用分区 (LV), 最终就能够挂载使用了。
PE/LE
PE即物理区块,Physical Extent,可以理解为可分割容量的最小容量单位,LE同理,不过随着CentOS6.0使用LVM2后,这个限制就不存在了。
PV
即物理卷,Physical Volume,LVM把操作系统识别到的物理磁盘加上了一个识别码然后改了个叫法,物理卷可以是一个磁盘,也可以是Raid后的逻辑硬盘。
VG
即卷组,Volume Group, 就是 LVM 将多个PV组合起来的大的虚拟磁盘。
LV
即逻辑卷,将VG划分为多个LV之后,划分之后的LV进行格式化和分配文件系统后就可以挂载给使用了。
给linux系统加硬盘的步骤
如图,我们可以将4块硬盘sda、sdb、sdc、sdd,分成7个物理卷,其中sdc分三个,然后分为两个卷组,上面共分为五个逻辑卷:
1.创建物理卷
创建物理卷可以使用磁盘直接创建物理卷,也可以使用磁盘分区创建物理卷,两者略有区别:
①使用磁盘直接创建物理卷使用fdisk格式化后使用pvcreate直接创建。
②使用磁盘分区创建物理卷,使用fdisk分区并格式化后,默认分区id为83,修改为8e后使用pvcreate创建。
2.创建卷组
使用vgcreate创建卷组、使用vgextend扩容卷组。
3.创建逻辑卷
使用lvcreate创建逻辑卷、使用lvextend扩容逻辑卷。
4.创建文件系统并挂载给指定挂载点
使用mkfs为lv创建文件系统,使用mkdir创建挂载点,使用mount挂载lv卷到文件挂载点。
※如果想增大挂载点空间,需要使用lvextend扩容逻辑卷,扩容后使用resize2fs调整文件系统大小才算扩容完成。
操作示例
以下详细的操作过程的示例,转自CSDN-满格:
1.创建物理卷
创建物理卷是创建逻辑卷的第一步,创建物理卷相关命令有:
# pvcreate用于创建物理卷
pvcreate /dev/sdb
# pvdisplay、pvsca、pvs用于查看物理卷
pvdisplay
pvs
pvscan
1.1使用磁盘直接创建物理卷
直接使用物理磁盘创建物理卷没有什么需要特别注意的,直接创建即可。
# 使用fdisk -l确认磁盘,可以看到/dev/sdb未做分区处理
[root@masterdb ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 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
# 使用pvcreate将sdb磁盘创建为物理卷
[root@masterdb ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
# 使用pvdisplay确认物理卷信息
[root@masterdb ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name centos
PV Size <68.73 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 17593
Free PE 0
Allocated PE 17593
PV UUID FRxq7G-1XWu-dPeW-wEwO-322y-M9XR-0ExebA
"/dev/sdb" is a new physical volume of "2.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 2.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID nsL75f-o3fD-apyz-SSY0-miUi-4RYf-zVLIT6
# 也可以使用pvs确认物理卷信息,不过能够看到的信息比pvdisplay少
[root@masterdb ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 centos lvm2 a-- 68.72g 0
/dev/sdb lvm2 --- 2.00g 2.00g
[root@masterdb ~]#
1.2使用磁盘分区创建物理卷
磁盘分区之后,磁盘id为83,如果要使用逻辑卷管理,需要将id改为8e,才能创建物理卷。
分区1修改id过程如下:
[root@masterdb ~]# fdisk /dev/sdc
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): t #t可以修改分区代码
Partition number (1,2, default 2): 1 #选择1分区进行修改
Hex code (type L to list all codes): L #如果不知道类型,可以用”L”列出可以选择的修改代码
Hex code (type L to list all codes): 8e #选择8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): w # 保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@masterdb ~]#
按照上面的过程,修改分区2,最终结果如下:
接着进行创建物理卷(PV)即可:
[root@masterdb ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created.
[root@masterdb ~]# pvcreate /dev/sdc2
Physical volume "/dev/sdc2" successfully created.
2.创建、扩容卷组
2.1创建卷组
# 使用vgcreate创建卷组
vgcreate VG_NAME device1 ... devicen
# 使用vgdosplay、vgscan、vgs命令查看卷组
vgdisplay
vgscan
vgs
接下来演示使用sdb和sdc1创建一个卷组VG_TEST。
# 使用vgcreate创建卷组VG_TEST,包含物理卷:/dev/sdb和/dev/sdc1
[root@masterdb ~]# vgcreate VG_TEST /dev/sdb /dev/sdc1
Volume group "VG_TEST" successfully created
# 查看方法一:使用vgdisplay查看卷组信息
[root@masterdb ~]# vgdisplay
--- Volume group ---
VG Name VG_TEST
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 2.99 GiB
PE Size 4.00 MiB
Total PE 766
Alloc PE / Size 0 / 0
Free PE / Size 766 / 2.99 GiB
VG UUID DmY2Nz-ietc-2Y8Y-7A1b-1cpT-qEeV-XrgURn
...
# 查看方法二:使用vgscan查看卷组信息
[root@masterdb ~]# vgscan
Reading volume groups from cache.
Found volume group "VG_TEST" using metadata type lvm2
Found volume group "centos" using metadata type lvm2
# 查看方法三:使用vgs查看卷组信息
[root@masterdb ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VG_TEST 2 0 0 wz--n- 2.99g 2.99g
centos 1 4 0 wz--n- 68.72g 0
2.2扩容卷组
如果在使用过程中,发现要使用的空间大于卷组的空间,可以对卷组进行扩容,把新的物理卷(PV)加入到卷组中,语法为
vgextend VG_NAME device1 ... devicen
接下来演示将sdc2加入到卷组VG_TEST中。
# 使用vgextend扩容卷组VG_TEST
[root@masterdb ~]# vgextend VG_TEST /dev/sdc2
Volume group "VG_TEST" successfully extended
最终结果如下,发现PV数量和VG容量都发生了变化
3.创建、扩容逻辑卷
3.1创建逻辑卷
# 使用lvcreate创建逻辑卷
lvcreate –L SIZE –n LV_NAME VG_NAME
#使用lvdisplay、lvscan、lvs查看逻辑卷
lvdisplay
lvscan
lvs
接下来演示使用VG_TEST创建逻辑卷lv_test
# 使用lvcreate创建逻辑卷lv_test
[root@masterdb ~]# lvcreate -L 1g -n lv_test VG_TEST
Logical volume "lv_test" created.
# 查看方法一:使用lvdisplay查看逻辑卷
[root@masterdb ~]# lvdisplay
--- Logical volume ---
LV Path /dev/VG_TEST/lv_test
LV Name lv_test
VG Name VG_TEST
LV UUID RqWMOG-wCJJ-deu4-dIgv-c5hI-Bsqa-FHgh4E
LV Write Access read/write
LV Creation host, time masterdb, 2020-05-13 22:42:45 +0800
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:4
...
# 查看方法二:使用lvscan查看逻辑卷
[root@masterdb ~]# lvscan
ACTIVE '/dev/VG_TEST/lv_test' [1.00 GiB] inherit
ACTIVE '/dev/centos/mysql' [<45.00 GiB] inherit
ACTIVE '/dev/centos/swap' [<3.73 GiB] inherit
ACTIVE '/dev/centos/home' [10.00 GiB] inherit
ACTIVE '/dev/centos/root' [10.00 GiB] inherit
# 查看方法三:使用lvs查看逻辑卷
[root@masterdb ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_test VG_TEST -wi-a----- 1.00g
home centos -wi-ao---- 10.00g
mysql centos -wi-ao---- <45.00g
root centos -wi-ao---- 10.00g
swap centos -wi-ao---- <3.73g
创建完lv之后,格式化挂载即可使用
# 创建文件系统
[root@masterdb ~]# mkfs.ext3 /dev/VG_TEST/lv_test
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
# 创建挂载点
[root@masterdb ~]# mkdir /test
# 挂载文件系统
[root@masterdb ~]# mount /dev/VG_TEST/lv_test /test
# 确认结果
[root@masterdb ~]# df –h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 10G 4.1G 5.9G 42% /
...
/dev/mapper/VG_TEST-lv_test 976M 1.3M 924M 1% /test
3.2扩容逻辑卷
使用如下命令进行扩容
# 使用lvextend扩容lv,+SIZE代表增加的空间
lvextend -L +SIZE lv_device
# 调整文件系统的大小
resize2fs device lv_device
接下来演示使用对逻辑卷lv_test扩容500M。
扩容前文件磁盘大小如下:
进行扩容操作:
# 对lv进行扩容,增加500M空间
[root@masterdb ~]# lvextend -L +500M /dev/VG_TEST/lv_test
Size of logical volume VG_TEST/lv_test changed from 1.00 GiB (256 extents) to <1.49 GiB (381 extents).
Logical volume VG_TEST/lv_test successfully resized.
之后查看磁盘大小,未发生改变:
调整文件系统的大小:
# 使用resize2fs调整文件系统的大小
[root@masterdb ~]# resize2fs /dev/VG_TEST/lv_test
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/VG_TEST/lv_test is mounted on /test; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/VG_TEST/lv_test is now 390144 blocks long.
确认磁盘大小已经发生了改变:
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://tenkms.cn/archives/362
共有 0 条评论