运维开发宝典014-交换分区和RAID
运维开发宝典014-交换分区(swap)/文件系统/磁盘阵列 大家好我是云计算磊哥从业20年的IT老鸟。运维培训15年总结了一套从入门到精通的全运维开发宝典手册。准备用300天时间写一套博文手把手从安装软件讲起从行业到产品从过去到未来从理论到操作从视频到文档工具一站式。从零基础入门到20k运维开发工程师岗位诸多就业问题。多方位全方面的给你讲清楚云计算这个行业该如何做。关注我。后续更精彩。大家好上篇文章让我们对存储管理有一个全面的了解本文探讨三个知识点交换分区文件系统磁盘阵列看完后可掌握的能力操作能力能查看 Swap 分区、EXT/XFS 文件系统信息能创建、挂载文件系统设置挂载选项能创建软链接、硬链接了解硬 RAID 的基本操作逻辑。问题排查与修复能力能识别并修复 EXT 文件系统的常见故障如分区只读、超级块损坏能根据场景选择合适的 RAID 类型理解不同 RAID 的故障应对方式。理论应用能力理解 Swap 分区的工作机制、EXT/XFS 文件系统的结构差异、日志式文件系统的优势能根据业务需求速度 / 安全选择合适的文件系统和 RAID 类型。1.交换分区 当系统的物理内存不足时就需要将物理内存中的一部分空间释放出来以供当前运行的程序使用。被释放的空间可能来自一些很长时间没有运行的程序它们被临时保存到Swap交换分区中等到需要再次运行时再从Swap分区中恢复保存的数据到内存中。注意Linux系统总是在物理内存不足时才对Swap交换分区进行使用。 查看当前的交换分区可使用free命令添加“-m”参数规定单位为M字节具体如下所示。[rootlocalhost ~]# free -mtotal usedfreeshared buff/cache available Mem:18236686089546929**Swap:204702047**该Swap分区大小2047M使用0M空闲2047M也可以使用“Swapon -s”命令查看交换分区大小及使用情况具体如下所示。[rootlocalhost ~]# swapon -s Filename Type Size Used Priority /dev/dm-1 partition 2097148 0 -1 交换分区可以在基本分区、逻辑卷与文件上创建使用mkswap命令格式化即可。1.在基本分区中增加交换分区使用fdisk命令创建一个基本分区使用mkswap命令对其格式化然后获取UUID添加在/etc/fstable文件中。首先创建一个新的分区sdf1在设置完扇区大小后输入t参数后输入82type选择linux swap2.在逻辑卷中增加交换分区在swapvg卷组中创建一个大小为100M的lv-swap逻辑卷使用mkswap格式化该逻辑卷。2.EXT文件系统基本结构 EXTExtended file system扩展文件系统已经发展到ETX4其中ETX2与EXT3已经淘汰它们都属于索引式文件系统。索引式文件系统好比带有目录的本书索引信息也会占用存储空间。EXT文件系统的结构如图所示。 在图中硬盘的每一个分区都有一个引导扇区和一个文件系统文件系统又分为多个块组Block Group块组又分为超级块Super Block、组描述表GDT、块位图Block Bitmap、索引节点位图inode Bitmap、索引节点表inode Table、数据块Data Blocks索引节点表记录文件的属性文件的元数据metadata包含索引节点号、文件类型、权限、链接次数、文件所有者、大小、时间戳等信息。查看EXT文件系统信息 使用dumpe2fs命令查看当前文件系统的信息包括文件系统的卷名、文件系统的UUID、文件系统的特性等信息具体如下所示。[rootlocalhost ~]# dumpe2fs /dev/sdd1dumpe2fs1.42.9(28-Dec-2013)Filesystem volume name:noneLast mounted on:not availableFilesystem UUID: 613e7941-3d1c-4daf-a984-4113a20bb7d3 Filesystem magic number: 0xEF53 Filesystem revision#:1 (dynamic)Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Defaultmountoptions: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux 上节已经介绍了逻辑卷概念、创建逻辑卷、卷组扩容及缩减、逻辑卷扩容、LVM快照应用环境、Swap交换分区、EXT文件系统基本结构和查看EXT文件系统信息下面将介绍EXT日志式文件系统、修复EXT文件系统、XFS文件系统查看及修复、mount命令、文件链接、磁盘阵列和恢复文件的内容。3.EXT日志式文件系统在EXT文件系统上新建一个文件的过程如下。1确定使用者对于新创建文件的目录有w与x的权限2根据索引节点位图找到没有使用的索引节点号码并将文件的权限和属性写入。3根据块位图找到没有使用的块号码将文件的实际数据写入块中且更新索引节点的块指向信息4将刚才写入的 索引节点与块信息同步更新索引节点位图与块位图并更新超级块的内容。一般将索引节点表与数据块称为数据存放区域将超级块、块位图与索引节点位图等称为元数据因为超级块、块位图及索引节点位图的数据是经常变动的每次新增加、移除、编辑都可能会影响到这三个部分的数据。 如果在执行上述第4步时突然断电或系统内核发生错误可能写入的信息仅有索引节点表及数据块最后的同步更新步骤并没有完成这会造成metadata的内容与实际信息不一致。当出现这种不一致的情况后系统会自动修复。若没有日志系统会全盘扫描该过程消耗较长的时间。若手动修复则需要逐一排查直到找到不一致文件。这样的情况造就了日志式文件系统的兴起。1准备当系统要写入一个文件时会先在日志记录区块中记录某个文件准备写入的信息。2实际写入写入文件的权限与数据更新元数据。3结束完成数据与元数据的更新后在日志记录区块中完成文件的记录。 采用这种方式后万一数据记录过程中出现了问题系统只要去检查日志记录区块就可以知道哪个文件出了问题针对该问题做一致性检查而不必检查整个文件系统这样就可以实现文件系统的快速修复。这就是日志式文件系统的基础功能。4.修复EXT文件系统例1系统无法启动当检查到/dec/vda2时提示unexpected inconsistencyrun fsck manually。系统提供有两种解决方法第一种是用户提供root密码使用fsck命令修复第二种是按Ctrld组合键重新启动但没有解决问题。例2运行中的服务器的某一个分区出现只读导致进程无法写入这个分区。例如Nginx进程无法写日志文件到此分区手动测试touch文件到此分区显示cannot touch ‘xxxxx’:Read-only file system。磁盘只读的原因一般有两种一是没有正常关机二是硬盘故障。如果出问题的是根分区只能下线报修磁盘。如果是其他分区则可以尝试用以下3步解决问题。1卸载分区2使用“fsck.ext4 -fy”命令修复分区3挂载分区检查是否可以正常读写。如果仍旧不可以正常读写请报修磁盘。例3\修复超级块如果超级块损坏则需要找到备份的超级块然后利用备份的超级块恢复超级块。5.XFS文件系统查看及修复 EXT文件系统支持度最高但创建文件系统慢、修复慢、存储容量有限。XFS文件系统同样是一种日志式文件系统与EXT文件系统相比有如下特性。• 高容量支持大存储• 高性能创建/修复文件系统快• 索引节点与块都是系统需要用到时才动态配置产生。 XFS文件系统有3个区数据区 (data section)文件系统日志区log section实时运行区(realtime section)。 数据区与EXT文件系统类似包括索引节点、数据块、超级块等信息。 使用xfs_info命令可以查看XFS文件系统信息。mount命令 mount挂载命令在面章节中已经简单介绍本小节对其做深入的讲解。使用mount命令把文件系统为XFS的sdd1设备挂载到data01目录上可以添加“-t”参数选择文件系统类型添加“-o”挂载选项为noexec不允许执行二进制文件。挂载完成后将/usr/bin/date复制到/data01目录中使用ll查看date的执行权限为可执行但实际执行时却不能执行具体如下所示。[rootlocalhost ~]# mount -t xfs -o noexec /dev/sdd1 /data01/[rootlocalhost ~]# cp -rf /usr/bin/date /data01/[rootlocalhost ~]# ll /data01/-rwxr-xr-x.1root root62200May913:49 /date[rootlocalhost ~]# /data01/datebash: /data01/date: Permission denied 当挂载选项为defaults时系统会默认给予若干选项具体如下所示。[rootlocalhost ~]# mount -o defaults /dev/sde1 /mnt/data02[rootlocalhost ~]# mount |grep sde1/dev/sde1 on /mnt/data02typexfs(rw,relatime,seclabel,attr2,inode64,noquota) 使用man工具查看mount中defaults的定义当用户使用defaults选项时它可以支持rw、suid、dev等挂载选项具体如下所示。defaultsUse default options: rw, suid, dev, exec, auto, nouser, async.5.文件链接 在Linux系统中文件链接分为两种一种是符号链接Symbolic Link另一种是硬链接Hard Link。下面分别讲解这两种链接。1.符号链接符号链接是指包含所链接文件的路径名类似于Windows系统中的快捷方式具体如下所示。[rootlocalhost ~]# echo abc file01[rootlocalhost ~]# ln -s /file01 /home/file02[rootlocalhost ~]# ll /home/file02lrwxrwxrwx.1root root7May1002:25 /home/file02 -/file01[rootlocalhost ~]# ll -i file01 /home/file0267146822-rw-r--r--.1root root4May1002:25 file01101899842lrwxrwxrwx.1root root7May1002:25 /home/file02 -/file01注意符号链接可以链接目录文件也可以跨文件系统进行链接。2.硬链接 硬链接是指链接文件与原始文件的索引节点相同即两者是同一个文件。每添加一个硬链接该文件的索引节点连接数就会增加1只有当该文件的索引节点连接数为0时该文件才彻底删除具体如下所示。[rootlocalhost ~]# echo linux /etc/file01[rootlocalhost ~]# cat /etc/file01linux[rootlocalhost ~]# ln /etc/file01 /usr/file01-h[rootlocalhost ~]# ll -i /etc/file01 /usr/file01-h34584243-rw-r--r--.2root root6May1017:19 /etc/file0134584243-rw-r--r--.2root root6May1017:19 /usr/file01-h在使用硬链接时需要注意以下两点。• 不允许给目录创建硬链接• 硬链接只有在同一个文件系统中才能创建。磁盘阵列 2017年10月Intel公司发布处理器i9-7980XEExtreme Edition该处理器为18核32线程可以打造每秒万亿次的浮点运算机。与此同时硬盘的性能却没有很大的提升木桶最大装水量取决于最短的一块木板与木桶原理类似硬盘成为计算机整体性能提升的瓶颈。 美国加州大学伯克利分校的 D. A. Patterson 教授等首次在论文中提出了 RAIDRedundant Array of Independent Disks廉价磁盘冗余阵列概念。RAID技术是通过几种特定方式把若干硬盘组合成一个大的磁盘阵列以提升读写能力与读写速度。 RAID磁盘阵列类型有很多种此处简单介绍几种常见的类型。1.RAID0RAID 0也称为条带集或者条带卷它是至少把2块硬盘串联在一起组成一个卷组并把数据分成若干小份同时写入每个硬盘如图所示。 在图中每个字母代表一个数据块数据块分别存入到4块硬盘。在理想条件下硬盘越多读写速率越快且率用率为100%。RAID 0是所有磁盘阵列类型中读写速率最快的但不具备容错能力一旦其中一块硬盘出现故障整个系统的数据都会受到影响。RAID 0通常应用在对数据要求不高的但对速率要求高的场景。2.RAID1 RAID 1也称为镜像集一般以2块硬盘为一组数据同时写到这2块硬盘上其中一份可视为数据的镜像如图所示。 在图中数据写入硬盘时为一式两份一份作为原数据一份作为镜像。Raid 1具有容错能力当某块硬盘出现故障数据会自动以热交换的方式恢复正常。比Raid 0相比Raid 1的读写速度较慢硬盘利用率为50%。3.RAID5 RAID 5也称为带奇偶校验的条带集至少需要3块以上硬盘。数据奇偶验证信息分别存放在每一行的某个硬盘上任何一个设备出现故障并不会影响整个系统的数据如图所示。 RAID 5占用一块硬盘存储奇偶验证信息所以硬盘利用率为n-1/n。由于要保存奇偶验证信息其读写速率比RAID 0稍慢但有一定的容错能力3块硬盘允许坏1块。RAID 5可以理解为是RAID 0和RAID 1的折中方案既保证读写速率又在一定程度上兼顾了数据的安全。 一旦RAID 5某一块硬盘故障所丢失的数据就需要通过奇偶验证信息计算导致整体读写速率减慢。如果更换一块新的硬盘数据会有一个重建的过程耗费时间视数据量在几十分到数小时不等。如果在这个过程中又有其他硬盘出现故障数据就会丢失。4.RAID6 RAID 6也称为带奇偶校验的条带集双校验至少需要4块硬盘硬盘利用率为n-2/n如图所示。 RAID 6读写速度快有一定的容错能力4块硬盘可允许坏2块。RIAD 6 在服务器上比较少见一般出现在专用的存储设备上。 RAID的实现方式有如下两种。硬RAID需要RAID卡有CPU处理速度快。软RAID通过操作系统实现。 实际环境中通过使用硬RAID软RAID使用非常少。软RAID实验略。硬RAID大家可以根据服务器的型号自行搜索网络视频如dell服务器r960操作RAID5。因厂家不同操作步骤极其简单但也有一点点界面不同。了解一款设备的RAID制作即可举一反三了。配套视频教程。添加链接描述出现在专用的存储设备上。 RAID的实现方式有如下两种。硬RAID需要RAID卡有CPU处理速度快。软RAID通过操作系统实现。 实际环境中通过使用硬RAID软RAID使用非常少。软RAID实验略。硬RAID大家可以根据服务器的型号自行搜索网络视频如dell服务器r960操作RAID5。因厂家不同操作步骤极其简单但也有一点点界面不同。了解一款设备的RAID制作即可举一反三了。配套视频教程。添加链接描述