2023年11月25日发(作者:)

一、Linux磁盘管理之GPT分区

硬盘分区表扫盲:MBRGPT

MBR全称为Master Boot Record

主引导记录,是传统的分区机制,应用于绝大多数使用BIOSPC设备

MBR+BIOS

MBR支持32位和64位系统。

MBR支持分区数量有限。

MBR只支持不超过2T的硬盘,超过2T的硬盘将只能用2T空间(有第三方解决方法)。

GPTGUID Partition Table

全局唯一标识分区表,是一个较新的分区机制,解决了MBR很多缺点。

支持超过2T的磁盘(64位寻址空间)。fdisk最大只能建立2TB大小的分区,创建一

个大于2TB的分区使用parted

向后兼容MBR

必须在支持UEFI的硬件上才能使用(Intel提出,用于取代BIOS)。

GPT+UEFI

必须使用64位系统。

MacLinux系统都能支持GPT分区格式。

Windows 7/8 64bitWindows Server 2008 64bit支持GPT

以上就是Linux系统MBRGPT分区的区别,总得来说GPTMBR更先进,但是MBR的兼容

性比GPT要好。

Linux系统中使用GPT分区格式(CentOS 7为例)

parted用法和常用选项:

用法:parted [选项]... [设备 [命令 [参数]...]...]

将带有“参数”的命令应用于“设备”。如果没有给出“命令”,则以交互模式运行.

帮助选项:

-h, --help 显示此求助信息

-l, --list 列出所有设别的分区信息

-i, --interactive 在必要时,提示用户

-s, --script从不提示用户

-v, --version显示版本

操作命令:

检查 MINOR #对文件系统进行一个简单的检查

cp [FROM-DEVICE] FROM-MINOR TO-MINOR #将文件系统复制到另一个分区

help [COMMAND] #打印通用求助信息,或关于COMMAND的信息

mklabel 标签类型 #创建新的磁盘标签 (分区表)

mkfs MINOR 文件系统类型 #MINOR创建类型为“文件系统类型”的文件系统

mkpart 分区类型 [文件系统类型] 起始点 终止点 #创建一个分区

mkpartfs 分区类型 文件系统类型 起始点 终止点 #创建一个带有文件系统的分区

move MINOR 起始点 终止点 #移动编号为 MINOR 的分区

name MINOR 名称 #将编号为 MINOR 的分区命名为“名称”

print [MINOR] #打印分区表,或者分区

quit #退出程序

rescue 起始点 终止点 #挽救临近“起始点”、“终止点”的遗失的分区

resize MINOR 起始点 终止点 #改变位于编号为 MINOR 的分区中文件系统的大小

rm MINOR #删除编号为 MINOR 的分区

select 设备 #选择要编辑的设备

set MINOR 标志 状态 #改变编号为 MINOR 的分区的标志

操作实例:

(parted)表示在parted中输入的命令,其他为自动打印的信息

1、首先类似fdisk一样,先选择要分区的硬盘,此处为/dev/sdb

2、选择了/dev/sdb作为我们操作的磁盘,接下来需要创建一个分区表(parted中可以使

help命令打印帮助信息)

(parted) mklabel

New disk label type? (我们要正确分区大于2TB的磁盘,应该使用gpt方式的分区

表,输入gpt后回车)gpt

Warning: The existing disk label on /dev/sdb will be destroyed and a

ll data on this disk will be lost. Do you want to continue?

Yes/No?(警告用户磁盘上的数据将会被销毁,询问是否继续,我们这里是新的磁盘,输入

yes后回车) y

3、创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名

称,文件系统和分区 的起止位置

4、分好区后可以使用print命令打印分区信息,下面是一个print的样例

5、如果分区错了,可以使用rm命令删除分区,比如我们要删除上面的分区,然后打印删除

后的结果

(parted)rm 1 #rm后面使用分区的号码

(parted) print

6、按照上面的方法把整个硬盘都分好区,下面是一个分完后的样例

7由于parted内建的mkfs还不够完善,所以完成以后我们可以使用quit命令退出parted

并使用 系统的mkfs命令对分区进行格式化了,此时如果使用fdisk -l命令打印分区表

会出现警告信息,这是正常的

格式化

[root@localhost ~]# 4 /dev/sdb1

[root@localhost ~]# 4 /dev/sdb2

[root@localhost ~]# 4 /dev/sdb3

挂载:

[root@localhost ~]# mkdir /mnt/test1

[root@localhost ~]# mkdir /mnt/test2

[root@localhost ~]# mkdir /mnt/test3

[root@localhost ~]# mount /dev/sdb1 /mnt/test1

查看一下,已经挂载上了。

二、Linux系统把/home重新挂载到其他硬盘或分区

一开始没有做好规划,导致/home空间不足,再加上分区表不是GPT导致无法扩展超过2T

因此需要重新划分一块更大的硬盘给/home

1.把新挂载的4T硬盘进行分区和格式化

2.创建目录

sudo mkdir /media/home

3./dev/sdb1挂载到/media/home

sudo mount /dev/sdb1 /media/home

4.同步/home/media/home,同步时间根据数据量大小决定,建议在系统空闲时操作

sudo rsync -aXS /home/. /media/home/. //在这一步我进行实验的时候,对/orcl文件

目录进行操作,报错skiping„,经

判断后采用cp r /orcl /orcl1

因为/orcl目录下还有其他子文件

5.同步完成后重命名/home

sudo mv /home /home_old

6.新建/home

sudo mkdir /home

7.取消/dev/sdb1挂载

sudo umount /dev/sdb1

8.重新挂载/dev/sdb1home

sudo mount /dev/sdb1 /home

9.查看/dev/sdb1UUID

blkid

10.UUID复制下来,修改/etc/fstab文件,实现开机自动挂载

sudo gedit /etc/fstab

在文件最后添加如下内容:

# home 4T

UUID=8da46012-ab9c-434f-a855-2484112fd1a7 /home ext4 nodev,nosuid 0 2

11.保存之后重启系统,查看分区的挂载情况

df h

12.确认一切正常后删除/home_old

sudo rm -rf /home_old

至此,给/home增加空间的工作就完成了。

三、LVM XFS增加硬盘分区容量(resize2fs: Bad magic number in

super-block while)

LVM XFS增加硬盘分区容量(resize2fs: Bad magic number in super-block while)

给某个硬盘增加分区之后

[root@Mysql01-213-66 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/vg_mysql0121366-LogVol02 7.7G 2.6G 4.8G 36% /

tmpfs 495M 0 495M 0% /dev/shm

/dev/sda1 194M 29M 155M 16% /boot

/dev/mapper/vg_mysql0121366-LogVol01 8.0G 3.1G 5.0G 38% /data

这里增加/data大小

[root@Mysql01-213-66 ~]# fdisk -l /dev/sda

Disk /dev/sda: 40.8 GB, 4 bytes

255 heads, 63 sectors/track, 4960 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: 0x000eb81f

Device Boot Start End Blocks Id System

/dev/sda1 * Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2 26235018668544 8e Linux LVM

进行分区

[root@Mysql01-213-66 ~]# fdisk /dev/sda

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

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 3

First cylinder (2350-4960, default2350):

Using default value 2350

Last cylinder, +cylinders or +size{K,M,G} (2350-4960, default4960):

Using default value 4960

Command (m for help): p

Disk /dev/sda: 40.8 GB, 4 bytes

255 heads, 63 sectors/track, 4960 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: 0x000eb81f

Device Boot Start End Blocks Id System

/dev/sda1 * Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2 26235018668544 8e Linux LVM

/dev/sda3 235283 Linux

Command (m for help): t

Partition number (1-4): 3

Hex code (type L to list codes): 8e

Changed system type of partition 3 to 8e (Linux LVM)

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.

重启服务器或者 partprobe

创建物理卷

[root@Mysql01-213-66 ~]# pvcreate /dev/sda3

Physical volume "/dev/sda3" successfully created

使用vgscan查询物理卷

[root@Mysql01-213-66 ~]# vgscan

Reading all physical volumes. This may take a while...

Found volume group "vg_mysql0121366"using metadata type lvm2

使用新增物理卷扩展vg

[root@Mysql01-213-66 ~]# vgextend vg_mysql0121366 /dev/sda3

Volume group "vg_mysql0121366" successfully extended

[root@Mysql01-213-66 ~]# vgscan

Reading all physical volumes. This may take a while...

Found volume group "vg_mysql0121366"using metadata type lvm2

查询vg

[root@Mysql01-213-66 ~]# vgdisplay

--- Volume group ---

VG Name vg_mysql0121366

System ID

Format lvm2

Metadata Areas 2

Metadata Sequence No 5

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 3

Open LV 3

Max PV 0

Cur PV 2

Act PV 2

VG Size 37.79 GiB

PE Size 4.00 MiB

Total PE 9675

Alloc PE / Size 4557 / 17.80 GiB

Free PE / Size 5118 / 19.99 GiB

VG UUID Zy2PVv-xSsx-NEAv-L6ba-G8Oy-tBBq-5zXKQm

查询lv

[root@Mysql01-213-66 ~]# lvdisplay

--- Logical volume ---

LV Path /dev/vg_mysql0121366/LogVol01

LV Name LogVol01

VG Name vg_mysql0121366

LV UUID 5znkJ2-wdeZ-Y2o1-ECDS-gzzl-PqaS-qo2yZR

LV Write Access read/write

LV Creation host, time Mysql01-213-66, 2015-08-3020:42:13 +0800

LV Status available

# open 1

LV Size 8.00 GiB

Current LE 2048

Segments 1

VG Name vg_mysql0121366

LV UUID b1FV1n-iKyK-kZ23-glRO-opFh-gDRp-TzWNcL

LV Write Access read/write

LV Creation host, time Mysql01-213-66, 2015-08-3020:42:14 +0800

LV Status available

# open 1

LV Size 2.00 GiB

Current LE 512

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 256

Block device 253:0

--- Logical volume ---

LV Path /dev/vg_mysql0121366/LogVol02

LV Name LogVol02

VG Name vg_mysql0121366

LV UUID eoVdk3-cbcP-9PlI-kZBL-6pY2-Jpbl-1WI2uH

LV Write Access read/write

LV Creation host, time Mysql01-213-66, 2015-08-3020:42:14 +0800

LV Status available

# open 1

LV Size 7.80 GiB

Current LE 1997

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 256

Block device 253:1

[root@Mysql01-213-66 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/vg_mysql0121366-LogVol02 7.7G 2.6G 4.8G 35% /

tmpfs 495M 0 495M 0% /dev/shm

/dev/sda1 194M 29M 155M 16% /boot

/dev/mapper/vg_mysql0121366-LogVol01 8.0G 3.1G 5.0G 38% /data

tmpfs 495M 0 495M 0% /dev/shm

/dev/sda1 194M 29M 155M 16% /boot

/dev/mapper/vg_mysql0121366-LogVol01 8.0G 3.1G 5.0G 38% /data

若不是xfs我们可以用resize2fs,这里报错了

[root@Mysql01-213-66 ~]# resize2fs -f /dev/mapper/vg_mysql0121366-LogVol01

resize2fs 1.41.12 (17-May-2010)

resize2fs: Bad magic number in super-block while trying to open

/dev/mapper/vg_mysql0121366-LogVol01

Couldn't find valid filesystem superblock.

[root@Mysql01-213-66 ~]# xfs_growfs /dev/mapper/vg_mysql0121366-LogVol01

meta-data=/dev/mapper/vg_mysql0121366-LogVol01 isize=256 agcount=4, agsize=524288 blks

= sectsz=512 attr=2, projid32bit=0

data = bsize=4096 blocks=2097152, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0

log =internal bsize=4096 blocks=2560, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

data blocks changed from2097152 to 7077888

[root@Mysql01-213-66 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/vg_mysql0121366-LogVol02 7.7G 2.6G 4.8G 35% /

tmpfs 495M 0 495M 0% /dev/shm

/dev/sda1 194M 29M 155M 16% /boot

/dev/mapper/vg_mysql0121366-LogVol01 27G 3.1G 24G 12% /data