N25第七周RAID LV 概述及示例,swap创建,read 特殊用法以及bash脚本示例

1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;

mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdc1
tune2fs -o acl /dev/sdc1

[root@localhost ~]# tune2fs -l /dev/sdc1  | head -n 20
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   MYDATA
Last mounted on:          <not available>
Filesystem UUID:          07bffbb5-3c74-4be1-9d1e-9ebe41c82f34
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              655360
Block count:              5242880
Reserved block count:     104857
Free blocks:              5121266
Free inodes:              655349
First block:              0
Block size:               2048
Fragment size:            2048

[root@localhost ~]# mount -o noatime,noauto -L MYDATA  /data/mydata
[root@localhost ~]# mount | tail -1
/dev/sdc1 on /data/mydata type ext4 (rw,noatime,seclabel,data=ordered)

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

[root@localhost ~]# mkswap /dev/sdb2
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=b74adcbd-fe54-48bf-947f-a0396cb0319f
[root@localhost ~]# swapon /dev/sdb2        #
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1001336      194708      537976        7216      268652      606452
Swap:       3146744           0     3146744
[root@localhost ~]#

3、写一个脚本 (1)、获取并列出当前系统上的所有磁盘设备; (2)、显示每个磁盘设备上每个分区相关的空间使用信息;

[root@localhost tmp]# cat ./disfree.sh
#!/bin/bash
echo " all disks informations:"
fdisk -l | grep "^Disk /dev/[hs]d[abcd]"

echo "each partition informations of each disk"
fdisk -l | grep "^/dev/[hs]d[abcd][1-9]"
[root@localhost tmp]# bash ./disfree.sh
 all disks informations:
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectors
each partition informations of each disk
/dev/sdb1            2048    10487807     5242880    5  Extended
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4812799     2098176   82  Linux swap / Solaris
/dev/sda3         4812800   251658239   123422720   83  Linux
[root@localhost tmp]#

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

N25第七周RAID LV 概述及示例,swap创建,read 特殊用法以及bash脚本示例N25第七周RAID LV 概述及示例,swap创建,read 特殊用法以及bash脚本示例

5、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k; 首先要建立分区—-》 调整分区类型fd—->然后让系统重读分区信息kpartx -a /path/to/device

  建立RAID1:mdadm -C /dev/md0 -a yes -n 2 -l 1 -c 128 -x 1 /dev/sd[b-d]1

  [root@localhost ~]# mdadm -D /dev/md127
    /dev/md127:
            Version : 1.2
      Creation Time : Sun Jan  1 13:27:16 2017
         Raid Level : raid1
         Array Size : 10482112 (10.00 GiB 10.73 GB)
      Used Dev Size : 10482112 (10.00 GiB 10.73 GB)
       Raid Devices : 2
      Total Devices : 3
        Persistence : Superblock is persistent

        Update Time : Mon Jan  2 00:29:12 2017
              State : clean 
     Active Devices : 2
    Working Devices : 3
     Failed Devices : 0
      Spare Devices : 1

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : fd6aa856:f594ccf5:bcb8b1fa:b666a0ff
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1

       2       8       49        -      spare   /dev/sdd1

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

  首先要建立分区----》 调整分区类型fd---->然后让系统重读分区信息kpartx -a /path/to/device

  建立RAID1:mdadm -C /dev/md0 -a yes -n 2 -l 5 -c 256  /dev/sd[b-d]1

  格式化ext4文件系统:

    [root@localhost ~]# mke2fs -t ext4 -L 'mddata' /dev/md0
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=mddata
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=64 blocks, Stripe width=128 blocks
    262144 inodes, 1047552 blocks
    52377 blocks (5.00%) reserved for the super user
    First data block=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: done                            
    Writing inode tables: done                            
    Creating journal (16384 blocks): done
    Writing superblocks and filesystem accounting information: done 


  [root@localhost ~]# mdadm -D /dev/md0
    /dev/md0:
            Version : 1.2
      Creation Time : Sun Jan  1 18:48:28 2017
         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 : Sun Jan  1 18:59:36 2017
              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 : 9a2cade4:b8237d53:1ddcb8ce:b25afdfd
             Events : 18

        Number   Major   Minor   RaidDevice State
           0       8       17        0      active sync   /dev/sdb1
           1       8       33        1      active sync   /dev/sdc1
           3       8       49        2      active sync   /dev/sdd1
    [root@localhost ~]# blkid /dev/md0
    /dev/md0: LABEL="mddata" UUID="19d7ccc2-2c2a-4480-9578-8557356f2058" TYPE="ext4" 
    [root@localhost ~]# cat /etc/fstab

    #
    # /etc/fstab
    # Created by anaconda on Tue Nov  8 20:12:18 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=e4326591-c5be-42b7-9a3f-080fdef925a7 /                       xfs     defaults        0 0
    UUID=8096d939-e581-466a-b8b4-f77b509922a0 /boot                   xfs     defaults        0 0
    UUID=bf72d293-8677-41c5-8a2f-607f3b4b0e14 swap                    swap    defaults        0 0
    LABEL=mddata                 /backup              ext4    defaults,noatime,acl 0 0

    [root@localhost ~]# mount -a

7、写一个脚本 (1) 接受一个以上文件路径作为参数; (2) 显示每个文件拥有的行数; (3) 总结说明本次共为几个文件统计了其行数;

[root@localhost ~]# cat /tmp/lines_counter.sh
#!/bin/bash
 echo -n " please input paths of documents:"; read -a doc
 wc -l ${doc[*]}
 echo "total ${#doc[*]} pieces documents are count"

[root@localhost ~]# bash /tmp/lines_counter.sh
 please input paths of documents:/etc/fstab /etc/issue
 15 /etc/fstab
  3 /etc/issue
 18 total
total 2 pieces documents are count

8、写一个脚本 (1) 传递两个以上字符串当作用户名; (2) 创建这些用户;且密码同用户名; (3) 总结说明共创建了几个用户;

[root@localhost ~]# cat /tmp/useradd
#!/bin/bash
 echo -n " please input username:"; read -a name
 for i in $(seq 0 $[${#name[*]}-1]); do
       useradd ${name[$i]} && echo "${name[$i]}"| passwd ${name[$i]} --stdin 
       done
 echo "total ${#name[*]} users are added"

[root@localhost ~]# bash /tmp/useradd
 please input username:jerr1 jerr2 jerr3 jerr4
Changing password for user jerr1.
passwd: all authentication tokens updated successfully.
Changing password for user jerr2.
passwd: all authentication tokens updated successfully.
Changing password for user jerr3.
passwd: all authentication tokens updated successfully.
Changing password for user jerr4.
passwd: all authentication tokens updated successfully.
total 4 users are added
[root@localhost ~]#

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

[root@localhost ~]# cat /tmp/idcount
#!/bin/bash
  declare -i sum=0
  for ((i=1;i<=20;i++));do
        useradd visitor$i 
        echo "user visitor$i added complete"
        let  id1=$(id -u visitor$i)
        let sum+=$id1
        done
  echo " total SUM of these id: $sum"


[root@localhost ~]#

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

[root@localhost ~]# cat /tmp/blank_counter.sh
#!/bin/bash
 echo -n " please input paths of documents:"; read -a doc
 declare -i total_lines=0
 declare -i totla_blank=0
 for i in $(seq 0 $[${#doc[*]}-1]);do
       lines1=$(grep -E "^#.*" ${doc[$i]}| wc -l)
       lines_blank=$(grep -E "^[[:space:]]*$" ${doc[$i]}| wc -l)
    echo " ${doc[$i]} total lines begin with # : $lines1,total blank lines:$lines_blank"
       let  total_lines+=$lines1
       let  total_blank+=$lines_blank
       done
 echo "All documents total lines:$total_lines,total blank: $total_blank"

[root@localhost ~]# bash /tmp/blank_counter.sh
 please input paths of documents:/etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab
 /etc/rc.d/rc.sysinit total lines begin with # : 44,total blank lines:99
 /etc/rc.d/init.d/functions total lines begin with # : 40,total blank lines:75
 /etc/fstab total lines begin with # : 7,total blank lines:1
All documents total lines:91,total blank: 175
[root@localhost ~]#

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

[root@localhost ~]# cat  /tmp/UID_counter
#!/bin/bash
declare -i sum=0 
  while read line;do
        username=$(echo $line | cut -d: -f1)
        useruid=$(echo $line | cut -d: -f3)
        shell=$(echo $line | cut -d: -f7)
        if [ "$shell" == "/bin/bash" ];then
           echo "bash user: $username,$useruid"
           let sum+=$useruid
       fi
  done < /etc/passwd
echo "total Sum of uid: $sum"

    [root@localhost ~]# bash /tmp/UID_counter | tail
    bash user: visitor12,544
    bash user: visitor13,545
    bash user: visitor14,546
    bash user: visitor15,547
    bash user: visitor16,548
    bash user: visitor17,549
    bash user: visitor18,550
    bash user: visitor19,551
    bash user: visitor20,552
    total Sum of uid: 27375
    [root@localhost ~]#

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

    [root@localhost ~]# cat /tmp/usercounter
    #!/bin/bash
    declare -i sum=0
    while read line;do
            username=$(echo $line | cut -d: -f1)
            id $username | grep ',' &> /dev/null
            if [ $? -eq 0 ];then
               echo "$username has secondary group"
               let sum+=1
            fi
    done < /etc/passwd
    echo " total $sum users have secondary group"

    [root@localhost ~]# bash /tmp/usercounter
    qemu has secondary group
    postfix has secondary group
    mix has secondary group
    gesrrt has secondary group
    fedora has secondary group
    jow has secondary group
    magedu has secondary group
     total 7 users have secondary group
    [root@localhost ~]#

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

[root@localhost ~]# vgcreate -s 8M myvg /dev/sda5 /dev/sda6
  Volume group "myvg" successfully created
[root@localhost ~]# vgdisplay
  --- 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               os7kzA-jngy-32xq-D0tE-Ey7S-Xgj9-tmpgnn

root@localhost ~]# lvcreate -L 5G -n mylv1 myvg
  Logical volume "mylv1" created.
[root@localhost ~]# mke2fs -t ext4 /dev/myvg/mylv1
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 ~]# blkid /dev/myvg/mylv1
[root@localhost ~]# tune2fs -L mylv1 /dev/myvg/mylv1
tune2fs 1.42.9 (28-Dec-2013)
[root@localhost ~]# blkid /dev/myvg/mylv1
/dev/myvg/mylv1: LABEL="mylv1" UUID="60c02ab3-e5f8-4629-b884-dd1a17f247b0" TYPE="ext4"

[root@localhost ~]# cat /etc/fstab

    #
    # /etc/fstab
    # Created by anaconda on Tue Nov  8 20:12:18 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=e4326591-c5be-42b7-9a3f-080fdef925a7 /                       xfs     defaults        0 0
UUID=8096d939-e581-466a-b8b4-f77b509922a0 /boot                   xfs     defaults        0 0
UUID=bf72d293-8677-41c5-8a2f-607f3b4b0e14 swap                    swap    defaults        0 0
LABEL=mylv1                              /users                   ext4     defaults,acl   0 0

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

[root@localhost ~]# useradd -d /users/magedu magedu
[root@localhost magedu]# su magedu
[magedu@localhost ~]$ cp /etc/{fstab,issue} /user/magedu

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

[root@localhost ~]# lvextend -L 9G /dev/myvg/mylv1
  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@localhost ~]# 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.

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

[root@localhost ~]# umount /dev/myvg/mylv1
[root@localhost ~]# e2fsck -f /dev/myvg/mylv1
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
mylv1: 26/589824 files (0.0% non-contiguous), 75566/2359296 blocks
root@localhost ~]# resize2fs /dev/myvg/mylv1 2G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/myvg/mylv1 to 524288 (4k) blocks.
The filesystem on /dev/myvg/mylv1 is now 524288 blocks long.
[root@localhost ~]# lvreduce -L 7G /dev/myvg/mylv1
  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.

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

[root@localhost ~]# lvcreate -s -L 512M -p r -n mylv-snap /dev/myvg/mylv1
 Logical volume "mylv-snap" created.
[root@localhost ~]# mount /dev/myvg/mylv-snap /mnt
mount: /dev/mapper/myvg-mylv--snap is write-protected, mounting read-only
 [root@localhost magedu]# cp -a ./ /users/magedu
cp: overwrite ‘/users/magedu/./.bashrc’? y   
cp: overwrite ‘/users/magedu/./.bash_profile’? 
cp: overwrite ‘/users/magedu/./.bash_history’? 
cp: overwrite ‘/users/magedu/./.bash_logout’? 
cp: overwrite ‘/users/magedu/./fstab’? 
cp: overwrite ‘/users/magedu/./issue’? 
cp: overwrite ‘/users/magedu/./.cache/abrt/lastnotification’? 
[root@localhost magedu]#

原创文章,作者:diglinux,如若转载,请注明出处:http://www.178linux.com/65814

(0)
diglinuxdiglinux
上一篇 2017-01-04
下一篇 2017-01-04

相关推荐

  • 日志SYSLOGD_OPTIONS 参数

    SYSLOGD_OPTIONS 参数

    Linux干货 2018-03-26
  • btrfs初步应用

    前言 一种技术要知其然,还要知其所以然。 Btrfs文件系统 Btrfs(B-tree文件系统,通常念成Butter FS,Better FS或B-tree FS),一种支持写入时复制(COW)的文件系统,运行在Linux操作系统,采用GPL授权。Oracle于2007年对外宣布这项计划,并发布源代码,在2014年8月发布稳定版目标是替换Linux目前的ex…

    Linux干货 2016-05-22
  • RPM包管理功能全解。【第三周】

    CentOS系统上rpm命令管理程序包: 安装、升级、卸载、查询、校验、数据库维护 rpm命令:rpm [OPTIONS] [PACKAGE_FILE]     安装:-i, –install     升级:-U, –update,&n…

    Linux干货 2016-11-26
  • 新的开始

    加入马帮,新的开始,加油!

    Linux干货 2016-09-19
  • 8月20日软件包管理

    软件包管理 本章内容 软件运行环境 软件包基础 Rpm包管理 yum管理 定制yum仓库 编译安装 软件运行环境 API:Application Programming Interface     POSIX:Portable OS 程序源代码–>预处理–>编译–>…

    Linux干货 2016-08-21
  • 马哥教育网络班22期+第8周课程练习

    week8: 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥也叫桥接器,是连接两个局域网的一种存储/转发设备,它能将一个大的LAN分割为多个网段, 或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可访问服务器。 它工作于OSI(开放系统互联参考模型)参考模型第二层,即“数据链路层”。 集线器的英文称为“H…

    Linux干货 2016-10-09