week_4_磁盘管理及shell判断逻辑


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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容

  • WinHex template 模板,各位注意 此模板是本人2013年编写,不担保完全符合现有版本,如有问题请留言...
    睿_行阅读 368评论 0 0
  • 导读目录 硬盘的组成 硬盘的物理结构主要针对的是机械硬盘及其内部的结构加以介绍,以下内容可能不是硬盘内部全部的部件...
    香吉矢阅读 4,073评论 0 12
  • 1 概述 本文通过对讲解了磁盘的基本概念,分区,创建文件系统,挂载,卸载等步骤进行讲解。使得用户能够创建基本的磁盘...
    ghbsunny阅读 1,515评论 0 0
  • 磁盘分区磁盘连接的方式与装置文件名的关系正常的实体机器大概使用的都是 /dev/sd[a-] 的磁盘文件名,至于虚...
    March_13th阅读 805评论 1 3
  • 早上 游泳半个小时,瑜伽下午两节课!有种充血感觉,特畅快! 儿子跟他爸爸还是没说话,现在我面临着孩子的教育...
    徐丽红阅读 195评论 0 0