美文网首页
week_4_磁盘管理及shell判断逻辑

week_4_磁盘管理及shell判断逻辑

作者: 人間失格_430b | 来源:发表于2019-02-20 18:07 被阅读0次

Q:

1、描述GPT是什么,应该怎么使用。
2、创建一个10G的分区,并格式化为ext4文件系统。要求:

(1)block大小为2048,预留空间2%,卷标为MYDATA,
(2) 挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。
(3)可开机自动挂载。

3、创建一个大小为1G的swap分区,并启用。
4、编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和。
5、将当前主机名保存至hostName变量中,主机名如果为空,或者为localhost.localdomain则将设置为magedu.com
6、编写脚本,通过命令行参数传入一个用户名,判断id号是偶数还是奇数。
7、lvm基本应用以及扩展缩减实现。

A:

1、GPT

GUID磁盘分区表GUID Partition Table,缩写:GPT)其含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。它是可扩展固件接口标准(用于替代BIOS系统中的一64bits来存储逻辑块地址和大小信息的主开机纪录(MBR)分区表。

扇区0 1 2 3~33 34~ ... ~-34 -33~-3 -2 -1
PMBR GPT表头 分区表项1~4 分区表项5~128 分区1 分区... 最后一个分区 备份分区表项5~128 备份分区表项1~4 备份GPT表头
  • LBA0
    • 在GPT分区表的最开头,处于兼容性考虑仍然存储了一份传统的MBR,用来防止不支持GPT的硬盘管理工具错误识别并破坏硬盘中的数据,这个MBR也叫做保护MBR。在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。不能识别GPT硬盘的操作系统通常会识别出一个未知类型的分区,并且拒绝对硬盘进行操作,除非用户特别要求删除这个分区。这就避免了意外删除分区的危险。另外,能够识别GPT分区表的操作系统会检查保护MBR中的分区表,如果分区类型不是0xEE或者MBR分区表中有多个项,也会拒绝对硬盘进行操作。
    • 在使用MBR/GPT混合分区表的硬盘中,这部分存储了GPT分区表的一部分分区(通常是前四个分区),可以使不支持从GPT启动的操作系统从这个MBR启动,启动后只能操作MBR分区表中的分区。如Boot Camp就是使用这种方式启动Windows。
  • LBA1
    • 分区表头定义了硬盘的可用空间以及组成分区表的项的大小和数量。在使用64位Windows Server 2003的机器上,最多可以创建128个分区,即分区表中保留了128个项,其中每个都是128字节。(EFI标准要求分区表最小要有16,384字节,即128个分区项的大小)
    • 分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小(位置总是在LBA 1)以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。所以GPT硬盘的分区表不可以直接使用16进制编辑器修改。
    • 主分区表和备份分区表的头分别位于硬盘的第二个扇区(LBA 1)以及硬盘的最后一个扇区。备份分区表头中的信息是关于备份分区表的。
  • LBA2-33
    • GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。例如,EFI系统分区的GUID类型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。

百度GPT词条(https://baike.baidu.com/item/GPT/15413476

2、

创建10G分区

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x13ceef16.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +10G
Partition 1 of type Linux and of size 10 GiB is set

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

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

重读磁盘分区表

[root@localhost ~]# partx -a /dev/sdb1
partx: /dev/sdb: error adding partition 1
[root@localhost ~]# cat /proc/partitions
major minor  #blocks  name

   2        0          4 fd0
   8       16   20971520 sdb
   8       17   10485760 sdb1
   8        0  125829120 sda
   8        1    1048576 sda1
   8        2  124779520 sda2
  11        0    4481024 sr0
 253        0   52428800 dm-0
 253        1    2097152 dm-1
 253        2   70246400 dm-2

[root@localhost ~]# 

格式化磁盘分区

[root@localhost ~]# mke2fs.ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1
-bash: mke2fs.ext4: command not found
[root@localhost ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
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, 5242880 blocks
104857 blocks (2.00%) reserved for the super user
First data block=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: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

挂载

[root@localhost ~]# mkdir /mydata
[root@localhost ~]# ls /
bin  boot  dev  etc  home  lib  lib64  media  mnt  mydata  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@localhost ~]# mount -o noexec,noatime -L MYDATA /mydata

设置开机自动挂载

[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# tail -1 /etc/fstab
/dev/sdb1 /mydata                               ext4    defaults,noatime,noexec     0 0
[root@localhost ~]# ls /mydata/
lost+found

3、

创建swap分区

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
Partition number (2-4, default 2): 
First sector (20973568-41943039, default 20973568): 
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039): 
Using default value 41943039
Partition 2 of type Extended and of size 10 GiB is set

Command (m for help): n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (20975616-41943039, default 20975616): 
Using default value 20975616
Last sector, +sectors or +size{K,M,G} (20975616-41943039, default 41943039): +1G
Partition 5 of type Linux and of size 1 GiB is set

Command (m for help): t
Partition number (1,2,5, default 5): 
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'

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@localhost ~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partition 1
[root@localhost ~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-2
partx: /dev/sdb: error adding partition 5
[root@localhost ~]# cat /proc/partitions
major minor  #blocks  name

   2        0          4 fd0
   8       16   20971520 sdb
   8       17   10485760 sdb1
   8       18          1 sdb2
   8       21    1048576 sdb5
   8        0  125829120 sda
   8        1    1048576 sda1
   8        2  124779520 sda2
  11        0    4481024 sr0
 253        0   52428800 dm-0
 253        1    2097152 dm-1
 253        2   70246400 dm-2

启动swap分区

[root@localhost ~]# mkswap /dev/sdb5
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=245eb860-e845-47f2-9d2e-9c444a7589f5
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1005656      140556      703660        7644      161440      690796
Swap:       2097148           0     2097148
[root@localhost ~]# swapon /dev/sdb5
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1005656      140660      703552        7644      161444      690692
Swap:       3145720           0     3145720

4、编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和。

[root@localhost ~]# cat /tmp/myadd.sh
#!/bin/bash
id1=$(head -10 /etc/passwd|tail -1 |cut -d: -f3)
id2=$(head -20 /etc/passwd|tail -1 |cut -d: -f3)

id_sum=$[$id1+$id2]

echo $id_sum

5、hostname

[root@localhost ~]# cat /scripts/judge.sh
hostName=`hostname`
[ -z "$hostName" -o "$hostName" == "localhost.localdomain" ] && hostname -b magedu.com

6、编写脚本,通过命令行参数传入一个用户名,判断id号是偶数还是奇数。

[root@niroo ~]# cat /etc/passwd
...
gentoo:x:4003:4003::/users/gentoo:/bin/bash
fedora:x:4004:4004::/users/fedora:/bin/bash
...

[root@localhost ~]# bash /scripts/exer9_2_2.sh gentoo
gentoo\'s id is odd number
[root@localhost ~]# bash /scripts/exer9_2_2.sh fedora
fedora\'s id is even number
[root@localhost ~]# cat /scripts/exer9_2_2.sh
#!/bin/bash
usrId=$(id -u $1)
if [ $[$usrId % 2 ] -eq 0 ];then
    echo "$1\'s id is even number"
else
    echo "$1\'s id is odd number"
fi

7、LVM

LVM: Logical Volume Manager, Version: 2

dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块;

/dev/dm-#

    /dev/mapper/VG_NAME-LV_NAME
        /dev/mapper/vol0-root
    /dev/VG_NAME/LV_NAME
        /dev/vol0/root

  • pv管理工具:
    pvs:简要pv信息显示
    pvdisplay:显示pv的详细信息
    pvcreate /dev/DEVICE: 创建pv
    pvmove:移动pv上的pe至其他pv上

  • vg管理工具:
    vgs
    vgdisplay
    vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
    vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
    vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] 先做pvmove
    vgremove

  • lv管理工具:
    lvs
    lvdisplay
    lvcreate -L #[mMgGtT] -n NAME VolumeGroup
    lvremove /dev/VG_NAME/LV_NAME

    • 扩展逻辑卷:

      1. 扩展lv
        lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
      2. 扩展后resize
        resize2fs /dev/VG_NAME/LV_NAME
    • 缩减逻辑卷:

      1. 先卸载文件系统
        umount /dev/VG_NAME/LV_NAME
      2. 文件系统强制检测
        e2fsck -f /dev/VG_NAME/LV_NAME
      3. resize
        resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
      4. 缩减lv
        lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
      5. 重新挂载
        mount
  • 快照:snapshot
    lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name

lvm实际操作https://www.jianshu.com/p/fcaaccd67e67


相关文章

  • week_4_磁盘管理及shell判断逻辑

    Q: 1、描述GPT是什么,应该怎么使用。 2、创建一个10G的分区,并格式化为ext4文件系统。要求: (1)b...

  • lvm基本操作

    一、背景及特性 LVM是Logical Volume Manager逻辑卷管理,包括分配磁盘,以及对逻辑卷进行st...

  • Shell脚本中的if和case逻辑判断

    一、if 逻辑判断 1.1 基本语法和大小判断 在shell脚本中,if逻辑判断的基本语法为: 例如: 需要注意的...

  • 循序渐进Linux:服务器搭建系统管理性能调优虚拟化与集群应用

    本篇从基础知识入手,系统讲解了Linux 系统结构、shell、 主流服务器搭建及故障排除、用户权限管理、磁盘存储...

  • 操作系统应用

    引导 多操作系统引导顺序 磁盘管理 磁盘分区主分区逻辑分区逻辑驱动器 磁盘整理 设备管理 查看设备驱动是否正常工作...

  • day 23 操作系统磁盘管理

    一.磁盘管理体系结构 二.磁盘物理结构信息 了解 三.磁盘阵列知识 lvm:逻辑卷管理 四.磁盘分区操作: ...

  • 基于C++的类UNIX文件系统

    磁盘文件结构 定义自己的磁盘文件结构 SuperBlock 结构 磁盘 Inode 节点结构,包括:索引结构及逻辑...

  • bash if条件判断命令执行结果

    判断命令返回值 这个判断逻辑是shell-command的返回值是否为0: 为0:则判断逻辑为真,走then分支 ...

  • 4、shell if case while for

    Shell__逻辑结构 一、IF 判断 if ... then ... fi 例:提示输入一个整数,程序判断输入的...

  • LVM逻辑卷

    LVM逻辑卷是管理磁盘的一种方式,性质与基本磁盘无异。LVM可以随意扩张大小,缩减大小,快照备份。 对于磁盘的管理...

网友评论

      本文标题:week_4_磁盘管理及shell判断逻辑

      本文链接:https://www.haomeiwen.com/subject/xgvhyqtx.html