上篇文章对linux 磁盘分区类型,步骤做了详细的介绍,在实践操作中举了个parted 命令的交互模式,在实际工作中略显繁锁,下面以实际具体的需求来实践一下磁盘管理。在操作前回顾一下磁盘划分的主要步骤:
1.确认分区设备
2.启动分区工具
3.创建分区表
4.创建分区
5.应用修改
6.格式化分区
7.挂载分区
8.更新 /etc/fstab
9.更新分区并生效
由以上可以看出上面步骤中对于第6步中格式化分区时,我们需要确认好具体的格式化类型,我们知道当前linux 中Ext4 和 XFS 是两种广泛应用于 Linux 系统的文件系统,它们各有特点和优势,适用于不同的应用场景。以下是关于这两种文件系统的详细对比及其推荐的应用场景:
Ext4 文件系统
特点:
• 成熟稳定:作为 ext3 的继承者,ext4 继承了许多成熟的特性,并且在 Linux 社区中得到了广泛的测试和支持。
• 日志功能:确保文件系统在崩溃后能够快速恢复,减少了文件系统的损坏风险。
• 大文件和分区支持:最大支持 16TB 的单个文件大小和 1EB(Exabyte)的分区大小。
• 改进的分配算法:减少了碎片化,提高了读写性能。
• 延迟分配:通过延迟分配磁盘块来优化文件存储位置,提高性能。
• 快速扩展和收缩文件大小。
推荐应用场景:
• 通用服务器环境:由于其稳定性和广泛的兼容性,ext4 非常适合大多数常规服务器应用。
• 桌面系统:对于普通用户来说,ext4 提供了良好的性能和稳定性。
• 虚拟机镜像存储:因为它的可靠性和良好的性能,ext4 是存放虚拟机镜像的好选择。
• 中小型数据库:虽然不是专门针对数据库优化,但对于中小规模的数据集,ext4 也能提供足够的性能。
XFS 文件系统
特点:
• 高性能:特别擅长处理大文件和大量小文件,具有优秀的元数据性能。
• 在线调整大小:可以在不卸载文件系统的情况下调整分区大小。
• 预分配空间:允许为文件预先分配空间,从而提高大文件写入性能。
• 日志功能:确保崩溃后的快速恢复。
• 高并发性:支持多线程并行操作,非常适合多核处理器环境。
• 配额管理:提供详细的用户和组级别的磁盘使用限制。
推荐应用场景:
• 大型文件存储:如媒体服务器、视频编辑工作站等,XFS 处理大文件的能力尤为突出。
• 高性能计算集群:由于其出色的并发处理能力和元数据性能,XFS 在 HPC 环境中表现出色。
• 数据库服务器:特别是那些需要频繁进行随机 I/O 操作的数据库,如 MySQL、PostgreSQL 等。
• 云存储平台:XFS 的高效元数据管理和可扩展性使其成为云服务提供商的理想选择。
• 备份和归档系统:由于其对大文件的良好支持以及在线调整大小的功能,XFS 也适用于长期数据存档。
由此可以看出
• Ext4 更适合于一般用途的服务器和桌面系统,尤其是当您寻求稳定性和广泛的社区支持时。
• XFS 则更适合需要高性能、大规模数据处理和高并发访问的应用场景,特别是在涉及到大量大文件或频繁的随机 I/O 操作时。
需求1
当前主机已分配好一块盘,容量为300G,需要对磁盘划分100G给mysql 使用,100G 给postgres数据库使用,需要对磁盘进行分区并格式处理。
1.创建分区表,并创建第一个数据分区
// 对vdd 盘创建新的 GPT 分区表,同时创建主分区,大小为磁盘容量的100G
// 创建分区, parted 硬盘 mkpart 起始大小 终止大小
parted -s /dev/vdd mklabel gpt mkpart primary 1 100G
2.创建第2个数据分区
#parted -s /dev/vdd mkpart primary 100G 200G
3.查看分区信息
#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdd 253:48 0 300G 0 disk
├─vdd2 253:50 0 93.1G 0 part
└─vdd1 253:49 0 93.1G 0 part
PS 以上命令可以使用非分比来进行分配,如
// 对vdd 盘创建新的 GPT 分区表,同时创建主分区,大小为磁盘容量的30%
parted -s /dev/vdd mklabel gpt mkpart primary 0% 30%
// 对sdb盘创建新的 创建主分区,大小为磁盘容量的70%
parted -s /dev/sdb mkpart primary 30% 100%
4.格式化分区
#mkfs.xfs -f /dev/vdd1
meta-data=/dev/vdd1 isize=256 agcount=4, agsize=6103424 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=24413696, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=11920, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
#mkfs.xfs -f /dev/vdd2
meta-data=/dev/vdd2 isize=256 agcount=4, agsize=6103552 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=24414208, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=11921, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
5.挂载分区
mkdir -p /db/{mysql,postgresql}
#mount /dev/vdd1 /db/mysql
#mount /dev/vdd2 /db/postgresql
8.更新 /etc/fstab
$lsblk -lf
NAME FSTYPE LABEL UUID MOUNTPOINT
vdd
vdd2 xfs e2ba053d-ac2f-4acd-b9ef-ab4f7a9dce14 /db/postgresql
vdd1 xfs 29e8a9cc-f061-4819-bfe4-ff3071bf43a5 /db/mysql
echo "UUID=e2ba053d-ac2f-4acd-b9ef-ab4f7a9dce14 /db/postgresql xfs defaults,noatime,nodiratime 0 0" >>/etc/fstab
echo "UUID=29e8a9cc-f061-4819-bfe4-ff3071bf43a5 /db/mysql xfs defaults,noatime,nodiratime 0 0" >>/etc/fstab
需求2
当前有 vdb vdc vdd vde 4块磁盘,需要通过卷的管理方式创建两个分区,一个用于存放数据库数据,一个用于放数据库的日志,并要使用磁盘性能最大人
1.确认分区设备 ## vdb vdc vdd vde
fdisk -l
2.启动分区工具 ,创建分区表
for disk in vdb vdc vdd vde
do
parted -s /dev/$disk mklabel gpt
done
4.创建分区
for disk in vdb vdc vdd vde
do
parted -s /dev/$disk mkpart primary 1 100%
done
pv create /dev/{vdb1,vdc1,vdd1,vde1}
vg create vg_data /dev/{vdb1,vdc1,vdd1,vde1}
lvcreate -l 20%FREE -i 4 -I 128k --name log vg_data
lvcreate -l 100%FREE -i 4 -I 128K --name data vg_data
5.应用修改
6.格式化分区
mkfs.xfs /dev/vg_data/log
mkfs.xfs /dev/vg_data/data
7.挂载分区
mkdir -p /db/data /db/log
8.更新 /etc/fstab
echo "/dev/vg_data/data /db/data xfs defaults,noatime nodiratime, 0 0 ">>/etc/fstable
echo "/dev/vg_data/log /db/log xfs defaults,noatime nodiratime, 0 0 ">>/etc/fstable
#echo "/dev/vg_data/log /db/log ext4 defaults,noatime,nodiratime,nodelalloc,barrier=0 0 0" >> /etc/fstab
# echo "/dev/vg_data/data /db/data ext4 defaults,noatime,nodiratime,nodelalloc,barrier=0 0 0" >> /etc/fstab
mount -a
9.更新分区并生效
partprobe