Linux磁盘处理教程
一、新增磁盘
物理连接磁盘
对于服务器等设备,关机后将新磁盘通过SATA、SAS等接口正确连接到服务器主板,并确保电源线连接牢固。对于虚拟机环境,在虚拟机设置中添加新的虚拟磁盘,设置好磁盘大小等参数。
识别新磁盘
重启服务器或虚拟机(在物理机上添加磁盘后通常需要重启以识别新硬件)。登录到Linux系统,使用lsblk
命令查看系统是否识别到新磁盘。例如:
lsblk
该命令会列出系统中所有的块设备,新磁盘通常会以sdb
、sdc
等形式出现(假设系统已有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_ratio
和dirty_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。
评论一下?