【linux】存储结构与磁盘划分

故事扮演 提交于 2020-03-03 15:24:29
  1. 概述:硬盘存储结构、硬件命名规则、内核Udev设备管理器服务、区分ext3,ext4,xfs,分区,格式或,挂载等操作,配置SWAP交换分区,quota服务限制磁盘配额、ln命令穿件软硬盘链接、RAID硬盘阵列、LVM逻辑卷管理器等
  2. 一切从’/'开始:并按照文件系统目录标准FHS采用树形结构来存放文件并定义每个区域的用途(严重区分大小写)
  • 主要常见目录及说明:
    目录 说明
    /boot 开机所需文件(内核、开机菜单及所需配置文件等)
    /dev 任何设备与接口都以文件的形式存放在此目录
    /etc 配置文件;/home
    /bin 单用户维护模式下还能被操作的命令
    /lib 开机时用到的函数库及/bin与/sbin下面命令要调用的函数
    /sbin 开机过程中需要的
    /media 一般挂载或删除的设备
    /opt 放置第三方的软件
    /root 系统管理员的主文件夹
    /srv 一些网络服务的数据目录
    /tmp 任何人据可使用的’共享’临时目录
    /proc 虚拟文件系统
    /usr/local 用户自行安装的软件
    /usr/sbin 非系统开机时需要的软件/命令/脚本
    /usr/share 帮助与说明文件,也可防止共享文件
    /var 主要存放经常需要变化的文件,如日志
    /lost+found 当文件系统发生错误时,将一些丢失的文件片段存在这里
  • 绝对路径:有根目录开始写起的目录或文件名
  • 相对路径:相对于当前路径的写法
  1. 物理设备的命名规则:磁盘设备由大量扇区组成,其中第一个扇区保存主引导记录与分区表信息,单个扇区容量512bytes,主引导记录需要占用446bytes,分区表为64bytes,每记录一个分区信息需要16bytes,所以大部分选择用3个主分区加一个扩展分区的方法
  • Udev(设备管理器)自动将硬件名称规范起来,以守护进程的形式运行并侦听来自内核发出的uevent来管理/dev目录下的设备文件,会根据uevent来动态添加或删除/dev目录中的设备文件
  • 常用硬件命名如下:
    硬件 命名
    IDE设备 /dev/hd[a-d]
    SCSI/SATA/U盘 /dev/sd[a-p]
    软驱 /dev/fdp[0-1]
    打印机 /dev/lp[0-15]
    光驱 /dev/cdroom
    鼠标 /dev/mouse
    磁带机 /dev/st0或/dev/ht0(IDE设备)
  • 主分区编号从1-4,逻辑分区编号从5开始,a-p代表16块不同的硬盘
    • 例如:/dev/sda5代表这是一块硬盘设备中编号为5的逻辑分区
  1. 文件系统与数据资料
  • 数十种文件管理系统:
    系统 说明
    ext3 日志文件系统
    ext4 3的后继版本
    XFS rhel7默认文件管理系统
  • 每个文件的权限和属性都记录在inode_table中(每个文件占用一个独立的inode表格,默认128bytes),记录着该文件的党文权限、所属主与组、大小、创建或状态修改时间、最后一次访问时间、修改时间、特殊权限、真实数据地址等,而实际数据保存在block块中
  1. 挂载硬件设备
  • 挂载操作指的是用户需要使用硬盘设备或分区数据时,需要先将其与一个已存在的目录文件做关联,这个动作叫挂载。
  • mount 文件系统 挂载目录:挂载文件系统
    • 例如:mount /dev/cdrom /media/cdrom
    • 参数说明:
      参数 说明
      -a 挂载所有在/etc/fstab中定义的文件系统
      -t 指定文件系统的类型
    • 使用mount挂载立即可以使用该文件系统,但是重启后失效,如果需要其重启依然生效,必需将挂载信息按照指定的格式写入到/etc/fstab文件中(只有root用户有权限编辑)
      • 填写格式:设备文件 挂载目录 格式类型 权限选项 自检(1为开机进行自检,0为不自检) 优先级
      • 取消挂载:umount /dev/sdb2
  1. 添加硬盘设备
  • 第一步:在虚拟机中添加用来做逻辑卷实验的硬盘
  • 第二步:将新添加的硬盘进行分区
    • fdisk [参数] [磁盘名称]:管理磁盘分区
      • 参数说明
        参数 说明
        m 查看全部可用参数
        n 添加新的分区
        d 删除某分区信息
        l 列出所有可用的分区类型
        t 改变某个分区类型
        p 查看分区表信息
        w 保存并退出
        q 不保存直接退出
    • 让内核同步分区信息:partprobe
  • 第三步:格式化为xfs文件系统
    • mkfs.文件类型 文件名称
    • 例如:mkfs.ext4 硬盘分区名称
  • 第四步:挂载到/newFS目录
    • mkdir /newFS
    • mount /dev/sdb1 /newFS/
  • 第五步:设置系统重启后自动挂载
    • vim /etc/fstab
    • /dev/sdb1 /newFS xfs defaults 0 0
  • 第六步:查看文件系统使用情况
    • df[选项][文件]:查看挂载点信息与磁盘使用量
      • 参数说明
        参数 说明
        -a 显示所有的文件系统(包括虚拟的)
        -total 展示出总体使用量
        -h 更易读的容量格式
        -l 展示出inode的信息
        -T 显示出文件系统的类型
    • du [选项] [文件]:查看磁盘的使用量
      • 参数说明
        参数 说明
        -a 评估每个文件而非目录整体占用量
        -c 评估每个文件并计算出总占用量总和
        -h 更易读的容量格式
        -s 仅显示占用量总和
  1. 添加交换分区(swap):类似window系统虚拟内存的功能,将一部分硬盘空间虚拟成内存来使用,速度很慢,真实无力内存耗尽才会调用swap
  • 分区设备格式化为swap:mkswap /dev/sdb1
  • 分区启用:swapon /dev/sdb1
  • 设置开机自动挂载
    • vim /etc/fstab
    • /dev/sdb1 swap swap defaults 0 0
  1. 磁盘冗余阵列
  • 加利福尼亚伯克利分笑首次提到并定义RAID,不贵的硬盘组–独立的硬盘组
  • 作用:防止硬盘无力损坏及增加存储设备的吞吐量
  • 常见组合:0,1,5,10
  • RAID0:至少两块硬盘,有效的提高硬盘的性能和吞吐量,但没有数据的冗余和UC修复能力
  • RAID1:至少需要两块硬盘,可以有效的提高数据资料的安全性和可修复性,但成本提高;实现原来是在数据写入硬盘时也会在另一块闲置的硬盘上生成镜像文件,在不影响性能的情况下最大限度的保证数据资料的可靠性,只要在一堆镜像盘中还有一块硬盘可以使用,数据也不会丢失,具有很好的硬盘冗余能力,单成本却明显增加,磁盘利用率为50%
  • RAID5:至少需要三块硬盘,兼顾储存性能、数据安全和储存成本。parity中保存的是其他硬盘数据的奇偶校验信息,以数据的奇偶校验信息来保证数据的安全,当任何一个评判损坏可以根据其他硬盘上的奇偶校验信息来重建损失的数据,兼顾了存储性能、数据安全、存储成本
  • RAID10:至少需要四块硬盘,兼顾速度和安全性,但成本很高
  • mdadm [模式]<RAID设备名称>[选项][成员设备名称]:管理系统软件RAID硬盘阵列
    • 模式说明
      模式 说明
      Assemble 将设备加入到以前定义的阵列
      Build 创建一个没有超级块的阵列
      Create 创建一个新的阵列,每个设备具有超级块
      Manage 管理阵列(添加和删除)
      Misc 云U型单独对阵列中的某个设备进行操作(如停止阵列)
      Follow or Monitor 监控状态
      Grow 改变阵列的容量或设备数目
    • 选项说明
      选项 说明
      -a 检测设备名称
      -n 指定设备数量
      -l 指定raid级别
      -C 创建
      -v 显示过程
      -f 模拟设备损坏
      -r 移除设备
      -a 添加设备
      -Q 查看摘要
      -D 查看详细信息
      -S 停止阵列
  • 模拟:
    • 添加四块硬盘
    • 创建raid10:mdadm -Cv /dev/mdo -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
    • 格式化并挂载使用:
      • mkfs.ext4 /dev/md0
      • mkdir /RAID
      • mount /dev/md0 /RAID
      • df -h
      • echo "/dev/md0 /RAID ext4 defaults 0 0">>/etc/fstab
    • 查看/dev/md0设备信息:mdadm -D /dev/md0
    • 模拟一块硬盘损坏:
      mdadm /dev/md0 -f /dev/sdb
      mdadm -D /dev/md0
    • 损坏后依然正常使用
      • 重启执行:mdadm /dev/md0 -a /dev/sdb
    • 设置冗余备份磁盘
      • umount /dev/md0
      • mdadm -S /dev/md0
      • mdadm -D /dev/md0
      • mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
      • mdadm -D /dev/md0
      • mkfs.etx4 /dev/md0
      • mount -a
      • mdadm /dev/md0 -f /dev/sdb
      • mdadm -D /dev/md0
  1. 逻辑卷管理器:在磁盘分区与文件系统之间添加的逻辑层,提供一个抽象的卷组,使得管理者可以忽略底层磁盘布局,从而实现对分区的灵活动态调整,红帽默认启用了LVM机制
  • 物理卷(PV):整个硬盘设备或使用fdisk命令建立的硬盘分区
  • 卷组(VG):由一个或多个物理卷组成的整体
  • 逻辑卷(LV):从卷组出切割出的空间用来创建文件系统,大小由PE的个数决定。基本单元(PE)默认为4MB的基本块
  • 功能:
    • 扫描:scan
    • 建立:create
    • 显示:display
    • 删除:remove
    • 扩展:extend
  • 命令:卷模式+相应命令
  • 如物理卷扫描:pvscan
  • 注意:其中物理卷不可扩展
  • 模拟1:
    • 启用lvm并创建vo逻辑卷并格式化为ext4格式
      • pvcreate /dev/sdb1
      • vgcreate rhcsa /dev/sdb1
      • vgdiplay
      • lvcreate -n vo -l 37 thcsa
      • mkfs.ext4 /dev/rhcsa/vo
      • mkdir /rhcsa
      • mount /dev/rhcsa/vo /rhcsa
      • df -h
  • 模拟2:
    • umount /rhcsa
    • lvextend -L 290M /dev/rhcsa/vo
    • e2fsck -f /dev/rhcsa/vo # 检查磁盘完整性
    • resize2fs /dev/rhcsa/vo # 重置硬盘容量
    • mount /dev/rhcsa/vo /rhcsa # 重新挂载
  1. 磁盘容量配额
  • quota[参数] 配额 文件系统
    • 参数说明
      参数 说明
      -c 命令 以交换式或参数的形式设置要执行的命令
      -p 设置提示或报错信息的程序名字,默认xfs_quota
      -x 专家模式,能够对quota做更多复杂的配置
    • dmesg | grep quota # 内核是否支持quota
    • rpm -q quota # quota是否安装
    • mount | grep boot # boot目录是否支持quota
    • dmesg | grep quota # 内核是否支持quota(noquota表示暂不支持)
    • vim etc/fstab
    • UUID=6e97ef8f-51fl-4781-8f1c-0acb../boot xfsdefaults,uquota 0 0
    • useradd tom
      - chmod -Rf o+w /boot
    • xfs_quota -x -c "limit bsoft=3m bhard=6m isoft=3 ihard=6 tom" /boot
  • equota [参数][用户]:超级用户编辑其他用户的quota配额限制
    • 参数说明
      参数 说明
      -u 编辑用户的配额限制
      -g 编辑用户组的配额限制
      -r 通过RPC协议编辑远程的配额
  1. 虚拟文件系统:VFS
  2. 软硬方式连接:
  • 创建链接:ln [选项]目标文件名 连接名
    • 参数说明
      参数 说明
      -s 创建软连接
      -f 强制创建文件或目录的链接
      -i 覆盖前先询问
      -v 显示创建链接的过程
    • 创建硬连接(指向原始文件inode的指针):ln 文件名 连接名
    • 创建软连接|符号链接(紧紧包含它索要链接文件的路径名):ln -s 文件名 连接名
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!