赞
踩
目录
描述:RAID (Redundant Array of Independent Disks)有软件和硬件两种方式,硬件需要有RAID阵列卡,这里主要记录RAID的类型,不记录配置,工作中的硬件服务器一般有带有RAID卡,配置也比较简单,就不做赘述。
在操作系统层面,RAID就是一个块设备(硬盘)
联想RAID描述,这里有图文描述,更直观和详细
注意:硬件RAID阵列信息是写入到硬盘上的,所以RAID完整的情况下,是可以整组迁移到另外的同型号RAID卡上的。
基础类型RAID主要有RAID 0/1/5/6 ,RAID名字叫冗余,所以我记忆方式是1表示True,表示冗余
简介:将数据条带化,分散写入所有盘
要求:一块硬盘起步
容量:硬盘容量累加
优点:读写速度最快
缺点:数据不安全,坏盘就丢数据
简介:数据镜像化,一份数据写入到多个磁盘内
要求:2块硬盘
容量:1块硬盘容量
优点:安全,最多可坏1块盘,读取速度较快,坏盘替换后数据重建时间快
缺点:写入速度较慢,容量等于最小的那块盘
简介:将数据条带化,同时写入多块盘,相同位置一份数据做奇偶校验,保证数据安全
要求:4块盘起步
容量:N-1 块硬盘容量
优点:兼顾可靠性和容量,因为数据校验,最多可损失一块盘
缺点:容错只有一块硬盘,可以考虑增加热备盘;因为要校验,坏盘替换后的数据重建慢
简介:将数据条带化,同时写入多块盘,两份数据做奇偶校验,保证数据安全
要求:4块硬盘起步
容量:N-2 块硬盘容量
优点:兼顾可靠性和容量,因为数据校验,最多可损失两块盘
缺点:因为要校验,坏盘替换后的数据重建慢
简介:先镜像后条带,硬盘先组成RAID1的磁盘组,然后将RAID1盘组成RAID0组
要求:4块起步,偶数个硬盘
容量:容量是硬盘总数的一半
优点:读写速度,重建速度,可靠性都很好,如果不是同一组的RAID1一起坏,数据不会丢失
缺点:容量少一半;如果一组RAID1坏了,数据丢失,所以当出现硬盘故障,需及时更换,或者增加热备盘
1)如果对数据写入速度有要求,但是不需要保证数据安全性,可以做RAID0
2)对数据读写和可靠性有要求,但是不关注容量,做RAID10
3)如果对可靠性和容量都有要求,做RAID5或者RAID6
4)目前工作中系统盘和数据盘隔离,系统盘做的RAID1
PV(物理卷):位于LVM的最底层,可以由物理盘、硬盘分区、磁盘阵列生成
VG (卷组):建于物理卷之上,一个卷组可以包含多个物理卷,可以动态添加物理卷
LV (逻辑卷):用卷组中的资源建立,可以扩容和缩容(缩容有危险)
PE (基本单元):可以理解为LVM最小的存储单元
lvm 配置文件: /etc/lvm.conf
需要安装 lvm2 :Userland logical volume management tools
具体的参数,需要通过man或者help看帮助手册
| 功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
| 扫描 | pvscan | vgscan | lvscan |
| 建立 | pvcreate | vgcreate | lvcreate |
| 显示(-v 详情) | pvdisplay / pvs | vgdisplay / lvs | lvdisplay / lvs |
| 删除 | pvremove | vgremove | lvremove |
| 扩展 | pvresize | vgextend | lvextend / lvresize |
| 重命名 | vgrename | lvrename | |
| 激活 | vgchange | lvchange | |
| 缩小 | vgreduce | lvreduce |
1、创建PV (可以是磁盘或者是分区,不要给分区格式化)
pvcreate /dev/sdb
2、创建VG 首次创建,如下方式可以跳过,直接执行第三步
vgcreate vg_name /dev/sdb
3、将PV加入到VG中 (这里注意是用创建PV的设备或者分区)
vgextend vg_name /dev/sdb
4、创建LV并分配空间 (-L 150M 就是创建150M,-l 25 就是创建25*4M,-l指定4M为单位的块数)
lvcreate -n lv_name -l 25 vg_name
分配全部vg容量
lvcreate -l 100%FREE -n lv_name vg_name
lvdisplay 查看逻辑卷信息,能看到逻辑卷路径
5、格式化LV (系统用什么格式就用什么格式,比如xfs)
mkfs.xfs /dev/vg_name/lv_name
6、挂载LV
mkdir /test_lv
mount /dev/vg_name/lv_name /test_lv
写入挂载文件
vi /etc/fstab
mount -a
注意:变更/etc/fstab 一定要用mount -a测试一下,避免重启时挂载失败导致进入救援模式
1、检查VG是否有剩余资源 (如果没有,就按照上面流程给VG添加PV资源)
vgdisplay
可选:vg扩容
vgextend vg_name /dev/sdc
可选:pv扩容
可能存在虚拟机的硬盘扩容,通过pvresize 来刷新pv容量
2、LV扩容
lvresize -L +2G /dev/vg_name/lv_name
或者下面的方式,将设备剩余容量全部加入LV
lvextend /dev/vg_name/lv_name /dev/sdb
3、刷新设备容量
先查看文件系统类型
df -Th 或者 查看 /etc/fstab
xfs 文件系统:
xfs_info /dev/vg_name/lv_name
xfs_growfs /dev/vg_name/lv_name
ext 文件系统:
resize2fs /dev/vg_name/lv_name
4、查看扩容结果
df -Th
xfs无法收缩,ext4可以,不建议做缩容操作,有数据丢失风险,不记录
1、卸载挂载点 (注意清理/etc/fstab 以及其他挂载配置,避免系统重启失败)
umount /test_lv
2、删除逻辑卷 (谨慎操作)
lvremove /dev/vg_name/lv_name
3、删除卷组 (使用卷组名,谨慎操作,删除前请确认是否有其他卷组在使用!!!)
vgremove storage
4、删除物理卷(谨慎操作)
pvremove /dev/sdb
1、有次硬盘迁移后,系统识别不到文件系统,进入救援模式了
1)查看逻辑卷的情况
ls /dev/mapper
2)发现仅有control 文件,所有的逻辑卷都丢失了
3)尝试激活逻辑卷 如果是单用户,不用敲lvm
lvm vgscan 扫描本机的卷组
lvm vgchange -ay 卷组名 激活卷组下的逻辑卷
ls /dev/mapper 此时可以看到逻辑卷恢复情况
4)尝试修复逻辑卷 要先确认文件系统是xfs 注意:swap 不是 xfs
xfs_repair -v -L /dev/mapper/卷组路径
-L 是强制修复,说是可能会清理log和元数据,目前测试数据没丢,强制日志清零
5)如果不确定就都修复一下,小分区10秒左右,如果无文件损坏的情况下
6)重启,正常进入系统
2、有次测试卷组迁移,然后还是重名卷组
vgs -v 查看卷组详情,每个卷组都有唯一的UUID
vgrename nOcFSI-6mnX-5fcE-uhjD-Rgh3-SB63-vYOdEc new_vg_name
刚特地测试了vg重命名,很快,貌似没啥影响
3、重装系统VG数据是否会丢失
主要由VG的完整性决定的,VG的PV如果有缺失,即使PV没有数据,也无法保持VG可用
我测试过,系统盘和数据盘完全隔离的情况下,数据盘VG在系统重装或者替换一个版本,VG是完整的,lvs 能看到之前建好的卷组
常用文件系统
mount -t cifs -o username=win-username,password=win-pasword,uid=linux-username,gid=linux-group //win-ip/path /mount_dir_path
不常用文件系统
/etc/filesystems:系统指定的测试挂载文件系统类型的优先级
/proc/filesystems:Linux 系统已经加载的文件系统类型
/lib/modules/$(uname -r)/kernel/fs/ 文件系统驱动
以下内容,是鸟哥的Linux私房菜笔记
EXT 文件系统特性:
FAT 系统每个 block 号码都记录在前一个 block 当中,只能链式的读取,需要碎片整理。
索引式文件系统(indexed allocation) ,inode 记录多个块,可以同时读取
ext2 格式化:Boot Sector + Block group
Block group:
目录:
文件:
文件系统大小与磁盘读取效能:
EXT 意外断电:
缺点:格式化慢,修复速度慢
xfs 就是被开发来用于高容量磁盘以及高性能文件系统之用,日志式文件系统
组成:
一些命令:
fdisk MBR分区
gdisk GPT分区
lsblk
blkid
parted
mount
列出当前系统所有的磁盘信息[或者指定的磁盘信息] fdisk -l [/dev/sda]
- # fdisk -l /dev/sda
- Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk label type: dos
- Disk identifier: 0x000dfd0f
-
- Device Boot Start End Blocks Id System
- /dev/sda1 2048 4095 1024 83 Linux
- /dev/sda2 * 4096 1052671 524288 83 Linux
- /dev/sda3 1052672 209715199 104331264 8e Linux LVM
-
- # fdisk /dev/sda
- Welcome to fdisk (util-linux 2.23.2).
-
- Changes will remain in memory only, until you decide to write them.
- Be careful before using the write command.
-
- Command (m for help): n
- Partition type:
- p primary (3 primary, 0 extended, 1 free)
- e extended

磁盘分区管理 fdisk /dev/sda
注意:
1)分区完必须同步分区信息,否则下一次分区将失败 partprobe
2)注意只能建4个主分区,或者3个以内主分区加1个扩展分区(最后一个)加n个逻辑分区
3)扩展分区不能初始化,逻辑分区号将从5号开始
4)如果需要了解分区,请移步系统开机流程分区类型
适用情况:ECS主机 vda 磁盘扩容后,vda分区的末尾分区
扩容步骤:
适用情况:虚拟硬盘扩容后,PV扩容,VG扩容
扩容步骤:pvresize /dev/vdb
适用情况:可以在不改变原有分区配额的情况下调整分区使用使用,比如建一个swap
普通文件系统制作步骤:
- # 创建一个5G的大文件 注意大文件文件系统容量
- dd if=/dev/zero of=/srv/loopdev bs=1G count=5
-
- # 强制格式化
- mkfs.xfs -f /srv/loopdev
-
- # 查看UUID
- blkid /srv/loopdev
-
- # 挂载 建议用文件名来挂载,不要用UUID
- mount -o loop /srv/loopdev /mnt
-
- # 查看挂载
- /srv/loopdev xfs 5.0G 33M 5.0G 1% /mnt
适用情况:如果系统资源紧张,可以配置swap,像Oracle就需要swap 才能完成安装
制作步骤:
- # 方式一
- # 分区格式化 (这个分区system ID得是swap,如果是大文件,直接格式化就行,注意被格式化错分区了)
- mkswap /dev/vda6
-
- # 启用swap分区(如果原来有,就会叠加上去)
- swapon /dev/vda6
-
- # 方式二
- # 文件格式化
- dd if=/dev/zero of=/tmp/swap bs=1G count=5
- mkswap /tmp/swap
- chmod 0600 /tmp/swap
- swapon /tmp/swap
-
- # 后续步骤相同
- # 查看swap
- free -h
- swapon -s
-
- # 写入fstab 或者rc.local
- /tmp/swap swap swap defaults 0 0
-
- # 注意编辑/etc/fstab 必须 mount -a 测试,避免重启系统后因为挂载失败进入救援模式
- mount -a
-
- # 异常处理
- swapon: /swapfile: insecure permissions 0644, 0600 suggested.
- swapoff -a
- chmod 0600 /swapfile
- swapon /swapfile

1、创建挂载目录(挂载点,挂载后原有数据不会丢,卸载后可访问)
mkdir /data
2、磁盘格式化
mkfs.xfs /dev/sdb
3、挂载
filesystem 的挂载是记录到 /etc/mtab 与 /proc/mounts /proc/self/mounts 中的,前面两个是软连接
- # 临时挂载
- mount /dev/sdb /data
-
- # 永久挂载 (本地盘)
- vi /etc/fstab (按照文件内容,照抄就是)
- mount -a (必须步骤,检查能否正常挂载,避免系统启动失败)
-
- # 永久挂载 (网络盘)
- 方式一:将挂载命令写入到rc.local 文件,在系统启动后挂载
- 方式二:正常挂载,需要设置defaults,_netdev参数,系统启动后挂载
-
- # 重新挂载
- mount -o remount,rw,auto /tmp
-
- # 将 /var 这个目录暂时挂载到 /data/var 底下,可以通过/data/var 访问/var
- mount --bind /var /data/var
-
- # USB 磁盘 挂载
- # 不能是 NTFS 的文件系统,预设的 CentOS 7 并没有支持 NTFS 文件系统格式
- # blkid 找到UUID
- /dev/sda1: UUID="ABCD-6D6B" TYPE="vfat"
- # 创建挂载点
- mkdir /data/usb
- # 挂载
- mount -o codepage=950,iocharset=utf8 UUID="ABCD-6D6B" /data/usb
- # 如果带有中文文件名的数据,那么可以在挂载时指定一下挂载文件系统所使用的文本编码

注意:
1)改动了/etc/fstab 必须使用mount -a 测试文件系统可用性,否则系统重启会出问题
2)/etc/rc.local 如果直接执行,会将里面的命令执行一遍,可能会出现网络盘重复挂载的情况,要谨慎
3)如果出现网络盘重复挂载,cifs实测可以umoun卸载最新的挂载不影响上次的挂载
df 查看磁盘使用情况
常用命令
df -Th 查看磁盘使用情况 从super block 获取很快
du 查看目录使用情况
常用命令
du -sh * 查看目录使用情况,用于分析目录容量大小 直接到文件系统内去搜寻所有的文件数据 较慢
注意:如果有挂载网络盘且状态不正常的时候,df 执行可能会没有响应,需要恢复网络盘
强制卸载网络盘:
umount -f /data/nfs 强制卸载依旧busy
fuser -m -v /data/nfs 查看哪个进程在使用nfs
确定进程不影响应用的情况下,kill 进程再卸载
六、文件系统修复(简单版)
适用情况: 有碰到过重启后,报错说某个分区文件系统INode文件块损坏的情况
处理办法:
测试环境,就是尝试修复
fsck -f /dev/xxxxx
然后一直按y,直到以下提示出现,重启应该就能恢复
FILE SYSTEM WAS MODIFIED
REBOOT LINUX
适用情况:系统意外断电,逻辑卷损坏,尝试修复逻辑卷 要先确认文件系统是xfs
处理办法:
-L 是强制修复,说是可能会清理log和元数据,目前测试数据没丢,强制日志清零
xfs_repair -v -L /dev/mapper/卷组路径
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。