28、LVM2详解及until

28.1 LVM

Logical Volume Manager,Version: 2

28.1.1 DM和MD

cat /proc/filesystems : 查看当前内核所支持文件系统类型

RAID: 独立冗余磁盘阵列

Linux:硬件,软件

/dev/md#

Linux中两种不同的设备类型

MD: Multi Device, 多设备

MD, DM

/dev/md#

meta device

DM: Device Mapper,将一个或多个底层块设备组织成一个逻辑设备的模块

逻辑设备

RAID, LVM2(逻辑卷)

DM: 通常用于LVM2

/dev/dm-#

组件:

快照:将要改变的数据进行备份,实现数据的备份(数据备份:避免因为误操作或者文件删除的情况造成的损失)

多路径

物理卷(PE)-》卷组(VG)-》逻辑卷(LE)

28.2 PV,VG管理

28.2.1 PV管理工具

pvs:简要pv信息展示

pvdisplay:显示pv的详细信息

pvcreate /dev/DEVICE:创建PV

-v 显示创建过程

pvmove:pv移除,在vgreduce之前要先移除

[root@localhost ~]# pvs

  /dev/md0: read failed after 0 of 4096 at 0: Input/output error

  PV         VG     Fmt  Attr PSize   PFree

  /dev/sdb2  centos lvm2 a--  <99.00g 4.00m

[root@localhost ~]# pvdisplay

  /dev/md0: read failed after 0 of 4096 at 0: Input/output error

  --- Physical volume ---

  PV Name               /dev/sdb2

  VG Name               centos

  PV Size               <99.00 GiB / not usable 3.00 MiB

  Allocatable           yes 

  PE Size               4.00 MiB

  Total PE              25343

  Free PE               1

  Allocated PE          25342

  PV UUID               0R0BFP-witm-SfMZ-d9an-26rT-JDtg-XzwGqy

[root@localhost ~]# 

28.2.2 VG管理工具

vgcreate VG_NAME /PATH/TO/PV:创建vg

-v 显示过程

-s #: PE大小,默认为4MB

vgs:简要vg信息展示

vgdisplay:显示pv的详细信息

vgextend:扩展

vgreduce:vg缩减

vgremove:删除vg

28.3 lv逻辑卷配置

28.3.1 LV管理工具

lvs:简要lv信息展示

lvdisplay:显示lv的详细信息

lvcreate -n LV_NAME -L #[mMgGtT] VG_NAME:创建lv

-n:指明逻辑卷名称

-L:指定大小

-l:指定逻辑盘区的数量

lvremove:删除逻辑卷

创建分区:创建物理边界

创建文件系统:创建逻辑边界(紧贴着物理边界)

28.3.2 扩展逻辑卷;

lvextend:扩展逻辑卷物理边界

-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME

+可带可不带,不带的话代表的是扩展的目标大小

resize2fs:扩展文件系统边界(不指定大小则为使用分区所有大小)

resize2fs -p /PATH/TO/LV

28.3.3 缩减逻辑卷;

注意:1、不能在线缩减,必须先卸载;

  2、确保缩减后的空间大小依然能存储原有的所有数据;

  3、在缩减之前应该先强行检查文件,以确保文件系统处于一至性状态;

操作过程:

df -lh

umount

e2fsck -f         

resize2fs:缩减文件系统边界

resize2fs /PATH/TO/PV 3G

lvreduce -L [-]# /PATH/TO/LV(缩减逻辑卷物理边界)

mount重新挂载

[root@localhost ~]# umount /test

[root@localhost ~]# mount /test

mount: cant find /test in /etc/fstab

[root@localhost ~]# mount /dev/mypv/mvvg /test

mount: special device /dev/mypv/mvvg does not exist

[root@localhost ~]# mount /dev/mypv/myvg /test

mount: special device /dev/mypv/myvg does not exist

[root@localhost ~]# mount /dev/myvg/mylv /test

[root@localhost ~]# resize

resize2fs   resizecons  resizepart  

[root@localhost ~]# resize

resize2fs   resizecons  resizepart  

[root@localhost ~]# resize2fs /dev/myvg/mylv 

resize2fs 1.42.9 (28-Dec-2013)

Filesystem at /dev/myvg/mylv is mounted on /test; on-line resizing required

old_desc_blocks = 16, new_desc_blocks = 40

The filesystem on /dev/myvg/mylv is now 5242880 blocks long.

[root@localhost ~]# df -lh

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   50G  2.6G   48G   6% /

devtmpfs                 3.9G     0  3.9G   0% /dev

tmpfs                    3.9G     0  3.9G   0% /dev/shm

tmpfs                    3.9G  8.7M  3.9G   1% /run

tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup

/dev/sda1               1014M  143M  872M  15% /boot

/dev/mapper/centos-home   42G   33M   42G   1% /home

tmpfs                    781M     0  781M   0% /run/user/0

/dev/mapper/myvg-mylv    4.9G  3.2M  4.7G   1% /test

[root@localhost ~]# umount /dev/myvg/mylv

[root@localhost ~]# e2fsck -f /dev/myvg/mylv

e2fsck 1.42.9 (28-Dec-2013)

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

MYLV: 12/327680 files (0.0% non-contiguous), 119806/5242880 blocks

[root@localhost ~]# resize2fs /dev/myvg/mylv 3G

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/myvg/mylv to 3145728 (1k) blocks.

The filesystem on /dev/myvg/mylv is now 3145728 blocks long.

[root@localhost ~]# lvreduce /dev/myvg/mylv 3G

  No command with matching syntax recognised.  Run 'lvreduce --help' for more information.

  Correct command syntax is:

  lvreduce -L|--size [-]Size[m|UNIT] LV

[root@localhost ~]# lvreduce /dev/myvg/mylv -L 3G

  WARNING: Reducing active logical volume to 3.00 GiB.

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce myvg/mylv? [y/n]: y

  Size of logical volume myvg/mylv changed from 5.00 GiB (1280 extents) to 3.00 GiB (768 extents).

  Logical volume myvg/mylv successfully resized.

[root@localhost ~]# mount /dev/myvg/mylv /test

[root@localhost ~]# df -lh

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   50G  2.6G   48G   6% /

devtmpfs                 3.9G     0  3.9G   0% /dev

tmpfs                    3.9G     0  3.9G   0% /dev/shm

tmpfs                    3.9G  8.7M  3.9G   1% /run

tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup

/dev/sda1               1014M  143M  872M  15% /boot

/dev/mapper/centos-home   42G   33M   42G   1% /home

tmpfs                    781M     0  781M   0% /run/user/0

/dev/mapper/myvg-mylv    3.0G  3.2M  2.8G   1% /test

[root@localhost ~]# 

28.3.4 快照卷(snapshot)

1、生命周期为整个数据时长;在这段时长内,数据的增长量不能超出快照卷大小;

2、快照卷应该是只读的;

3、跟原卷在同一卷组内;

创建过程

lvcreate

-s:创建快照卷

-p r|w:指定权限

lvcreate -L # -n SLV_NAME -p r /PATH/TO/LV

练习1:创建一个至少有两个PV组成的大小为20G的名为testvg的VG,要求PE大小为16MB,而后在卷组中创建大小为5G逻辑卷testlv,挂载至、users目录

[root@localhost ~]# pvcreate /dev/sdc

  Physical volume "/dev/sdc" successfully created.

[root@localhost ~]# pvs

  PV         VG     Fmt  Attr PSize   PFree 

  /dev/sda2  centos lvm2 a--  <99.00g  4.00m

  /dev/sdb          lvm2 ---   20.00g 20.00g

  /dev/sdc          lvm2 ---   20.00g 20.00g

[root@localhost ~]# vgcreate vg1 -s 16 /dev/sdb

  Volume group "vg1" successfully created

[root@localhost ~]# vgextend vg1 -s 16 /dev/sdc

vgextend: invalid option -- 's'

  Error during parsing of command line.

[root@localhost ~]# vgextend vg1 /dev/sdc

  Volume group "vg1" successfully extended

[root@localhost ~]# vgdisplay 

  --- Volume group ---

  VG Name               centos

  System ID             

  Format                lvm2

  Metadata Areas        1

  Metadata Sequence No  4

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                3

  Open LV               3

  Max PV                0

  Cur PV                1

  Act PV                1

  VG Size               <99.00 GiB

  PE Size               4.00 MiB

  Total PE              25343

  Alloc PE / Size       25342 / 98.99 GiB

  Free  PE / Size       1 / 4.00 MiB

  VG UUID               fE3YOB-nPtn-bYfY-RZX4-moqi-3YMu-6deJXo

  --- Volume group ---

  VG Name               vg1

  System ID             

  Format                lvm2

  Metadata Areas        2

  Metadata Sequence No  2

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                0

  Open LV               0

  Max PV                0

  Cur PV                2

  Act PV                2

  VG Size               <39.97 GiB

  PE Size               16.00 MiB

  Total PE              2558

  Alloc PE / Size       0 / 0   

  Free  PE / Size       2558 / <39.97 GiB

  VG UUID               Qf0Sfr-gRzG-vmmJ-7mTK-NUln-LlRj-U2IYJ2

[root@localhost ~]# lvcreate -n testlv -L 5G vg1

WARNING: ext4 signature detected on /dev/vg1/testlv at offset 1080. Wipe it? [y/n]: y

  Wiping ext4 signature on /dev/vg1/testlv.

  Logical volume "testlv" created.

[root@localhost ~]# mkdir /users

[root@localhost ~]# mke2fs -t ext4 /dev/vg1/testlv 

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

327680 inodes, 1310720 blocks

65536 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=1342177280

40 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

Allocating group tables: done                            

Writing inode tables: done                            

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done 

[root@localhost ~]# mount /dev/vg1/testlv /users

[root@localhost ~]# mount

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)

proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)

devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=3985976k,nr_inodes=996494,mode=755)

securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)

tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)

devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)

tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)

tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)

cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)

pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)

cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)

cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)

cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)

cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)

cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)

cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)

cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)

cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)

cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)

cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)

configfs on /sys/kernel/config type configfs (rw,relatime)

/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)

systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=35,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=10884)

mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)

hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)

debugfs on /sys/kernel/debug type debugfs (rw,relatime)

/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

/dev/mapper/centos-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=799408k,mode=700)

/dev/mapper/vg1-testlv on /users type ext4 (rw,relatime,seclabel,data=ordered)

练习2:新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录,

[root@localhost ~]# man useradd

[1]+  Stopped                 man useradd

[root@localhost ~]# ls /

bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  test  tmp  users  usr  var

[root@localhost ~]# useradd -b /users archlinux

[root@localhost ~]# su - archlinux 

[archlinux@localhost ~]$ cp -a /etc/pam.d/ ~/

[archlinux@localhost ~]$ ls

pam.d

[archlinux@localhost ~]$ 

练习3:扩展testlv至7G,要求archlinux的文件不能丢失

[archlinux@localhost ~]$ lvextend -L 7G /dev/vg1/testlv

  WARNING: Running as a non-root user. Functionality may be unavailable.

  /run/lvm/lvmetad.socket: access failed: Permission denied

  WARNING: Failed to connect to lvmetad. Falling back to device scanning.

  /dev/mapper/control: open failed: Permission denied

  Failure to communicate with kernel device-mapper driver.

  Incompatible libdevmapper 1.02.140-RHEL7 (2017-05-03) and kernel driver (unknown version).

  /run/lock/lvm/V_vg1:aux: open failed: Permission denied

  Cant get lock for vg1

  Cannot process volume group vg1

[archlinux@localhost ~]$ umount /dev/vg1/testlv

umount: /users: umount failed: Operation not permitted

[archlinux@localhost ~]$ su - root

Password: 

Last login: Tue Jul 27 03:26:48 EDT 2021 from 192.168.77.2 on pts/0

[root@localhost ~]# umount /dev/vg1/testlv

umount: /users: target is busy.

        (In some cases useful info about processes that use

         the device is found by lsof(8) or fuser(1))

[root@localhost ~]# ps -ef | grep archlinux

root       1917   1463  0 04:01 pts/0    00:00:00 su - archlinux

root       1974   1953  0 04:21 pts/0    00:00:00 grep --color=auto archlinux

[root@localhost ~]# exit

logout

[archlinux@localhost ~]$ exit

logout

[root@localhost ~]# ps -ef | grep archlinux

root       1977   1463  0 04:22 pts/0    00:00:00 grep --color=auto archlinux

[root@localhost ~]# umount /dev/vg1/testlv

[root@localhost ~]# lvextend -L 7G /dev/vg1/testlv

  Size of logical volume vg1/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents).

  Logical volume vg1/testlv successfully resized.

[root@localhost ~]# resize2fs /dev/vg1/testlv 

resize2fs 1.42.9 (28-Dec-2013)

Please run 'e2fsck -f /dev/vg1/testlv' first.

[root@localhost ~]# e2fsck -f /dev/vg1/testlv

e2fsck 1.42.9 (28-Dec-2013)

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/testlv: 48/327680 files (0.0% non-contiguous), 58493/1310720 blocks

[root@localhost ~]# resize2fs /dev/vg1/testlv 

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/vg1/testlv to 1835008 (4k) blocks.

The filesystem on /dev/vg1/testlv is now 1835008 blocks long.

[root@localhost ~]# mount /dev/vg1/testlv /users/

[root@localhost ~]# df -lh

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   50G  2.6G   48G   6% /

devtmpfs                 3.9G     0  3.9G   0% /dev

tmpfs                    3.9G     0  3.9G   0% /dev/shm

tmpfs                    3.9G  8.7M  3.9G   1% /run

tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup

/dev/sda1               1014M  143M  872M  15% /boot

/dev/mapper/centos-home   42G   33M   42G   1% /home

tmpfs                    781M     0  781M   0% /run/user/0

/dev/mapper/vg1-testlv   6.8G   23M  6.4G   1% /users

[root@localhost ~]# 

[root@localhost ~]# ls /users/archlinux/

pam.d

[root@localhost ~]# 

练习4:收缩testlv至3G,要求archlinux的文件不能丢失

[root@localhost ~]# df -lh

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   50G  2.6G   48G   6% /

devtmpfs                 3.9G     0  3.9G   0% /dev

tmpfs                    3.9G     0  3.9G   0% /dev/shm

tmpfs                    3.9G  8.6M  3.9G   1% /run

tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup

/dev/sda1               1014M  143M  872M  15% /boot

/dev/mapper/centos-home   42G   33M   42G   1% /home

tmpfs                    781M     0  781M   0% /run/user/0

/dev/mapper/vg1-testlv   6.8G   23M  6.4G   1% /users

[root@localhost ~]# umount /users 

[root@localhost ~]# e2fsck -f /dev/vg1/testlv

e2fsck 1.42.9 (28-Dec-2013)

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/testlv: 48/458752 files (0.0% non-contiguous), 67358/1835008 blocks

[root@localhost ~]# resize2fs /dev/vg1/testlv 3G

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/vg1/testlv to 786432 (4k) blocks.

The filesystem on /dev/vg1/testlv is now 786432 blocks long.

[root@localhost ~]# lvreduce /dev/vg1/testlv 3G

  No command with matching syntax recognised.  Run 'lvreduce --help' for more information.

  Correct command syntax is:

  lvreduce -L|--size [-]Size[m|UNIT] LV

[root@localhost ~]# lvreduce /dev/vg1/testlv -L 3G

  WARNING: Reducing active logical volume to 3.00 GiB.

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce vg1/testlv? [y/n]: y

  Size of logical volume vg1/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents).

  Logical volume vg1/testlv successfully resized.

[root@localhost ~]# lvs

  LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  home   centos -wi-ao---- <41.12g                                                    

  root   centos -wi-ao----  50.00g                                                    

  swap   centos -wi-ao----  <7.88g                                                    

  testlv vg1    -wi-a-----   3.00g                                                    

[root@localhost ~]# mount /test

mount: cant find /test in /etc/fstab

[root@localhost ~]# mount /dev/vg1/testlv /users

[root@localhost ~]# df -lh

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   50G  2.6G   48G   6% /

devtmpfs                 3.9G     0  3.9G   0% /dev

tmpfs                    3.9G     0  3.9G   0% /dev/shm

tmpfs                    3.9G  8.6M  3.9G   1% /run

tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup

/dev/sda1               1014M  143M  872M  15% /boot

/dev/mapper/centos-home   42G   33M   42G   1% /home

tmpfs                    781M     0  781M   0% /run/user/0

/dev/mapper/vg1-testlv   2.9G   16M  2.7G   1% /users

[root@localhost ~]# ls /users/archlinux/

pam.d

[root@localhost ~]# 

练习5:对testlv创建快照,并尝试基于快照备份数据,验证快照的功能

[root@localhost ~]# lvs

  LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  home   centos -wi-ao---- <41.12g                                                    

  root   centos -wi-ao----  50.00g                                                    

  swap   centos -wi-ao----  <7.88g                                                    

  testlv vg1    -wi-ao----   3.00g                                                    

[root@localhost ~]# cd /users/archlinux/

[root@localhost archlinux]# touch test

[root@localhost archlinux]# touch test1

[root@localhost archlinux]# ls

test  test1

[root@localhost archlinux]# lvcreate -s -n testlv-snap -p r -L 500M /dev/vg1/testlv

  Using default stripesize 64.00 KiB.

  Rounding up size to full physical extent 512.00 MiB

  Logical volume "testlv-snap" created.

[root@localhost archlinux]# mount /dev/vg1/testlv-snap /backup/

mount: /dev/mapper/vg1-testlv--snap is write-protected, mounting read-only

[root@localhost archlinux]# ls /backup/archlinux/

test  test1

[root@localhost archlinux]# rm -rf test

[root@localhost archlinux]# ls

test1

[root@localhost archlinux]# ls /backup/archlinux/

test  test1

[root@localhost archlinux]# 

28.4 脚本完成磁盘分区格式化

28.4.1脚本编程及until简介

1、控制结构

脚本编程控制结构:

顺序

选择

if

case

循环

for

while

until

2、while

while CONDITION; do

  statment

done

进入循环:条件满足

退出循环:条件不满足

3、until

until CONDITION; do

  statement

  ...

done

进入循环:条件不满足

退出循环:条件满足

4、for的两种形式

for 变量 in 列表; do

循环体

done

for (( expr1 ; expr2 ; expr3 )); do {例for((i=1;i<10;i++));do}

  循环体

done

5、continue

写一个脚本:

1、通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线,

如果在线,就显示"ip is up.",其中的IP要换为真正的IP地址,且以绿色显示;

如果不在线,就显示"ip is down.",其中的IP要换为真正的IP地址,且以红色显示;

要求:分别使用while,until和for(两种形式)循环实现。

ping

-c

-W

写一个脚本(前提:请为虚拟机新增一块硬盘,假设它为/dev/sdb),为指定的硬盘创建分区:

1、列出当前系统上所有的磁盘,让用户选择,如果选择quit则退出脚本;如果用户选择错误,就让用户重新选择;

2、当用户选择后,提醒用户确认接下来的操作可能会损坏数据,并请用户确认;如果用户选择y就继续,n就退出;否则,让用户重新选择;

3、抹除那块硬盘上的所有分区(提示,抹除所有分区后执行sync命令,并让脚本睡眠3秒钟后再分区);并为其创建三个主分区,第一个为20M,第二个为512M, 第三个为128M,且第三个为swap分区类型;(提示:将分区命令通过echo传送给fdisk即可实现)

fdisk -l |grep "

dd if=/dev/zero of=/dev/sdb bs=512 count=1

sync

sleep 3

RAID

LVM:

逻辑卷的缩减

扩展

快照卷

while CONDITION; do

  循环体

done

while [ $VAR != 'quit' ];do 

done

评论关闭。