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
评论关闭。