第七周作业

第七周

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

[root@www ~]# fdisk /dev/sda  <-------------fdisk命令创建10G分区
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
First cylinder (6814-15665, default 6814): 
Using default value 6814
Last cylinder, +cylinders or +size{K,M,G} (6814-15665, default 15665): +10G           
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: Device or resource busy.
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.  

[root@www ~]# partx -a /dev/sda  <----------------partx命令让kernel读取新建的分区信息
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
BLKPG: Device or resource busy
error adding partition 4
BLKPG: Device or resource busy
error adding partition 5  
[root@www ~]# mke2fs -t ext4 -b 2048 -L MYDATA -m 2 /dev/sda5 <------------按要求创建文件系统
mke2fs 1.41.12 (17-May-2010)
Filesystem label=MYDATA
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 5242030 blocks
104840 blocks (2.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=542113792
320 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

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

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

[root@www ~]# tune2fs -o acl /dev/sda5    <---------------------用tune2fs修改默认挂载属性包含acl
tune2fs 1.41.12 (17-May-2010)  

[root@www ~]# tune2fs -l /dev/sda5        <---------------------用tune2fs验证结果
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   MYDATA
Last mounted on:          <not available>
Filesystem UUID:          1b73355f-b889-4bfb-840e-5102f10d65cf
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    acl             <---------------------默认挂载选项已修改包含acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              655360
Block count:              5242030
Reserved block count:     104840
Free blocks:              5120476
Free inodes:              655349
First block:              0
Block size:               2048
Fragment size:            2048
Reserved GDT blocks:      512
Blocks per group:         16384
Fragments per group:      16384
Inodes per group:         2048
Inode blocks per group:   256
Flex block group size:    16
Filesystem created:       Sat Sep  2 20:08:23 2017
Last mount time:          n/a
Last write time:          Sat Sep  2 20:09:36 2017
Mount count:              0
Maximum mount count:      28
Last checked:             Sat Sep  2 20:08:23 2017
Check interval:           15552000 (6 months)
Next check after:         Thu Mar  1 20:08:23 2018
Lifetime writes:          225 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      bd60bce1-1bf1-4db7-af63-032fa657b0d0
Journal backup:           inode blocks  

[root@www ~]# mkdir -pv /data/mydata                 <----------------------创建mydata目录
mkdir: created directory `/data'
mkdir: created directory `/data/mydata'  

[root@www ~]# mount -t ext4 -o noexec,noatime /dev/sda5 /data/mydata <---------挂载文件系统至mydata目录

[root@www ~]# mount                                  <-------------用mount命令验证结果
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda5 on /data/mydata type ext4 (rw,noexec,noatime)  <---------------挂载后带有noexec和noatime属性

注意:如要让新建的文件系统重启后自动挂载,需添加如下内容至/etc/fstab文件中;
LABEL=MYDATA /data/mydata ext4 defaults,acl,noexec,noatime 0 0

/etc/fstab文件分6个字段:
a. 要挂载的设备,可用设备文件,LABEL名或UUID;如示例中用LABEL=MYDATA
b. 挂载点;如示例中/data/mydata
c. 文件系统类型,如示例中ext4; 
d. 挂载选项;默认defaults,如选项有多个,彼此间用逗号“,”分隔;
e. 备份频率,0为不备份,1为每天备份,2为隔天备份;
f. 系统启动是是否自检,0为不自检,1为优先自检,2为次级优先自检;


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

[root@www ~]# fdisk /dev/sda   <-------------fdisk命令创建1G分区

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
First cylinder (8120-15665, default 8120): 
Using default value 8120
Last cylinder, +cylinders or +size{K,M,G} (8120-15665, default 15665): +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: Device or resource busy.
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. 

[root@www ~]# partx -a /dev/sda  <----------------partx命令让kernel读取新建的分区信息
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
BLKPG: Device or resource busy
error adding partition 4
BLKPG: Device or resource busy
error adding partition 5
BLKPG: Device or resource busy
error adding partition 6

[root@www ~]# mkswap /dev/sda6  <------------------mkswap命令创建swap分区
Setting up swapspace version 1, size = 1060252 KiB
no label, UUID=3fdbb6e2-5e02-4139-b141-3f49ad4b37fd

[root@www ~]# blkid             <------------------blkid命令查看所有文件系统
/dev/sda1: UUID="8631ceb8-a29c-4205-99fa-947bd93ec3a5" TYPE="ext4" 
/dev/sda2: UUID="c5e05cf4-7e32-402e-aefa-1353baf6df38" TYPE="ext4" 
/dev/sda3: UUID="f3e097ca-bd89-451e-8f35-fb0c31e07c6c" TYPE="swap" 
/dev/sda5: LABEL="MYDATA" UUID="1b73355f-b889-4bfb-840e-5102f10d65cf" TYPE="ext4" 
/dev/sda6: UUID="3fdbb6e2-5e02-4139-b141-3f49ad4b37fd" TYPE="swap"  <-------------新建的swap分区

[root@www ~]# swapon /dev/sda6  <---------------------启用swap分区

[root@www ~]# swapon -s         <---------------------验证swap是否启用
Filename                Type        Size    Used    Priority
/dev/sda3                               partition   2097148 0   -1
/dev/sda6                               partition   1060252 0   -2

注意:注意:如要让新建的文件系统重启后自动挂载,需添加如下内容至/etc/fstab文件中;关于/etc/fstab文件中的字段在上文中已有解释,在此不再赘述。 
UUID=3fdbb6e2-5e02-4139-b141-3f49ad4b37fd swap swap defaults 0 0


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

[root@www ~]# cat diskinfo.sh 
#!/bin/bash
fdisk -l        <-------------------------fdisk -l列出系统上所有磁盘设备
for par in $(fdisk -l | grep "^/dev/[sh]d[a-z][0-9]" | cut -d' ' -f1); do <---用命令引用的结果当作列表作为变量par的值
    df -h $par  <-------------------------df -h查看每个列表中分区的空间使用信息
done

[root@www ~]# bash diskinfo.sh

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x33239dbf

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  83  Linux
/dev/sdb4            1307        2610    10474380    5  Extended
/dev/sdb5            1307        2610    10474348+  83  Linux

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x000ca814

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        6553    52428800   83  Linux
/dev/sda3            6553        6814     2097152   82  Linux swap / Solaris
/dev/sda4            6814       15665    71097336+   5  Extended
/dev/sda5            6814        8119    10484060   83  Linux
/dev/sda6            8120        8251     1060258+  83  Linux
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       9.8G   23M  9.3G   1% /mnt/sdb1
Filesystem      Size  Used Avail Use% Mounted on
-               476M  220K  476M   1% /dev
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb5       9.8G   23M  9.2G   1% /mnt/sdb5
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       190M   36M  145M  20% /boot
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        50G  2.3G   45G   5% /
Filesystem      Size  Used Avail Use% Mounted on
-               476M  220K  476M   1% /dev
Filesystem      Size  Used Avail Use% Mounted on
-               476M  220K  476M   1% /dev
Filesystem      Size  Used Avail Use% Mounted on
-               476M  220K  476M   1% /dev
Filesystem      Size  Used Avail Use% Mounted on
-               476M  220K  476M   1% /dev

4,总结RAID的各个级别及其组合方式和性能的不同。
4.1,何为RAID?
RAID (Redundant Arrays of Independent Disks),独立磁盘构成的具有冗余能力的阵列,简称磁盘阵列。磁盘阵列由多块磁盘,以硬件RAID卡或软件形成组合成一个容量巨大的磁盘组,利用不同raid组合磁盘的方式,提升整个磁盘系统的效能。利用这项技术,将数据切割成许多区段,分别放在各个硬盘上。磁盘阵列还能利用同位校验(Parity Check)的观念,在数组中任意一个硬盘故障时,任可读出数据,在数据重建时,将数据经计算后重新置入新硬盘中。
注意:虽然RAID可以预防数据丢失,但并不完全保证数据不会丢失,RAID不能代替数据备份。

4.2,RAID级别
RAID 0
实现RAID 0至少需要两块以上磁盘,它将两块以上的磁盘合并成一块,数据连续地分割在每块盘上。可用容量是多块磁盘的容量总和,因为带宽加倍,所以读/写速度加倍,但RAID 0在提高性能的同时,没有数据冗余,没有数据校验的功能,即没有提供数据保护功能,只要任何一块磁盘损坏就会丢失所有数据。因此RAID 0不可应用于需要数据高可用性的关键领域。

RAID 1
是由多块磁盘所构成的磁盘阵列,其容量等于一块磁盘的容量,因为其他的磁盘当作数据“镜像”,所以RAID 1又称为镜像卷。RAID 1的写入数据速度较慢,因为被分割的数据区段需要存在阵列上的每一块磁盘上。RAID 1有数据冗余和校验的功能,即提供了数据保护功能,任何一块磁盘损坏都不会导致丢失数据。RAID 1磁盘阵列主要用在数据安全性要求高且能够快速恢复被破坏数据的场合。

RAID 5
是一个存储性能,数据安全和存储成本兼顾的存储解决方案。它可以为系统系统安全保障,但保障程度要比镜像卷低而磁盘空间利用率比镜像卷高。RAID 5磁盘阵列至少需要3块磁盘组成,其容量等于n-1块磁盘。RAID 5具有和RAID 0相近似的数据读取速度,只是多了奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。RAID 5是一种数据安全,I/O速度的权衡与存储成本较低的解决方案。但是由于其工作方式的原因,在大于4Tb的场合下,磁盘故障发生后,数据重建的难度将大大增加。所以存储行业并不建议使用RAID5。

RAID 6
是在RAID 5基础上,为了进一步加强数据保护而设计的一种RAID方式。与RAID 5的不同之处于除了每个硬盘上都有同级数据XOR校验区外,还有一个针对每个数据块的XOR校验区。当然,当前盘数据块的校验数据不可能存在当前盘而是交错存储的,这样一来,等于每个数据块有了两个校验保护屏障(一个分层校验,一个是总体校验),因此RAID 6的数据冗余性能相当好。但是,由于增加了一个校验,所以写入的效率较RAID 5还差,而且控制系统的设计也更为复杂,第二块的校验区也减少了有效存储空间,所以组成RAID6阵列需至少4块磁盘,磁盘利用率是n-2。

RAID 10/01
RAID 10是先镜像再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。RAID 01则是跟RAID 10的程序相反,是先分区再将数据镜像到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。RAID 10/01磁盘利用率均为n/2。当RAID 10有一个硬盘受损,其余硬盘会继续运作。RAID 01只要有一个硬盘受损,同组RAID 0的所有硬盘都会停止运作,只剩下其他组的硬盘运作,可靠性较低。如果以六个硬盘建RAID 01,镜射再用三个建RAID 0,那么坏一个硬盘便会有三个硬盘离线。因此,RAID 10远较RAID 01更为安全。


5,创建一个大小为10G的RAID 1,要求有一个空闲盘,而且chunk大小为128k;

[root@www ~]# mdadm -C /dev/md0 -a yes -n 2 -x 1 -c 128 -l 1 /dev/sdb{1,2,3}
[root@www ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Sep  3 02:11:03 2017
     Raid Level : raid1
     Array Size : 10482176 (10.00 GiB 10.73 GB)
  Used Dev Size : 10482176 (10.00 GiB 10.73 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Sun Sep  3 02:11:55 2017
          State : clean 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

           Name : www.iLove.org:0  (local to host www.iLove.org)
           UUID : dd4d92b5:6c1f0517:abf227fe:b579c6b2
         Events : 17

    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

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

[root@www ~]# mdadm --create /dev/md1 -l5 -n3 -x1 -c 256 /dev/sdb{1,2,3,5} <---------------创建raid 5
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

[root@www ~]# mdadm -D /dev/md1           <-----------------验证raid 5创建结果
/dev/md1:
        Version : 1.2
  Creation Time : Sun Sep  3 02:20:40 2017
     Raid Level : raid5
     Array Size : 10498048 (10.01 GiB 10.75 GB)
  Used Dev Size : 5249024 (5.01 GiB 5.38 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sun Sep  3 02:21:35 2017
          State : clean 
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 256K

           Name : www.iLove.org:1  (local to host www.iLove.org)
           UUID : dd9a128d:0685c7b2:087e858b:7965b4a1      <------------------记录UUID
         Events : 18

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

       3       8       21        -      spare   /dev/sdb5

[root@www ~]# mke2fs -t ext4 /dev/md1            <-----------------------创建文件系统类型ext4
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=64 blocks, Stripe width=128 blocks
657072 inodes, 2624512 blocks
131225 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8112 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

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

[root@www dev]# vim /etc/fstab  <--------------------编辑/etc/fstab文件添加下面的挂载信息
UUID=dd9a128d:0685c7b2:087e858b:7965b4a1        /backup ext4    defaults,noatime,acl    0       0

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

#!/bin/bash

if [ $# -lt 1 ]; then        <--------------------设置给定的参数不得低于2个
    echo "Please enter more than 2 arguments."
    exit 1
fi
num=0                      <-----------------定义变量lines为0
for files in $*; do              <--------------------设置变量files为$*特殊变量的值,$*表示所有参数
    if [ ! -f $files ]; then     <--------------------判断变量files不是文本文件
        echo "${files} is not a ASCII text." <--------如果变量files不是文本文件,echo提示
    else
        echo "${files} has "$(wc -l < $files)" lines."  <-------变量files是文本文件,echo显示文本文件的行数
    let num++          <--------------------计算每次给定的文本文件数量,然后相加
    fi
done
echo "File numbers:"$num   <-------------------echo显示最终给定的所有的文本文件数量
注意:脚本中,在for循环内嵌套了一个if多分支语句。

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

#!/bin/bash

if [ $# -lt 1 ]; then             <--------------------设置给定的参数不得低于2个
    echo "Please enter more than 2 arguments."
    exit 1
fi
sum=0
for user in $*; do          <--------------------设置变量user为$*特殊变量的值,$*表示所有参数
    if grep "^$user\>" /etc/passwd &> /dev/null; then  <--------------判断要创建的帐号是否存在
    echo "$user exists."
    exit 2
    else
    useradd $user
    echo $user | passwd --stdin $user &> /etc/null
    echo "$user added."
    let sum++               <---------------------循环每执行一次,数量加1
    fi
done    
echo "count user numbers:"$sum

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

#!/bin/bash
declare -i sum=0            <-------------------定义变量sum为数值型,bash变了默认为字符型
for i in {1..20}; do
    useradd visitor$i
    sum+=$(id -u visitor$i)   <-----------------相加每次id号
done
echo "id sum is $sum."

原创文章,作者:ZhengBin,如若转载,请注明出处:/86136

发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论列表(1条)

  • 马哥教育
    马哥教育 2017-10-10 13:11

    磁盘操作运维工作中用的不是特别频繁,但是非常重要,他是数据安全的基础,所以应特别注意加深理解和学习

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1660809109@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达主管  万达娱乐直属  万达招商QQ  万达娱乐直属QQ  万达娱乐平台  万达注册  万达娱乐招商  guoqibee.com  万达主管