练习:写一个脚本,完成如下任务
lsblk
1、提示用户输入一个磁盘设备文件路径;
如果用户给定的路径文件不存在或不是一个块设备文件,则提示用户重新输入,直到输入正确为止,或者输入quit以9为退出码结束脚本;
2、提示用户“下面的操作会清空磁盘中的数据,并提问是否继续”
如果用户给出字符y或单词yes,则继续,否则,则提供以8为退出码结束脚本;
3、将用户指定的磁盘上的分区清空,而后创建两个主分,大小分别为100M和512M;
4、格式化此两个分区;
5、将第一个分区挂载至/mnt/boot目录;第二个分区挂载至/mnt/sysroot目录;
LVM: Logical Volume Manager
Volume
md: 这个是软raid的内核管理模块
dm: 这个是逻辑卷的内核管理模块,device mapper,其也是管理硬件设备的
设备映射:
lvm
设备文件:/dev/卷组名/逻辑卷名
/dev/mapper/卷组名-逻辑卷名
例如:
卷组:myvg, 逻辑卷:lvdata
我们用户访问的是如下这个目录:
/dev/myvg/lvdata
计算机识别访问的是如下这个目录:
/dev/mapper/myvg-lvdata
实际的硬件设备目录是
../dm-..
10G: 卷组
物理卷管理命令:pv 这个指令的目的是让内核的dm模块去管理该分区或者磁盘
pvcreate, pvremove, pvscan, pvs(查看简要信息), pvdisplay(查看详细信息), pvmove
卷组的管理命令:vg
vgcreate, vgs, vgdisplay, vgextend, vgreduce(这个是删除物理卷), vgremove(删除卷组), vgrename
vgcreate,
-s: PE大小, 默认4M
逻辑卷的管理命令:lv
lvcreate, lvdisplay, lvs, lvextend(扩展物理边界), lvreduce, lvremove
lvcreate
-L :空间大小
-l :指定分给该逻辑卷多少个盘区
-n : lv名称
# lvcreate -L Size(逻辑卷大小) -n Name(逻辑卷名称) vg_name(在哪个卷组上)
lvm, lvm2 这两个是逻辑卷的格式,现在都是lvm2了
逻辑卷扩展的步骤:
1、先确定扩展的大小;并确保所属的卷组有足够的剩余空间;
2、扩展物理边界:可以的话最好先umount,做一下e2fsck检测一下该文件系统
# lvextend -L [+]Size /path/to/lv_device
3、扩展逻辑边界:
# resize2fs /path/to/lv_device 指定哪个逻辑卷(/dev/mylv/lv1)
缩减逻辑卷的步骤:
1、卸载卷,并执行强制检测
# e2fsck -f /path/to/lv_device
2、缩减逻辑边界:
# resize2fs /path/to/lv_device SIZE
3、缩减物理边界:
# lvreduce -L [-]Size /path/to/lv_device
快照卷(snapshot):逻辑卷的一种,通常为只读
目的是为原卷提供一种原来某一时刻的访问通路
# lvcreate -s(快照) -L Size -n Name -p r(只读) /path/to/original_lv_device(对哪个卷创建)
创建好之后也需要挂载使用
命令总结:pvcreate, pvg, pvdisplay, pvscan, pvremove, pvmove, vgcreate, vgextend, vgreduce, veremove, vgs, vgdisplay, lvcreate, lvextend, lvreduce, lvs, lvdisplay, lvremove, resize2fs
扩展卷组:
1、准备要添加的物理卷;
2、扩展卷组:
添加物理卷至卷组中;
# vgextend vg_name /path/to/pv_device
缩减卷组:
1、确定要移除的物理卷的总空间大小,要小于VG当前的可用空间大小;
2、将要移除的物理卷上的所有PE移动至其它PV
# pvmove /path/to/pv_device
3、缩减vg
# vgreduce vg_name /path/to/pv_device
练习:
1、创建一个由两个物理卷组成大小为20G的卷组myvg,要求PE大小16M;而后新建大小为7G逻辑卷mylv1,要求其文件系统为ext4,块大小为2048,且开机能自动挂载至/users;
[root@xuanxuan ~]# pvcreate /dev/sda7
[root@xuanxuan ~]# pvcreate /dev/sda8
[root@xuanxuan ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda7 lvm2 a-- 407.87m 407.87m
/dev/sda8 lvm2 a-- 603.98m 603.98m
[root@xuanxuan ~]# vgcreate -s 8M vg1 /dev/sda7 /dev/sda8
Volume group "vg1" successfully created
[root@xuanxuan ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 1000.00m 1000.00m
[root@xuanxuan ~]# lvcreate -L 500M -n lv1 vg1
[root@xuanxuan vg1]# mke2fs -t ext4 -b 2048 /dev/vg1/lv1
最后改/etc/fstab文件即可
/dev/vg1/lv1 /users ext4 defaults 0 0
2、新建用户openstack,其家目录为/users/openstack,而后切换至openstack用户,复制一些文件至其家目录中;
useradd时使用-d选项创建家目录
3、缩减mylv1至5G大小;而后切换至openstack用户,确保其数据没有丢失;
先检查
[root@xuanxuan ~]# e2fsck -f /dev/vg1/lv1
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/vg1/lv1: 18/129024 files (0.0% non-contiguous), 13730/258048 blocks
缩小文件系统管理的区域
[root@xuanxuan ~]# resize2fs /dev/vg1/lv1 300M
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg1/lv1 to 153600 (2k) blocks.
The filesystem on /dev/vg1/lv1 is now 153600 blocks long.
缩小物理的大小
[root@xuanxuan ~]# lvreduce -L 300M /dev/vg1/lv1
Rounding size to boundary between physical extents: 304.00 MiB
WARNING: Reducing active logical volume to 304.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv1? [y/n]: y
Reducing logical volume lv1 to 304.00 MiB
Logical volume lv1 successfully resized
[root@xuanxuan ~]# mount /dev/vg1/lv1 /users
4、对mylv1创建快照卷snap-mylv1,并通过其备份数据至/tmp/user.tar.bz2;
[root@xuanxuan ~]# lvcreate -s -L 50M -n lv1-snapshot -p r /dev/vg1/lv1
Rounding up size to full physical extent 56.00 MiB
Logical volume "lv1-snapshot" created
[root@xuanxuan ~]# mount /dev/vg1/lv1-snapshot /media
[root@xuanxuan ~]# tar -cf /tmp/snapshot-lv1.tar /media/*