第一步 :pvcreate /dev/vdb 创建物理卷
第二步 :vgcreate VolGroup01 /dev/vdb 创建卷组
第三步 : lvcreate -L 199G -n data VolGroup01 创建虚拟卷
第四部 :mkfs.ext4 /dev/VolGroup01/data 格式化虚拟卷
第五步 :mount -t ext4 /dev/VolGroup01/data /data2 挂载虚拟卷
以上是我一次操作步骤
以下是增加卷组空间的操作
[root@host]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
19G 18G 536M 98% /
tmpfs 32G 0 32G 0% /dev/shm
/dev/vda1 97M 32M 60M 35% /boot
/dev/mapper/VolGroup01-data
196G 158G 29G 85% /data
/dev/vda3 79G 74G 1.5G 99% /data2
准备将/dev/vda3加入到卷组 VolGroup01-data
umount /dev/vda3 先卸载要加入的空间
[root@host]# pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 VolGroup00 lvm2 a-- 19.88g 0
/dev/vdb VolGroup01 lvm2 a-- 200.00g 1020.00m
vgextend VolGroup01 /dev/vda3 加入到卷组
[root@host]# pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 VolGroup00 lvm2 a-- 19.88g 0
/dev/vda3 lvm2 a-- 80.00g 80.00g
/dev/vdb VolGroup01 lvm2 a-- 200.00g 1020.00m
[root@host]# vgextend VolGroup01 /dev/vda3
Volume group "VolGroup01" successfully extended
[root@host]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup00 1 2 0 wz--n- 19.88g 0
VolGroup01 2 1 0 wz--n- 279.99g 80.99g
[root@host]# pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 VolGroup00 lvm2 a-- 19.88g 0
/dev/vda3 VolGroup01 lvm2 a-- 80.00g 80.00g
/dev/vdb VolGroup01 lvm2 a-- 200.00g 1020.00m
[root@host]# lvextend -L 270G /dev/mapper/VolGroup01-data
Extending logical volume data to 270.00 GiB
Logical volume data successfully resized
[root@host]#
[root@host]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
LogVol00 VolGroup00 -wi-ao--- 18.88g
LogVol01 VolGroup00 -wi-ao--- 1.00g
data VolGroup01 -wi-ao--- 270.00g
[root@host]# lvextend -L 275G /dev/mapper/VolGroup01-data
Extending logical volume data to 275.00 GiB
Logical volume data successfully resized
[root@host]#
[root@host]#
[root@host]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup00 1 2 0 wz--n- 19.88g 0
VolGroup01 2 1 0 wz--n- 279.99g 4.99g
[root@host]# resize2fs /dev/mapper/VolGroup01-data
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/VolGroup01-data is mounted on /data; on-line resizing required
old desc_blocks = 13, new_desc_blocks = 18
Performing an on-line resize of /dev/mapper/VolGroup01-data to 72089600 (4k) blocks.
The filesystem on /dev/mapper/VolGroup01-data is now 72089600 blocks long.
[root@host]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
19G 18G 436M 98% /
tmpfs 32G 0 32G 0% /dev/shm
/dev/vda1 97M 32M 60M 35% /boot
/dev/mapper/VolGroup01-data
271G 158G 100G 62% /data
完毕
partprobe
cat /proc/partitions
第一步
fdisk /dev/vda
输入 p
输入 n
输入 p
输入 3 41612 回车
输入 w
重启机器
mkfs -t ext3 -c /dev/vda3
第二步
pvs
pvcreate /dev/vda3
pvs
vgs
vgextend rhel /dev/vda3
pvs
vgs
lvs
lvextend -L 180G /dev/rhel/root
[root@host-172-30-250-125 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz--n- 19.51g 0
[root@host-172-30-250-125 ~]#
[root@host-172-30-250-125 ~]#
[root@host-172-30-250-125 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
root rhel -wi-ao---- 17.51g
swap rhel -wi-ao---- 2.00g
[root@host-172-30-250-125 ~]#
[root@host-172-30-250-125 ~]# pvcreate /dev/vda3
WARNING: ext3 signature detected on /dev/vda3 at offset 1080. Wipe it? [y/n] y
Wiping ext3 signature on /dev/vda3.
Physical volume "/dev/vda3" successfully created
[root@host-172-30-250-125 ~]#
[root@host-172-30-250-125 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz--n- 19.51g 0
[root@host-172-30-250-125 ~]#
[root@host-172-30-250-125 ~]# vgextend rhel /dev/vda3
Volume group "rhel" successfully extended
[root@host-172-30-250-125 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 2 2 0 wz--n- 199.50g 180.00g
[root@host-172-30-250-125 ~]# lvextend -L 180G /dev/rhel/root
Extending logical volume root to 180.00 GiB
Logical volume root successfully resized
[root@host-172-30-250-125 ~]#
[root@host-172-30-250-125 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 2 2 0 wz--n- 199.50g 17.50g
[root@host-172-30-250-125 ~]#
[root@host-172-30-250-125 ~]#
[root@host-172-30-250-125 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
root rhel -wi-ao---- 180.00g
swap rhel -wi-ao---- 2.00g
确认文件系统是xfs:
[root@backup binlog]# cat /etc/fstab | grep centos-home
/dev/mapper/centos-home /home xfs defaults 0 0
xfs用以下命令来扩磁盘空间:
[root@backup binlog]# xfs_growfs /dev/mapper/centos-home
meta-data=/dev/mapper/centos-home isize=256 agcount=6, agsize=118277632 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=709040128, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=231011, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 709040128 to 715331584
我最后执行是: xfs_growfs /dev/rhel/root
当前系统分区信息,当前系统有2块新硬盘,分别为20G
[root@server2 ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x0002777c
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 208813+ 83 Linux
/dev/sda2 27 1985 15735667+ 83 Linux
/dev/sda3 1986 2247 2104515 82 Linux swap / Solaris
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0xdee177d5
Device Boot Start End Blocks Id System
Disk /dev/sdc: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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
LVM相关命令解释
vg管理工具:
vgs #查看vg简要信息
vgdisplay #查看vg详细信息
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] #创建vg
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] #扩展vg容量
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] #缩减vg容量
vgremove VolumeGroupName #删除vg
lv管理工具:
lvs #查看lv简要信息
lvdisplay #查看lv详细信息
lvcreate -L #[mMgGtT] -n NAME VolumeGroup #创建lv
lvremove /dev/VG_NAME/LV_NAME #删除lv
扩展逻辑卷:
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME #扩展逻辑卷
resize2fs /dev/VG_NAME/LV_NAME #重新定义文件系统大小
缩减逻辑卷:
umount /dev/VG_NAME/LV_NAME #卸载lv
e2fsck -f /dev/VG_NAME/LV_NAME #检查lv
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] #重新定义lv大小
lvreduce -L [-] [mMgGtT] /dev/VG_NAME/LV_NAME #缩减lv
LVM创建
[root@server2 ~]# pvcreate /dev/sdb #将sdb硬盘添加到PV池中
Physical volume "/dev/sdb" successfully created
[root@server2 ~]# pvcreate /dev/sdc #将sdc硬盘添加到PV池中
Physical volume "/dev/sdc" successfully created
[root@server2 ~]# pvs #查看PV池
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 20.00g 20.00g
/dev/sdc lvm2 --- 20.00g 20.00g
[root@server2 ~]# vgcreate myvg /dev/sdb #创建名称为myvg的卷组,由/dev/sdb提供PE
Volume group "myvg" successfully created #提示vg创建成功
[root@server2 ~]# vgs #查看vg简要信息
VG #PV #LV #SN Attr VSize VFree
myvg 1 1 0 wz--n- 20.00g 10.00g
[root@server2 ~]# lvcreate -L 10G -n mylv myvg #在myvg下创建容量为10G、名称为mylv的lv
Logical volume "mylv" created.
[root@server2 ~]# lvs #查看lv简要信息
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 10.00g
[root@server2 ~]# mkfs.ext4 /dev/mapper/myvg-mylv #格式化lv为ext4文件系统
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
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@server2 ~]# mount /dev/mapper/myvg-mylv /mnt/ #将mylv挂载到/mnt下
[root@server2 ~]# df -lh #查看mylv分区使用情况
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 15G 3.4G 11G 25% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 194M 36M 148M 20% /boot
/dev/mapper/myvg-mylv
9.8G 23M 9.2G 1% /mnt
LVM扩展 我们现在想将mylv扩展到30G该如何操作? 应该先将myvg扩展到30G以上,在将mylv扩展到30G 操作过程
[root@server2 ~]# vgextend myvg /dev/sdc #扩展myvg,将sdc的空间也提供给myvg
Volume group "myvg" successfully extended
[root@server2 ~]# vgs #查看vg当前信息,myvg大小为40G
VG #PV #LV #SN Attr VSize VFree
myvg 2 1 0 wz--n- 39.99g 29.99g
[root@server2 ~]# umount /mnt/ #卸载mylv
[root@server2 ~]# lvextend -L 30G /dev/myvg/mylv #扩展lv到30G
Size of logical volume myvg/mylv changed from 10.00 GiB (2560 extents) to 30.00 GiB (7680 extents).
Logical volume mylv successfully resized
[root@server2 ~]# lvs #查看当前lv信息,mylv为30G
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 30.00g
[root@server2 ~]# mount /dev/mapper/myvg-mylv /mnt/ #挂载mylv到/mnt目录
[root@server2 ~]# df ##注意:这里显示mylv大小只有10G,这是因为我们没有进行重新定义
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 15357672 3527844 11043048 25% /
tmpfs 502384 0 502384 0% /dev/shm
/dev/sda1 198123 36589 151094 20% /boot
/dev/mapper/myvg-mylv
10190136 23028 9642820 1% /mnt
[root@server2 ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 15G 3.4G 11G 25% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 194M 36M 148M 20% /boot
/dev/mapper/myvg-mylv
9.8G 23M 9.2G 1% /mnt
[root@server2 ~]# resize2fs /dev/mapper/myvg-mylv #使用resize2fs可以重新定义分区的大小
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/myvg-mylv is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/mapper/myvg-mylv to 7864320 (4k) blocks.
The filesystem on /dev/mapper/myvg-mylv is now 7864320 blocks long.
[root@server2 ~]# df -lh #现在mylv大小终于恢复正常了
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 15G 3.4G 11G 25% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 194M 36M 148M 20% /boot
/dev/mapper/myvg-mylv
30G 28M 28G 1% /mnt
LVM缩减 缩减mylv到10G 操作过程
[root@server2 ~]# umount /mnt/ #先卸载挂载目录
[root@server2 ~]# resize2fs /dev/mapper/myvg-mylv 8G
resize2fs 1.41.12 (17-May-2010)
Please run 'e2fsck -f /dev/mapper/myvg-mylv' first. #提示需先使用e2fsck命令检查文件系统
[root@server2 ~]# e2fsck -f /dev/mapper/myvg-mylv #检查mylv文件系统
e2fsck 1.41.12 (17-May-2010)
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/mapper/myvg-mylv: 11/1966080 files (0.0% non-contiguous), 167409/7864320 blocks
[root@server2 ~]# resize2fs /dev/mapper/myvg-mylv 8G #使用resize2fs命令重新定义mylv分区大小
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/myvg-mylv to 2097152 (4k) blocks.
The filesystem on /dev/mapper/myvg-mylv is now 2097152 blocks long.
[root@server2 ~]# lvreduce -L 8G /dev/myvg/mylv #将mylv大小缩减成8G
WARNING: Reducing active logical volume to 8.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv? [y/n]: y
Size of logical volume myvg/mylv changed from 30.00 GiB (7680 extents) to 8.00 GiB (2048 extents).
Logical volume mylv successfully resized
[root@server2 ~]# lvs #查看mylv信息
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv myvg -wi-ao---- 8.00g
[root@server2 ~]# mount /dev/mapper/myvg-mylv /mnt/ 重新挂载
[root@server2 ~]# df -lh #查看分区大小
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 15G 3.4G 11G 25% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 194M 36M 148M 20% /boot
/dev/mapper/myvg-mylv
7.8G 36M 7.4G 1% /mnt
LVM快照创建
LVM快照简单来说就是将所快照源分区一个时间点所有文件的元数据进行保存,如果源文件没有改变,那么访问快照卷的相应文件则直接指向源分区的源文件,如果源文件发生改变,则快照卷中与之对应的文件不会发生改变。快照卷主要用于辅助备份文件。 这里只简单介绍 .
操作过程
[root@server2 mnt]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 15357672 3527924 11042968 25% /
tmpfs 502384 0 502384 0% /dev/shm
/dev/sda1 198123 36589 151094 20% /boot
/dev/mapper/myvg-mylv
8125880 36852 7669600 1% /mnt
[root@server2 mnt]# pwd #当前在mylv的分区中
/mnt
[root@server2 mnt]# cp -rf /etc/{grub.conf,sysconfig} ./ #复制/etc/sysconfig,/etc/grub.conf到当前目录(mylv中)
[root@server2 mnt]# ls #查看当前分区中的文件
grub.conf lost+found sysconfig
[root@server2 mnt]# lvcreate -s -n mylv-snap -L 8G /dev/myvg/mylv #创建mylv的快照卷mylv-snap
Logical volume "mylv-snap" created.
[root@server2 mnt]# lvs #查看lv的信息,出现了mylv-snap
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv myvg owi-aos--- 8.00g
mylv-snap myvg swi-a-s--- 8.00g mylv 0.00
[root@server2 mnt]# mkdir /mylv-snap #创建mylv-snap目录
[root@server2 mnt]# mount /dev/myvg/mylv-snap /mylv-snap/ #将mylv-snap挂载到/mylv-snap
[root@server2 mnt]# ll /mylv-snap/ #查看分区中的文件,和/mnt下一样
total 20
lrwxrwxrwx. 1 root root 22 Jan 4 16:01 grub.conf -> ../boot/grub/grub.conf
drwx------. 2 root root 16384 Jan 4 15:44 lost+found
drwxr-xr-x. 7 root root 4096 Jan 4 16:02 sysconfig
[root@server2 mnt]# cp /etc/rc.d/init.d/functions ./ #复制/etc/rc.d/init.d/functions到/mnt目录中
[root@server2 mnt]# ls #查看当前目录(/mnt,即是mylv)中的文件
functions grub.conf lost+found sysconfig
[root@server2 mnt]# ll /mylv-snap/ #查看/mylv-snap(即是mylv-snap)中的文件,发现并没有functions
total 20
lrwxrwxrwx. 1 root root 22 Jan 4 16:01 grub.conf -> ../boot/grub/grub.conf
drwx------. 2 root root 16384 Jan 4 15:44 lost+found
drwxr-xr-x. 7 root root 4096 Jan 4 16:02 sysconfig
把home目录缩减到50G,把根目录扩容到400G
第一步:逻辑卷的缩减,有风险,先缩减逻辑边界——再缩减物理边界
注意:
1、不能在线缩减,得先卸载;
2、确保缩减后的空间大小依然能存储原有的所有数据;
3、在缩减之前应该强行检查文件,确保文件系统处于一致性状态
df –lh
umount 卸载
e2fsck -f /PATH/TO/PV 强行文件系统检查,看是否有问题
开始缩减
用lvdisplay命令查看逻辑卷消息
resize2fs /PATH/TO/PV 50G
缩减(逻辑边界)为50G (缩减后的总共大小为50G)
lvreduce -L [-]# /PATH/TO/LV
缩减(物理边界)为50G
mount -a
重新挂在
下面为实际操作过程及结果:
[root@wlm ~]#
umount /dev/vg_wlm2/lv_home
[root@wlm ~]#
resize2fs /dev/vg_wlm2/lv_home 50G
resize2fs 1.41.12 (17-May-2010)
The filesystem is already 13107200 blocks long. Nothing to do!
[root@wlm ~]#
lvreduce -L 50G /dev/vg_wlm2/lv_home
WARNING: Reducing active logical volume to 50.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_home? [y/n]: y
Reducing logical volume lv_home to 50.00 GiB
Logical volume lv_home successfully resized
[root@wlm ~]# mount -a
[root@wlm ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_wlm2-lv_root 50G 38G 8.8G 82% /
tmpfs 1.4G 144K 1.4G 1% /dev/shm
/dev/sda1 485M 40M 420M 9% /boot
/dev/mapper/vg_wlm2-lv_home 50G 23G 25G 49% /home
注意:lv的物理路径要用lvdisplay查看,用df查看的只是挂载点
第二步:逻辑卷的扩张:先扩张物理边界———再扩张逻辑边界
把根目录扩张到400G
扩张物理边界
命令:lvextend
-L [+]# /PATH/TO/LV
扩展逻辑边界
resize2fs
resize2fs -p /PATH/TO/LV
注意:过程有点长,正常现象
下面为实际操作过程及结果:
[root@wlm ~]#
lvextend -L 400G /dev/vg_wlm2/lv_root
Extending logical volume lv_root to 400.00 GiB
Logical volume lv_root successfully resized
You have new mail in /var/spool/mail/root
[root@wlm ~]#
resize2fs -p /dev/vg_wlm2/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_wlm2/lv_root is mounted on /; on-line resizing required
old desc_blocks = 4, new_desc_blocks = 25
Performing an on-line resize of /dev/vg_wlm2/lv_root to 104857600 (4k) blocks.
The filesystem on /dev/vg_wlm2/lv_root is now 104857600 blocks long.
You have new mail in /var/spool/mail/root
步骤:
1.磁盘分区fdisk(这里省略,关于磁盘分区参照Linux Fdisk分区篇,记住更改分区格式8e-Linxu LVM分区格式)
2.
创建物理卷(physical volume),相关命令:pvcreate、pvremove、pvdisplay
3.卷组(volume group),相关命令:vgcreate、vgreduce、vgremove、vgdisplay、vgextend
4.逻辑卷(logic volumn),相关命令:lvcreate、lvremove、lvdisplay、lvextend
5.挂载逻辑卷
物理卷篇
创建物理卷
#pvcreate /dev/sda5
查看物理卷
#pvdisplay
卷组篇
卷组可以由一个或多个物理卷组成,当卷组空间不够时可以再新增物理卷扩容.
创建卷组
#
vgcreate vg1 /dev/sda5
新增卷组
#
vgextend vg1 /dev/sda6
删除卷组
#
vgreduce vg1 /dev/sda6
查看卷组
#vgdisplay
逻辑卷篇
逻辑卷建立在卷组基础之上的,所以在创建逻辑卷的时候一定要指定卷组名称.
创建逻辑卷
#
lvcreate -L 3G -n lvdisk1 vg1
显示逻辑卷
#lvdisplay
挂载逻辑卷
#mount -t ext4 /dev/vg1/lvdisk1
删除逻辑卷
#lvremove /dev/vg1/lvdisk1
扩容逻辑卷(卷组的可用范围内的容量值)
#
lvextend -L +1G /dev/vg1/lvdisk1
扩容生效
#
resize2fs /dev/vg1/lvdisk1
在Linux服务器中,当现有硬盘的分区规划不能满足要求时,就需要对硬盘中的分区进行重新规划和调整,有时候还需要添加新的硬盘设备来扩展存储空间。
实现上述操作要用到fdisk磁盘及分区管理工具,fdisk是大多数Linux系统中自带的基本工具之一。下面通过为Linux主机新增一块硬盘并建立分区的过程,介绍fdisk工具的使用。
一、检测并确认新硬盘
挂接好新的硬盘设备并启动主机后,Linux系统会自动检测并加载该硬盘,无需额外安装驱动。执行“fdisk -l”命令可以进行查看,确认新增硬盘的设备名称。
“fdisk -l”命令的作用是列出当前系统中所有硬盘设备及其分区的信息。
[例1]:执行“fdisk -l”命令,确认系统新识别的硬盘设备(/dev/sdb)。
上述输出信息中包含了各硬盘的整体情况和分区情况,其中“/dev/sda”为原有的硬盘设备,而“/dev/sdb”为新增的硬盘,新的硬盘设备还未进行初始化,没有包含有效的分区信息。
对于已有的分区,将通过列表的方式输出以下信息。
Device:分区的设备文件名称。
Boot:是否是引导分区,是,则有“*”标识。
Start:该分区在硬盘中的起始位置(柱面数)。
End:该分区在硬盘中的结束位置(柱面数)。
Blocks:分区的大小,以Blocks(块)为单位,默认的块大小为1024字节。
Id:分区类型的ID标记号,对于ext3分区为83,LVM分区为8e。
System:分区类型。
识别到新的硬盘设备后,接下来就可以在该硬盘中建立新的分区了。在Linux系统中,分区和格式化的过程是相对独立的。
二、规划硬盘中的分区
在硬盘设备中创建、删除、更改分区等操作同样通过fdisk命令进行,只要使用硬盘的设备文件作为参数,即可进入到交互式的分区管理界面中,如下图。
在该操作界面中的提示符后,用户可以输入特定的分区操作指令,完成各项分区管理任务,例如输入“m”指令后,可以查看各种操作指令的帮助信息,如下图。
在分区过程中常用的一些交互操作指令有:
1、m:查看操作指令的帮助信息
2、p:列表查看分区信息
3、n:新建分区
4、d:删除分区
5、t:变更分区类型
6、w:保存分区设置并退出
7、q:放弃分区设置并退出
在以上操作中应注意的有:
【1】:选择分区号时,主分区和扩展分区的序号只能在1-4之间。分区起始位置一般由fdisk默认识别即可,结束位置或大小可以使用“+sizeM”或“+sizeK”的形式,如“+20 000M”表示将该分区的容量设置为20GB。
【2】:在执行删除分区时一定要慎重,应首先使用p指令查看分区的序号,确认无误后再进行删除。如果扩展分区被删除,则扩展分区之下的逻辑分区也将同时会被删除。因此建议从最后一个分区开始进行删除,以免fdisk识别的分区序号发生紊乱。
【3】:使用“t”更改分区类型时,只要依次指定分区序号及更改后分区类型的ID标记号即可。如果不知道分区类型对应的ID号,可以输入“l”指令列表查看各种分区类型所对应的标记号,
Linux系统中最常用的两种文件系统ext3、swap的ID号分别为83、82.
【4】:变更硬盘(特别是正在使用的硬盘)的分区设置以后,建议最好将系统进行重启,或者执行“partprobe”命令使操作系统获知新的分区表情况。在有些Linux操作系统中,若不进行这些操作,可能会导致格式化分区时对硬盘中已有数据的损坏,严重者甚至引起系统崩溃。
#partprobe /dev/sdb
三、格式化分区
mkfs命令:
用途:创建文件系统(格式化)
格式:mkfs -t 文件系统类型 分区设备
mkswap命令
用途:创建交换文件系统
格式:mkswap 分区设备
实际上mkfs命令是一个前端工具,可以自动加载不同的程序来创建各种类型的分区,而后端包括有多个与mkfs命令相关的工具程序,例如支持FAT16、FAT32分区格式的mkfs.vfat程序等。
【例2】:查看“/sbin”目录中与mkfs相关的工具程序。
【例3】:在“/dev/sdb1”分区中创建ext3文件系统。
#mkfs -t ext3 /dev/sdb1
等同于执行“mkfs.ext3 /dev/sdb1”
【例4】:创建并启用交换分区,并通过free命令观察交换空间的变化。
四、挂载、卸载文件系统
1、mount命令
用途:挂载文件系统、ISO镜像到指定文件夹
格式:mount [-t 类型] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
2、umount命令
用途:卸载已挂载的文件系统
格式:umount 存储设备位置
umount 挂载点目录
3、查看已挂载分区的使用情况
df -hT
在Linux系统中,对各种存储设备中的资源访问都是通过目录结构进行的,虽然系统核心能够通过“设备文件”的方式操纵各种设备,但是对于用户来说,还需要增加一个“挂载”的过程,才能像正常访问目录一样访问存储设备中的资源。
当然,在安装Linux操作系统的过程中,自动建立或识别的分区通常会由系统自动完成挂载。然而对于后来新增加的硬盘分区、USB盘、光盘等设备,有时候还需要管理员手动进行挂载,实际上用户访问的是经过格式化后建立的文件系统。挂载一个分区时,必须为其制定一个目录作为挂靠点,用户通过这个目录访问设备中的文件、目录数据。
在Linux系统中,U盘设备被模拟成SCSI设备,因此与挂载普通SCSI硬盘中的分区并没有明显区别。若不确定所添加的U盘设备文件,可以先执行“fdisk -l”命令进行查看确认。
使用不带任何参数或选项的mount命令时,将显示出当前系统中已挂载的各个文件系统的相关信息。
proc、sysfs、tmpfs等文件系统是Linux运行所需要的临时文件系统,并没有实际的硬盘分区与其相对应,因此也称为“伪文件系统”。例如proc映射了内存及cpu寄存器中的部分数据。
【设置文件系统的自动挂载】:
/etc/fstab配置文件:包含了需要开机后自动挂载的文件系统记录。如下图:
系统中的“/etc/fstab”文件可以视为mount命令的配置文件,其中存储了文件系统的静态挂载数据。Linux系统每次开机时,会自动读取这个文件的内容,自动挂载所指定的文件系统。
在“/etc/fstab”文件中,每一行记录对应一个分区或设备的挂载配置信息,从左到右包括六个字段(使用空格或制表符分隔),各部分的含义如下所述:
第一字段:设备名或设备卷标名。
第二字段:文件系统的挂载点目录的位置。
第三字段:文件系统类型,如ext3、swap等。
第四字段:挂载参数,即mount命令“-o”选项后可使用的参数,如defaults、rw等。
第五字段:表示文件系统是否需要dump备份,一般设为1时表示需要,设为0时将被dump所忽略。
第六字段:该数字用于决定在系统启动时进行磁盘检查的顺序,0表示不进行检查,1表示优先检查,2表示其次检查。对于根分区应设为1,其他分区设为2.
【例5】:修改“/etc/fstab”文件,添加自动挂载“/dev/sdb1”分区的配置行。
#vi /etc/fstab
在文件末尾添加如下行内容:
/dev/sdb1 /mailbox ext3 default 0 0
一、LVM概述
LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制,它是建立再硬盘和分区之上,文件系统之下的一个逻辑层,在建立文件系统时屏蔽了下层的磁盘分区布局,能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高了磁盘管理的灵活性。
在安装RHEL5系统的过程中选择自动分区时,默认就会采用LVM分区方案,不需要再进行手动配置。如果有特殊需要,也可以使用安装向导提供的磁盘定制工具调整LVM分区。需要注意的是,“/boot”分区不能基于LVM创建,必须独立出来。
关于LVM的几个基本术语:
1、PV(Physical Volume,物理卷)
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元PE,从而构成物理卷。
物理卷一般直接使用设备文件名称,如“/dev/sdb1”、“/dev/sdb2”等。
用于转换成物理卷的普通分区,建议先使用fdisk工具将分区类型的ID标记号改为“8e”。若是整块硬盘,可以将所有磁盘空间划分为一个主分区后再作相应调整。
2、VG(Volume Group,卷组)
由一个或多个物理卷组成一个整体,即成为卷组,在卷组中可以动态地添加或移除物理卷。许多个物理卷可以分别组成不同的卷组,卷组名称由用户自行定义。
3、LV(Logical Volume,逻辑卷)
逻辑卷是建立在卷组之上的,与物理卷没有直接关系。
对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷。使用mkfs等工具在逻辑卷上创建文件系统以后,即可挂载到Linux系统中的目录下使用。
通过上述对物理卷、卷组、逻辑卷的解释可以看出,建立LVM分区管理机制的过程就是:首先,将普通分区或整个硬盘创建为物理卷;接下来,将物理上比较分散的各物理卷的存储空间组成一个逻辑整体,即卷组;最后,基于卷组这个整体,分割出不同的数据存储空间,形成逻辑卷。而逻辑卷才是最终用户可以格式化并挂载使用的存储单位。
二、LVM的管理命令
功 能
|
物理卷管理
|
卷组管理
|
逻辑卷管理
|
Scan 扫描
|
pvscan
|
vgscan
|
lvscan
|
Create 建立
|
pvcreate
|
vgcreate
|
lvcreate
|
Display 显示
|
pvdisplay
|
vgdisplay
|
lvdisplay
|
Remove 删除
|
pvremove
|
vgremove
|
lvremove
|
Extend 扩展
|
|
vgextend
|
lvextend
|
Reduce 减少
|
|
vgreduce
|
lvreduce
|
主要命令的语法
pvcreate 设备名
vgcreate 卷组名 物理卷名1 物理卷名2
lvcreate -L 大小 -n 逻辑卷名 卷组名
lvextend -L +大小 /dev/卷组名/逻辑卷名
三、LVM应用实例
案例的环境和需求描述如下:
公司准备在Internet中搭建邮件服务器,面向全国各地的员工即部分VIP客户提供电子邮箱空间。由于用户数量众多,邮件存储需要大量的空间,考虑到动态扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷(挂载到“/mail”目录下)专门用于存放邮件数据。
根据上述案例环境和需求,具体操作步骤如下:
1、关闭服务器,打开机箱,正确挂接2块SCSI新硬盘。
2、开启服务器主机,并执行“fdisk -l”命令进行检查,确认已识别新增的硬盘(sdb、sdc)。
3、在磁盘中进行分区,将每块硬盘的所有空间划分为一个独立的主分区,并将分区类型更改为“8e”。分好区后使用“fdisk -l”命令查看结果如下所示。
4、将“/dev/sdb1”和“/dev/sdc1”分区转换为物理卷。
5、将上述两个物理卷整合,创建名为“mail_store”的卷组。
6、在“mail_store”卷组中创建一个名为“mail”的逻辑卷,容量大小设置为3G。
7、使用mkfs命令在“mail”逻辑卷中创建ext3文件系统,并挂载到“/mail”目录下。
8、动态扩展“mail”逻辑卷的容量(增加500M),并更新系统识别的文件系统大小。