一、parted模块

这个模块允许使用parted命令行工具配置块设备分区,可以进行磁盘的管理

device            #指定硬盘设备路径 比如 /dev/vdb
label               #指定分区表类型   gpt   msdos
number          #指定分区序号      1 ,2,3
part_start        #分区起始位置,第一次分区可以不指定,第二次写起始位置,例如2GiB,20% 
part_end         #分区结束位置,例如10GiB、20%,建议使用%
part_type        # primary(主分区),extended(扩展分区), logical(逻辑分区)
state                #指定操作方式 present创建 absent删除 info查信息(默认)
 
举例:
 

默认创建主分区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)。它可以用于创建、删除、扩展和缩小逻辑卷组

vg            # 卷组名称
state        # present创建(默认) 或者 absent删除
force       # 在删除时使用。yes表示允许删除带逻辑卷的卷组,默认为false
pvs          # 指定物理卷
pesize     # 设定pe大小。默认为4M
 
举例:
 
创建卷组,默认会把磁盘先做成物理卷
# ansible web1 -m lvg -a "vg=vgname state=present pvs=/dev/sdb,/dev/sdc pesize=8M"
 
针对vg做扩容,需要把所有设备加上
# ansible web1 -m lvg -a 'vg=vgname state=present pvs=/dev/sdb,/dev/sdc,/dev/sdd pesize=8M'

三、lvol模块

用于管理Linux系统上的逻辑卷

lv          #定义逻辑卷名称
vg         # 逻辑卷的空间来自哪个vg
state     #present创建(默认) 或者 absent删除
size       #定义逻辑卷大小。默认单位MB
force     # 删除和压缩逻辑卷大小。默认为no。需要时开启,避免磁盘的损坏
 
举例:

创建逻辑卷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模块

创建文件系统
 
dev             #(必需)设备或映像文件的目标路径
fstype         #文件系统类型 比如 ext3 ext4 xfs 
resizefs       #resizefs=yes,作用于对文件系统扩容
force           #如果“是”,则允许在已经有文件系统的设备上创建新的文件系统
opts            #要传递给mkfs命令的选项列表
 
举例:

创建文件系统
# 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模块

用于在Linux系统上挂载文件系统。它可以用于挂载本地文件系统、NFS共享
 
path                       #挂载点
src                          #挂载的文件
fstype                     #挂载的硬盘类型 ext3 ext4 xfs
opts:                    #传递给mount命令的参数
        ro                            #用唯读模式挂上
        rw                           #用可读写模式挂上
        sync                        #在同步模式下执行
        atime、noatime      #当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。
        auto、noauto         #打开/关闭自动挂上模式。
        remount                  #将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
state:
       present               #开机时挂载,仅将挂载配置写入/etc/fstab
       mounted            #挂载设备,并将配置写入/etc/fstab
       unmounted        #卸载设备,不会清除/etc/fstab写入的配置
       absent                #卸载设备,并清理/etc/fstab写入的配置
 
举例:

挂载:
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