Linux 磁盘组划分详细介绍
基本概念:
磁盘、分区、物理卷【物理部分】
卷组【中间部分】
逻辑卷、文件系统【虚拟化后可控制部分】
1. pv vg lv 物理 卷组 逻辑
pvdisplay
vgdisplay
lvdisplay
pvs
vgs
lvs
2.查看文件系统及其挂载点
# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 26G 16G 8.7G 64% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 504M 37M 443M 8% /boot
/dev/sdb1 109G 69G 35G 67% /var/lib/mysql
文件系统可以是逻辑卷,也可以直接为物理分区。
/dev/mapper/VolGroup-lv_root 逻辑卷
/dev/sdb1 物理分区
3.磁盘信息查看
# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
64 heads, 32 sectors/track, 30720 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006dbeb
Device Boot Start End Blocks Id System
/dev/sda1 * 2 513 524288 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 514 4609 4194304 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 4610 30720 26737664 83 Linux
Partition 3 does not end on cylinder boundary.
Disk /dev/sdb: 118.1 GB, 118111600640 bytes
255 heads, 63 sectors/track, 14359 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x276e626e
Device Boot Start End Blocks Id System
/dev/sdb1 1 14359 115338636 83 Linux
两个物理硬盘:
Disk /dev/sda:
Disk /dev/sdb:
除了显示硬盘分区,同时显示逻辑卷信息,逻辑卷以vg_开头
fdisk /dev/sdb 对物理磁盘进行分区。
案例操作:
扩容;/ 目录增加8G
机器原本/目录有22G,属于逻辑卷。因此可以直接增加,如果是直接的物理磁盘,则不能在该目录扩容
[root@mysqlsource]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-LogVol01
22G 16G 4.7G 77% /
tmpfs 3.8G 224K 3.8G 1% /dev/shm
/dev/sda1 485M 34M 427M 8% /boot
新增加硬盘(/dev/sdb 16G):
[root@mysqlsource]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
64 heads, 32 sectors/track, 30720 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008c51d
Device Boot Start End Blocks Id System
/dev/sda1 * 2 501 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 502 30720 30944256 8e Linux LVM
Partition 2 does not end on cylinder boundary.
Disk /dev/mapper/VolGroup-LogVol01: 23.1 GB, 23089643520 bytes
255 heads, 63 sectors/track, 2807 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/VolGroup-LogVol00: 8594 MB, 8594128896 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb: 17.2 GB, 17179869184 bytes
64 heads, 32 sectors/track, 16384 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
可以对/dev/sdb 进行分区
fdisk /dev/sdb
看到新建分区sdb1
fdisk -l
然后对sdb1创建成物理卷,也可以直接把/dev/sdb创建成物理卷
创建物理卷:
[root@mysqlsource ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
查看卷组 VolGroup
[root@mysqlsource ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup 1 2 0 wz--n- 29.51g 0
新建的物理分区,分配到卷组VolGroup
[root@mysqlsource ~]# vgextend VolGroup /dev/sdb
Volume group "VolGroup" successfully extended
查看需要新增的lv卷
[root@mysqlsource ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
LogVol00 VolGroup -wi-ao--- 8.00g
LogVol01 VolGroup -wi-ao--- 21.50g
增加lv卷lvextend -L +[??]g /dev/[vg]/[lv] (加8G)
[root@mysqlsource ~]# lvextend -L +8G /dev/VolGroup/LogVol01
Extending logical volume LogVol01 to 29.50 GiB
Logical volume LogVol01 successfully resized
在线扩容 resize2fs /dev/[vg]/[lv]
[root@mysqlsource ~]# resize2fs /dev/VolGroup/LogVol01
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/VolGroup/LogVol01 is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 2
Performing an on-line resize of /dev/VolGroup/LogVol01 to 7734272 (4k) blocks.
The filesystem on /dev/VolGroup/LogVol01 is now 7734272 blocks long.
空间已扩展为30G
[root@mysqlsource ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-LogVol01
30G 16G 13G 56% /
tmpfs 3.8G 224K 3.8G 1% /dev/shm
/dev/sda1 485M 34M 427M 8% /boot
vgs可以看到VolGroup扩展了容量,VFreee是剩下可用容量,如果显示8.00G,
[root@mysqlsource ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup 2 2 0 wz--n- 45.50g 8.00g
[root@mysqlsource ~]#
把剩余8G加上
[root@mysqlsource ~]# lvextend -L +8G /dev/VolGroup/LogVol01
Extending logical volume LogVol01 to 37.50 GiB
Insufficient free space: 2048 extents needed, but only 2047 available
[root@mysqlsource ~]#
[root@mysqlsource ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-LogVol01
30G 16G 13G 56% /
tmpfs 3.8G 224K 3.8G 1% /dev/shm
/dev/sda1 485M 34M 427M 8% /boot
[root@mysqlsource ~]# resize2fs /dev/VolGroup/LogVol01
resize2fs 1.41.12 (17-May-2010)
The filesystem is already 7734272 blocks long. Nothing to do!
[root@mysqlsource ~]# lvextend -L +7G /dev/VolGroup/LogVol01
Extending logical volume LogVol01 to 36.50 GiB
Logical volume LogVol01 successfully resized
[root@mysqlsource ~]# resize2fs /dev/VolGroup/LogVol01
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/VolGroup/LogVol01 is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/VolGroup/LogVol01 to 9569280 (4k) blocks.
The filesystem on /dev/VolGroup/LogVol01 is now 9569280 blocks long.
[root@mysqlsource ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup 2 2 0 wz--n- 45.50g 1020.00m
[root@mysqlsource ~]#
新建逻辑卷并且挂载磁盘
fdisk /dev/sdc 进行分区,分成一个/dev/sdbc1物理磁盘
pvcreate:
[root@mysqlsource ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created
pvremove:
[root@mysqlsource ~]# pvremove /dev/sdc1
Labels on physical volume "/dev/sdc1" successfully wiped
vgcreate:
[root@mysqlsource ~]# vgcreate VolGroup1 /dev/sdc1
Volume group "VolGroup1" successfully created
[root@mysqlsource ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup 2 2 0 wz--n- 45.50g 1020.00m
VolGroup1 1 0 0 wz--n- 1020.00m 1020.00m
[root@mysqlsource ~]#
vgremove:
[root@mysqlsource ~]# vgremove VolGroup1
Volume group "VolGroup1" successfully removed
[root@mysqlsource ~]#
lvcreate:
[root@mysqlsource ~]# lvcreate -n LogVol02 -L 1020m VolGroup1
Logical volume "LogVol02" created
[root@mysqlsource ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
LogVol00 VolGroup -wi-ao--- 8.00g
LogVol01 VolGroup -wi-ao--- 36.50g
LogVol02 VolGroup1 -wi-a---- 1020.00m
[root@mysqlsource ~]#
lvremove:
[root@mysqlsource ~]# lvremove /dev/VolGroup1/LogVol02
Do you really want to remove active logical volume LogVol02? [y/n]: y
Logical volume "LogVol02" successfully removed
[root@mysqlsource ~]#
[root@mysqlsource ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
LogVol00 VolGroup -wi-ao--- 8.00g
LogVol01 VolGroup -wi-ao--- 36.50g
LogVol02 VolGroup1 -wi-a---- 1020.00m
格式化文件系统
[root@mysqlsource ~]# mkfs.ext4 /dev/VolGroup1/LogVol02
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65280 inodes, 261120 blocks
13056 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
8160 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@mysqlsource ~]#
[root@mysqlsource ~]#
[root@mysqlsource ~]# mkdir /test
挂载文件系统
[root@mysqlsource ~]# mount /dev/VolGroup1/LogVol02 /test
查看
[root@mysqlsource ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-LogVol01
36G 16G 19G 46% /
tmpfs 3.8G 224K 3.8G 1% /dev/shm
/dev/sda1 485M 34M 427M 8% /boot
/dev/mapper/VolGroup1-LogVol02
1004M 18M 936M 2% /test
[root@mysqlsource ~]#
/home的挂载设备对应的逻辑卷非常大,但是/挂载的逻辑卷空间较小,需要减小/home逻辑卷,加大/对应的逻辑卷。
umount /home【首先必须卸下挂载点,umount时相关设备必须是空闲的,但是像/及/root有些系统服务无法被 终止,也就无法umount,因此像/ /root这些挂载点最好安装的时候最好就有所规划,但是我们可以让他扩大还是没有问题】
在umount过程中如果有设备占用情况可使用
fuser -m -k /home终止相关进程,再次umount /home成功
df 看不到 /home挂载点
必须先检测设备映射
e2fsck -f /dev/mapper/vg_dbcentos6-lv_home
减小/home大小,原有4G,减小到1G
resize2fs /dev/mapper/vg_dbcentos6-lv_home 1G
重新挂载
mount /dev/mapper/vg_dbcentos6-lv_home /home
df -h 看到/home只剩1G了
以上只是减少了文件设备的大小,还要进一步减小对应逻辑卷大小
lvresize -L 1G /dev/mapper/vg_dbcentos6-lv_home【此过程会提示可能丢数据,如果有必要,请先备份
/home下数据在做操作】
lvresize -L +3GM /dev/mapper/vg_dbcentos6-lv_root【lv_root逻辑卷新增3G】
resize2fs /dev/mapper/vg_dbcentos6-lv_root 【这个命令不带参数,表示把多出来的容量都加到当前文件系统】
df -h【看到容量增加了】
总结一下案例2的过程,先umount、接下来efsck -f、接下来resize2fs要减小的文件系统、mount文件系统、
lvresize要减小的逻辑卷、lvresize要增大的逻辑卷、resize2fs要增大的文件系统。