磁盘分区

 

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

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

第一步:创建一个10G的分区
    [root@localhost ~]# fdisk /dev/sdb    //管理分区sdb    
    命令(输入 m 获取帮助):n    //输入命令n创建一个新分区
    Select (default p): p        //设置分区类型为主分区
    分区号 (1-4,默认 1):1        //设置分区号
    起始 扇区 (2048-41943039,默认为 2048):    //设置起始扇区,因为这里是sdb上第一个分区所以不输入任何信息,从默认起始扇区开始
    Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G     //设置分区大小
    分区 1 已设置为 Linux 类型,大小设为 10 GiB
    命令(输入 m 获取帮助):w    //输入w保存并退出

第二步:设置分区文件系统类型
    [root@localhost ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1      //设置文件系统类型、块大小及预留空间百分比
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=MYDATA
    OS type: Linux
    块大小=2048 (log=1)
    分块大小=2048 (log=1)
    Stride=0 blocks, Stripe width=0 blocks
    655360 inodes, 5242880 blocks
    104857 blocks (2.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=273678336
    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

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

第三步:挂载分区  
    [root@localhost ~]# mount -o acl,noatime,noexec -L MYDATA /data/mydata/ 

    [root@localhost ~]# mount | grep sdb1    //查看sdb1分区是否挂载
    /dev/sdb1 on /data/mydata type ext4 (rw,noexec,noatime,seclabel,data=ordered)

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

第一步:创建一个大小为1G的swap分区
    [root@localhost ~]# fdisk /dev/sdb    //管理分区sdb
    命令(输入 m 获取帮助):n        //输入命令n创建一个新分区
    Select (default p): p            //设置分区类型为主分区
    分区号 (2-4,默认 2):2            //设置分区号
    起始 扇区 (20973568-41943039,默认为 20973568):    //直接按回车从默认起始扇区开始
    将使用默认值 20973568
    Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+1G    //设置分区大小
    命令(输入 m 获取帮助):t        //修改分区类型
    分区号 (1,2,默认 2):2            //输入要修改的分区号
    Hex 代码(输入 L 列出所有代码):82        //修改为swap类型,类型代码为82
    已将分区“Linux”的类型更改为“Linux swap / Solaris”
    命令(输入 m 获取帮助):w        //输入w保存退出


    [root@localhost ~]# partx -a /dev/sdb       //强制重读磁盘分区表

第二步:挂载swap分区
    [root@localhost ~]# mkswap /dev/sdb2         //创建swap设备
    正在设置交换空间版本 1,大小 = 1048572 KiB
    无标签,UUID=06f2a16f-9705-4b94-bdb6-05e164ff31c1

    [root@localhost ~]# free    //挂载前swap分区大小
                  total        used        free      shared  buff/cache   available
    Mem:        1001364      247388      422308        7208      331668      563088
    Swap:       2098172           0     2098172

    [root@localhost ~]# swapon /dev/sdb2        //将分区sdb2启用为交换分区

    [root@localhost ~]# free        //启用之后swap分区大小
                  total        used        free      shared  buff/cache   available
    Mem:        1001364      248148      421368        7208      331848      562288
    Swap:       3146744           0     3146744

 

3、写一个脚本

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

        #!/bin/bash
        #
        fdisk -l | grep "^/.*"
        echo " "
        df -lh

4、写一个脚本

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

        #!/bin/bash
        #
        if [ $# -lt 1 ];then
            echo "At least one filesname "
            exit 2
        fi

        for i in $*;do
            line=$(cat $i | wc -l)
            echo "Number of rows in $i is $line"
        done 

        echo "total of $#  files"

5、写一个脚本

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

        #!/bin/bash
        #
        if [ $# -lt 1 ];then
            echo "At least one username"
            exit 2
        fi

        for i in $*;do
            if grep "^$i\>" /etc/passwd &> /dev/null;then
                echo "user $i exists"
            else
                useradd $i
                echo $i | passwd --stdin $i &> /dev/null
                echo "Add user $i finished"
            fi
        done

        echo "Created $# users"

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

        #!/bin/bash
        #
        num=0

        for i in {1..20};do
            if id visitor$i &> /dev/null;then
                    echo "visitor$i exists"
                else
                    useradd visitor$i
                id=$(grep "^visitor$i\>" /etc/passwd | cut -d: -f 3)
                let num+=$id
                fi
        done

        echo $num

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

    #!/bin/bash
    #
    while read line;do
        userid=$(echo $line | cut -d : -f 3)
        username=$(echo $line | cut -d : -f 1)
        usershell=$(echo $line | cut -d : -f 7)

        if [ $usershell == /bin/bash ];then
            echo "$username:$userid:$usershell"
        fi

    done < /etc/passwd


    for i in $(grep "/bin/bash" /etc/passwd | cut -d : -f 3);do
        let uid+=$i
    done

    echo "The UID total is $uid"

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

    #!/bin/bash
    #
    cat /etc/group | cut -d: -f1,4 | grep -E ".*:[^[:space:]]"

    num=$(cat /etc/group | cut -d: -f1,4 | grep -E ".*:[^[:space:]]" | wc -l)

    echo "There are such users $num"

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

    第一步:创建2个大小为10G分区类型为8e的分区
               设备 Boot      Start         End      Blocks   Id  System
        /dev/sdb1            2048    20973567    10485760   8e  Linux LVM
        /dev/sdb2        20973568    41945087    10485760   8e  Linux LVM
    第二步:创建pv
    [root@localhost ~]# pvcreate /dev/sdb[1,2]
      Physical volume "/dev/sdb1" successfully created
      Physical volume "/dev/sdb2" successfully created
    第三步::创建vg
    [root@localhost ~]# vgcreate testvg1 -s 8m /dev/sdb[1,2]
      Volume group "testvg1" successfully created
    第四步:创建大小为5G的lv卷
    [root@localhost ~]# lvcreate -L 5G -n mylv1 testvg1
      Logical volume "mylv1" created.
    第五步:格式化为ext4文件系统
    [root@localhost ~]# mke2fs -t ext4 /dev/mapper/testvg1-mylv1 
    第六步:设置开机挂载
    [root@localhost ~]# mkdir /users
    [root@localhost ~]# echo  "/dev/mapper/testvg1-mylv1 /users ext4 acl 0 0" >> /etc/fstab

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

    [root@localhost ~]# mkdir -pv /user/magedu

    [root@localhost ~]# useradd -d /uers/magedu magedu

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

    [root@localhost ~]# lvextend -L 9G /dev/mapper/testvg1-mylv1
      Size of logical volume testvg1/mylv1 changed from 5.00 GiB (640 extents) to 9.00 GiB (1152 extents).
      Logical volume mylv1 successfully resize

    [root@localhost ~]# lvs
      LV    VG      Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      mylv1 testvg1 -wi-a----- 9.00g

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

    [root@localhost ~]# umount /dev/mapper/testvg1-mylv1

    [root@localhost ~]#  e2fsck -f /dev/mapper/testvg1-mylv1

    [root@localhost ~]#  resize2fs /dev/mapper/testvg1-mylv1 7G

    [root@localhost ~]#  lvreduce -L 7G /dev/mapper/testvg1-mylv1

    [root@localhost ~]#  mount /dev/mapper/testvg1-mylv1 /users/

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

    [root@localhost ~]# lvcreate -s -L 512M -n mylv-snap -p r /dev/mapper/testvg1-mylv1

 

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

(0)
641348038@qq.com641348038@qq.com
上一篇 2016-12-18
下一篇 2016-12-18

相关推荐

  • net25-第17周作业

    1、结合图形描述LVS的工作原理; lvs-nat模型,相当于多目标的dnat,通过将请求报文中的目标地址和目标端口修改为调度出的rs的rip和port来实现转发,整个请求如下: cip -> vip -> vs(nat转换) -> rip  请求 rip -> dip(默认网关) -> vs(nat转换) ->…

    Linux干货 2017-05-15
  • 重定向

    Linux下定义了三种I/O设备: 标准输入(STDIN):用0表示,默认的标准输入设备是键盘; 标准输出(STDOUT):用1表示,默认的标准输出设备是当前终端; 标准错误(STDERR):用2表示,默认的标准错误输出设备是当前终端; I/O重定向即改变默认的位置 1 标准输出重定向 (1)将标准输出重定向到其他终端 /dev/pts/1代表伪终端1,在伪…

    Linux干货 2017-07-31
  • Linux基本操作:关机 重启

        Linux系统安装完成以后,就要学会一些Linux的基本操作命令,首先是关机和重启命令,如果进入Linux系统之后连关机重启都不会是不是太不应该了,总不能关机或重启的时候直接关闭电源在开机吧,这就显得太不专业了,这样也会对Linux系统主机不太好,一些进程还没有关闭就直接断电,会导致Linux系统的不稳定出现问题,何况也…

    Linux干货 2016-08-04
  • 脚本编程之变量

    简单跟大家介绍一下脚本编程中的变量。 大家都知道,脚本编程,主要由三个部分组成,一是命令,二是变量,三是控制语句。 变量的使用,可以让脚本变得更加简洁,高效。 我们主要简单讲一下变量的概念,变量的类型,变量的种类,不同种类的变量是如何定义的,变量的基本操作,以及变量的配置文件。 了解了这些,我们还可以聊一聊变量的高级操作。 首先,什么是变量? 通俗一点讲:变…

    Linux干货 2017-04-17
  • 计算机编程简史图

       这个图片太经典了,本来想翻译的,后来觉得这么经典的图片可能早已被人翻译了,简单的Google一下,果然有人翻译了。那我就把英文版和中文版都转过来吧。我们可以看到,其中很大一部分人都和Unix有着不解之缘(参见《Unix传奇上篇,Unix传奇下篇》) 英文原版 中文翻译版 什么也不说了,直接上图(图片比较大,单击图片看大图) 计算机编…

    Linux干货 2015-04-02
  • 马哥教育网络20期+第六周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; :%s/^[[:space:]]/#&/ 2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白…

    Linux干货 2016-07-07

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-23 12:34

    基本上可以,有些题目没有按照要求来写不太好~~~继续加油~