2023年11月25日发(作者:)
一、Linux磁盘管理之GPT分区
硬盘分区表扫盲:MBR和GPT表
MBR全称为Master Boot Record
主引导记录,是传统的分区机制,应用于绝大多数使用BIOS的PC设备
MBR+BIOS
MBR支持32位和64位系统。
MBR支持分区数量有限。
MBR只支持不超过2T的硬盘,超过2T的硬盘将只能用2T空间(有第三方解决方法)。
GPT(GUID Partition Table)
全局唯一标识分区表,是一个较新的分区机制,解决了MBR很多缺点。
支持超过2T的磁盘(64位寻址空间)。fdisk最大只能建立2TB大小的分区,创建一
个大于2TB的分区使用parted。
向后兼容MBR。
必须在支持UEFI的硬件上才能使用(Intel提出,用于取代BIOS)。
GPT+UEFI
必须使用64位系统。
Mac、Linux系统都能支持GPT分区格式。
Windows 7/8 64bit、Windows Server 2008 64bit支持GPT。
以上就是Linux系统MBR和GPT分区的区别,总得来说GPT比MBR更先进,但是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/sdb1到home
sudo mount /dev/sdb1 /home
9.查看/dev/sdb1的UUID
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


发布评论