侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计收到 4 条评论

Linux磁盘处理教程

2025-1-15 / 0 评论 / 14096 阅读

Linux磁盘处理教程

一、新增磁盘

物理连接磁盘

对于服务器等设备,关机后将新磁盘通过SATA、SAS等接口正确连接到服务器主板,并确保电源线连接牢固。对于虚拟机环境,在虚拟机设置中添加新的虚拟磁盘,设置好磁盘大小等参数。

识别新磁盘

重启服务器或虚拟机(在物理机上添加磁盘后通常需要重启以识别新硬件)。登录到Linux系统,使用lsblk命令查看系统是否识别到新磁盘。例如:

lsblk

该命令会列出系统中所有的块设备,新磁盘通常会以sdbsdc等形式出现(假设系统已有sda磁盘)。

二、标准分区

使用fdisk命令分区

/dev/sdb为例,使用fdisk命令对其进行分区:

sudo fdisk /dev/sdb

进入fdisk交互界面后,常用操作如下:

查看帮助:输入m,可查看fdisk的命令帮助信息。

新建分区:输入n。然后根据提示选择分区类型,如主分区(p)或扩展分区(e)。若选择主分区,接着输入分区号(1 - 4),起始扇区一般直接回车采用默认值,结束扇区可以指定大小(如+20G表示20GB大小的分区)或直接回车使用剩余全部空间。

设置分区类型:输入t,然后选择分区号,再输入对应的分区类型代码。例如,对于Linux文件系统,常用的83表示Linux分区。

查看分区表:输入p,可以查看当前磁盘的分区情况。

保存并退出:输入w,保存分区设置并退出fdisk

格式化分区

假设我们在/dev/sdb上创建了/dev/sdb1分区,使用mkfs命令对其进行格式化。如果要格式化为ext4文件系统:

sudo mkfs.ext4 /dev/sdb1

如果需要格式化为其他文件系统,如xfs,可使用:

sudo mkfs.xfs /dev/sdb1

挂载分区

创建挂载点,例如创建/data目录用于挂载:

sudo mkdir /data

挂载分区到挂载点:

sudo mount /dev/sdb1 /data

为了使系统重启后仍能自动挂载该分区,需要编辑/etc/fstab文件。在文件末尾添加一行:

/dev/sdb1 /data ext4 defaults 0 0

其中,/dev/sdb1是分区设备名,/data是挂载点,ext4是文件系统类型,defaults表示使用默认挂载选项,后面两个数字0 0分别用于指定是否备份和是否进行文件系统检查。

三、磁盘大于3T的处理

GPT分区表

传统的MBR分区表最大支持2.2TB的磁盘容量。当磁盘大于3T时,需要使用GPT(GUID Partition Table)分区表。

使用parted命令来进行GPT分区操作。例如,对/dev/sdb进行分区:

sudo parted /dev/sdb

进入parted交互界面后,首先设置分区表类型为GPT:

(parted) mklabel gpt

然后创建分区,例如创建一个占用整个磁盘的分区:

(parted) mkpart primary 0% 100%

可以使用print命令查看分区情况,最后使用quit命令退出parted

文件系统选择

对于大容量磁盘,xfs文件系统在处理大文件和高并发I/O方面表现较好。格式化分区时,可以选择xfs文件系统:

sudo mkfs.xfs /dev/sdb1

挂载和设置自动挂载的步骤与标准分区中的操作一致。

四、LVM(逻辑卷管理)

创建物理卷(PV)

假设要将/dev/sdb/dev/sdc两块磁盘用于LVM,首先将它们初始化为物理卷:

sudo pvcreate /dev/sdb /dev/sdc

使用pvdisplay命令可以查看物理卷的详细信息:

sudo pvdisplay

创建卷组(VG)

创建一个名为myvg的卷组,将刚才创建的两个物理卷添加到其中:

sudo vgcreate myvg /dev/sdb /dev/sdc

使用vgdisplay命令查看卷组信息:

sudo vgdisplay myvg

创建逻辑卷(LV)

myvg卷组中创建一个名为mylv、大小为50GB的逻辑卷:

sudo lvcreate -L 50G -n mylv myvg

其中,-L指定逻辑卷大小,-n指定逻辑卷名称。也可以使用-l参数以百分比的形式指定逻辑卷大小,例如-l 50%VG表示使用卷组空间的50%。

使用lvdisplay命令查看逻辑卷信息:

sudo lvdisplay /dev/myvg/mylv

格式化和挂载逻辑卷

对创建好的逻辑卷进行格式化,例如格式化为ext4文件系统:

sudo mkfs.ext4 /dev/myvg/mylv

创建挂载点并挂载逻辑卷:

sudo mkdir /mydata

sudo mount /dev/myvg/mylv /mydata

同样,为了系统重启后自动挂载,编辑/etc/fstab文件,添加如下内容:

/dev/myvg/mylv /mydata ext4 defaults 0 0

扩展逻辑卷

假设卷组还有剩余空间,要将mylv逻辑卷扩展10GB:

sudo lvextend -L +10G /dev/myvg/mylv

如果文件系统是ext4,还需要调整文件系统大小以识别新增加的空间:

sudo resize2fs /dev/myvg/mylv

对于xfs文件系统,使用xfs_growfs命令:

sudo xfs\_growfs /mydata

缩减逻辑卷(谨慎操作)

首先要确保文件系统处于未挂载状态,并且对文件系统进行检查。例如对于ext4文件系统:

sudo umount /mydata

sudo e2fsck -f /dev/myvg/mylv

然后缩减逻辑卷大小,假设将mylv缩减到40GB:

sudo lvreduce -L 40G /dev/myvg/mylv

最后重新挂载逻辑卷:

sudo mount /dev/myvg/mylv /mydata

五、磁盘管理的性能优化

I/O调度算法调整

Linux内核提供了多种I/O调度算法,如cfq(完全公平队列)、deadline(截止时间)、noop(电梯式)等。可以根据磁盘的使用场景选择合适的调度算法。

查看当前磁盘使用的调度算法:

cat /sys/block/sda/queue/scheduler

临时修改调度算法为deadline(以sda为例):

echo deadline | sudo tee /sys/block/sda/queue/scheduler

若要永久修改,需要编辑内核启动参数。对于使用GRUB的系统,在/etc/default/grub文件中添加或修改GRUB_CMDLINE_LINUX参数,例如:

GRUB\_CMDLINE\_LINUX="elevator=deadline"

然后更新GRUB配置:

sudo update - grub

磁盘缓存设置

可以通过调整dirty_ratiodirty_background_ratio等参数来优化磁盘缓存。dirty_ratio表示当内存中脏数据达到系统内存的一定比例时,开始同步磁盘;dirty_background_ratio表示当内存中脏数据达到系统内存的一定比例时,内核开始在后台异步地将脏数据刷到磁盘。

查看当前设置:

sysctl vm.dirty\_ratio

sysctl vm.dirty\_background\_ratio

临时修改,例如将dirty_ratio设置为20%,dirty_background_ratio设置为10%:

sudo sysctl -w vm.dirty\_ratio = 20

sudo sysctl -w vm.dirty\_background\_ratio = 10

若要永久修改,编辑/etc/sysctl.conf文件,添加或修改相应参数:

vm.dirty\_ratio = 20

vm.dirty\_background\_ratio = 10

六、磁盘管理的故障排查

磁盘无法识别

检查硬件连接是否松动,在物理机上重新插拔磁盘的数据线和电源线。

查看系统日志,如/var/log/syslog,看是否有关于磁盘识别的错误信息。

对于虚拟机,检查虚拟机设置中磁盘是否正确添加。

分区挂载失败

检查/etc/fstab文件中挂载配置是否正确,确保设备名、挂载点、文件系统类型等信息准确无误。

检查文件系统是否损坏,对于ext4文件系统,可以使用e2fsck命令进行检查和修复:

sudo e2fsck -f /dev/sdb1

对于xfs文件系统,使用xfs_repair命令:

sudo xfs\_repair /dev/sdb1

LVM操作失败

查看/var/log/messages日志文件,了解LVM操作失败的具体原因。

确保卷组中有足够的空间进行逻辑卷的扩展或创建等操作。

检查物理卷是否正常,使用pvdisplay命令查看物理卷状态,若物理卷损坏,可能需要更换磁盘并重新构建LVM。

评论一下?

OωO
取消