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

1. 创建一个10G的分区:
[root@localhost ~]# fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x67486aa6.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
         
Command (m for help): n                     #创建新分区
Command action
   e   extended
   p   primary partition (1-4)               #创建一个主分区
Partition number (1-4): 1                    #起始柱面从1开始
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +10G #分配10G大小空间
Command (m for help): w                     #保存并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

2. 通知内核重新读取硬盘分区表
[root@localhost ~]# partx -a /dev/sdb

3. 查看内核是否已经识别新的分区
[root@localhost ~]#  cat /proc/partitions  | grep sdb
   8       16   20971520 sdb
   8       17   10490413 sdb1
   
1)要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;

1. 格式化文件系统  
命令:mke2fs:ext系列文件系统专用管理工具
语法:mke2fs [OPTIONS] /dev/sd… 默认为ext2文件系统
      -t: {ext2|ext3|ext4}:指明要创建的文件系统类型;
      -b: {1024|2048|4096}:指明块大小,默认为4K,最大不超过4K
      -L: 'LABEL' :指明卷标
      -j: 创建有日志功能的文件系统ext3
          mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
      -i: 指明indoe与字节的比率;即每多少个字节创建一个inode;此大小不应该小于block的大小
      -N:直接指明要给此文件系统创建的inode的数量;
      -I: 一个inode记录大小128—4096
      -m: 默认5%,为管理人员指定预留空间占总空间的百分比
      -O: FEATURE[,…]:启用指定特性
      -O: ^FEATURE:关闭指定特性
      
[root@localhost ~]# mke2fs -b 2048 -m 2 -L MYDATA  /dev/sdb1 
mke2fs 1.41.12 (17-May-2010)
文件系统标签=MYDATA
操作系统:Linux
块大小=2048 (log=1)                                                        #块大小为2048
分块大小=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
657408 inodes, 5245206 blocks
104904 blocks (2.00%) reserved for the super user                    #预留空间百分比为2%
第一个数据块=0
Maximum filesystem blocks=543162368
321 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 
2048000, 3981312
正在写入inode表: 完成                            
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.



2. 设定默认挂载选项为acl
命令:tune2fs:查看或修改ext系列文件系统的某些属性;
语法:tune2fs [options] devicd
       -l:查看指定文件系统超级块信息;super block
       -L: 'LABEL':修改卷标
       -m:调整预留给管理员的空间百分比
       -j: 将ext2升级为ext3
       -O: [^]FEATHER: 文件系统属性启用或禁用,–O has_journal|^has_journal
       -o: 开启或关闭文件系统的默认挂载选项,–o acl|^acl
       -U: UUID: 修改UUID号
       
[root@localhost ~]# tune2fs  -o acl  /dev/sdb1
tune2fs 1.41.12 (17-May-2010)

3. 查看挂载属性
[root@localhost ~]# tune2fs /dev/sdb1  -l | grep 'Default mount options:'
Default mount options:    acl

2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
mount:通过查看/etc/mtab文件显示当前系统已挂载的所有设备
格式:mount [-fnrsvw] [-t vfstype] [-o options] device dir
        device:指明要挂载的设备;
                (1) 设备文件:例如/dev/sda5
                (2) 卷标:-L 'LABEL', 例如 -L 'MYDATA'
                (3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
                (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
        dir:挂载点
                    事先存在;建议使用空目录;
                    进程正在使用中的设备无法被卸载;
        常用命令选项:
                -t vsftype:指定要挂载的设备上的文件系统类型;
                    -r: readonly,只读挂载;
                    -w: read and write, 读写挂载;
                    -n: 不更新/etc/mtab; 
                    -a:自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
                    -L 'LABEL': 以卷标指定挂载设备;
                    -U 'UUID': 以UUID指定要挂载的设备;
                    -B, --bind: 绑定目录到另一个目录上;
                    注意:查看内核追踪到的已挂载的所有设备:cat /proc/mounts
                    -o options:(挂载文件系统的选项)
                                async:异步模式;
                                sync:同步模式;
                                atime/noatime:包含目录和文件;
                                diratime/nodiratime:目录的访问时间戳
                                auto/noauto:是否支持自动挂载
                                exec/noexec:是否支持将文件系统上应用程序运行为进程
                                dev/nodev:是否支持在此文件系统上使用设备文件;
                                suid/nosuid:
                                remount:重新挂载
                                ro:
                                rw:
                                user/nouser:是否允许普通用户挂载此设备
                                acl:启用此文件系统上的acl功能
                                注意:上述选项可多个同时使用,彼此使用逗号分隔;                    
                                默认挂载选项:defaults
                                  rw, suid, dev, exec, auto, nouser, and async

1. 挂载目录                                  
[root@localhost ~]# mount -o noexec,noatime  /dev/sdb1  /data/mydata/

2. 查看是否挂载成功
[root@localhost ~]# df -h
文件系统      容量  已用  可用 已用%% 挂载点
/dev/mapper/VolGroup-lv_root
                      6.5G  738M  5.4G  12% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             485M   30M  430M   7% /boot
/dev/sr0              4.1G  4.1G     0 100% /media
/dev/sdb1             9.9G   13M  9.7G   1% /data/mydata


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

1. 创建一个1G的分区
[root@localhost ~]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1307-2610, default 1307): 
Using default value 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-2610, default 2610): +1G
Command (m for help): 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)
Syncing disks.

2. 通知内核重新读取硬盘分区表
[root@localhost ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1

3. 查看内核是否已经识别新的分区
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name
   8        0    8388608 sda
   8        1     512000 sda1
   8        2    7875584 sda2
   8       16   20971520 sdb
   8       17   10490413 sdb1
   8       18    1060290 sdb2
 253        0    6856704 dm-0
 253        1    1015808 dm-1
 
4. 格式化新的分区为swap
[root@localhost ~]# mkswap /dev/sdb2 
Setting up swapspace version 1, size = 1060284 KiB
no label, UUID=4d52d9ca-e321-4167-bc70-dc1b85b221de

5. 开启swap
开启swap
启用:swapon
格式:swapon [OPTION]... [DEVICE]
选项:
	-a:激活所有的交换分区;
	-p PRIORITY:指定优先级;
禁用:swapoff [OPTION]... [DEVICE]

查看现有swap大小
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           491        192        299          0         10         96
-/+ buffers/cache:         85        406
Swap:          991          0        991


开启
[root@localhost ~]# swapon /dev/sdb2      

查看
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           491        192        299          0         10         96
-/+ buffers/cache:         85        405
Swap:         2027          0       2027

6. 永久生效
[root@localhost ~]# vim /etc/fstab 
/dev/sdb2               swap                    swap    defaults        0 0


三、写一个脚本

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

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

[root@zabbix ~]# cat test.sh 
#!/bin/bash
disk=$(fdisk -l | grep  -o  '^Disk /dev/[a-z]d[a-z]'|awk '{print $2}')
echo -e  "all disk as follows:\n${disk}\n"
echo -e 'All the partition information as follows:'
for i in `fdisk -l | grep    '^/dev/[a-z]d[a-z][1-9]' |awk '{print $1}'`
do
    df -h $i | grep -C2 '^/dev/'
done

[root@zabbix ~]# ./test.sh 
all disk as follows:
/dev/vda
/dev/vdb
/dev/vdc

All the partition information as follows:
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2        48G   28G   17G  63% /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vdb2       3.0G   69M  2.9G   3% /media
Filesystem      Size  Used Avail Use% Mounted on
/dev/vdc1        99G  189M   94G   1% /var/mogdata


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

RAID-0:条带卷,strip;
    读、写性能提升;(IO速度最快)
    可用空间:N*min(S1,S2,...)
    无容错能力
    最少磁盘数:2, 2+(两个或两个以上)
    
RAID-1:  镜像卷,mirror;
    读性能提升、写性能略有下降;
    可用空间:1*min(S1,S2,...)
    有冗余能力(容错性最好)
     最少磁盘数:2, 2+
     
RAID-4:
    读、写性能提升
    可用空间:(N-1)*min(S1,S2,...)
    有容错能力:最多坏1块磁盘
    最少磁盘数:3, 3+        
    
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
    有容错能力:每组镜像最多只能坏1块磁盘;
    最少磁盘数:4, 4+
    
RAID-01:
    读、写性能提升
    可用空间:N*min(S1,S2,...)/2
    有容错能力:最多坏1块
    最少磁盘数:4, 4+
    
RAID-50:
    RAID 5与RAID 0的组合,先作RAID 5,再作RAID 0。
        读、写性能提升
    可用空间:(N-1)*min(S1,S2,...)/2
    有容错能力:每组镜像最多只能坏1块磁盘;
    最少磁盘数:6,6+
    
JBOD:(Just a Bunch Of Disks)
    将多块磁盘的空间合并一个大的连续空间使用;
    可用空间:sum(S1,S2,...)


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

1. 创建分区
[root@localhost ~]# fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x7e9c8894.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4568, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-4568, default 4568): +10G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1307-4568, default 1307): 
Using default value 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-4568, default 4568): +10G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (2613-4568, default 2613): 
Using default value 2613
Last cylinder, +cylinders or +size{K,M,G} (2613-4568, default 4568): +10G

调整分区类型为fd 
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): fd
Changed system type of partition 3 to fd (Linux raid autodetect)

查看分区
Command (m for help): p

Disk /dev/sdb: 37.6 GB, 37580963840 bytes
255 heads, 63 sectors/track, 4568 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7e9c8894

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  fd  Linux raid autodetect
/dev/sdb2            1307        2612    10490445   fd  Linux raid autodetect
/dev/sdb3            2613        3918    10490445   fd  Linux raid autodetect

保存
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

2. 通知内核重读分区表
[root@localhost ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3

3. 查看内核是否已经识别新的分区
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0    8388608 sda
   8        1     512000 sda1
   8        2    7875584 sda2
   8       16   36700160 sdb
   8       17   10490413 sdb1
   8       18   10490445 sdb2
   8       19   10490445 sdb3
 253        0    6856704 dm-0
 253        1    1015808 dm-1
 
4. 创建raid 1
mdadm:模式化的工具
格式:mdadm [mode] <raiddevice> [options] <component-devices>
支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10; 

	模式:
	    创建:-C
	    装配: -A
	    监控: -F
	    管理:-f, -r, -a

	-C: 创建模式
		     -n #: 使用#个块设备来创建此RAID;
		     -l #:指明要创建的RAID的级别;
		     -a {yes|no}:自动创建目标RAID设备的设备文件;
		     -c CHUNK_SIZE: 指明块大小;
		     -x #: 指明空闲盘的个数;
		     
	-D:显示raid的详细信息;
		      mdadm -D /dev/md#

	管理模式:
			    -f: 标记指定磁盘为损坏;
			    -a: 添加磁盘
			    -r: 移除磁盘

	观察md的状态:
			    cat /proc/mdstat

	停止md设备:
			    mdadm -S /dev/md#
			    
创建			    
[root@localhost ~]# mdadm -C /dev/md0 -a yes -c 128 -n 2 -x 1 -l 1 /dev/sdb{1,2,3}
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? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

5. 查看raid 1信息
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Sep 18 14:20:18 2016
     Raid Level : raid1
     Array Size : 10489317 (10.00 GiB 10.74 GB)
  Used Dev Size : 10489317 (10.00 GiB 10.74 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sun Sep 18 14:21:32 2016
          State : active
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 87a4e613:6e5b5509:58b3f31c:3685e1f8
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2

       2       8       19        -      spare   /dev/sdb3


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

1. 创建分区
[root@localhost ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4568, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-4568, default 4568): +4G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (524-4568, default 524): 
Using default value 524
Last cylinder, +cylinders or +size{K,M,G} (524-4568, default 4568): +4G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1047-4568, default 1047): 
Using default value 1047
Last cylinder, +cylinders or +size{K,M,G} (1047-4568, default 4568): +4G

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): fd
Changed system type of partition 3 to fd (Linux raid autodetect)

Command (m for help): p

Disk /dev/sdb: 37.6 GB, 37580963840 bytes
255 heads, 63 sectors/track, 4568 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7e9c8894

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         523     4200966   fd  Linux raid autodetect
/dev/sdb2             524        1046     4200997+  fd  Linux raid autodetect
/dev/sdb3            1047        1569     4200997+  fd  Linux raid autodetect

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

2. 通知内核重读分区表
[root@localhost ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3

3. 查看内核是否已经识别新的分区
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0    8388608 sda
   8        1     512000 sda1
   8        2    7875584 sda2
   8       16   36700160 sdb
   8       17    4200966 sdb1
   8       18    4200997 sdb2
   8       19    4200997 sdb3
 253        0    6856704 dm-0
 253        1    1015808 dm-1
 
 4. 创建raid 5
 [root@localhost ~]# mdadm -C /dev/md0 -a yes -c 256 -n 3 -l 5 /dev/sdb{1,2,3}
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=raid1 devices=2 ctime=Sun Sep 18 14:20:18 2016
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

5. 查看 raid 5 信息
[root@localhost ~]# mdadm -D /dev/md0 
/dev/md0:
        Version : 1.2
  Creation Time : Sun Sep 18 14:38:48 2016
     Raid Level : raid5
     Array Size : 8399360 (8.01 GiB 8.60 GB)
  Used Dev Size : 4199680 (4.01 GiB 4.30 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sun Sep 18 14:40:00 2016
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 256K

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 484a2c9b:8bfef9d1:55fcf0a7:bd10b14d
         Events : 20

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2
       3       8       19        2      active sync   /dev/sdb3

6. 格式化文件系统
[root@localhost ~]# mkfs.ext4 /dev/md0
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=64 blocks, Stripe width=128 blocks
525200 inodes, 2099840 blocks
104992 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2151677952
65 block groups
32768 blocks per group, 32768 fragments per group
8080 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

7. 开机自动挂载
[root@localhost ~]# vim /etc/fstab 
/dev/md0                /backup                 ext4    acl,noatime     0 0

七、写一个脚本

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

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

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

#!/bin/bash
if [ $# -lt 2 ]
then
    echo "Please enter one or more parameters"  
    exit 1
fi

for i in  $@
do
    if [ -f $i 2> /dev/null ]
    then
        wc -l $i
    else
        echo 'Please enter the file as a parameter...'
	exit 1
    fi
done

echo "本次总计为了$#个文件统计了行数"

[root@localhost ~]# ./wc.sh /etc/passwd /etc/issue
19 /etc/passwd
3 /etc/issue
本次总计为了2个文件统计了行数



八、写一个脚本

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

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

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

[root@localhost ~]# cat user.sh 
#!/bin/bash
name_sum=0

for i in $@
do
    name=$i
    if [ ${#name} -gt 2 ]
    then
        echo 'Account name meet the requirements'
	        useradd $i;echo $i |  passwd --stdin  $i;let name_sum+=1
    else
        echo 'Account name does not meet the requirements'
        exit 1
    fi
   
done

echo "本次共创建$name_sum个用户"


[root@localhost ~]# ./user.sh aa bbb cccc dddddd
Account name does not meet the requirements
Account name meet the requirements
更改用户 bbb 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
Account name meet the requirements
更改用户 cccc 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
Account name meet the requirements
更改用户 dddddd 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
本次共创建3个用户



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

[root@localhost ~]# cat id.sh 
#!/bin/bash
id_sum=0
for i in `seq 20`
do
    useradd visitor$i; echo "visitor$i" | passwd --stdin visitor$i
    let id_sum+=$(id -u visitor$i) 
done

echo "visitor1-visitor20的id之和为$id_sum"

[root@localhost ~]# ./id.sh 
更改用户 visitor1 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor2 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor3 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor4 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor5 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor6 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor7 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor8 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor9 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor10 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor11 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor12 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor13 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor14 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor15 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor16 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor17 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor18 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor19 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 visitor20 的密码 。
passwd: 所有的身份验证令牌已经成功更新。

visitor1-visitor20的id之和为10250


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

[root@localhost ~]# cat wc.sh 
#!/bin/bash
if [ $# -lt 2 ]
then
    echo "Please enter one or more parameters"  
    exit 1
fi

line_sum=0
space_sum=0

for i in  $@
do
    if [ -f $i 2> /dev/null ]
    then
        let line_sum+=$(grep '^#' $i | wc -l)
	    let space_sum+=$(grep '^[[:space:]]*$' /etc/rc.d/rc.sysinit|wc -l)
    else
        echo 'Please enter the file as a parameter...'
	exit 1
    fi
done

echo -e  "以#开头行的总数为$line_sum\n 空白行的总数为$space_sum"

[root@localhost ~]# ./wc.sh /etc/rc.d/rc.sysinit  /etc/rc.d/init.d/functions  /etc/fstab 
以#开头行的总数为87
空白行的总数为291


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

[root@localhost ~]# cat id.sh 
#!/bin/bash
id_sum=0
bash_count=`grep  '/bin/bash' /etc/passwd | cut -d':' -f1,3`
echo  -e "当前系统上shell为bash的有\n $bash_count"

for i in $bash_count
do
    let id_sum+=`echo $i|cut -d':' -f2`
done

echo "当前系统上的shell为bash的id之和为$id_sum"

[root@localhost ~]# ./id.sh 
当前系统上shell为bash的有
 root:0
bbb:500
cccc:501
dddddd:502
visitor1:503
visitor2:504
visitor3:505
visitor4:506
visitor5:507
visitor6:508
visitor7:509
visitor8:510
visitor9:511
visitor10:512
visitor11:513
visitor12:514
visitor13:515
visitor14:516
visitor15:517
visitor16:518
visitor17:519
visitor18:520
visitor19:521
visitor20:522
当前系统上的shell为bash的id之和为11753


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

[root@localhost ~]# cat group.sh 
#!/bin/bash
user=`cut -d':' -f1 /etc/passwd`
user_sum=0
for i in $user
do
   if [ `id -n -G $i` == $i 2> /dev/null ]
   then
       echo "$i没有附加组"
   else
       let user_sum+=1
   fi
done


echo "拥有附加组用户的数量为:$user_sum"
[root@localhost ~]# ./group.sh 
lp没有附加组
mail没有附加组
uucp没有附加组
gopher没有附加组
ftp没有附加组
nobody没有附加组
vcsa没有附加组
saslauth没有附加组
sshd没有附加组
admin没有附加组
拥有附加组用户的数量为:13


十三、为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录,支持acl;

1. 创建分区
[root@localhost ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4568, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-4568, default 4568): +5G

修改分区类型为lvm
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdb: 37.6 GB, 37580963840 bytes
255 heads, 63 sectors/track, 4568 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7e9c8894

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  8e  Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

2. 通知内核重读分区表
[root@localhost ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1
3. 查看内核是否已经识别新的分区
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0    8388608 sda
   8        1     512000 sda1
   8        2    7875584 sda2
   8       16   36700160 sdb
   8       17    5253223 sdb1
 253        0    6856704 dm-0
 253        1    1015808 dm-1
 
4.创建物理卷pv
 [root@localhost ~]# pvcreate /dev/sdb1 
  Physical volume "/dev/sdb1" successfully created
  
5.创建卷组vg
  [root@localhost ~]# vgcreate mylv1group /dev/sdb1 
  Volume group "mylv1group" successfully created
  
6.创建逻辑卷lv
[root@localhost ~]# lvcreate -L 5G -n  mylv1 mylv1group 
  Logical volume "mylv1" created
  
7. 格式化逻辑卷
[root@localhost ~]# mke2fs -t ext4 /dev/mylv1group/mylv1 
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统: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

正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

8. 添加开机自动挂载
[root@localhost ~]# vim /etc/fstab 
/dev/mylv1group/mylv1   /users                  ext4    defaults,acl        0 0


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

[root@localhost ~]# useradd -d /users/magedu  magedu
[root@localhost ~]# su - magedu
[magedu@localhost ~]$ pwd
/users/magedu
[magedu@localhost ~]$ cp /etc/issue /etc/issue.net  .
[magedu@localhost ~]$ ll
总用量 8
-rw-r--r--. 1 magedu magedu 47  9月 18 17:43 issue
-rw-r--r--. 1 magedu magedu 46  9月 18 17:43 issue.net


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

1. 添加一块新的分区
[root@localhost ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1309-4568, default 1309): 
Using default value 1309
Last cylinder, +cylinders or +size{K,M,G} (1309-4568, default 4568): 
Using default value 4568

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdb: 37.6 GB, 37580963840 bytes
255 heads, 63 sectors/track, 4568 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7e9c8894

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  8e  Linux LVM
/dev/sdb2             655        1308     5253255   8e  Linux LVM
/dev/sdb3            1309        4568    26185950   8e  Linux LVM

Command (m for help): 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)
Syncing disks.

2. 通知内核重读分区表
[root@localhost ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2

3. 查看内核是否已经识别新的分区
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0    8388608 sda
   8        1     512000 sda1
   8        2    7875584 sda2
   8       16   36700160 sdb
   8       17    5253223 sdb1
   8       18    5253255 sdb2
   8       19   26185950 sdb3
 253        0    6856704 dm-0
 253        1    1015808 dm-1
 253        2    5242880 dm-2
 
 4.创建pv
 [root@localhost ~]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created
  
 5.添加到卷组
 [root@localhost ~]# vgextend  mylv1group /dev/sdb3 
  Volume group "mylv1group" successfully extended
  
 6.在线扩展lv
 [root@localhost ~]#  lvextend -L 9G /dev/mylv1group/mylv1 
  Extending logical volume mylv1 to 9.00 GiB
  Logical volume mylv1 successfully resized
  
 7. 调整文件系统大小
[root@localhost ~]# fsadm resize /dev/mylv1group/mylv1
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/mylv1group-mylv1 is mounted on /users; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/mylv1group-mylv1 to 2359296 (4k) blocks.
The filesystem on /dev/mapper/mylv1group-mylv1 is now 2359296 blocks long.

8.查看大小
[root@localhost ~]# df -h
文件系统	      容量  已用  可用 已用%% 挂载点
/dev/mapper/VolGroup-lv_root
                      6.5G  738M  5.4G  12% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             485M   30M  430M   7% /boot
/dev/mapper/mylv1group-mylv1
                      8.9G  140M  8.3G   2% /users
                      
9.测试数据完整性
[root@localhost ~]# cat /users/magedu/issue.net 
CentOS release 6.1 (Final)
Kernel \r on an \m


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

1. 卸载逻辑卷
[root@localhost ~]# umount /users/

2. 强制检测文件系统
[root@localhost ~]# e2fsck -f /dev/mylv1group/mylv1 
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/mylv1group/mylv1: 18/589824 files (0.0% non-contiguous), 72678/2359296 blocks

3. 调整文件系统大小
[root@localhost ~]# fsadm resize /dev/mylv1group/mylv1 7G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/mylv1group-mylv1 to 1835008 (4k) blocks.
The filesystem on /dev/mapper/mylv1group-mylv1 is now 1835008 blocks long.

4. 停止逻辑卷
[root@localhost ~]# lvchange -an /dev/mylv1group/mylv1 

5. 调整lv大小
[root@localhost ~]# lvreduce -L 7G /dev/mylv1group/mylv1
  Reducing logical volume mylv1 to 7.00 GiB
  Logical volume mylv1 successfully resized

6.重新激活挂载
[root@localhost ~]# lvchange -ay /dev/mylv1group/mylv1
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
文件系统	      容量  已用  可用 已用%% 挂载点
/dev/mapper/VolGroup-lv_root
                      6.5G  738M  5.4G  12% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             485M   30M  430M   7% /boot
/dev/mapper/mylv1group-mylv1
                      6.9G  140M  6.5G   3% /users
                      
7. 测试数据完整性
[root@localhost ~]# cat /users/magedu/issue.net 
CentOS release 6.1 (Final)
Kernel \r on an \m


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

1. 创建个128M的快照
[root@localhost ~]# lvcreate -s /dev/mylv1group/mylv1  -n mylv1_sn  -L 128M
  Logical volume "mylv1_sn" created
  
2.查看快照

[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/mylv1group/mylv1
  VG Name                mylv1group
  LV UUID                YD2JOb-tpfj-cfl9-Rhdr-5XB8-ldfe-QHO5eO
  LV Write Access        read/write
  LV snapshot status     source of
                         /dev/mylv1group/mylv1_sn [active]
  LV Status              available
  # open                 1
  LV Size                7.00 GiB
  Current LE             1792
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2
  
  3. 挂载
[root@localhost ~]# mount -r /dev/mylv1group/mylv1_sn  /mnt/
[root@localhost ~]# df -h
文件系统	      容量  已用  可用 已用%% 挂载点
/dev/mapper/VolGroup-lv_root
                      6.5G  738M  5.4G  12% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             485M   30M  430M   7% /boot
/dev/mapper/mylv1group-mylv1
                      6.9G  140M  6.5G   3% /users
/dev/mapper/mylv1group-mylv1_sn
                      6.9G  140M  6.5G   3% /mnt
                      
 4. 测试
 删除原卷的文件
[root@localhost ~]# rm -f /users/magedu/issue
查看快照卷的文件
[root@localhost ~]# ll /mnt/magedu/
总用量 8
-rw-r--r--. 1 magedu magedu 47  9月 18 17:43 issue
-rw-r--r--. 1 magedu magedu 46  9月 18 17:43 issue.net