一、parted模块
这个模块允许使用parted命令行工具配置块设备分区,可以进行磁盘的管理
默认创建主分区2GiB,起始位置默认
# ansible web1 -m parted -a "device=/dev/sdc label=msdos number=1 part_end=2GiB state=present"
创建扩展分区,最好使用%去指定起始和结束位置
# ansible web1 -m parted -a "device=/dev/sdc label=msdos number=2 part_type=extended part_start=20% part_end=100% state=present"
创建逻辑分区
# ansible web1 -m parted -a "device=/dev/sdc label=msdos number=5 part_type=logical part_start=20% part_end=50% state=present"
# ansible web1 -m parted -a "device=/dev/sdc label=msdos number=6 part_type=logical part_start=50% part_end=100% state=present"
删除分区
# ansible web1 -m parted -a "device=/dev/sdc number=1 state=absent"
二、lvg模块
用于管理Linux系统上的逻辑卷组(LVM)。它可以用于创建、删除、扩展和缩小逻辑卷组
# ansible web1 -m lvg -a "vg=vgname state=present pvs=/dev/sdb,/dev/sdc pesize=8M"
三、lvol模块
用于管理Linux系统上的逻辑卷
创建逻辑卷lv1
# ansible web1 -m lvol -a 'lv=lv1 vg=vgname size=3G state=present'
将逻辑卷lv1大小修改成5G
# ansible web1 -m lvol -a 'lv=lv1 vg=vgname size=5G state=present'
四、filesystem模块
创建文件系统
# ansible web1 -m filesystem -a 'dev=/dev/vgname/lv1 fstype=ext4'
假设/dev/vgname/lv1已经挂在使用,但是需要扩容,就需要扩容文件系统,需要添加参数resizefs=yes
# ansible web1 -m filesystem -a 'dev=/dev/vgname/lv1 fstype=ext4 resizefs=yes'
五、mount模块
挂载:
mkdir /mnt/lv1
# ansible web1 -m mount -a 'src=/dev/vgname/lv1 path=/mnt/lv1 fstype=ext4 state=mounted'
卸载
# ansible web1 -m mount -a 'src=/dev/vgname/lv1 path=/mnt/lv1 fstype=ext4 state=absent'
如果/dev/vgname/lv1是手动挂载到/mnt/lv1上没有写入/etc/fstab文件里面,那么执行ansible去卸载设备卸载不了,那么只需重新挂载将数据写入/etc/fstab
再进行卸载即可成功
扩展:
一、磁盘分区
机械硬盘(速度慢、磁道)
固态硬盘(稳定、速度快、小颗粒)
分区方式:
MBR < 2TB fdisk/gdisk(parted) (14个分区,4个主分区、扩展分区、逻辑分区)
GPT >2TB fdisk/gdisk(parted) 128个分区
MBR:
主分区表 (最多只能记录4个主分区、或者3个主分区1个扩展分区)
扩展分区表(最多只能记录10个逻辑分区)
GPT:
128个分区
fdisk 交互式分区(默认分区mbr格式)
1、parted 非交互式分区
1.分区
2.通知内核重读分区表
3.格式化
4.挂载使用
-s 不交互
常用命令:
p,print 打印分区表
mklabel,mktable 创建磁盘标签,后面可接msdos或gpt
mkpart 创建新的分区,语法: mkpart 类型或名字 起始 结束
rm 删除分区,后接要删除的分区编号
rescue 恢复分区,对于误删的分区进行恢复,语法: rescue 起始 结束
*注意:创建磁盘标签将会丢失所有的数据
【在使用parted进行分区时,一定要创建磁盘标签】
例如:
gpt:
parted -s /dev/sdb mklabel gpt
parted -s /dev/sdb mkpart 1 0 2G
parted -s /dev/sdb rm 1
msdos:
parted -s /dev/sdb mklabel msdos
parted -s /dev/sdb mkpart p 0 2G
parted -s /dev/sdb mkpart e 2G 6G
parted -s /dev/sdb mkpart l 2G 5G
2、fidsk 交互式分区
# fdisk /dev/sdb(设备名称)
二、LVM逻辑卷
LVM是 Logical Volume Manager(逻辑卷管理)的简写
最大优势:在线扩容、卷组
①、LVM的创建过程
1)添加硬盘或者创建分区,通知内核
2)创建物理卷 PV (pvcreate)
3)创建卷组 VG (vgcreate)
4)创建逻辑卷 LV (lvcreate)
5)创建文件系统 (mkfs.xfs)
6)挂载使用 (mount autofs /etc/fstab)
1、添加硬盘
2、创建物理卷 PV (只能是裸磁盘,没做过文件系统)
# pvcreate /dev/sdb /dev/sdc //创建pv
查看pv
# pvdisplay
# pvscan
# pvs
3、创建卷组VG
# vgcreate vg名字 -s pe块的大小 pv的名字
# vgcreate vgname -s 8M /dev/sdb /dev/sdc
查看VG
# vgdisplay
# vgscan
# vgs
4、创建逻辑卷LV
# lvcreate -L lv大小 -n lvname vgname
# lvcreate -l le大小 -n lvname vgname
lvcreate -L 2G -n lv1 vgname
lvcreate -l 200 -n lv2 vgname
查看lv
lvs
lvdisplay
lvscan
5、创建文件系统
mkfs.xfs /dev/vgname/lv1
mkfs.ext4 /dev/vgname/lv1
6、挂载使用
mkdir /mnt/lv1
临时挂载
mount /dev/vgname/lv1 /mnt/lv1
查看挂载情况:# df -Th
永久挂载
# vi /etc/fstab
/dev/vgname/lv1 /mnt/lv1 xfs defaults 0 0
# mount -a // 加载/etc/fstab的配置
卸载
umount /mnt/lv1
②vg扩容
1、创建新的pv
pvcreate /dev/sdb /dev/sde
2、加入vg
vgextend vgname /dev/sdd /dev/sde
vgs
③减小vg
其实就是移除某个PV
pvs
假设要移除sdb
1、pvmove /dev/sdb 迁移数据
[root@localhost ~]# pvmove /dev/sdb
/dev/sdb: Moved: 2.63%
/dev/sdb: Moved: 56.14%
/dev/sdb: Moved: 100.00%
2、vgreduce vgname /dev/sdb //将pv移除vg
[root@localhost ~]# vgreduce vgname /dev/sdb
Removed "/dev/sdb" from volume group "vgname"
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 5.00g 5.00g
/dev/sdc vgname lvm2 a-- 4.99g <1.43g
④lv扩容
第一种:
lvextend -L 6G /dev/vgname/lv1 //将lv1扩容到800M
lvextend -L +6G /dev/vgname/lv1 //将lv1扩容6G
lvextend -l 800 /dev/vgname/lv1 //将LE扩容到800个
lvextend -l +800 /dev/vgname/lv1 //将LE扩容800个
df -Th 查看挂载情况
lv缩容,很容易导致数据丢失,一般不会进行缩容
⑤文件系统扩容
xfs文件系统:
xfs_growfs /dev/vgname/lv1
xfs_growfs /mnt/disk1
ext4/ext3文件系统:
resize2fs /dev/vgname/lv2
⑥删除
删除lv、vg、pv
删除lv
1、取消挂载
umount /mnt/lv1
2、删除lv
lvremove /dev/vgname/lv1
删除vg
1、删除vg中所有的lv
lvremove /dev/vgname/lv2
2、删除vg
vgremove vgname
删除pv
1、把pv从vg中移除或者删除vg
# vgreduce vgname /dev/sdb
# vgremove vgname
2、删除pv
pvremove /dev/sdb
问题1:如果不小心写错/etc/fstab 永久挂载时,重启之后发现系统无法正常启动?
1、输入root的密码,然后回车进入操作系统
2、vim /etc/fstab //把自己写的挂载取消注释或者删除
3、reboot //重启
4、重新正常进入系统
将/etc/fstab 打的注释,进行取消
5、mount -a //触发检查哪个有问题
问题2:root密码忘记了怎么办(进入救援模式)
看到选择界面后按e进入编辑模式
如果错过了选择页面则点击Send key 下面的Ctrl+Alt+Del
在linux那一行后面的rhgb quiet删除,添加 rd.break
ctrl + x 保存
mount -o remount,rw /sysroot //重新挂载加载读写参数
chroot /sysroot
echo "密码" | passwd --stdin root //设置密码
touch /.autorelabel //是根下面的,告诉系统要重新打标签
sync //同步
exit
reboot