文件系统及存储基础

文件系统及存储基础

一、 磁盘及文件系统

1.磁盘

  • 硬盘的物理构成:
    • 扇区(sector)、磁道(track)、磁头、柱面(cylinder)
  • 分区:
    • 就是记录每一个分区的起始柱面和结束柱面。
    • 分区信息存放在0柱面0磁道1扇区上: MBR 主引导记录(446字节)+DPT磁盘分区表(64字节)+结束标志(2个字节)
  • block:
    • 数据存储的最小单元
  • inode:
    • 索引节点,全局唯一编号,除了记录文件的属性外,同时还具有指针功能,指向 文件内容放置的块
    • (里面保存的是文件的权限,所有者,所属主等基本信息)
    • 文件的拥有者与用户组(owner/group)
    • 文件的访问模式(read/write/excute)
    • 文件的类型(type)
    • 文件建立或状态改变的时间(ctime)、最近一次的读取时间(atime)、最 近修改时间(mtime)
    • 文件的大小
    • 定义文件属性的标志(flag),如setUID…
    • 文件真正内容的指针(pointer)
  • 创建目录:
    • 分配一个inode和至少一个block
  • 创建文件:
    • 分配至少一个inode与相对于该文件大小的快数量
  • 文件系统构成:(dumpe2fs 可以查看)

2.链接

  • 链接:
    • 硬链接和软链接(符号链接),多个文件指向同一个iNode,硬链接;符号连接,指 向的是源文件的路径,而不是文件块
    • ln (link) [-s -v] 源文件 链接
    • 硬链接:
      • 在某个目录下的block中增加一个文件关联数据,不会用到inode与磁盘空间
      • 只能对文件进行创建,为了避免循环引用
      • 不能跨文件系统,可以在不同目录下
      • 创建硬链接可以增加文件被连接的次数
    • 软链接:
      • 建立一个独立的文件,这个文件会让数据的读取指向它连接的文件内容
      • 可以对目录创建
      • 不会增加被链接文件的链接次数
      • 其大小为指定路径所包含的字符个数
        • -b 删除,覆盖以前建立的链接
        • -d 允许超级用户制作目录的硬链接
        • -f 强制执行
        • -i 交互模式,文件存在则提示用户是否覆盖
        • -n 把符号链接视为一般目录
        • -s 软链接(符号链接)
        • -v 显示详细的处理过程

3. 查看磁盘情况

  • 命令:
    • du 查看文件大小 [-s -h ]
      • -s 只分别计算命令列中每个参数所占的总用量
      • -h 做单位转换
    • df 查看硬盘使用情况
      • -i 查看inode的使用情况
      • -P 不换行显示
      • -h 做单位转换
      • -T 显示文件系统
    • fdisk 查看当前系统识别的硬盘和分区的情况
      • 还可用来管理分区
        • fdisk /dev/sda
        • p:显示当前硬件的分区,包括没有保存的改动
        • n:创建一个新的分区
        • d:删除一个分区
        • w:保存并退出
        • q:不保存退出
        • t:修改分区类型(文件系统类型)
        • l:显示所支持的所有类型
    • cat /proc/partitions 查看分区
    • partprobe [/dev/sda] 通知操作系统分区表的变化
    • partx -a [/dev/sda] 告诉内核磁盘分区是否存在及其编号
    • cat /proc/filesystem 查看文件系统类型

4.格式化分区

  • 高级格式化:mkfs -t ext4
    • -b:分区时设定每个数据区块占用空间大小,目前支持1024, 2048 以 及4096 bytes每个块。
    • -i:设定inode大小 -N:设定inode数量,有时使用默认的inode数不够用,所以要自定 设定inode数量。
    • -c:在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常 慢
    • -L:预设该分区的标签label
    • j:建立ext3格式的分区,如果使用mkfs.ext3 就不用加这个选项了

5.swap分区

  • free 查看物理内存和交换空间使用情况
  • 有两种方式可以使用:
    • 第一种单独用一个分区来作为swap
    • 第二种方式是创建一个文件块,这个文件所占有的空间作为swap使用
      • 1、通过fdisk创建swap分区或者使用dd命令创建一个虚拟内存的文件 dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024
      • 2、mkswap进行swap分区格式化
      • 3、swapon 激活swap分区 swapoff 关闭swap分区

6.挂载

  • mount:挂载命令
    • 命令格式:mount [-t vfstype] [-o options] device dir
      • -a 挂载fstab中提到的所有文件系统
      • -o remount 重新挂载已挂载的文件系统
      • -o loop:用来把一个文件当成硬盘分区挂接上系统
      • -o ro:采用只读方式挂接设备
      • -o rw:采用读写方式挂接设备
    • 挂载光盘镜像文件
      • mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom

7.自动挂载

  • 自动化挂载
    • 文件系统的配置文件/etc/fstab
    • OS在初始时,会自动挂载此文件中定义的每个文件系统
      • /dev/sda5 /mnt/test ext4 defaults 0 0
    • mount -a:挂载/etc/fstab文件中定义的所有文件系统
    • /etc/fstab文件 实现开机自动挂载

二、 配置RAID

  • RAID 将一组硬盘连结成来,组成一个阵列,以避免单个硬盘损坏而带来的数据损失, 同时亦提供了比单个硬盘高的可用性及容错性。
  • 条带化技术,分散存储在多个盘上。(做切割数据的,存在盘上的对应位置,在外观看来就 是条带状的)
  • RAID级别:从读写速度,可靠性来考虑,代表raid的组成方式是不一样的,没有上下级之分

1. RAID0

  • RAID0 俗称“条带”

    	它将两个或多个硬盘组成一个逻辑硬盘,容量是所有硬盘之和,因为是多个硬盘组合成一个,故可并行写操作,写入速度提高,但此方式硬盘数据没有冗余,没有容错,一旦一个物理硬盘损坏,则所有数据均丢失。
    	因而, RAID0 适合于对数据量大,但安全性要求不高的场景,比如音像、视频文件的存储等。
    
    • 性能提升:读写
    • 冗余能力:不具备
    • 空间利用率:n
    • 至少两块盘

2. RAID1

  • RAID1 俗称“镜像”

    	RAID1 读操作速度有所提高,写操作理论上与单硬盘速度一样,但由于数据需要同时写入所有硬盘,实际上稍为下降。
    	容错性是所有组合方式里最好的,只要有一块硬盘正常,则能保持正常工作。
    
    • 性能提升:写性能下降,读性能提高
    • 冗余能力:具备
    • 空间利用率:1/2
    • 最少由两个硬盘组成

3.RAID 1+0

  • RAID1+0 是先将数据进行镜像操作,然后再对数据进行分组

    	RAID 10 对存储容量的利用率和 RAID 1 一样低,只有 50%.Raid1+0 方案造成了50%的磁盘浪费,但是它提供了 200%的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一 Raid1 中,就能保证数据安全性、 RAID 10 能提供比RAID 5 更好的性能。
    
    • 性能表现:读写提升
    • 冗余能力:具备
    • 空间利用率:1/2
    • 至少4块

4. RAID 5

  • RAID5 相对于其它的组合方式,在容错与成本方面有一个平衡,因而受 到大多数使用者的欢迎。

    	RAID5 最少由三个硬盘组成,它将数据分散存储于阵列中的每个硬盘,并且还伴有一个数据校验位,数据位与校验位通过算法能相互验证,当丢失其中的一位时, RAID 控制器能通过算法,利用其它两位数据将丢失的数据进行计算还原。因而 RAID5 最多能允许一个硬盘损坏,有容错性。
    
    • 性能表现:读写提升
    • 冗余能力:具备
    • 空间利用率:
    • (n-1)/n 至少3块

5.RAID6

  • RAID6 是在 RAID5 的基础上改良而成的, RAID6 再将数据校验位增加一位,所以允许损 坏的硬盘数量也由 RAID5 的一个增加到二个。

    	由于同一阵列中两个硬盘同时损坏的概率非常少,所以, RAID6 用增加一块硬盘的代价,换来了比 RAID5 更高的数据安全性。
    
    • 以上是当前主流的 RAID 组合方式,至于如何选择,则是结合到使用者对数据安全性、 数据冗余、数据可用性、投入成本等各方面的综合衡量。建议:
      • 系统盘配置为RAID 1(镜像卷)
      • 存储盘配置为RAID 10

三、 硬件RAID

1、阵列卡就是用来实现RAID功能的板卡,通常是由I/O处理器、硬盘控制器、硬盘连接器 和缓存等一系列零组件构成的 
2、不同的RAID卡支持的RAID功能不同,例如支持RAlD0、RAID1、RAID5、RAID10等 
3、RAID卡的接口类型 IDE接口、SCSI接口、SATA接口和SAS接口 
4、缓存(Cache)是RAID卡与外部总线交换数据的场所,RAID卡先将数据传送到缓存, 再由缓存和外边数据总线交换数据,缓存的大小与速度是直接关系到RAID卡的实际传输速 度的重要因素,不同的RAID卡出厂时配备的内存容量不同,一般为几兆到数百兆容量不 等。

1. 阵列卡介绍

  • 阵列卡
    • 全称叫磁盘阵列卡 是用来做 RAID 的。
    • 磁盘阵列是一种把若干硬磁盘驱动器 按照一定要求组成一个整体,整个磁盘阵列由阵列控制器管理的系统。
    • 冗余磁盘阵列 RAID(Redundant Array of Independent Disks)技术 1987 年由加州大学伯克利分校提 出,最初的研制目的是为了组合小的廉价磁盘来代替大的昂贵磁盘,以降低大批量数据存储 的费用

2. 阵列接口类型

  • 接口类型目前主要有几种: IDE 接口、 SCSI 接口、 SATA 接口和 SAS 接口。
    • IDE 接口
      • IDE 的英文全称为“Integrated Drive Electronics”,即“电子集成驱动器”,
      • 比如 ATA、 Ultra ATA、 DMA、 Ultra DMA 等 接口都属于 IDE 硬盘。
      • 此外,由于 IDE 口属于并行接口,因此为了和 SATA 口硬盘相区 别, IDE 口硬盘也叫 PATA 口硬盘。
    • SCSI 接口
      • SCSI 的英文全称为“Small Computer System Interface”(小型计算机系统接口
      • SCSI 硬盘主要应用于中、高端和高档工作站中
      • SCSI 硬盘和 普通 IDE 硬盘相比有很多优点:
        • 接口速度快,并且由于主要用于服务器,
        • 因此硬盘本身的 性能也比较高,硬盘转速快,缓存容量大,
        • CPU 占用率低,
        • 扩展性远优于 IDE 硬盘,并且 支持热插拔。
    • SATA 接口
      • SATA(Serial ATA)口的硬盘又叫串口硬盘
      • 串口硬盘是一种完全不同于并行 ATA 的硬盘接口类型,由于采用串行方式传输数据而知名。
      • 实际上, SATA 仅用四支针脚就能完成所有的工作,分别用于连 接电缆、连接地线、发送数据和接收数据,同时这样的架构还能降低系统能耗和减小系统复 杂性。
    • SAS 接口
      • SAS 是新一代的 SCSI 技术,和现在流行的 Serial ATA(SATA)硬盘相同
      • 采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等
    • 串行 SCSI 是点到点的结构,可以建立磁盘到控制器的直接连接。具有以下特点:
      • 更好的性能
        • 点到点的技术减少了地址冲突以及菊花链连结的减速
        • 为每个设备提供了专用的信号通路来保证最大的带宽
        • 全双工方式下的数据操作保证最有效的数据吞吐量
      • 简便的线缆连
        • 更细的电缆搭配更小的连接
      • 更好的扩展性
        • 可以同时连结更多的磁盘设备

3. 阵列卡的缓存

  • 缓存(Cache)是 RAID 卡与外部总线交换数据的场所, RAID 卡先将数据传送到缓 存,再由缓存和外边数据总线交换
    • Write Through 和 Write Back 是阵列卡缓存的两种使用
    • 透写和回写
    • Write Through 也是 RAID 阵列卡的默认模式

4. 添加硬件raid

  • 按照提示进入raid阵列创建

5. 软件raid

  • **MD:**multi disks 多磁盘,内核中的模块,可以读取配置文件,来实现 软件RAID
    • mdadm
    • 创建模式 -C
    • 专业选项:
      • -l:指定级别
      • -n:设备个数
      • -a:{yes|no} 自动为其创建设备文件
      • -c:chunk大小,默认为64k,(数据块)
      • -x:指定空闲盘的个数
      • 查看指定信息mdadm -D /dev/md # 查看指定RAID设备的详细信息
    • 查看raid状态: cat /proc/mdstat
    • 管理模式 :
      • 选项:-a(–add),-d(–del),-r(–remove),-f(–fail)
      • **模拟损坏:**mdadm /dev/md1 -f /dev/sdb5
      • **移除损坏的磁盘:**mdadm /dev/md1 -r /dev/sdb5
      • **添加新的硬盘到已有阵列:**mdadm /dev/md1 -a /dev/sdb7
      • **停止阵列:**mdadm -S /dev/md1
      • 增长模式: -G 用于增加磁盘,为阵列扩容
    • 注意:
      • 1、新增加的硬盘需要与原硬盘大小一致
      • 2、如果原有阵列缺少工作磁盘(如raid1只有一块在工作,raid5只有 2块在工作),

6. 实验步骤

  • 实验步骤:
    • 1、添加硬盘
    • 2、fdisk 分区 分区类型id要改成fd(linux raid)
    • 3、mdadm 命令创建raid阵列
    • 4、手动生成/etc/mdadm.conf文件
      • DEVICE /dev/hd[a-z] /dev/sd[a-z]’*
      • mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf
    • 5、格式化raid设备文件
    • 6、挂载raid设备文件
    • 7、编写/etc/fstab文件,实现开机自动挂载设备

四、 LVM逻辑卷管理

1.卷

  • 卷的分类
    • PV:(physical volume)物理卷
    • VG:(volume Group)卷组
    • LV:(logical volume)逻辑卷
  • LVM
    • LVM:可以动态调整分区大小。

2. 逻辑卷使用

  • 创建逻辑卷:

    • 创建分区,分区的类型使用Linux LVMfdisk / gdisk
    • 将分区做成物理卷(PV) :pvcreate /dev/sd[a-z]
    • 将PV加入到卷组(VG) :vgcreate vgname /dev/[a-z]
    • 基于VG创建逻辑卷(LV) :lvcreate -L size -n lvname vgname
    • 格式化LV :mkfs.ext4 /dev/vgname/lvname
    • 挂载使用 :mount /dev/vgname/lvname /directory
  • 扩展逻辑卷:

    • 首先需要一块新的硬盘空间,做成LVM分区
    • 将分区创建成PV
    • 将创建的PV添加到VGvgextend vgname /dev/sd[a-z]
    • 基于新的VG扩展LVlvextend -L +size /dev/vgname/lvname
    • 使系统文件生效 :
      • ext4格式的使用:resize2fs /dev/vgname/lvname
      • xfs格式使用:xfs_growfs /dev/vgname/lvname
  • 缩减逻辑卷:

    • 卸载已经挂载的逻辑卷分区
    • 利用resize2fs指令修改文件系统大小以实现空间缩减
      • e2fsck -f /dev/huateng/jishu
      • resize2fs /dev/huateng/jishu 308M
    • 使用lvreduce减少逻辑卷空间 lvreduce -L -80M /dev/huateng/jishu
    • 挂载缩减后的逻辑卷分区
  • 注意事项:

    • 不能在线缩减,得先卸载;
    • 确保缩减后的空间大小依然能存储原有的所有数据;
    • 在缩减之前应该先强行检查文件,以确保文件系统处于一至性状态;

3. 逻辑卷快照

	快照提供原始卷的静态视图LVM 快照通过把文件系统的改变记录到一个快照分区,因此当你创建一个快照分区时,你不需要使用和你正创建快照的分区一样大小的分区,所需的空间大小取决于快照的使用,所以没有可循的方法来设置此大小
	快照是特殊的逻辑卷,只可以对逻辑卷做快照。
  • 实例:
    • lvcreate --size 500M -n lvbak --snapshot /dev/vgname/lvname
    • /dev/vgname/lvname:原始逻辑卷
    • /dev/vg0/lvbak:备份逻辑卷
    • 执行lvdisplay或lvscan命令查看逻辑信息

4.ssm命令(system-storage=manager)

  • 安装:
    • yum -y install system-storage-manager
    • 实例:
      • 使用 sd{b…d} 创建vg0/lv1 并格式化为 xfs 挂载到 /media/lv1
        • ssm create -s 400M -n lv0 -p vg0 --fstype xfs /dev/sd{b…d} /media/lv0
    • 删除LVM卷:
      • ssm remove
    • 删除存储池:
      • ssm remove

五、 ISCSI网络存储器

1. 简介

	ISCSI技术是一种由IBM、Cisco公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择
  • 技术优点和成本优势主要体现以下方面:

    	硬件成本低:构建iSCSI存储网络,除了存储设备外,交换机、线缆、接口卡都是标准的以太网配件,价格相对来说比较低廉。
    
    	操作简单,维护方便:对iSCSI存储网络的管理,实际上就是对以太网设备的管理。
    
    	扩充性强:对于已经构建的iSCSI存储网络来说,增加iSCSI存储设备和服务器都将变得简单且无需改变网络的体系结构。
    
    	带宽和性能:iSCSI存储网络的访问带宽依赖以太网带宽。随着千兆以太网的普及和万兆以太网的应用,iSCSI存储网络会达到甚至超过FC(FiberChannel,光纤通道)存储网络的带宽和性能。	
    

2. 基本概念

  • SAN中,主机一般都是Initiator,存储设备则是Target

    • Initiator
      • SCSI会话的发起方
      • 向Target请求LUN,并将数据的读写指令发送给Target。
    • Target(默认采用TCP 3260端口)
      • 接受SCSI回话的一方
      • 它接收来自Initiator的指令,为Initiator提供LUN,并实现对LUN的读写
    • IQN: iqn.2020-11.com.redhat:737db83a23df
      • 全球唯一名称,用于以强制命令格式来识别启动器和目标
      • iqn :表示此名称将使用域作为其标识符
      • yyyy-mm :拥有域名的第一个月
      • com.redhat 逆向域名
      • optional_string :以冒号为前缀的可选字符串,根据需要分配
  • Linux主要的开源Target项目

    • Linux SCSI Target-STGT/tgt
    • Linux-IO Target - LIO Linux 2.6.38开始纳入内核
    • SCST-Generic SCSI Subsystem for linux
  • Linux-IO Target概述

    • Linux-IO Target在Linux内核中,用软件实现各种SCSI Target
    • **前端:**FC、FCoE、iSCSI、1394、USB、vHost等
    • **后端:**SATA, SAS, SCSI, SSD, FLASH, DVD, USB, ramdisk等
    • 架构:
      • 支持SSE4.2高性能、多线程
      • 支持x86, ia64, Alpha, Cell, PPC, ARM, MIPS等多种CPU
      • 支持高可用、负载平衡群集

3. ISCSI实现网络存储

3.1 服务端
  • 事先准备好两个逻辑卷作为ISCSI的存储设备。

  • **首先安装target:**yum install targetd targetcli -y

  • 启动服务:

    • systemctl start target
      • systemctl enable target
  • 设置防火墙:

    • systemctl stop firewalld

    • **关闭selinux:**setenforce 0

    • 执行targetcli工具:

  • targetcli

    • **帮助:**help
    • 基本思路:
      • 先把准备共享的块做出来,创建一个target,在target上创建LUN,一个LUN连接一个块
      • 创建块即给要发布的逻辑卷起个名字
        • cd /backstores/block
        • create server:disk01 /dev/vg0/lv0
      • 创建 iqn 名字即创建ISCSI对象
        • cd /iscsi
        • create iqn.2020-11.com.shengzhe:disk01
      • 设置ACL即将ISCSI对象与客户端IP或主机名绑定
        • cd /iscsi/iqn.2020-11.com.shengzhe:disk01/tpg1/acls
        • create iqn.2020-11.com.shengzhe.linux01
      • 创建LUN并绑定块
        • cd /iscsi/iqn.2020-11.com.shengzhe:disk01/tpg1/luns/
        • create /backstores/block/server:disk01
3.2 客户端
  • 基本步骤:
    • 安装软件
      • yum install -y iscsi-initiator-utils
    • initiator 起个名字
      • vim /etc/iscsi/initiatorname.iscsi
        • InitiatorName=iqn.2020-11.com.shengzhe:linux01
    • 启动服务
      • systemctl enable iscsi;
      • systemctl start iscsi
    • 发现存储
      • iscsiadm --mode discoverydb --type sendtargets --portal 192.168.119.136 --discove
    • 登陆存储
      • iscsiadm --mode node --targetname iqn.2020-11.com.shengzhe:disk01 --portal 192.168.119.136:3260 --login
    • 其他命令
      • iscsiadm -m discovery [-P 1|0] :显示有关已发现目标的信息
      • iscsiadm -m node [-P 1|0] :显示有关已知目标的信息
      • iscsiadm -m session [-P 1|0] :显示有关活动回话的信息
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值