Linux下的磁盘管理

Linux下的磁盘管理 前言磁盘存储是Linux服务器运行的基础支撑磁盘空间异常是运维工作中高频遇到的问题。本章将带领大家系统认识Linux磁盘架构详细讲解磁盘分区、挂载、扩容等管理操作同时介绍实时查看磁盘占用的常用方式帮助大家解决日常存储相关问题。一了解磁盘1磁盘简介此图片来源网上侵权必删2概念1硬盘是由一片或多篇带有磁性的铝合金制的盘片构成是一种大容量、永久性的外部存储设备2组成盘片、马达驱动、缓存、控制电路、接口3逻辑结构磁道由内到外的同心圆扇区半径组成的扇形磁道存储区柱面多个盘片的统一磁道此图片来源网上侵权必删4物理设备命名硬件设备文件名称IDE设备/dev/hd[a-d]SCSI/SATA/U盘/dev/sd[a-p]软驱/dev/fd[0-1]打印机/dev/lp[0-15]光驱/dev/cdrorm鼠标/dev/mouse磁带机/dev/st0或/ht0IDE设备固态硬盘nvmen磁盘号[p1-10]5给虚拟机添加新的硬盘以上述方法再添加3块硬盘6硬盘分区概述1MBR分区概念MBR(Master Boot Record主引导记录)包含硬盘一系列参数和一段引导程序硬盘引导程序的主 要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系 统并将控制权交给启动程序MBR是由分区程序如Fdiskexe所产生的它不依赖任何操作系统而且硬盘引导程序也是可 以改变的从而实现多系统共存MBR位于整个硬盘的0磁道0柱面1扇区主引导扇区512B MBR446B DPTDisk Partition Table硬盘分区表64B最后两个字节“55AA”是分区的结束标志MBR分区类型主分区primary最多四个可以直接用来安装系统引导启动扩展分区Extended占用1个主分区名额本身不能直接格式化使用只是一个容器逻辑分区Logical在扩展分区内部划分分区数量不受4个限制Linux里IDE硬盘hd5以后都是逻辑分区支持的分区数量4个主分区或者3个主分区1个扩展分区MBR最多只能有4个主分区: 因为分区表占据64个字节其中每个分区的信息占用16个字节 分区表里面可以记录四个分区信息描述。2GPT分区出现的原因MBR分区表中最高支持磁盘容量为2.2TBMBR分区表中没有备份机制分区表被干掉则磁盘全部死光光MBR中存储开机管理程序的容量只有446B无法存储较多内容概念GPT(GUID Partition Table,全局唯一标识分区表)是一种比MBR分区更先进、更灵活的磁盘分区模式GPT分区表使用LBA(Logical Block Address)逻辑区块地址来记录磁盘引导、分区的相关信息LAB区块大小512B-4KB默认为512BLAB区块共68个前34个记录分区信息后34个进行备份不在区分主分区与其它分区默认情况下,GPT最多可支持128个分区支持大于2.2TB的总容量及大于2.2TB的分区最大支持 18EB(1EB1024PB,1PB1024TB,1TB1024GB)GPT分区机制在较老的BIOS中不能识别则提供了一个UEFI (Unified Extensible Firmware Interface)统一的可扩展固件接口来取代传统的BISO又称为UEFI BIOSUEFI使用C语言编写 支持较多的平台二查看磁盘使用情况1,lsblk指令的使用参数-d 仅列出硬盘本身信息不显示分区信息-f 列出磁盘的内的文件系统名称-i : 使用ASCII码格式输出信息-t 显示磁盘的详细信息-p 显示设备完整名称#lsblk#lsblk -d#lsblk -f#lsblk -i#lsblk -t#lsblk -p2划分MBR分区方式#fdisk /dev/sdb注意一定要进行保存 wq#udevadm settle#fdisk -l3划分GPT分区#dd if/dev/zero of/dev/sdb bs1M count1还原sdb硬盘清除所有数据#fdisk /dev/sdb#udevadm settle4gdisk管理分区#dd if/dev/zero of/dev/sdb bs1M count1#gdisk /dev/sdb三为新建分区制作文件系统#lsblk -f /dev/sdb#mkfs -t xfs -V -C /dev/sdb1#mkfs.xfs /dev/sdb1#mkfs.xfs -f /dev/sdb1#lsblk -f /dev/sdb四设备的挂载和卸载1设备挂载#mkdir /lei#mount /dev/sdb1 /lei/挂载设备#mount#df2,卸载当设备闲置时#umount /dev/sdb1卸载挂载#df当设备忙时#mount /dev/sdb1 /lei/#再开启一个设shell#cd /lei/当前shell运行在lei挂载的设备上所以设备会出现忙情况如果直接卸载会出现目标忙#fuser -vm /lei/查看占用#fuser -kvm /lei/查看并杀死占用#umount /dev/sdb13挂载时指定参数#mount参数-a依照配置文件/etc/fstab的数据将所有未挂载的磁盘都挂载上来-t指定文件系统类型-o 特殊设备选项挂载设备时使用#mount /dev/sdb1 /lei/#echo hehe /lei/file#mount /dev/sdb1只读挂载设备#mount -o ro /dev/sdb1 /lei/#echo haha /lei/file#cat /lei/file当前设备已经挂载如何更改设备参数#umount /lei#mount /dev/sdb1 /lei/#mount -o remount,ro /lei/#mount五如何永久挂载设备/etc/rc.d/rc.local 这个文件是开机启动脚本可以把mount指令写入这个文件当中但是此脚本在开机启动过程中执行很晚/etc/fstab 设备挂载策略文件在开机加载内核后就会被读取#vim /etc/fstab#df#mount -a#df六删除设备#vim /etc/fstab在此文件中删除要删除设备的信息#umount /dev/sdb1#fdisk /dev/sdb#udevadm settle#lsblk七swap分区1查看swap分区#swapon -s2建立swap分区1建立标签为Linux swap的分区#fdisk /dev/sdb#udevadm settle2格式化分区#mkswap /dev/sdb2#lsblk -f3激活设备#swapon -a /dev/sdb2#swapon -s4永久生效#vim /etc/fstab(5)删除#vim /etc/fstab在文件中删除要删除的swap分区条目#swapoff /dev/sdb2#swapon -s#fdisk /dev/sdb#udevadm settle八df命令作用列出文件系统的磁盘空间占用情况dfdisk free通过文件系统来快速获取空间大小的信息当我们删除一个文件的时候这个文件 不是马上就在文件系统当中消失了而是暂时消失了当所有程序都不用时才会根据OS的规则释 放掉已经删除的文件 df记录的是通过文件系统获取到的文件的大小他比du强的地方就是能够看 到已经删除的文件而且计算大小的时候把这一部分的空间也加上了更精确了参数-a列出所有的文件系统包括系统特有的/proc等文件系统-k以KB的容量显示各文件系统-m以MB的容量显示各文件系统-h以人们较易阅读的GB,MB,KB等格式自行显示-H以M1000K替代M1024K的进位方式-T连同该分区的文件系统名称例如ext3也列出-i不用硬盘容量而以inode的数量来显示#df#df -a#df -k#df -m#df -h#df -H#df -T#df -i九du命令作用du显示磁盘空间使用量统计目录或文件所占磁盘空间大小在默认情况下文件大小的单位 是KB。dudisk usage是通过搜索文件来计算每个文件的大小然后累加du能看到的文件只是一些当前 存在的没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和当文件系统 也确定删除了该文件后这时候du与df就一致了参数-a : 列出所有的文件与目录容量因为默认仅统计目录下面的文件量而已-h : 以人们较易读的容量格式G/M显示-s : 列出总量而不列出每个个别的目录占用了容量-S : 不包括子目录下的总计与-s有点差别-k : 以KB列出容量显示-m : 以MB列出容量显示#du /home/#du -a /home/#du -ah /home/#du -sh /home/#du -Sh /home/#du -Shk /home/#du -Shm /home/十软硬连接1软连接#ls -li /mnt/2硬链接#ls -li /mnt/十一在系统中查找文件1建立实验素材# useradd lei# useradd haha# useradd hehe# touch /mnt/lei{1..3}# mkdir /mnt/chuan# touch /mnt/chuan/leifile{1..3}# chown lei.lei /mnt/lei1# chown lei.haha /mnt/lei2# chown hehe.haha /mnt/lei32,find命令查找文件参数#find /mnt -name lei*#find /mnt -maxdepth 2 -name lei*#find /mnt -maxdepth 1 -name lei*#find /mnt -mindepth 2 -name lei*#find /mnt -mindepth 1 -name lei*#find /mnt -user lei#find /mnt -group haha#find /mnt -user lei -group haha#find /mnt -user lei -o -group haha#find /mnt -user lei -o -not -group haha#find /mnt -type f#find /mnt -type d#find /mnt -cmin 1#echo haha /mnt/lee1#find /mnt -cmin -1#dd if/dev/zero of/mnt/lei1 bs1M count1#dd if/dev/zero of/mnt/lei2 bs1M count2#dd if/dev/zero of/mnt/lei3 bs1M count3#find /mnt -size 1M#find /mnt -size -1M十二RAID1监控#watch -n 1 mdadm -D /dev/md02制作raid#mdadm -Cv /dev/md0 -a yes -l 5 -n 2 -x 1 /dev/sd{c,d,e}#mkfs.xfs /dev/md0#mount /dev/md0 /mnt/3删除raid#umount /mnt#mdadm -S /dev/md0#mdadm --zero-superblock /dev/sd{c,d,e}十三lvm逻辑卷管理基本概念PEphysical extent物理区域物理区域是物理卷中可用于分配的最小存储单元物理区域的大 小默认为4MB。物理区域大小一旦确定将不能更改同一卷组中的所有物理卷的物理区域大小需要 一致物理卷physical volume简称PV物理卷可以是整个硬盘、硬盘分区或从逻辑上与磁盘分区 具有同样功能的设备(如RAID)是LVM的基本存储逻辑块但和基本的物理存储介质如分区、磁 盘等比较却包含有与LVM相关的管理参数卷组Volume Group简称VG可以看成单独的逻辑磁盘建立在PV之上一个卷组中至少 要包括一个PV在卷组建立之后可以动态的添加PV到卷组中。卷组的名称可以自定义逻辑卷logical volume简称LV相当于物理分区。逻辑卷建立在卷组之上卷组中的未分配 空间可以用于建立新的逻辑卷逻辑卷建立后可以动态的扩展或缩小空间。系统中的多个逻辑卷 可以属于同一个卷组也可以属于不同的多个卷组1制作逻辑卷#fdisk /dev/sdc#udevadm settle#pvcreate /dev/sdc1#pvs#pvdisplay#vgcreate -s 1M vg0 /dev/sdc1#vgs#vgdisplay#lvcreate -L 150M -n lv0 vg0#lvs#lvdisplay#mkfs.ext4 /dev/vg0/lv0#mount /dev/vg0/lv0 /data/2,lvm相关指令查看命令示例且看上文#df -H /data3lvm设备的拉伸监控#watch -n 1 pvs;vgs;lvs;df -H /data1当vg容量充足时拉伸操作#lvextend -L 500M /dev/vg0/lv0#resize2fs /dev/vg0/lv02当vg容量不足时#lvextend -L 1500M /dev/vg0/lv0拉伸的容量超过了vg的剩余空间划分新的物理区#fdisk /dev/sdc#udevadm settle拉伸#pvcreate /dev/sdc2#vgextend vg0 /dev/sdc2#lvextend -L 1500M /dev/vg0/lv0#resize2fs /dev/vg0/lv04lvm的缩减#umount /dev/vg0/lv0#e2fsck -f /dev/vg0/lv0#resize2fs /dev/vg0/lv0 100M#mount /dev/vg0/lv0 /data/#lvreduce -L 100M /dev/vg0/lv0#pvmove /dev/sdc1 /dev/sdc2#vgreduce vg0 /dev/sdc1#pvremove /dev/sdc15lvm的删除#umount /dev/vg0/lv0#lvremove /dev/vg0/lv0#vgremove vg0#parted /dev/sdc rm 2#parted /dev/sdc rm 1#fdisk -l /dev/sdc