linux系统磁盘布局,Linux基础知识之磁盘管理

1、描述GPT是什么,应该怎么使用。

早期磁盘第一个扇区里面含有的重要信息我们称为 MBR (Master Boot Record) 格式,但是由于近年来磁盘的容量不断扩大,造成读写上的一些困扰, 甚至有些大于 2TB 以上的磁盘分区已经让某些操作系统无法存取。因此后来又多了一个新的磁盘分区格式,称为 GPT (GUID partitiontable)! 这两种分区格式与限制不太相同。

因为过去一个扇区大小就是 512bytes 而已,不过目前已经有 4K 的扇区设计出现!为了兼容于所有的磁盘,因此在扇区的定义上面, 大多会使用所谓的逻辑区块地址(Logical Block Address, LBA)来处理。GPT 将磁盘所有区块以此 LBA(预设为 512bytes 喔!) 来规划,而第一个 LBA 称为 LBA0 (从0 开始编号)。与 MBR 仅使用第一个 512bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分区信息!同时与过去 MBR 仅有一的区块,被干掉就死光光的情况不同, GPT 除了前面 34 个 LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份!

713c1e8f01306e04454c3cb88291b5a1.png

2、创建一个10G的分区,并格式化为ext4文件系统。要求:

(1)block大小为2048,预留空间20%,卷标为MYDATA,

(2)挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。

(3)可开机自动挂载。1、格式化一块10G的磁盘空间出来

fdisk /dev/sda

n

1

p

默认起始

+10G

2、创建为ext4的文件系统

mke2fs -t ext4 -b 2048 -L MYDATA -m 2 /dev/sda1

3、修改默认挂载属性包含acl

tune2fs -o acl /dev/sda1

4、挂载至/data/mydata

mkdir -p /data/mydata

amount -o noexec noatime /data/mydata /dev/sda1

开机自动挂载:

在/etc/fstab中添加一行

LALEL=MYDATA /data/mydata ext4 defaults,acl,noexec,noatime 0 0

3、创建一个大小为1G的swap分区,并启用。1、先格式化一块1G的磁盘分区

fdisk /dev/sda

n

2

p

默认起始值

+1G

调整磁盘类型为swap可用

t

82

w

2、重读分区

kpartx -af /dev/sda

3、创建swap文件系统

(1)、临时

mkswap /dev/sda3

swapon /dev/sda3

(2)、开机启动挂载

编辑/etc/fstab,增加

/dev/sda3 swap swap defaults 0 0

4、编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和。[root@localhost ~]# cat useridadd.sh

#!/bin/bash

#

num1=$(head -10 /etc/passwd | tail -1 | cut -d: -f3)

num2=$(head -20 /etc/passwd | tail -1 | cut -d: -f3)

sum=$(($num1+$num2))

echo $sum

5、将当前主机名保存至hostName变量中,主机名如果为空,或者为localhost.localdomain则将设置为www.magedu.com。hostName=$(hostname)

[ -z "$hostName" -o "$hostName" == "localhost.localdomain" ] && hostname www.magedu.com

6、编写脚本,通过命令行参数传入一个名户名,判断id号是偶数还是奇数。[root@localhost scripts]# cat userid_odd.sh

#!/bin/bash

#

[ $# -ne 1 ] && echo "Input one Arg" && exit 2;

uid=$(id -u $1)

uid_yu=$(($uid % 2))

if [ $uid_yu -eq 0 ];then

echo "$1的ID号为偶数"

else

echo "$1的ID号为奇数"

fi

7、lvm基本应用以及扩展缩减实现。

LVM是逻辑卷管理(Logical Volume Manager)的简称,它是一种更为灵活的磁盘分区管理机制。LVM是在磁盘分区和文件系统之间添加的一层逻辑层,它为文件系统屏蔽下层的磁盘分区布局,向文件系统提供一个抽象的存储卷。通过LVM,Linux系统管理员可轻松地管理磁盘分区,如:既然LVM是建立在硬盘和分区之上的一层逻辑层,那么可以将多个硬盘、多个分区或RAID组织起来构建成存储卷组,作为一个存储池;然后在这个存储卷之上再将其划分出一个或多个逻辑卷,Linux系统管理员可以对这个划分出来的逻辑卷进行一系列操作(例如格式化、挂载等),可以将逻辑卷当做一个系统分区来对待,更重要的是,这个系统分区的大小还可以在线扩展或缩减。总的来说,LVM使得系统分区独立于底层硬件。

3c5b4c215b5e8924dde421a72c5c6354.png

那么LVM是如何做到支持系统分区在线扩容或缩容的?我们再梳理一下LVM的工作原理。要制作逻辑分区,首先需要将多个硬盘、多个分区或RAID制作成为便于识别的物理卷(PV, Physical Volume),将这些制作好的物理卷再构建成一个存储池,我们把这个存储池称为卷组(VG, VolumeGroup),这是LVM的第一个逻辑层。在卷组这一层上再逻辑出一层逻辑卷(LV, LogicalVolume),这个逻辑卷LV可供用户使用,例如格式化、挂载、存储数据,相当于一个逻辑意义上的系统分区。而这个逻辑分区的空间大小取决于卷组VG的分配,因此逻辑卷LV的存储空间不能超过其所属卷组VG的总存储空间。

LVM创建:// 磁盘分区,模拟创建物理磁盘过程

[root@cdcjtx-centos-001 ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

命令(输入 m 获取帮助):n

Partition type:

p   primary (0 primary, 0 extended, 4 free)

e   extended

Select (default p):

Using default response p

分区号 (1-4,默认 1):

起始 扇区 (2048-41943039,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+3G

分区 1 已设置为 Linux 类型,大小设为 3 GiB

命令(输入 m 获取帮助):n

Partition type:

p   primary (1 primary, 0 extended, 3 free)

e   extended

Select (default p):

Using default response p

分区号 (2-4,默认 2):

起始 扇区 (6293504-41943039,默认为 6293504):

将使用默认值 6293504

Last 扇区, +扇区 or +size{K,M,G} (6293504-41943039,默认为 41943039):+4G

分区 2 已设置为 Linux 类型,大小设为 4 GiB

命令(输入 m 获取帮助):n

Partition type:

p   primary (2 primary, 0 extended, 2 free)

e   extended

Select (default p):

Using default response p

分区号 (3,4,默认 3):

起始 扇区 (14682112-41943039,默认为 14682112):

将使用默认值 14682112

Last 扇区, +扇区 or +size{K,M,G} (14682112-41943039,默认为 41943039):+2G

分区 3 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):t

分区号 (1-3,默认 3):

Hex 代码(输入 L 列出所有代码):8e

已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t

分区号 (1-3,默认 3):2

Hex 代码(输入 L 列出所有代码):8e

已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t

分区号 (1-3,默认 3):1

Hex 代码(输入 L 列出所有代码):8e

已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):w

The partition table has been altered!

Calling ioctl() to re-read partition table.

正在同步磁盘。

[root@cdcjtx-centos-001 ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xc950dffb

设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048     6293503     3145728   8e  Linux LVM

/dev/sdb2         6293504    14682111     4194304   8e  Linux LVM

/dev/sdb3        14682112    18876415     2097152   8e  Linux LVM

命令(输入 m 获取帮助):q// 创建PV

[root@cdcjtx-centos-001 ~]# pvcreate /dev/sdb1

Physical volume "/dev/sdb1" successfully created.

[root@cdcjtx-centos-001 ~]# pvcreate /dev/sdb2

Physical volume "/dev/sdb2" successfully created.

[root@cdcjtx-centos-001 ~]# pvcreate /dev/sdb3

Physical volume "/dev/sdb3" successfully created.

[root@cdcjtx-centos-001 ~]# pvs

PV         VG     Fmt  Attr PSize   PFree

/dev/sda2  centos lvm2 a--  <19.00g    0

/dev/sdb1         lvm2 ---    3.00g 3.00g

/dev/sdb2         lvm2 ---    4.00g 4.00g

/dev/sdb3         lvm2 ---    2.00g 2.00g// 创建PE大小为12M,名称为TESTvg的逻辑卷组

[root@cdcjtx-centos-001 ~]# vgcreate -s 12M TESTvg /dev/sdb1 /dev/sdb2 /dev/sdb3

Volume group "TESTvg" successfully created

[root@cdcjtx-centos-001 ~]# vgs

VG     #PV #LV #SN Attr   VSize   VFree

TESTvg   3   0   0 wz--n-  <8.98g <8.98g

centos   1   2   0 wz--n- <19.00g     0// 创建大小为4G,名为TESTlv的逻辑分区

[root@cdcjtx-centos-001 ~]# lvcreate -L 4G -n TESTlv TESTvg

Rounding up size to full physical extent <4.01 GiB

Logical volume "TESTlv" created.

[root@cdcjtx-centos-001 ~]# lvs

LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

TESTlv TESTvg -wi-a-----  <4.01g

root   centos -wi-ao---- <17.00g

swap   centos -wi-ao----   2.00g// 格式化分区为ext4类型,并挂载到/users目录下,将目录/etc/pam.d 复制到/users目录下

[root@cdcjtx-centos-001 ~]# mkfs.ext4 /dev/TESTvg/TESTlv

mke2fs 1.42.9 (28-Dec-2013)

文件系统标签=

OS type: Linux

块大小=4096 (log=2)

分块大小=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

263472 inodes, 1053696 blocks

52684 blocks (5.00%) reserved for the super user

第一个数据块=0

Maximum filesystem blocks=1080033280

33 block groups

32768 blocks per group, 32768 fragments per group

7984 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: 完成

正在写入inode表: 完成

Creating journal (32768 blocks): 完成

Writing superblocks and filesystem accounting information: 完成

[root@cdcjtx-centos-001 ~]# partprobe // 在不重新启动机器的情况下系统能够识别这些分区

[root@cdcjtx-centos-001 ~]# mount /dev/TESTvg/TESTlv /users/

[root@cdcjtx-centos-001 ~]# cp -R /etc/pam.d/ /users/

[root@cdcjtx-centos-001 ~]# ls -l /users/

总用量 20

drwx------ 2 root root 16384 5月  13 16:27 lost+found

drwxr-xr-x 2 root root  4096 5月  13 16:29 pam.d

LVM扩展:// 为TESTlv新增加2G容量,并验证数据完整度

[root@cdcjtx-centos-001 ~]# lvextend -L +2G /dev/TESTvg/TESTlv // 扩展物理边界

Rounding size to boundary between physical extents: 2.00 GiB.

Size of logical volume TESTvg/TESTlv changed from <4.02 GiB (343 extents) to 6.02 GiB (514 extents).

Logical volume TESTvg/TESTlv successfully resized.

[root@cdcjtx-centos-001 ~]# resize2fs /dev/TESTvg/TESTlv // 扩展逻辑边界

resize2fs 1.42.9 (28-Dec-2013)

Filesystem at /dev/TESTvg/TESTlv is mounted on /users; on-line resizing required

old_desc_blocks = 1, new_desc_blocks = 1

The filesystem on /dev/TESTvg/TESTlv is now 1579008 blocks long.

[root@cdcjtx-centos-001 ~]# ls -l /users/ //数据校验

总用量 20

drwx------ 2 root root 16384 5月  13 16:27 lost+found

drwxr-xr-x 2 root root  4096 5月  13 16:29 pam.d

LVM缩减:// 将TESTlv缩减到2G大小,并校验数据完整性!

// 这里采用ext4作为文件系统类型

// 先卸载物理文件系统->文件系统的强制检测和修复->缩减逻辑边界->缩减物理边界->重新挂载

[root@cdcjtx-centos-001 ~]# umount /dev/TESTvg/TESTlv // 卸载物理文件系统

[root@cdcjtx-centos-001 ~]# e2fsck -f /dev/TESTvg/TESTlv // 文件系统的强制检测和修复

e2fsck 1.42.9 (28-Dec-2013)

第一步: 检查inode,块,和大小

第二步: 检查目录结构

第3步: 检查目录连接性

Pass 4: Checking reference counts

第5步: 检查簇概要信息

/dev/TESTvg/TESTlv: 67/391216 files (0.0% non-contiguous), 61501/1579008 blocks

[root@cdcjtx-centos-001 ~]# resize2fs /dev/TESTvg/TESTlv 2G // 缩减逻辑边界为2G大小

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/TESTvg/TESTlv to 524288 (4k) blocks.

The filesystem on /dev/TESTvg/TESTlv is now 524288 blocks long.

[root@cdcjtx-centos-001 ~]# lvreduce -L 2G /dev/TESTvg/TESTlv // 缩减物理边界为2G大小

Rounding size to boundary between physical extents: 2.00 GiB.

WARNING: Reducing active logical volume to 2.00 GiB.

THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce TESTvg/TESTlv? [y/n]: y // 确认执行,注意风险性

Size of logical volume TESTvg/TESTlv changed from 6.02 GiB (514 extents) to 2.00 GiB (171 extents).

Logical volume TESTvg/TESTlv successfully resized.

[root@cdcjtx-centos-001 ~]# mount /dev/TESTvg/TESTlv /users/ //重新挂载

[root@cdcjtx-centos-001 ~]# ls -l /users/ //数据查看

总用量 20

drwx------ 2 root root 16384 5月  13 16:27 lost+found

drwxr-xr-x 2 root root  4096 5月  13 16:29 pam.d

删除LVM:[root@cdcjtx-centos-001 ~]# umount /users/

[root@cdcjtx-centos-001 ~]# lvremove /dev/TESTvg/TESTlv

Do you really want to remove active logical volume TESTvg/TESTlv? [y/n]: y

Logical volume "TESTlv" successfully removed

[root@cdcjtx-centos-001 ~]# vgremove TESTvg

Volume group "TESTvg" successfully removed

[root@cdcjtx-centos-001 ~]# pvremove /dev/sdb1

Labels on physical volume "/dev/sdb1" successfully wiped.

[root@cdcjtx-centos-001 ~]# pvremove /dev/sdb2

Labels on physical volume "/dev/sdb2" successfully wiped.

[root@cdcjtx-centos-001 ~]# pvremove /dev/sdb3

Labels on physical volume "/dev/sdb3" successfully wiped.

[root@cdcjtx-centos-001 ~]# pvs

PV         VG     Fmt  Attr PSize   PFree

/dev/sda2  centos lvm2 a--  <19.00g    0

[root@cdcjtx-centos-001 ~]# vgs

VG     #PV #LV #SN Attr   VSize   VFree

centos   1   2   0 wz--n- <19.00g    0

[root@cdcjtx-centos-001 ~]# lvs

LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

root centos -wi-ao---- <17.00g

swap centos -wi-ao----   2.00g

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值