【Linux初级 9】磁盘管理
笔记目录1.磁盘介绍2.RAID3.磁盘分区介绍4.fdisk分区4.1 虚拟机添加磁盘4.2 开始分区4.3 格式化分区4.4 挂载使用5.parted分区6.企业使用磁盘方式7.swap分区1.磁盘介绍1.1.磁盘接口类型1.外部结构分类 机械硬盘# 考虑转速固态硬盘2.外观 机架式# 企业常用塔式# 类似台式机样子刀片式# 较少企业使用3.接口类型 IDE# 淘汰SCSI# 淘汰SATA# 笔记本台式机家用企业内部测试使用SAS# 企业标配非常好PCI-E# 企业标配1.2.磁盘结构1.磁盘转速(RPM)# 决定了磁盘的读写速度只有机械硬盘才考虑转速分别为5400rpm7200rpm10Krpm15Krpm 总结存储越小速度越快存储越大速度越慢2.磁盘存储大小 家里512G 1T 企业300G *12块600G *12块900G *8块 存储或备份服务器2T *8块3.磁盘的内部组成 磁头(Head)盘面数量磁头数量用来写入和读取数据径向运动 磁道(Track)分支主体从外面到里面最外面是0磁道写入的时候是将所有柱面的0磁道写满再去写1磁道2磁道3磁道 扇区(Sector)磁道上面的最小的单位默认大小512字节(bytes)整个硬盘有多少个扇区就有多大存储 柱面(Cylinder)不同盘面上面的相同的磁道组成的圆柱体磁盘默认是按照柱面进行读写 单元块(Units)表示一个柱面的大小 计算磁盘大小 柱面大小 * 柱面的数量2.RAID1.作用 增加使用空间安全备份提高读写速度其主要逻辑将多个盘组合成一个盘2.RAID介绍 RAID级别 最少需要盘数 安全性 容量 性能 使用场景 RAID01坏一块所有数据都损坏 所有盘和 读写快 只要速度不要安全缓存业务、从节点 RAID1 只能2块 可以损坏一块盘 百分50 写慢 读ok 只要求安全不要速度系统盘、监控 RAID5 至少3块 可以损1块 n-1 读写 ok 稳定的业务 RAID10 至少4块 可以损1半 一半 读写快 高并发业务场景、主库3.说明3.1RAID5是通过一块盘中的校验信息和其中一块盘的内容算出第三块盘的内容所以可以损坏一块3.2RAID10可以理解成将两块盘先做RAID0再将做成RAID0的两块盘做RAID1同理也可以先RAID1再RAID03.3不管做什么raid都可以用一个盘做热备3.磁盘分区介绍1.GPT和MBR区别 对小于2T的磁盘使用fdisk分区 MBR格式4个主分区(primary)C D E F 对大于2T的磁盘使用parted分区 GPT格式128个主分区2.MBR格式支持3个主分区 1个扩展分区(extend)注意扩展分区最多一个且无法直接使用需分逻辑分区后才能使用3.基于扩展分区(extend)划分逻辑分区(logical)只有主分区和逻辑分区才可以正常写入数据存放数据4.磁盘分区的设备名 磁盘第一块/dev/sda第二块/dev/sdb第三块/dev/sdc 分区主分区和扩展分区1-4逻辑分区从5开始5.例子 第1块sas硬盘的第1个主分区/dev/sda1 第2块sata硬盘的第2个主分区/dev/sdb2 第3块sata硬盘的第1个逻辑分区/dev/sdc54.fdisk分区4.1 虚拟机添加磁盘# 企业中硬盘不够用需要购买新的硬盘1.点击虚拟机--右键设置--添加硬盘(推荐即可)--创建新虚拟磁盘--20G2.重启系统生效(reboot)虚拟机需要重启物理机不需要重启支持热插拔云服务器扩容支持在线扩容3.查看是否可以看到sdb 第二块硬盘[rootlester-192 ~]# fdisk -l磁盘标签类型dos# 表示是MBR格式磁盘 /dev/sdb21.5 GB,21474836480字节41943040 个扇区# sdb表示找到了第二块盘4.2 开始分区[rootlester-192 ~]# fdisk /dev/sdb1.命令(输入 m 获取帮助)m a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition# 删除分区g create a new empty GPT partition table G create an IRIX(SGI)partition table l list known partition types m print this menu# 打印帮助信息 显示菜单nadda new partition# 创建新的分区o create a new empty DOS partition table p print the partition table# 查看分区表q quit without saving changes# 退出不保存s create a new empty Sun disklabel t change a partitions systemidu change display/entryunitsvverify the partition table wwritetable to disk andexit# 保存并退出x extra functionality(experts only)2.命令(输入 m 获取帮助)n# 添加新的分区Partition type: p primary(0primary,0extended,4free)# 主分区当前0个e extended# 扩展分区的表示方式Select(default p):# 默认回车是主分区Using default response p 分区号(1-4默认1)# 默认分区编号起始 扇区(2048-41943039默认为2048)# 开始的分区 默认回车将使用默认值2048Last 扇区, 扇区 or size{K,M,G}(2048-41943039默认为41943039)20G# 填想添加的分区大小回车默认将使用默认值41943039分区1已设置为 Linux 类型大小设为20GiB# 3.命令(输入 m 获取帮助)d 此处为例子无需操作删除第3个分区分区号(1-3默认3) 分区3已删除4.命令(输入 m 获取帮助)p# 查看分区表磁盘 /dev/sdb21.5 GB,21474836480字节41943040 个扇区 Units扇区 of1*512512bytes 扇区大小(逻辑/物理)512 字节 /512字节 I/O 大小(最小/最佳)512 字节 /512字节 磁盘标签类型dos 磁盘标识符0x7dc9caaa 设备 Boot Start End Blocks Id System /dev/sdb1204810487807524288083Linux /dev/sdb21048780820973567524288083Linux /dev/sdb32097356841943039104847365Extended# 添加扩展分区/dev/sdb52097561631461375524288083Linux# 在扩展分区中创建逻辑分区从5开始5.命令(输入 m 获取帮助)w# 保存在磁盘中谨慎操作The partition table has been altered!Calling ioctl()to re-read partition table. 正在同步磁盘。6.查看磁盘[rootlester-192 ~]# fdisk -l4.3 格式化分区1.mkfs.xxx 介绍[rootlester-192 ~]# mkfs.mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs xfs 默认使用xfs数据库MySQL业务等会选择xfs ext2 日志蓝汛、网宿的cache业务CDN网站加速服务的 ext4 视频下载流媒体数据库小文件业务2.开始格式化# 需要用到哪个分区格式化哪个分区# 格式化主分区[rootlester-192 ~]# mkfs.xfs /dev/sdb1meta-data/dev/sdb1isize512agcount4,agsize327680blkssectsz512attr2,projid32bit1crc1finobt0,sparse0databsize4096blocks1310720,imaxpct25sunit0swidth0blks namingversion2bsize4096ascii-ci0ftype1loginternal logbsize4096blocks2560,version2sectsz512sunit0blks, lazy-count1realtimenoneextsz4096blocks0,rtextents0# 格式化逻辑分区[rootlester-192 ~]# mkfs.xfs /dev/sdb5meta-data/dev/sdb5isize512agcount4,agsize327680blkssectsz512attr2,projid32bit1crc1finobt0,sparse0databsize4096blocks1310720,imaxpct25sunit0swidth0blks namingversion2bsize4096ascii-ci0ftype1loginternal logbsize4096blocks2560,version2sectsz512sunit0blks, lazy-count1realtimenoneextsz4096blocks0,rtextents04.4 挂载使用1.创建入口目录空的目录# 如挂载非空目录会将原本目录中的内容隐藏掉[rootlester-192 ~]# mkdir /data2.挂载[rootlester-192 ~]# mount /dev/sdsda sda1 sda2 sda3 sdb sdb1 sdb2 sdb3 sdb5[rootlester-192 ~]# mount /dev/sdb1 /data扩展umount /data# 取消挂载磁盘3.查看磁盘详情[rootlester-192 ~]# df -h文件系统 容量 已用 可用 已用% 挂载点 /dev/sda3 18G2.4G 16G14% / /dev/sda1 197M 110M 88M56% /boot /dev/sdb15.0G 33M5.0G1% /data# 我们挂载的磁盘4.写入开机自动挂载# 查看UUID[rootlester-192 ~]# blkid/dev/sr0:UUID2020-11-04-11-36-43-00LABELCentOS 7 x86_64TYPEiso9660PTTYPEdos/dev/sda1:UUIDca35ccbb-6640-4bc9-a6e8-1d66d7719f3cTYPExfs/dev/sda2:UUID25c30e60-d297-4710-9159-028283c61f04TYPEswap/dev/sda3:UUID41e64603-b7f7-47ba-b24a-afa07f4d15f2TYPExfs/dev/sdb1:UUID90288317-9e57-4c8b-a7cc-debbfe3d42c0TYPExfs/dev/sdb5:UUIDb1cbba70-4077-4b59-b68e-af1a30906d66TYPExfs# 写入挂载文件[rootlester-192 ~]# vim /etc/fstabUUID41e64603-b7f7-47ba-b24a-afa07f4d15f2 / xfs defaults00UUIDca35ccbb-6640-4bc9-a6e8-1d66d7719f3c /boot xfs defaults00UUID25c30e60-d297-4710-9159-028283c61f04 swap swap defaults00/dev/sdb1 /data xfs defaults00注意可以填UUID也可以直接填磁盘名后面第一个0表示是否备份第二个0表示是否检查磁盘有坏的地方5.parted分区1.同4.1虚拟机添加磁盘添加一块4T的磁盘因为是虚拟机不用马上全部分配硬盘所以可以随意添加多大容量2.分区[rootlester-192 ~]# parted /dev/sdbhelp# 显示菜单mklabel# 制作新的标签mkpart# 创建分区print# 输出打印分区表quit# 退出rmNUMBER# 删除分区2.1修改磁盘格式为GPT(parted)mklabel GPT2.2创建分区(parted)mkpart 分区名称[]? primary# 名称可重复可随便取文件系统类型[ext2]? xfs# 默认ext2改成xfs起始点0结束点 10G 警告: The resulting partition is not properly alignedforbest performance. 忽略/Ignore/放弃/Cancel? I# 忽略2.3查看分区详情(parted)p Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志117.4kB10.0GB 10000MB primary2.4非交互式(parted)mkpart primary xfs 10G 20G(parted)p Model: VMware, VMware Virtual S(scsi)Disk /dev/sdb: 4398GB Sector size(logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志117.4kB10.0GB 10000MB primary210.0GB20.0GB 9999MB primary2.5删除分区(parted)rm1# 删除第1个分区(parted)p Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志210.0GB20.0GB 9999MB primary2.6退出分区(parted)q 信息: You may need to update /etc/fstab.3.外部非交互式操作[rootlester-192 ~]# parted /dev/sdb mkpart primary xfs 20G 40G[rootlester-192 ~]# parted /dev/sdb p[rootlester-192 ~]# parted /dev/sdb rm 14.格式化[rootlester-192 ~]# mkfs.xfs /dev/sdb25.挂载[rootlester-192 ~]# mount /dev/sdb2 /data6.写入开机自动挂载 /dev/sdb2 /data xfs defaults006.企业使用磁盘方式1.插入磁盘2.格式化磁盘# 仅格式化成一个盘# 先将前面的挂载盘都卸载掉[rootlester-192 ~]# umount /data# 整个盘强制格式化[rootlester-192 ~]# mkfs.xfs -f /dev/sdb3.挂载磁盘[rootlester-192 ~]# mount /dev/sdb /data4.写入开机自动挂载[rootlester-192 ~]# vim /etc/fstab/dev/sdb /data xfs defaults005.注意 查看临时挂载信息目录cat /proc/mounts 如卸载磁盘后重新挂载不上data重启虚拟机解决7.swap分区1.由于进程占用大量的内存导致系统出现 oom(out of memory)报错信息 oom 内存溢出导致系统杀死占用内存最高的进程解决方法增加内存 导致内存飙升的因素1.由于大量的用户访问此为正常的现象增加内存即可2.开发写的程序错误导致(java)找开发解决问题3.由于网络波动导致内存升高增加swap解决4.其他原因 内存测试 拷贝 压测等 总结外部增加内存内部代码、个人操作、使用swap解决 swap用磁盘划分的分区来充当内存使用在内存不够用时临时充当内存使用目的就是解决oom内存溢出 swap可以在安装操作系统进行分区的时候划分 swap大小内存的1-1.5倍最多分8G 注意swap的磁盘速度比内存慢很多很多2.创建swap分区2.1查看swap分区大小[rootlester-192 ~]# free -htotal usedfreeshared buff/cache available Mem:1.9G 199M1.6G9.5M 117M1.6G Swap:2.0G 0B2.0G2.2生成一个2G的文件[rootlester-192 ~]# dd if/dev/zero of/home/addSwap bs1M count20002.3格式化为swap分区[rootlester-192 ~]# mkswap /home/addSwap2.4激活swap空间(挂载到源swap基础之上)[rootlester-192 ~]# swapon /home/addSwap2.5查看是否成功[rootlester-192 ~]# free -htotal usedfreeshared buff/cache available Mem:1.9G 204M 74M9.5M1.7G1.6G Swap:4.0G 0B4.0G2.6查看swap分区组成[rootlester-192 ~]# swapon -s文件名 类型 大小 已用 权限 /dev/sda2 partition20971480-2/home/addSwapfile20479960-32.7卸载swap分区[rootlester-192 ~]# swapoff /home/addSwap2.8自动挂载[rootlester-192 ~]# vim /etc/fstab/home/addSwap swap swap defaults00学而时习之不亦说乎