1、创建一个10G分区,并格式为ext4文件系统;

   (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;

   (2) 挂载至data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;

#创建一个10G的分区
[root@c7-2 ~]# fdisk /dev/sda                      #进入划分分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n                             #创建分区
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p                              #划分分区
分区号 (3,4,默认 3):3
起始 扇区 (50333696-251658239,默认为 50333696):    #回车,下面创建一个10G的分区
将使用默认值 50333696
Last 扇区, +扇区 or +size{K,M,G} (50333696-251658239,默认为 251658239):+10G  #分10G的空间
分区 3 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):w                             #按w保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。

#内核识别分区
[root@c7-2 ~]# partx -a /dev/sda                             #内核识别分区信息
partx: /dev/sda: error adding partitions 1-2
[root@c7-2 ~]# partx -a /dev/sda                             #内核识别分区信息
partx: /dev/sda: error adding partitions 1-3

#格式ext4,block大小为2048, 预留空间百分比为2, 卷标为MYDATA
[root@c7-2 ~]# mkfs.ext4 -b 2048 -m 2 -L MYDATA /dev/sda3           
mke2fs 1.42.9 (28-Dec-2013)
mkfs.ext4: Device size reported to be zero.  Invalid partition specified, or
        partition table wasn't reread after running fdisk, due to
        a modified partition being busy and in use.  You may need to reboot
        to re-read your partition table.
[root@c7-2 ~]# e2label /dev/sda3                         #查看卷标
MYDATA
[root@c7-2 ~]# blkid /dev/sda3                           #查看卷标,和类型
/dev/sda3: LABEL="MYDATA" UUID="a1aaad3d-a533-49db-90d1-e62902345408" TYPE="ext4"

#把创建好的10G分区挂载到/data/mydata下
[root@c7-2 ~]# mkdir -p /data/mydata                                #创建/data/mydata目录
[root@c7-2 ~]# mount -o acl,noexec,noatime /dev/sda3 /data/mydata/  #挂载
[root@c7-2 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda1        20G  955M   18G    6% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G  8.6M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
tmpfs           378M     0  378M    0% /run/user/0
/dev/sda3       9.8G   13M  9.6G    1% /data/mydata
[root@c7-2 ~]# mount | grep '/dev/sda3'                             #查看属性信息
/dev/sda3 on /data/mydata type ext4 (rw,noexec,noatime,seclabel,data=ordered)
[root@c7-2 ~]#


2、创建一个大小为1G的swap分区,并创建好文件系统,并启用之;

#进入fdisk准备创建1G分区
[root@c7-2 ~]# fdisk /dev/sda                     
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n                            #创建分区
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (71307264-251658239,默认为 71307264):   #回车保持默认
将使用默认值 71307264
Last 扇区, +扇区 or +size{K,M,G} (71307264-251658239,默认为 251658239):+1G         #空间为1G
分区 5 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):t                            #更改类型
分区号 (1-5,默认 5):5                             #刚才创建的1G分区,分区号为5
Hex 代码(输入 L 列出所有代码):82                   #82代表swap
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):w                            #保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。

#内核识别分区
[root@c7-2 ~]# partx -a -n 5 /dev/sda               #内核识别分区信息
[root@c7-2 ~]# partx -a -n 5 /dev/sda
partx: /dev/sda: error adding partition 5           #内核识别分区信息
[root@c7-2 ~]# partx -a -n 5 /dev/sda
partx: /dev/sda: error adding partition 5           #内核识别分区信息
[root@c7-2 ~]# fdisk -l | grep "^/dev/sda5"         #1G的swap分区已创建好
/dev/sda5        71307264    73404415     1048576   82  Linux swap / Solaris

#格式化sda5为swap分区
[root@c7-2 ~]# mkswap /dev/sda5                     #开始构建swap格式
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=7c4abbf3-435b-4fcc-a5f4-1b16a9f43605
[root@c7-2 ~]# blkid /dev/sda5                      #查看,类型已为swap
/dev/sda5: UUID="7c4abbf3-435b-4fcc-a5f4-1b16a9f43605" TYPE="swap" 

#查看未使用1G swap之前的大小
[root@c7-2 ~]# free -m             
              total        used        free      shared  buff/cache   available
Mem:           3776         137        3338           8         300        3416
Swap:          4095           0        4095

#把sda5作为swap交换分区
[root@c7-2 ~]# swapon /dev/sda5               #把sda5作为交换分区

#再次查看swap大小,由4G变为5G了
[root@c7-2 ~]# free -m                        #交换分区由4G加为5G
              total        used        free      shared  buff/cache   available
Mem:           3776         137        3338           8         300        3416
Swap:          5119           0        5119
[root@c7-2 ~]# swapon                         #查看目前swap设备有哪些信息
NAME      TYPE       SIZE USED PRIO
/dev/sda2 partition    4G   0B   -1
/dev/sda5 partition 1024M   0B   -2


3、写一个脚本

   (1)、获取并列出当前系统上的所有磁盘设备;

   (2)、显示每个磁盘设备上每个分区相关的空间使用信息;

[root@C7-1 shell]# cat 7_3.sh 
#!/bin/bash
fdisk -l | grep -o "^/[^[:space:]]\+"         #grep查找以/开头的信息,/etc..符合这种格式
df -h                                         #查看磁盘使用信息              
[root@C7-1 shell]# bash 7_3.sh 
/dev/sda1
/dev/sda2
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   38G  1.1G   37G    3% /
devtmpfs                 481M     0  481M    0% /dev
tmpfs                    490M     0  490M    0% /dev/shm
tmpfs                    490M  6.6M  484M    2% /run
tmpfs                    490M     0  490M    0% /sys/fs/cgroup
/dev/sda1                497M  120M  378M   25% /boot
[root@C7-1 shell]#


4、总结RAID的各个级别及其组合方式和性能的不同;

RAID-0:

    读、写性能提升;

    可用空间:N*min($1,$2,...)

    无容错能力

    最少磁盘数:2,2+

RAID-1:

    读性能提升、写性能略用下降;

    可用空间:1*min($1,$2,...)

    有冗余能力

    最少磁盘数:2,2+

RAID-5:

    读、写性能提供

    可用空间:(N-1)*min(S1,S2,...)

    有容错能力:1块磁盘

    最少磁盘数:3,3+

RAID-6:

    读、写性能提升

    可用空间:(N-2)*min(S1,S2,...)

    有容错能力:2块磁盘

    最少磁盘数:4,4+

RAID-10:

    读、写性能提升

    可用空间:N*min(S1,S2,...)/2

    有容错能力:每组镜像最多只能坏一块

    最少磁盘数:4,4+


5、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k;

#RAID1需要二块硬盘,由于需要一块空闲盘,故创建了sda7、8、9三个盘,每个10G。格式要改成82,不然在以后挂载等操作时会遇到问题
[root@c7 ~]# fdisk -l | grep "^/dev"
/dev/sda1   *        2048    41945087    20971520   83  Linux
/dev/sda2        41945088    50333695     4194304   82  Linux swap / Solaris
/dev/sda3        50333696    71305215    10485760   83  Linux
/dev/sda4        71305216   251658239    90176512    5  Extended
/dev/sda5        71307264    73404415     1048576   82  Linux swap / Solaris
/dev/sda6        73406464    94377983    10485760   83  Linux
/dev/sda7        94380032   115351551    10485760   fd  Linux raid autodetect
/dev/sda8       115353600   136325119    10485760   fd  Linux raid autodetect
/dev/sda9       136327168   157298687    10485760   fd  Linux raid autodetect

#创建软RAID1,有一个空闲盘,CHUNK为128K
[root@c7 ~]# mdadm -C /dev/md0 -a yes -n 2 -x 1 -l 1 -c 128K /dev/sda{7,8,9}
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? 
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

#查看RAID信息
[root@c7 ~]# mdadm -D /dev/md0 
/dev/md0:
        Version : 1.2
  Creation Time : Tue Sep 27 15:02:08 2016
     Raid Level : raid1
     Array Size : 10477568 (9.99 GiB 10.73 GB)
  Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent
    Update Time : Tue Sep 27 15:02:24 2016
          State : clean, resyncing 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1
  Resync Status : 32% complete
           Name : c7:0  (local to host c7)
           UUID : 0b5373cd:dddf63dd:625342fe:94d35c05
         Events : 5
    Number   Major   Minor   RaidDevice State
       0       8        7        0      active sync   /dev/sda7
       1       8        8        1      active sync   /dev/sda8
       2       8        9        -      spare   /dev/sda9
[root@c7 ~]# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sda9[2](S) sda8[1] sda7[0]
      10477568 blocks super 1.2 [2/2] [UU]
      
unused devices: 
[root@c7 ~]#


6、创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至backup目录,而且不更新访问时间戳,且支持acl功能;

#RAID5需要三块硬盘,故创建了sda5、6、7三个盘,每个2G。格式要改成82,不然在以后挂载等操作时会遇到问题
[root@c7-3 ~]# fdisk -l | grep "^/dev"
/dev/sda1   *        2048    41945087    20971520   83  Linux
/dev/sda2        41945088    50333695     4194304   82  Linux swap / Solaris
/dev/sda3        50333696   251658239   100662272    5  Extended
/dev/sda5        50335744    54530047     2097152   fd  Linux raid autodetect
/dev/sda6        54532096    58726399     2097152   fd  Linux raid autodetect
/dev/sda7        58728448    62922751     2097152   fd  Linux raid autodetect

#根据题目要求创建并查看信息
[root@c7-3 ~]# mdadm -C /dev/md0 -a yes -n 3  -l 5 -c 256K /dev/sda{5,6,7}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@c7-3 ~]# mdadm -D /dev/md0 
/dev/md0:
        Version : 1.2
  Creation Time : Mon Sep 26 10:10:52 2016
     Raid Level : raid5
     Array Size : 4190208 (4.00 GiB 4.29 GB)
  Used Dev Size : 2095104 (2046.34 MiB 2145.39 MB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent
    Update Time : Mon Sep 26 10:11:03 2016
          State : clean 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0
         Layout : left-symmetric
     Chunk Size : 256K
           Name : c7-2:0  (local to host c7-2)
           UUID : 4b86aa4f:0cd62930:c17dda56:9da860f8
         Events : 18
    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       1       8        6        1      active sync   /dev/sda6
       3       8        7        2      active sync   /dev/sda7
[root@c7-3 ~]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sda7[3] sda6[1] sda5[0]
      4190208 blocks super 1.2 level 5, 256k chunk, algorithm 2 [3/3] [UUU]
      
unused devices: 

#格式化为ext4文件系统
[root@c7-3 ~]# mkfs.ext4  /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=64 blocks, Stripe width=128 blocks
262144 inodes, 1047552 blocks
52377 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1073741824
32 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: 完成                            
正在写入inode表: 完成                            
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

#创建backup目录,把以下信息追加到/etc/fstab中,验证信息是否加入到/etc/fstab中
[root@c7-3 ~]# mkdir /backup
[root@c7-3 ~]# echo "/dev/md0 /backup ext4 defaults,acl,noatime 0 0" >> /etc/fstab
[root@c7-3 ~]# tail -1 /etc/fstab 
/dev/md0 /backup ext4 defaults,acl,noatime 0 0

#挂载该分区,并查看信息
[root@c7-3 ~]# mount -a
[root@c7-3 ~]# mount | grep "^/dev/md0"
/dev/md0 on /backup type ext4 (rw,noatime,seclabel,stripe=128,data=ordered)


7、写一个脚本

   (1) 接受一个以上文件路径作为参数;

   (2) 显示每个文件拥有的行数;

   (3) 总结说明本次共为几个文件统计了其行数;

[root@C7-1 shell]# cat 7_7.sh 
#!/bin/bash
#
declare -i i=0                                      #初始i变量为0,i用来统计文件数
if [ $# -lt 1 ];then                                #判断是否给了一个以上路径值
   echo "Please input file path."                   #如果没给路径,则提示
   exit 2                                           #错误返回值2
fi
for file in $*;do                                   #创建循环,$*表示传递给脚本的所有参数
     line=$(wc -l $file | cut -d' ' -f 1 )          #变量line为截取的行数
     echo "$file line number: $line"                #输出有多少行
     let i++                                        #文件数累计加1
done
echo "Count the number of rows in a few files: $i"
[root@C7-1 shell]# chmod +x 7_8.sh                  #给执行权限
[root@C7-1 shell]# bash -n 7_7.sh
[root@C7-1 shell]# echo $?
0
[root@C7-1 shell]# bash 7_7.sh                      #执行此脚本,后面没给文件
Please input file path.
[root@C7-1 shell]# bash 7_7.sh /etc/fstab /etc/passwd   #后来给二个文件,下面是统计结果
/etc/fstab line number: 11
/etc/passwd line number: 29
Count the number of rows in a few files: 2


8、写一个脚本

   (1) 传递两个以上字符串当作用户名;

   (2) 创建这些用户;且密码同用户名;

   (3) 总结说明共创建了几个用户;

[root@C7-1 shell]# cat 7_8.sh 
#!/bin/bash
#7-8.sh
declare -i i=0                                   #初始i变量为0,i用来统计用户数
if [ $# -lt 2 ];then                             #判断字符是否小于2个
    echo "Please enter more than 2 characters"   #小于2个,则提示
    exit 2                                       #错误返回值2
fi
for user in $*; do                               #创建循环,$*表示传递给脚本的所有参数
    id $user &> /dev/null                        #判断用户,结果重定向到/dev/null
    if [ $? -eq 0 ]; then                        #如果用户存在则提示
    echo "$user exist"                           
    else
    useradd $user                                #用户不存在则创建
    echo "$user" | passwd --stdin $user &> /dev/null   #用户名和密码相同
    let i++                                      #统计加了几个用户
    fi
done
echo "Add user count: $i"
[root@C7-1 shell]# bash -n 7_8.sh 
[root@C7-1 shell]# chmod +x 7_8.sh
[root@C7-1 shell]# bash -n 7_8.sh 
[root@C7-1 shell]# echo $?
0
[root@C7-1 shell]# bash 7_8.sh                   #执行此脚本,后面用户名,则提示
Please enter more than 2 characters
[root@C7-1 shell]# bash 7_8.sh zhaodongwei fuwei #接二个用户名,则创建成功,提示新增用户的数量
Add user count: 2
[root@C7-1 shell]# su - zhaodongwei
[zhaodongwei@C7-1 ~]$ su - fuwei                  #切换用户测试
密码:
一次登录:二 9月 27 17:25:48 CST 2016pts/0 上
[fuwei@C7-1 ~]$


9、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和;

[root@C7-1 shell]# cat 7_9.sh 
#!/bin/bash
#7_9.sh
declare -i sum=0;
for i in visitor{1..20}; do                      #创建visitor1-20的循环
    if 
        id $i &> /dev/null ;then                 #判断用户是否存在,存在则提示
        echo "user is exits"
    else
    useradd $i;                                  #不存在就创建用户
    fi                               
    echo "useradd $i success!"                   #提示创建成功
    let sum+=$(id -u $i)
done
echo "All user uid: $sum"                        #累加ID
[root@C7-1 shell]# chmod +x 7_9.sh 
[root@C7-1 shell]# bash -n 7_9.sh
[root@C7-1 shell]# echo $?
0
[root@C7-1 shell]# bash 7_9.sh                   #执行脚本,成功创建20个用户
useradd visitor1 success!
useradd visitor2 success!
useradd visitor3 success!
useradd visitor4 success!
useradd visitor5 success!
useradd visitor6 success!
useradd visitor7 success!
useradd visitor8 success!
useradd visitor9 success!
useradd visitor10 success!
useradd visitor11 success!
useradd visitor12 success!
useradd visitor13 success!
useradd visitor14 success!
useradd visitor15 success!
useradd visitor16 success!
useradd visitor17 success!
useradd visitor18 success!
useradd visitor19 success!
useradd visitor20 success!
All user UID: 40810
[root@C7-1 shell]#


10、写一脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;

[root@c7 shell]# cat /etc/rc.d/rc.sysinit     #Centos7没有rc.sysinit文件,以下使用c6演示
cat: /etc/rc.d/rc.sysinit: 没有那个文件或目录
[root@c6 shell]# cat 7_10.sh 
#!/bin/bash
#7_10.sh
declare -i sum1=0;                            #sum1用于记录#开头的行
declare -i sum2=0;                            #sum2用于记录空白行数
for i in {/etc/rc.d/rc.sysinit,/etc/rc.d/init.d/functions,/etc/fstab}; do  #创建循环
    sum1+=$( grep -c '^#' $i )                #查询以#开头的行数
    sum2+=$( grep -c '^[[:space:]]*$' $i )    #查询空白的行数
done
echo "# line: $sum1"                          #显示出#开头的行数
echo "space line: $sum2"                      #显示空白的行数
[root@c6 shell]# chmod +x 7_10.sh 
[root@c6 shell]# bash -n 7_10.sh
[root@c6 shell]# echo $?
0
[root@c6 shell]# bash 7_10.sh                 #执行
# line: 94
space line: 210


11、写一个脚本,显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;

[root@c6 shell]# useradd -s /sbin/bash mysql       #为便于演示,创建一个mysql用户,指定shell为bash
[root@c6 shell]# id mysql                          #查看mysql的UID为500
uid=500(mysql) gid=500(mysql) groups=500(mysql)
[root@c6 shell]# cat 7_11.sh                       
#!/bin/bash
#7_11.sh
declare -i uid=0;                                      #uid用于总和用
for i in `grep 'bash$' /etc/passwd | cut -d: -f1`; do  #查询以bash结果的用户
    echo "USER: $i , UID: `id -u $i`"                  #USER显示用户,UID显示UID数值
    let uid+=`id -u $i`                                #把UID加在一起
done
echo "Sum of UID: $uid"
[root@c6 shell]# chmod +x 7_11.sh
[root@c6 shell]# bash -n 7_11.sh
[root@c6 shell]# echo $?
0
[root@c6 shell]# bash 7_11.sh                          #执行
USER: root , UID: 0
USER: mysql , UID: 500
Sum of UID: 500
[root@c6 shell]#


12、写一个脚本,显示当前系统上所有,拥有附加组的用户的用户名;并说明共有多少个此类用户;

#测试命令
[root@c6 shell]# useradd -u 3003 -g clouds -G nova openstack    #为便于演示,创建openstack用户,附加组为nova
[root@c6 shell]# id openstack                  #编写脚本前,测试命令
uid=3003(openstack) gid=501(clouds) groups=501(clouds),502(nova)
[root@c6 shell]# id openstack | cut -d" " -f3  #以空格分隔,取第3段组
groups=501(clouds),502(nova)
[root@c6 shell]# id openstack | cut -d" " -f3 | awk -F, '{print $2}' #取出附加组
502(nova)

#编写脚本
[root@c6 shell]# cat 7_12.sh 
#!/bin/bash
#7_12.sh
declare -i sum=0;
for user in `cut -d: -f1 /etc/passwd`; do                       #取出用户
    group=$(id $user | cut -d" " -f3 | awk -F, '{print $2}')    #取出附加组
    if [ -n "$group" ]; then          #测试字符串是否不空,不空则为真,空则为假;
    echo $user                        #输出有附加组的用户
    let sum++                         #累加有附加组的用户数量
    fi
done
echo "User number: $sum"
[root@c6 shell]# chmod +x 7_12.sh 
[root@c6 shell]# bash -n 7_12.sh
[root@c6 shell]# echo $?
0
[root@c6 shell]# bash 7_12.sh         #执行
bin
daemon
adm
postfix
openstack
User number: 5


13、创建一个由至少两个物理卷组成的大小为20G的卷组;要求,PE大小为8M;而在卷组中创建一个大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至users目录,支持acl;

[root@c7 ~]# vgcreate                     #由于Centos7最小安装,没有该命令,
-bash: vgcreate: 未找到命令
[root@c7 ~]# yum install -y lvm2          #使用些命令安装
[root@c7 ~]# fdisk -l | grep "^/dev"      #sda5和sda6为刚分的磁盘,格式调整为8e
/dev/sda1   *        2048    41945087    20971520   83  Linux
/dev/sda2        41945088    50333695     4194304   82  Linux swap / Solaris
/dev/sda3        50333696   251658239   100662272    5  Extended
/dev/sda5        50335744    71307263    10485760   8e  Linux LVM
/dev/sda6        71309312    92280831    10485760   8e  Linux LVM
[root@c7 ~]# pvcreate /dev/sda5           #创建
  Physical volume "/dev/sda5" successfully created
[root@c7 ~]# pvcreate /dev/sda6           #创建
  Physical volume "/dev/sda6" successfully created
[root@c7 ~]# pvs                          #查看pvs信息
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sda5       lvm2 ---  10.00g 10.00g
  /dev/sda6       lvm2 ---  10.00g 10.00g
[root@c7 ~]# vgcreate myvg -s 8 /dev/sda{5,6}    #-s 8为设置PE为8MB
  Volume group "myvg" successfully created
[root@c7 ~]# vgs                                 #查看vg信息 
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   0   0 wz--n- 19.98g 19.98g
[root@c7 ~]# vgdisplay myvg                      #查看详细信息,20G和8MB
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  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               19.98 GiB
  PE Size               8.00 MiB
  Total PE              2558
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2558 / 19.98 GiB
  VG UUID               hlCe5B-jnvc-itBF-Nu5Z-a1rC-75zK-VuUvMG
   
[root@c7 ~]# lvcreate -L 5G -n mylv1 myvg        #创建5G的mylv1逻辑卷
  Logical volume "mylv1" created.
[root@c7 ~]# lvs                                 #查看lvs,已有5G的mylv1逻辑卷
  LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1 myvg -wi-a----- 5.00g                                                    
[root@c7 ~]# lvdisplay                           #显示详细信息
  --- Logical volume ---
  LV Path                /dev/myvg/mylv1
  LV Name                mylv1
  VG Name                myvg
  LV UUID                EnMz3a-nT5R-zZII-IB9z-0vj0-UHKN-19lgsS
  LV Write Access        read/write
  LV Creation host, time c7, 2016-09-28 07:23:46 +0800
  LV Status              available
  # open                 0
  LV Size                5.00 GiB
  Current LE             640
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
[root@c7 ~]# mke2fs -t ext4 /dev/myvg/mylv1       #格式化为ext4
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
第一个数据块=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: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

#创建/user目录,自动挂载至此目录
[root@c7 ~]# mkdir /users                      
[root@c7 ~]# echo "/dev/myvg/mylv1    /users   ext4  defaults,acl,nodiratime  0 0"  >> /etc/fstab
[root@c7 ~]# mount -a         
[root@c7 ~]# df -h   
文件系统                容量  已用  可用 已用% 挂载点
/dev/sda1                20G  1.1G   18G    6% /
devtmpfs                1.9G     0  1.9G    0% /dev
tmpfs                   1.9G     0  1.9G    0% /dev/shm
tmpfs                   1.9G  8.5M  1.9G    1% /run
tmpfs                   1.9G     0  1.9G    0% /sys/fs/cgroup
tmpfs                   378M     0  378M    0% /run/user/0
/dev/mapper/myvg-mylv1  4.8G   20M  4.6G    1% /users


14、新建用户magedu;其家目录为users/magedu,而后su切换至此用户,复制多个文件至家目录;

[root@c6 ~]# mkdir /users                          #创建/users目录
[root@c6 ~]# useradd -d /users/magedu magedu       #创建magedu,其家目录为/users/magedu
[magedu@c6 ~]$ tail -1 /etc/passwd                 #验证用户
magedu:x:3004:3004::/users/magedu:/bin/bash
[root@c6 ~]# su - magedu                           #切换到magedu用户下
[magedu@c6 ~]$ pwd
/users/magedu
[magedu@c6 ~]$ cp -a /etc/fstab /etc/issue /users/magedu/   #复制多个文件到/users/magedu/
[magedu@c6 ~]$ ls /users/magedu/                   #查看文件
fstab  issue


15、扩展mylv1至9G,确保扩展完成后原有数据完全可用;

[root@c7 ~]# lvextend -L +4G /dev/myvg/mylv1             #加4G
  Size of logical volume myvg/mylv1 changed from 5.00 GiB (640 extents) to 9.00 GiB (1152 extents).
  Logical volume mylv1 successfully resized.
[root@c7 ~]# resize2fs /dev/myvg/mylv1                   #检查文件
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/myvg/mylv1 is mounted on /users; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/myvg/mylv1 is now 2359296 blocks long.

[root@c7 ~]# lvs                                         #查看信息,加到9G
  LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1 myvg -wi-ao---- 9.00g                                                    
[root@c7 ~]# df -h                                       #查看磁盘
文件系统                容量  已用  可用 已用% 挂载点
/dev/sda1                20G  1.1G   18G    6% /
devtmpfs                1.9G     0  1.9G    0% /dev
tmpfs                   1.9G     0  1.9G    0% /dev/shm
tmpfs                   1.9G  8.6M  1.9G    1% /run
tmpfs                   1.9G     0  1.9G    0% /sys/fs/cgroup
tmpfs                   378M     0  378M    0% /run/user/0
/dev/mapper/myvg-mylv1  8.8G   23M  8.3G    1% /users


16、缩减mylv1至7G,确保缩减完成后原有数据完全可用;

[root@c7 ~]# umount /dev/myvg/mylv1                   #卸载
[root@c7 ~]# df -h                                    #查看磁盘,已卸载
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda1        20G  1.1G   18G    6% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G  8.6M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
tmpfs           378M     0  378M    0% /run/user/0
[root@c7 ~]# e2fsck -f /dev/myvg/mylv1                #检查文件
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/myvg/mylv1: 11/589824 files (0.0% non-contiguous), 75551/2359296 blocks
[root@c7 ~]# resize2fs /dev/myvg/mylv1 7G             
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/myvg/mylv1 to 1835008 (4k) blocks.
The filesystem on /dev/myvg/mylv1 is now 1835008 blocks long.
[root@c7 ~]# lvreduce -L -2G /dev/myvg/mylv1         #lv缩减至7G
  WARNING: Reducing active logical volume to 7.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv1? [y/n]: y
  Size of logical volume myvg/mylv1 changed from 9.00 GiB (1152 extents) to 7.00 GiB (896 extents).
  Logical volume mylv1 successfully resized.
[root@c7 ~]# lvs
  LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1 myvg -wi-a----- 7.00g                                                    
[root@c7 ~]# mount /dev/myvg/mylv1 /users/            #重新挂载
[root@c7 ~]# df -h                                    #查看磁盘空间,改为7G
文件系统                容量  已用  可用 已用% 挂载点
/dev/sda1                20G  1.1G   18G    6% /
devtmpfs                1.9G     0  1.9G    0% /dev
tmpfs                   1.9G     0  1.9G    0% /dev/shm
tmpfs                   1.9G  8.6M  1.9G    1% /run
tmpfs                   1.9G     0  1.9G    0% /sys/fs/cgroup
tmpfs                   378M     0  378M    0% /run/user/0
/dev/mapper/myvg-mylv1  6.8G   23M  6.5G    1% /users
[root@c7 ~]# cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Wed Sep 28 04:55:14 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=60220b4e-9c6d-4373-b06b-0b5687833781 /                       ext4    defaults        1 1
UUID=55ef4f5d-51cc-4de7-a17c-e96370afc1eb swap                    swap    defaults        0 0
/dev/myvg/mylv1    /users   ext4  defaults,acl,nodiratime  0 0


17、对mylv1创建快照,并通过备份数据;要求保留原有的属主属组等信息;

[root@c7 ~]# lvcreate -L 3G -p r -s -n mylv1.bak /dev/myvg/mylv1    #创建快照
  Logical volume "mylv1.bak" created.
[root@c7 ~]# lvs                                                    #查看mylv1.bak存在 
  LV        VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1     myvg owi-aos--- 7.00g                                                    
  mylv1.bak myvg sri-a-s--- 3.00g      mylv1  0.00                                   
[root@c7 ~]# mkdir /snapshot                                        #创建一个/snapshot用于挂载
[root@c7 ~]# mount /dev/myvg/mylv1                                  
mylv1      mylv1.bak  
[root@c7 ~]# mount /dev/myvg/mylv1.bak /snapshot/                   #挂载mylv1.bak到/snapshot
mount: /dev/mapper/myvg-mylv1.bak 写保护,将以只读方式挂载
[root@c7 ~]# ls /snapshot/                                          #可以查看
lost+found