Linux存储管理:
首先回顾下,centos 7 默认的文件系统是xfs ,centos 6及以前或者其他的linux默认的文件系统是ext3.
介绍两个名词:
MBR , GPT
MBR (磁盘主引导记录: master boot record)
- <2TB fdisk 1-4个分区(4个主分区,扩展分区,逻辑分区)
例如: 3主 + 1扩展(n逻辑)
GPT(全局唯一标识分区表GUID Partition Table)
- >2TB gdisk(parted) 128个主分区
注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!
IDE:Integrated Drive Electronics,IDE是一种计算机系统接口,主要用于硬盘和CD-ROM,本意为“把控制器与盘体集成在一起的硬盘”。
SATA:串行ATA(Serial ATA: Serial Advanced Technology Attachment)是一种电脑总线,主要用于个人电脑。
SCSI:小型计算机系统接口(SCSI,Small Computer System Interface)是一种用于计算机及其周边设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。
SAS:SAS(Serial Attached SCSI,串列SCSI)是由并行SCSI物理存储接口演化而来,是由ANSI INCITS T10技术委员会开发的新的存储接口标准
物理设备的命名规则:
硬件设备 | 文件名称 |
IDE设备 | /dev/hd[a-d] |
SCSI/SATA/U盘 | /dev/sd[a-p] |
软驱 | /dev/fd[0-1] |
打印机 | /dev/lp[0-15] |
光驱 | /dev/cdrom |
鼠标 | /dev/mouse |
磁带机 | /dev/st0 或/dev/ht0 |
硬盘简介:
硬盘是由大量的扇区组成的,每个扇区的容量为 512 字节。其中第一个扇区最重要,它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用 446 字节,分区表为 64 字节,结束符占用 2 字节;其中分区表中每记录一个分区信息就需要 16 字节,这样一来最多只有 4 个分区信息可以写到第一个扇区中,这 4 个分区就 是 4 个主分区
最多只能创建出 4 个分区?
为了解决分区个数不够 的问题,可以将第一个扇区的分区表中 16 字节(原本要写入主分区信息)的空间(称之为扩 展分区)拿出来指向另外一个分区。也就是说,扩展分区其实并不是一个真正的分区,而更像 是一个占用 16 字节分区表空间的指针—一个指向另外一个分区的指针。这样一来,用户一 般会选择使用 3 个主分区加 1 个扩展分区的方法,然后在扩展分区中创建出数个逻辑分区, 从而来满足多分区(大于 4 个)的需求
文件系统:
用户在硬件存储设备中执行的文件创建、写入、读取、修改、转存与控制等操作都是依靠文件系统来完成的。文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。Linux 系统支持数十种的文件系统,而最常见的文件系统是Ext3,Ext4,xfs 等
- Ext3:是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。最大支持16TB,单个文件最大2TB。
- Ext4:Ext3 的改进版本,作为 RHEL 6 系统中的默认文件管理系统,它支持的存储容量高达 1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4 文件系统能够批量分配 block 块,从而极大地提高了读写效率.最大支持16TB,单个文件最大16TB。
- XFS:是一种高性能的日志文件系统,而且是 RHEL 7 中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为 18EB,这几乎满足了所有需求.
查看文件系统的信息:
lsblk:列出所有可用块设备的信息并显示他们之间的依赖关系。
df:显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB(df -hT)
常用参数:
- -T 显示文件系统的类型
- -h 以可读性较高的方式来显示信息(以人性化能看懂的大小格式显示)
- -l 仅显示本地端的文件系统
blkid:查询设备上所采用文件系统类型,主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询(必须e2fsprogs软件包)
使用dumpe2fs , tune2fs , xfs_info 前先使用blkid 查看相应的文件系统
- dumpe2fs:ext3/4文件系统使用这个
- tune2fs:调整和查看ext2/ext3文件系统的文件系统,参数-l
- xfs_info:xfs文件系统使用这个
Linux分区:
步骤:fdisk (创建分区) ------> mkfs (格式化)------>mount (挂载)------>umount(卸载)
(MBR使用fdisk ,GPT 使用gdisk)
1.创建分区(fdisk)
查看分区: fdisk -l 分区直接 fdisk +磁盘名称
参数:
参数 | 作用 |
m | 查看全部可用的参数 |
n | 添加新的分区 |
d | 删除某个分区信息 |
l | 列出所有可用的分区类型 |
t | 改变某个分区的类型 |
p | 查看分区信息 |
w | 保存并退出 |
q | 不保存直接退出 |
2.格式化(mkfs)
格式化,格式为“mkfs [选项] [-t <类型>] [设备]”
- mkfs.xfs /dev/sdb1
- mkfs -t xfs /dev/sdb1
3.挂载(mount)
首先创建挂载点,就是新建一个文件夹: mkdir guazaidian
然后临时挂载: mount 文件系统 挂载点
eg: mount /dev/sdb /home/user1 #将/dev/sdb 挂载到/home/user1
永久挂载: /etc/fstab"
格式:“设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检"
权限选项:rw : 读写
- ro : 只读
- suid : 支持suid
- dev : 支持设备文件
- nodev : 不支持设备文件
- noexec : 不允许执行二进制文件
- exec : 允许执行二进制
- auto : mount -a 开机自动加载
- noauto : mount -a 开机不自动加载
- async : 异步写入
- sync : 同步写入
- usrquota : 支持用户级磁盘配额功能
- grpquota : 支持组级磁盘配额功能
- acl : 支持acl功能
- remount : 在线重新挂载
- pri : 指定优先级
4.卸载(umount)
卸载挂载点或者设备都可以
umount /dev/sdb umount /home/user1 都是可以的
实例:
例子1:创建一个500MB的主分区
[root@localhost d2]# fdisk /dev/sdb
n
p
例子2:创建一个2GB的拓展分区
[root@localhost d2]# fdisk /dev/sdb
e
例子3:2GB的拓展分区中创建逻辑分区两个300MB,500MB
[root@localhost d2]# fdisk /dev/sdb
n
l
例子4:格式化500MB(例子1)的主分区
[root@localhost d2]# mkfs -t xfs /dev/sdb1
例子5:挂载
1)创建一个挂载点(目录)
[root@localhost d2]# mkdir /tools
2)挂载
[root@localhost d2]# mount /dev/sdb1 /tools/
3)查看
[root@localhost d2]# mount | tail -1
或
[root@localhost d2]# df -h | grep tools
现在根目录就会有一个文件夹可以正常使用了,其背后是新添加的那块硬盘
例子6:卸载,使用设备名或者挂载点
[root@localhost d2]# umount /tools/
或
[root@localhost d2]# umount /dev/sdb1
创建swap分区:
swap 分区:即交换区,系统在物理内存不够时,与Swap进行交换。
查看swap 分区: free -m(-m 以MB的格式显示,-h 人能看清楚的格式显示,MB,G等)
步骤:创建分区(fdisk)--- 改变分区id(t) ---格式化(mkswap)---启用(swapon)--- 停用(swapoff)
过程同创建一般分区,就是需要更改ID和格式化的命令不同,可以按照上面的例子进行创建,若是永久创建也是需要写进/etc/fstab中的
LVM(逻辑卷管理)
为计算机中的大量存储设备(Mass storage devices)提供更有弹性的硬盘分区方式。它是一种抽象化存储技术,实现的方式,根据操作系统而有所不同。基本上,它是在驱动程序与操作系统之间增加一个逻辑层,以方便系统管理硬盘分区系统。
LVM基本术语:
- 物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
- 物理卷(physical volume)(PV):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
- 卷组(Volume Group)(VG):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
- 逻辑卷(logical volume)(LV):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
- PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
- LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
LVM 创建步骤:
准备工作(分区) ---> 创建PV ---> 创建VG ---> 创建LV ---> 格式化与挂载
1.准备工作:(fdisk 分区,注意更改ID为lvm,详细过程如上例子 )
2.创建PV:pvcreate /dev/sd{....} (刚刚分的区)
查看: pvs , pvdisplay
3.创建VG: vgcreate 卷组名 磁盘名称 (pv)
查看: vgs ,vgdisplay
4.创建LV: lvcreate [选项] [LV名称] [VG名称]
选项常用:
-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] |(逻辑扩展数)
-L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}(逻辑卷大小)
eg:
eg: 1.创建一个基本的lv1,大小为200M
[root@localhost d2]# lvcreate -L 100M -n lv1 vg1
2.创建一个lv1,lv2,大小为剩余空间的30%
[root@localhost d2]# lvcreate -l 30%FREE -n lv2 vg1
查看: lvs ,lvdisplay
5.格式化与挂载: mkfs.xfs ...... mount ......
LVM 的扩容:
步骤: lv 卸载——> vg 扩容——>lv 扩容——>重新识别文件系统
lv卸载: umount
vg扩容: vgextend vg名 磁盘名称
lv扩容: lvextend 选项 lv名
重新识别文件系统:resize2fs 用于识别ext3/ext4 的文件系统,xfs_growfs 用于识别xfs 的文件系统: 格式: resize2fs / xfsgrowfs LV名
LVM的缩容:(基本用不到)
- 确保可以缩容后的空间足够存放现有数据(df -lh)
- 卸载分区(umount)
- 强制文件系统检查(e2fsck)
- 文件系统缩容(resize2fs),
- LV分区缩容(lvreduce)
- 重新挂载(mount)
- 查看分区和文件(df -lh)
(e2fsck : 用于检查格式为ext2/3/4的linux文件系统,格式为“e2fsck [VG名称]”)
LVM的删除:
lvremove , vgremove ,pvremove
LVM的快照(基本用不到)
主要用于备份,可以在出事的时候恢复数据 创建快照 ---> 挂载快照 ---> 查看快照
(了解一个自动挂载:autofs ,得先下载autofs ,相应文件 /etc/auto.master , /etc/auto.nfs ,启动。)
文件链接:软链接(符号链接)和硬链接
软链接相当于windows中的快捷方式,硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外,一处数据如果被删除了,不会影响到另一处的数据(硬链接)。
ln [-s -v] SRC DEST
硬链接:
1、只能对文件创建,不能应用于目录;
2、不能跨文件系统;
3、创建硬链接会增加文件被链接的次数;
符号链接:(-s)
1、可应用于目录;
2、可以跨文件系统;
3、不会增加被链接文件的链接次数
磁盘冗余阵列RAID:
作 用:容错、提升读写速率
常用:
RAID 类型 个数 利用率 优缺点
-------------------------------------------
RAID0 条带集 2+ 100% 读写速率快,不容错
RAID1 镜像集 2 50% 读写速率一般,容错
RAID5 带奇偶校验条带集 3+ (n-1)/n 读写速率快,容错,允许坏一块
RAID6 带奇偶校验条带集双校验 4+ (n-2)/n 读写快,容错,允许坏两块
RAID01
RAID10 RAID1的安全+RAID0的高速 4 50% 读写速率快,容错
RAID50 RAID5的安全+RAID0的高速 6 (n-2)/n 读写速率快,容错
RAID60 RAID6的安全+RAID0的高速 8 (n-4)/n 读写速率快,容错
RAID 60
软件实现RAID步骤:
准备工作 ---> 创建RAID ---> 格式化与挂载 ---> 查看RAID
准备工作
添加硬盘创建一些分区,注意更改分区id为lvm
创建RAID
安装mdadm
-s --scan
-S --stop
-D 查看RAID详细信息
-C 创建RAID + PATH(-C /dev/md0 )
-f --fail
-r --remove
-n RAID成员的数量
-x 热备磁盘的数量
-l RAID类型
-l 5(RAID5)
[root@localhost ~]# yum -y install mdadm
[root@localhost ~]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{d,e,f,g}
mdadm: array /dev/md0 started.
格式化与挂载
[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
查看RAID
[root@localhost d2]# # mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Jan 13 16:28:47 2014
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Jan 13 16:34:51 2014
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Number Major Minor RaidDevice State
0 8 48 0 active sync /dev/sdd
1 8 64 1 active sync /dev/sde
4 8 80 2 active sync /dev/sdf
3 8 96 - spare /dev/sdg
设置RAID开机生效
xfs_growfs命令用于重新识别xfs文件系统,格式为“xfs_growfs [LV名称]”
[root@localhost ~]# mdadm -D -s
ARRAY /dev/md0 metadata=1.2 name=sxl1.com:0 UUID=c6761621:8878498f:f5be209e
[root@localhost ~]# mdadm -D -s > /etc/mdadm.conf
创建一个5G的RAID0的分区myraid,由5个1G的分区以RAID0的方式组成
[root@localhost ~]# mdadm -C /dev/md/myraid -l0 -n5 /dev/sdc{1,5,6} /dev/sdd{1,5}
创建一个RAID1的阵列,大小为1G,由5个1G构成
mdadm -C /dev/md1 -l1 -n4 -x1 /dev/sdc{1,5,6} /dev/sdd{1,5}
停用RAID阵列
mdadm --stop /dev/md127