Linux磁盘管理详解[分区,逻辑卷,RAID等]
磁盘管理 存储基础知识
主要知识点:基本分区、逻辑卷LVM、EXT3/4/XFS文件系统、RAID
1、从工作原理分区
SSD固态硬盘和传统的机械硬盘相比,有如下的优点和缺点:
SSD是摒弃传统
磁盘管理 磁盘管理 存储基础知识 主要知识点:基本分区、逻辑卷LVM、EXT3/4/XFS文件系统、RAID 1、从工作原理分区 SSD固态硬盘和传统的机械硬盘相比,有如下的优点和缺点: SSD是摒弃传统磁介质,采用电子存储介质进行数据存储和读取的一种技术,突破了传统机械硬盘的性能瓶颈,拥有固态硬盘的全集成电路化、无任何机械运动部件的革命性设计,从根本上解决了在移动办公环境下,对于数据读写稳定性的需求。全集成电路化设计可以让固态硬盘做成任何形状,与传统硬盘相比,SSD固态电子盘具有以下优点: SSD不需要机械结构,完全的半导体化,不存在数据查找时间、延迟时间和磁盘寻道时间,数据存取速度快。SSD全部采用闪存芯片,经久耐用,防震抗摔,即使发生与硬物碰撞,数据丢失的可能性也能够降到最小。得益于无机械部件及FLASH闪存芯片,SSD没有任何噪音,功耗低。质量轻,比常规1.8英寸硬盘重量轻20-30克,使得便携设备搭载多块SSD成为可能。同时因其完全半导体化, 无结构限制,可根据实际情况设计成各种不同接口、形状的特殊电子硬盘。 2、从磁盘尺寸 3.5 2.5 1.8 3、插拔方式 4、从硬盘接口 IDE——SATA(Serial ATA) SCSI——SAS(Serial Attached SCSI)即串口连接 SCSIother——PCIE FC 区别:缺口 SAS即串口连接SCSI,是新一代的SCSI技术,和现在流行的SerialATA(STAT)硬盘相同都是采用串行技术以获取更高的传输速度,并通过缩短连接线改善内部空间. 4、硬件设备命名 物理银盘: [root@localhost ~]# ll /dev/vda* brw-rw---- 1 root disk 253, 0 Nov 21 09:25 /dev/sda brw-rw---- 1 root disk 253, 1 Nov 21 09:25 /dev/sda1 /dev/sda /dev/sdb KVM虚拟化: KVM增加硬盘: 5、从存储连接方式 (1)本地存储,例如本地磁盘 (2)外部存储 scsi线 sata线 FC线 (3)网络存储 以太网络(iscsi,glusterFS,ceph) FC网络 6、从分区方式分区 MBR GPT >2TB gdisk(parted) 128 主分区注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失 基本分区 管理磁盘流程三部曲 分区——MBR和GPT——隔间格式化——文件系统——放家具/打造格子柜挂载——mount——加个门/目录 新硬盘——毛胚房 2.分区——MBR和GPT——隔间 一、查看磁盘信息 方法1: b——block——7块硬盘,后面的数字表示第几个分区 方法2:lsblk(了解) 二、创建分区步骤: MBR:把房子分成卧室和客厅 (3主+1扩展(n逻辑))启动分区工具fdisk /dev/sdb 三、进入会话模式:(我先在阿里云加一块盘) 提示1: 提示2: 提示3: 四、刷新分区表 partprobe:分区准备 [root@localhost ~]# partprobe /dev/vdb 通知操作系统有关分区表更改的信息。让内核更新分区表!! 五、查看分区结果 结果:10G扣除2G 2.格式化——文件系统——放家具/打造格子柜 一、.创建文件系统 二、挂载mount 操作: [root@localhost ~]# mkdir /www [root@localhost ~]# mount -t ext4 /dev/vdb1 /www/ 配置文件:vim /etc/fstab(开机自动挂载) 或者: # blkid UUID blkid命令:blkid-查找/打印块设备属性 官方建议使用UUID挂载,UUID是不会变得 挂载,它能挂在上,说明开机也能挂载 mount -a -a, --all 挂载 fstab 中的所有文件系统 卸载方法: # umount /dev/vdb1 //可以指定挂载盘 三、查看挂载情况 扩展分区 一块硬盘,使用MBR,划分分区,数量上只能是: 逻辑分区: 格式化逻辑分区: 重启就ok 开机启动: [root@localhost ~]# blkid | grep ‘vdb5’ /dev/vdb5: UUID=“6e382db8-065e-4bc4-b45d-27e332e0cd0a” TYPE=“ext4” PARTUUID=“1f044ba4-05” mount -a 交换分区 Swap:就是一个普通的分区 目的:方式OOM,内存超出。“提升内存的容量” 计算机组件: CPU内存:8-16G——IO:100m-1000m硬盘:500G——diso IO:50m/s SWA——热点数据——/dev/sdb3目的:为了让内存读取硬盘读取快点 Swap大小 一、查看当前的交换机分区 二、准备交换分区 准备一块磁盘,划分2G为例划分分区后,将类型设置为82(按t)[root@localhost ~]# partprobe /dev/vdb 三、格式化 四、挂载 [root@localhost ~]# swapon /dev/vdb2 五、验证 LVM逻辑卷管理 只要你有钱,就可以无线扩张磁盘(相当于将多个硬盘组合成一个硬盘) LVM 是在硬盘分区之上建立一个逻辑层,这个逻辑层让多个硬盘或分区看起来像一块逻辑硬盘,然后将这块逻辑硬盘分成逻辑卷之后使用,从而大大提高了分区的灵活性。我们把真实的物理硬盘或分区称作物理卷(PV);由多个物理卷组成一块大的逻辑硬盘,叫作卷组(VG);将卷组划分成多个可以使用的分区,叫作逻辑卷(LV)。而在 LVM 中最小的存储单位不再是 block,而是物理扩展块(Physical Extend,PE) 步骤: (1)创建LVM LVM叫逻辑卷管理 (2)VG扩展/缩小 (3)LV扩容 (4)文件系统扩容 在线扩容及在生产中 300G+900G硬盘 做单盘RAID0 PE:Physical extent:物理扩展 4M 8M 16M 32M 创建VG时指定的 -s 8M LE:longical extent:逻辑扩展 VG中有好多个PE,LV直接区VG中拿就好了 PV:物理卷VG:卷组LV:逻辑卷 VG叫做卷组 extents 叫做扩展块 PE: Physical extent 物理扩展 4M 8M 16M 32M 64M 创建VG时指定 -s 8M LE: Logical extent 逻辑扩展 实际工作中: 启动VMware环境下的Linux操作系统,添加新分区,需要root账号身份。 3.1 【fdisk -l】 最大分区为/dev/sda3,说明新创建的分区将会是sda4 3.2 输入【fdisk /dev/sda】 3.2.1命令行提示下输入【m】 3.2.2输入命令【n】添加新分区。 3.2.3输入命令【p】创建主分区。 3.2.4输入【回车】,选择默认大小,这样不浪费空间 3.2.5输入【回车】,选择默认的start cylinder。 3.2.6输入【w】,保持修改 3.3 输入【reboot】 重启linux,必须reboot,否则/dev/sda4无法格式化。 3.4 这时在/dev/目录下,才能看到了新的分区比如/dev/sda4 3.5 【mkfs.ext2 /dev/sda4】格式化 3.6 在根目录下创建disk4目录 3.7 【mount /dev/sda4 /disk4/】将分区mount到/disk4/上 3.8 在vim修改/etc/fstab文件,加入【/dev/sda4 /disk4 ext2 defaults 0 0】一行,并保存,实现开机自动mount。 LVM逻辑卷管理步骤 买物理硬盘——/dev/sdg变成物理卷——/dev/sdg加入卷组——vg1——/dev/sdg在卷组中,抽调空间,制作逻辑卷——/dev/vg1/lv1 2G(像过去的分区一样)格式化 nkfs /dev/vg1/lv1——2G挂载——mount /dev/vg1/lv1 /mnt/disk8 1.创建LVM 步骤1:PV [root@localhost ~]# partprobe /dev/vdb [root@localhost ~]# pvcreate /dev/vdb1 Physical volume “/dev/vdb1” successfully created. 步骤2:VG [root@localhost ~]# vgcreate centos /dev/vdb1 Volume group “centos” successfully created 步骤3:lv [root@localhost ~]# lvcreate -L 1G -n lv1 centos Logical volume “lv1” created. [root@localhost ~]# lvcreate -L 500M -n lv2 centos 等价于 lvcreate -l 25 -n lv2 datevg //大小一样大(125*4mib=100M) Logical volume “lv2” created. 2.格式化、挂载 lv1格式化为ext4: mkfs.ext4 /dev/centos/lv1 lv2格式化为xfs: mkfs.xfs /dev/centos/lv2 创建挂载目录: mkdir /mnt/lv{1,2} 查看UUID:blkid 配置开机启动:vim /etc/fstab 挂载 fstab 中的所有文件系统:mount -a [root@localhost ~]# mount -a VG管理 环境:/dev/centos/容量由5G扩容到10G 步骤1:创建PV,而后将PV加入到VG [root@localhost ~]# pvcreate /dev/vdb2 [root@localhost ~]# vgextend centos /dev/vdb2 //VG扩到到了10G 步骤2:扩大LV LV扩容(警告?:不建议缩小,风险是巨大的)FS扩容 将剩余的8.5G都扩容给了lv1 [root@localhost ~]# lvextend -l +100%FREE /dev/centos/lv1 Size of logical volume centos/lv1 changed from 1.00 GiB (256 extents) to 9.50 GiB (2433 extents). Logical volume centos/lv1 successfully resized. 快捷方式: [root@localhost ~]# resize2fs /dev/centos/lv1 如果是“ext2/3/4” LVM快照snapshot 非常重要 1、创建快照(ETX4) [root@localhost lv2]# lvcreate -L 100M -s -n lv2-snap /dev/centos/lv2 [root@localhost lv2]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv1 centos -wi-ao---- 9.50g lv2 centos owi-aos— 500.00m lv2-snap centos swi-a-s— 100.00m lv2 0.00 [root@localhost ~]# mkfs.ext4 /dev/centos/lv2-snap [root@localhost ~]# mkdir /mnt/lv2-snap [root@localhost ~]# mount -o ro /dev/centos/lv2-snap /mnt/lv2-snap/ [root@localhost ~]# lvscan ACTIVE ‘/dev/centos/lv1’ [9.50 GiB] inherit ACTIVE Original ‘/dev/centos/lv2’ [500.00 MiB] inherit ACTIVE Snapshot ‘/dev/centos/lv2-snap’ [100.00 MiB] inherit 快照卷也可以挂载: 不希望破坏快照卷中的数据 XFS:mount -o nouuid,ro /dev/vg1/lv1-snap /mnt/lv1-snap/s 挂载快照、尽量使用ro的方式,将不会破坏快照卷中的数据 注意事项: (1)快照卷和原始卷必须在一个VG中 (2)数据的一致性 (3)业务的可用性 操作步骤: (1)全局读锁 (2)lvm snaphost (3)释放锁 (4)mount - o sanphost (5)从snaphost 卷中复制数据 (6)卸载snaphost (7)lvremove -f snaphost 软磁盘阵列RAID RAID:廉价磁盘冗余阵列(Redundant Array of Independent Disks) 作 用:容错、提升读写速率 RAID类型个数利用率优缺点 RAID0 条带集 2+ 100% 读写速率最快,不 容错 RAID1 镜像集 2 50% 读写速率一般,容 错 RAID5 带奇偶校验条带集 3+ (n-1)/n 读写速率快,容错,允许坏一块 RAID6 带奇偶校验条带集双校验dp 4+ (n-2)/n 读写快,容错,允许坏两块 RAID10 RAID1的安全+RAID0的高速 4 4 50% 读写速率 快,容错 RAID50 RAID5的安全+RAID0的高速 6 6 (n-2/n) 读写速率快,容错 RAID60 RAID6的安全+RAID0的高速 8 8 (n-4)/n 读写速率快,容错 常用的RAID模式有RAID0、RAID1、RAID5、RAID10 1.RAID0 RAID0也就是常说的数据条带化(DataStripping),数据被分散存放在阵列中的各个物理磁盘上,需要2块及以上的硬盘,成本低,性能和容量随硬盘数递增,在所有的RAID级别中,RAID0的速度是最快的,但是RAID0没有提供冗余或错误修复能力,如果一个磁盘(物理)损坏,则所有的数据都无法使用。 将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。 由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAID0 的性能在所有 RAID 等级中是最高的 理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。 RAID1 RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。 RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高。 RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护 RAID5 RAID5 的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响 RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。 RAID10 RAID10,名称上便可以看出是RAID0与RAID1的结合体,显然需要至少4块磁盘。不过,先RAID0后RAID1,还是先RAID1后RAID0,是不一样的。 RAID10,是先做RAID1,然后对2组RAID1再做RAID0,假设此时某个RAID1坏掉一块磁盘,当前RAID1仍然能提供服务,并且另一个RAID1也同时可以坏掉一块磁盘 系统 RAID1+RAID5 前两块盘做RAID1 后面的盘做RAID5 RAID1+SSD_RAID5 前两块盘做RAID1 后面的SSD硬盘做成raid5用来存储数据 一、不同场景RAID的使用 RAID 实现方式 硬 RAID: 需要RAID卡,有自己的CPU,处理速度快,有电池和无电池软RAID: 通过操作系统实现,比如Windows、Linux 二、RAID5 (3块硬盘) + 热备(1块硬盘) \1. 准备4块硬盘 [root@localhost ~]# ll /dev/sd* brw-rw---- 1 root disk 8, 48 Jan 13 16:07 /dev/sdd brw-rw---- 1 root disk 8, 64 Jan 13 16:07 /dev/sde brw-rw---- 1 root disk 8, 80 Jan 13 16:07 /dev/sdf brw-rw---- 1 root disk 8, 80 Jan 13 16:07 /dev/sdg \2. 创建RAID [root@localhost ~]# yum -y install mdadm //确保mdadm命令可用 [root@localhost ~]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{d,e,f,g} -C 创建RAID /dev/md0 第一个RAID设备 -l5 RAID5 -n RAID成员的数量 -x 热备磁盘的数量 \3. 格式化,挂载 [root@localhost ~]# mkfs.xfs /dev/md0 [root@localhost ~]# mkdir /mnt/raid5 [root@localhost ~]# mount /dev/md0 /mnt/raid5 [root@localhost ~]# cp -rf /etc /mnt/raid5/etc1 \4. 查看RAID信息 [root@client ~]# mdadm -D /dev/md0 -D 查看详细信息 Raid Level : raid5 \5. 模拟一块硬盘损坏,并移除 终端一: [root@localhost ~]# watch -n 0.5 ‘mdadm -D /dev/md0 | tail’ //watch 持续查看 终端二: [root@localhost ~]# mdadm /dev/md0 -f /dev/sde -r /dev/sde //模拟坏了并移除 -f --fail -r --remove \6. 设置RAID开机生效 [root@client ~]# mdadm -D -s ARRAY /dev/md0 metadata=1.2 name=sxl1.com:0 UUID=c6761621:8878498f:f5be209e [root@client ~]# mdadm -D -s > /etc/mdadm.conf EXT文件系统 格式化目的:创造文件系统 索引式文件系统 文件系统及存储限制 文件系统及大小 最大文件大小:XFS 16TB 16TB 16TB 最大文件大小:ext4 16TB 16TB 50TB 最大文件大小:Btrfs N/A 待评估 待评估 最大文件系统大小:XFS 100TB 100TB 500TB 最大文件系统大小:ext4 16TB 16TB 50TB 最大文件大小:Btrfs N/A 待评估 50TB 格式化=创建文件系统 MBR(引导程序)、扇区 boot sector:分区的引导程序、文件系统 文件系统核心:inode、black、superblock ?superblock:记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式等;inode:记录文件的属性(文件的元数据metadata),一个文件占用一个inode,同时记录此文件数据所在的block number;block:实际存储文件的內容,若文件太大时,会占用多个block。 FAR文件系统:无inode,速度非常慢 Superblock 超级块 没有Superblock,就没有filesystem inode table:存储文件的元数据 文件名是保存在上级目录的block中,所以删除文件和上级目录的相关,和文件无关 >date block:存储文件的实际数据 EXT2/EXT3/EXT4 日志式文件系統 新建一个文件的过程: 先确定使用者对于想新创建文件目录是否具有wLinux 磁盘管理,与x权限;根据indoe bitmap 找到没有使用的inode号,并将文件的权限和属性写入;根据block bitmap 找到没有使用的block号码,将文件的实际数据写入到block中,并且更新inode的block指向信息;将刚刚写入的indoe与block信息同步更新indoe bitmap与bitmap,并且更新superblock内容 文件的不一致(inconsistent)状态 例如:突然断电,kernel错误发生,这样可能导致写入的信息仅有indoe table及 data block 而已,最后一个同步更新的步骤没有昨晚,此时就会发生metadata 的内容与实际信息产生不一致(inconsistent)情况; 日志式文件式系统(Journaling filesystem) 准备:当系统写入一个文件时,会先在日志区记录某个文件准备写入的信息;实际写入:写入文件的权限数据,更新metadata的信息;结束:完成数据与metadate的更新后,在日志记录区块中完成文件的记录。 如果没有写入,日志不会删除(128M),不是恢复文件的,是检查文件、修复时很快。 实现快速的文件一致性检查,没有日志的时候,全盘扫描 最终目的:保障文件系统的一致性。 XFS文件系统 默认换成了XFS,为什么要换去EXT家族呢? 这背后的真相是什么,到底是道德的沦丧,还是人性的扭曲 EXT家族支持最广: XFS同样是一种日志文件系统 高容量,支持大存储高性能,创建/修复文件快inode与block都是系统需要用到的时候,才动态配置产生 EXT4有的它有,没有的它也有 (1)XFS文件系统 文件系统日志区(log section)实时运行区(realtime section) [root@server ~]# xfs_info /dev/sda2 (2)修复xfs文件系统 [root@server ~]# xfs_repair /dev/sda2 (编辑:开发网_商丘站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |