目录

一、RAID

1.RAID好处:

可以不用到机房现场,就能够坐在办公室里面远程连接并控制服务器的配件。

  1. 更多的容量

  2. 得到更多的冗余(数据更安全)

  3. 得到更高的性能

    数据还是要备份

2.RAID的运行方式:

  1. 软RAID(了解)
  2. 硬RAID(看视频,网址 https://www.bilibili.com/video/av46656120?from=search&seid=8213679239129642497)

3.RAID的级别:

  1. RAID0 :条带卷,容量最大。单块容量*N,读写最快。没有容错机制,坏了一块就全都不能用了。 主要提供访问速度,不存储数据。理论是2块磁盘

    具有最高的存储性能(磁盘容量不浪费,读写很快),这些磁盘的总和

要制作RAID 0至少要1块物理磁盘,不做raid不能安装系统

**安全:任何一块硬盘损坏,所有的数据无法使用

  1. RAID1 : 镜像卷,50%容量,读一般,写特慢,相当于写两分数据,有50%容错机制。只能是两块

    镜像:损失50%的数据容量。例如2块1T的盘,做完RAID 1后容量为1T**

raid只能2块硬盘

Mirror不能提高存储性能。理论上写性能和单盘相差不大

  1. RAID5 : 检验卷 ,总容量的三分之二,读写稍快。容错机制,可以损坏三分之一,最低三块

    需要至少3块,损失一块硬盘**

安全:最多可以损坏一块硬盘

**性能:写入速度不快,读取Ok

  1. RAID10 :10 ,损失一半,读写快。容错50%,只能四块。

    最少4块硬盘,增加硬盘必须是2的倍数;所有硬盘容量的一半**

安全:最多损坏一半硬盘

**性能:写入和读取都很快

总结:

性能从高到低:RAID0 -----> RAID10----->RAID4----->RAIID1

安全从高到低: RAID1------>RAID10------>RAID5------>RAID0

价格从高到低: raid10------->RAID1------->RAID5------->RAID0

注意:RAID硬盘失效处理--热备和热插拔

二、RAID实战

软RAID

mdadm	安装
[root@web ~]# yum install -y mdadm mdadm命令常见选项解释:
-A #激活磁盘阵列
-C #建立一个新阵列
-D #打印阵列设备的信息
-G #改变阵列大小或形态
-S #停止阵列
-r #移除设备
-l #设定磁盘阵列的级别
-n #指定阵列磁盘的数量
-x #指定阵列中备用盘的数量
-f #将设备状态定为故障
-a #添加设备到阵列
-v #显示详细信息软RAID:通过操作系统实现

1.RAID0

创建RAID0实验环境:

Raid种类 磁盘 热备盘

Raid0 sdb、sdc

创建磁盘阵列RAID0

[root@web ~]# mdadm  -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

查看RAID阵列

[root@web ~]# mdadm  -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Jul 18 18:30:52 2019
Raid Level : raid0
Array Size : 41908224 (39.97 GiB 42.91 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent Update Time : Thu Jul 18 18:30:52 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0 Chunk Size : 512K Consistency Policy : none Name : web:0 (local to host web)
UUID : be7fa2cc:94484da2:cb10af97:caa583f0
Events : 0 Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc

把信息写入到配置文件中

[root@web ~]# mdadm  -Ds  >/etc/mdadm.conf

挂载使用

[root@web ~]# mdadm  -Ds  >/etc/mdadm.conf
[root@web ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@web ~]# mkdir /raid0
[root@web ~]# mount /dev/md0 /raid0
[root@web ~]# df -h |grep /dev/md0
/dev/md0 40G 33M 40G 1% /raid0
[root@web ~]# cp /etc/services /raid0/

2.RAID1

创建RAID0实验环境:

Raid种类 磁盘 热备盘

Raid1 sdd、sde sdf

1)创建RAID1,并添加1个热备盘

2)模拟磁盘故障,看备用盘是否会自动顶替故障盘

3)从raid1中移出故障盘

创建磁盘阵列

[root@web ~]# mdadm  -C -v  /dev/md1 -l 1 -n 2 -x 1  /dev/sd[e,d,f]
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 20954112K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

查看RAID信息

[root@web ~]# mdadm  -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Thu Jul 18 18:41:45 2019
Raid Level : raid1
Array Size : 20954112 (19.98 GiB 21.46 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent Update Time : Thu Jul 18 18:44:23 2019
State : clean, resyncing
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1 Consistency Policy : resync Resync Status : 44% complete Name : web:1 (local to host web)
UUID : 9d654e3a:12cf017f:eb091033:852f1ea6
Events : 7 Number Major Minor RaidDevice State
0 8 48 0 active sync /dev/sdd
1 8 64 1 active sync /dev/sde 2 8 80 - spare /dev/sdf

追加到配置文件中

[root@web ~]# mdadm  -Ds >/etc/mdadm.conf

挂载使用

[root@web ~]# mkfs.xfs   /dev/md1
meta-data=/dev/md1 isize=512 agcount=4, agsize=1309632 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5238528, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@web ~]# mkdir /raid1
[root@web ~]# mount /dev/md1 /raid1
[root@web ~]# df -h |grep /dev/md1
/dev/md1 20G 33M 20G 1% /raid1
[root@web ~]# cp /etc/services /raid1

指定一块盘故障

[root@web ~]# mdadm  -f /dev/md1 /dev/

检查数据有没有丢失

[root@web ~]# ll /raid1
total 656
-rw-r--r--. 1 root root 670293 Jul 18 18:47 services

移除损坏的盘

[root@web ~]# mdadm  -r  /dev/md1 /dev/sde
mdadm: hot removed /dev/sde from /dev/md1

添加一块盘

[root@web ~]# mdadm  -a  /dev/md1 /dev/sde

3.RAID5

创建RAID5实验环境:

Raid种类 磁盘 热备盘

Raid5 sdg、sdh、sdi sdj

1)使用三块盘创建RAID5, 使用-x添加1个热备盘

2)模拟损坏一块磁盘,然后备用盘自动顶上,只能顶一次

3)在模拟损坏,检测数据是否丢失,如果没有再次模拟损坏.

创建阵列

[root@web ~]# mdadm  -C -v /dev/md5  -l 5 -n 3 -x 1  /dev/sd[g,h,i,j]
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

查看RAID信息

[root@web ~]# mdadm  -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Thu Jul 18 18:54:45 2019
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent Update Time : Thu Jul 18 18:56:43 2019
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 0
Spare Devices : 2 Layout : left-symmetric
Chunk Size : 512K Consistency Policy : resync Rebuild Status : 36% complete Name : web:5 (local to host web)
UUID : 42d49a3d:f3dfcbb4:1c44c59c:90b62a9f
Events : 6 Number Major Minor RaidDevice State
0 8 96 0 active sync /dev/sdg
1 8 112 1 active sync /dev/sdh
4 8 128 2 spare rebuilding /dev/sdi 3 8 144 - spare /dev/sdj

将配置信息写入到配置文件中

[root@web ~]# mdadm  -Ds  >/etc/mdadm.conf

挂载使用

[root@web ~]# mkfs.xfs   /dev/md5
meta-data=/dev/md5 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@web ~]# mkdir /raid5
[root@web ~]# mount /dev/md5 /raid5
[root@web ~]# cp /etc/services /raid5
[root@web ~]# ll /raid5
total 656
-rw-r--r--. 1 root root 670293 Jul 18 18:58 services

模拟一块盘损坏

[root@web ~]# mdadm  -f /dev/md5  /dev/sdh

移除损坏的盘

[root@web ~]# mdadm  -r  /dev/md5  /dev/sdh

添加一块盘

[root@web ~]# mdadm  -a  /dev/md5 /dev/sdh

4.RAID10

创建RAID10实验环境:

Raid种类 磁盘 热备盘

Raid10 分区:sdk1,sdk2, sdk3.sdk4

分区

[root@web ~]# gdisk  /dev/sdk
[root@web ~]# lsblk /dev/sdk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdk 8:160 0 20G 0 disk
├─sdk1 8:161 0 5G 0 part
├─sdk2 8:162 0 5G 0 part
├─sdk3 8:163 0 5G 0 part
└─sdk4 8:164 0 5G 0 part

创建磁盘阵列

[root@web ~]# mdadm  -C -v /dev/md10 -l 10 -n 4 /dev/sdk[1-4]

查看RAID信息

[root@web ~]# mdadm  -D /dev/md10

写入到配置文件中

[root@web ~]# mdadm  -Ds >/etc/mdadm.conf

挂载使用

[root@web ~]# mkfs.xfs   /dev/md10
meta-data=/dev/md10 isize=512 agcount=16, agsize=163712 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2618112, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@web ~]# mkdir /raid10
[root@web ~]# mount /dev/md10 /raid10
[root@web ~]# cp /etc/services /raid10
[root@web ~]# ll /raid10
total 656
-rw-r--r--. 1 root root 670293 Jul 18 19:12 services

模拟故障

[root@web ~]# mdadm  -f  /dev/md10  /dev/sdk3

移除损坏的盘

[root@web ~]# mdadm  -r /dev/md10  /dev/sdk2
mdadm: hot removed /dev/sdk2 from /dev/md10
[root@web ~]# mdadm -r /dev/md10 /dev/sdk3
mdadm: hot removed /dev/sdk3 from /dev/md10

添加一块硬盘

[root@web ~]# mdadm  -a  /dev/md10  /dev/sdk[2,3]
mdadm: added /dev/sdk2
mdadm: added /dev/sdk3
[root@web ~]# mdadm -D /dev/md10

三、LVM介绍

1. 什么是LVM?

    LVM是Logical Volume Manager (逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。又译为逻辑卷宗管理器、逻辑扇区管理器、逻辑磁盘管理器,是Linux核心所提供的逻辑卷管理(Logical volume management)功能。它在硬盘的分区之上,又创建一个逻辑层,以方便系统管理硬盘分区系统。
最先由IBM开发,在AIX系统上实现,OS/2 操作系统与 HP-UX也支持这个功能。在1998年,Heinz Mauelshagen 根据在 HP-UX 上的逻辑卷管理器,写作出第一个 Linux 版本的逻辑卷管理器。

2. LVM解决了什么问题

    当我们刚开始安装Linux操作系统是遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。
普通的磁盘分区好之后就无法改变其大小,而遇到出现某个分区空间耗尽时,解决的方法可以是符号链接,或者调整分区大小的工具,但这只是暂时解决方法,没有从根本上解决问题。
随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户可以在无需停机的请款下可以方便的调整各个分区大小。

3.LVM的名词

1.物理卷(PV):

(physical volume),把常规的磁盘设备通过pvcreate命令对其进行初始化,形成了物理卷。其实就是硬盘或分区。(面粉)

2.卷组(VG):

(volume group),把多个物理卷组成一个逻辑的整体,这样卷组的大小就是多个硬盘之和。或者理解就是由一个或多个PV组成的整体。(面团)

3.逻辑卷(LV):

(logical volume),从卷组中划分需要的空间大小出来。用户仅需对其格式化然后即可挂载使用。从VG中切割出的空间用于创建文件系统。(切成馒头)

4.基本单元(PE):

(physical extend),分配的逻辑大小的最小单元,默认为4MB的基本块。(假设分配100MB逻辑空间,则需要创建25个PE)

四、LVM实战

1. 创建物理卷,加入卷组

1) 创建物理卷,将普通磁盘转换为物理卷。

2)创建卷组,将物理卷加入到卷组中。

3)在卷组中划分逻辑卷,然后挂载使用。

 #1.准备物理磁盘,如果是虚拟机需要关闭添加磁盘,以便更好的实验

[root@qiudao ~]# lsblk
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk #2.下载安装软件包
[root@web ~]# yum install lvm2 -y #3.将/dev/sdb创建为物理卷 [root@web ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created. #4.创建卷组,并将物理卷加入进去卷组--->名字lvm_test [root@web ~]# vgcreate lvm_test /dev/sdb #5.检查卷组
[root@web ~]# vgs #6.检查当前逻辑卷VG中PV使用情况
[root@web ~]# pvs
创建一个逻辑卷,分配名称,以及大小,指定卷组
选项:
-L #逻辑卷大小
-n #逻辑卷名字 #1.创建一个逻辑卷
[root@web ~]# lvcreate -L 1G -n lv1 lvm_test #2.将lvm_test分配給lv1
[root@qiudao ~]# lvcreate -L 100M -n lv1 lvm_test #3.检查
[root@web ~]# vgs
VG #PV #LV #SN Attr VSize VFree
lvm_test 1 1 0 wz--n- <20.00g <19.00g #4.检查当前逻辑卷VG中PV使用情况
[root@web ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm_test lvm2 a-- <20.00g <19.00g
[root@web ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 lvm_test -wi-a----- 1.00g
[root@web ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 47.8G 0 part /
sdb 8:16 0 20G 0 disk
└─lvm_test-lv1 253:0 0 1G 0 lvm #5.格式化逻辑卷 [root@web ~]# mkfs.xfs /dev/lvm_test/lv1
meta-data=/dev/lvm_test/lv1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0 #6.挂载使用
[root@web ~]# mkdir /lv1
[root@web ~]# mount /dev/lvm_test/lv1 /lv1
[root@web ~]# df -h |grep lv1
/dev/mapper/lvm_test-lv1 1014M 33M 982M 4% /lv1
[root@web ~]# cp /etc/services /lv1
[root@web ~]# ll /lv1
total 656
-rw-r--r--. 1 root root 670293 Jul 18 19:59 services

2.卷组管理,如何扩展卷组大小,如何删除卷组

1. 如何扩大VG卷组

#1.将sdc指定为物理卷
[root@web ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created #2. 添加到卷组中,使用vgextend扩展卷组
[root@web ~]# vgextend lvm_test /dev/sdc
Volume group "lvm_test" successfully extended 3. 再次检查,发现卷组已经扩大
[root@web ~]# vgs
VG #PV #LV #SN Attr VSize VFree
lvm_test 2 1 0 wz--n- 39.99g 38.99g
[root@web ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm_test lvm2 a-- <20.00g <19.00g
/dev/sdc lvm_test lvm2 a-- <20.00g <20.00g

2. 假设想移除/dev/sdb磁盘,建议先将sdb磁盘数据先迁移到sdc磁盘,然后在移除。(同一卷组的磁盘才可以进行在线迁移),(注意卷组的名称---)

#1.  将逻辑卷移动到sdc上面

#pvmove在线数据迁移,将sdb的数据迁移至sdc
[root@web ~]# pvmove /dev/sdb /dev/sdc
/dev/sdb: Moved: 1.95%
/dev/sdb: Moved: 100.00% #2.检查是否将sdb数据迁移至sdc
[root@web ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm_test lvm2 a-- <20.00g <20.00g
/dev/sdc lvm_test lvm2 a-- <20.00g <19.00g #4.缩减卷组大小
[root@web ~]# vgreduce lvm_test /dev/sdb
Removed "/dev/sdb" from volume group "lvm_test" #5. 检查
[root@web ~]# vgs
VG #PV #LV #SN Attr VSize VFree
lvm_test 1 1 0 wz--n- <20.00g <19.00g
[root@web ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 20.00g 20.00g
/dev/sdc lvm_test lvm2 a-- <20.00g <19.00g

3.逻辑卷管理,动态的调整逻辑卷大小

方法1:

1. 逻辑卷的扩展,是取决于vg卷中是否还有剩余的容量,注意扩展逻辑卷不能超过卷组VG的总大小**

[root@qiudao ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg 1 1 0 wz--n- 1020.00m 920.00m #1.扩展lv逻辑卷,增加800M分配给逻辑卷 {注意: 800M +800M 不一样}
[root@qiudao ~]# lvextend -L +800M /dev/lvm_test/lv1 #或者可以选择分配磁盘池中多少百分比给逻辑卷
[root@qiudao ~]# lvextend -l +50%FREE /dev/lvm_test/lv1 #2.扩展逻辑卷后需要更新fs文件系统
[root@qiudao ~]# xfs_growfs /dev/lvm_testvg/lv1 #xfs文件格式扩容

2. 缩小逻辑卷,不要去操作,因为线上在使用的磁盘真的敢操作吗?

3. 删除逻辑卷,如果不想使用逻辑卷可以选择删除。

[root@qiudao ~]# umount /dev/lvm_test/lv1

[root@qiudao ~]# lvremove /dev/lvm_test/lv1
Do you really want to remove active logical volume lvm_test/lv1? [y/n]: y
Logical volume "lv1" successfully removed

方法2:

按照百分比增加大小

[root@web ~]# lvextend  -l 20%FREE  /dev/lvm_test/lv1
Size of logical volume lvm_test/lv1 changed from 2.00 GiB (512 extents) to 3.60 GiB (922 extents).
Logical volume lvm_test/lv1 successfully resized. #更新文件系统
[root@web ~]# xfs_growfs /dev/lvm_test/lv1
meta-data=/dev/mapper/lvm_test-lv1 isize=512 agcount=8, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 524288 to 944128

注意:缩减逻辑卷大小 , 企业不会去缩减,一般会直接删除

4.怎样删除?

#1.首先要卸载
[root@web ~]# umount /lv1
[root@web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 48G 2.9G 45G 7% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.7M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0 #2.移除 [root@web ~]# lvremove /dev/lvm_test/lv1
Do you really want to remove active logical volume lvm_test/lv1? [y/n]: y #是否确认
Logical volume "lv1" successfully removed #3.检查 [root@web ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 47.8G 0 part /
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk

注意:LVM如果有一个磁盘损坏,整个lvm都坏了, lvm只有动态扩展作用,底层用RAID + 上层LVM = 既有冗余又有动态扩展

五、磁盘常见故障

1.block故障(数据满了)

环境准备

先创建一个1G分区,并挂在使用

创建大文件,模拟磁盘空间满

[root@web ~]# dd if=/dev/zero of=/test/test.log  bs=100M count=11
dd: error writing ‘/test/test.log’: No space left on device
10+0 records in
9+0 records out
1026621440 bytes (1.0 GB) copied, 18.7358 s, 54.8 MB/s
[root@web ~]# df -h |grep test
/dev/sde1 1014M 1012M 2.8M 100% /test

报错No space left on device

 [root@web ~]# cp  services  /test/
cp: error writing ‘/test/services’: No space left on device
cp: failed to extend ‘/test/services’: No space left on device

检查磁盘

 [root@web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 48G 2.9G 45G 7% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.7M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/sde1 1014M 1014M 32K 100% /test

解决思路:

查找大文件,依次往下查找,直到找到大文件为止

[root@web ~]# du  -sh  /test/*

找到之后,先确认是否可以删除。

rm -f

删除之后,磁盘还是满的,先确认是否有硬链接。

2.inode故障(小文件太多)

#环境准备,创建一个30M的分区
[root@qiudao ~]# df -h |grep sdb1
dev/sdb1 27M 1.6M 26M 6% /test
[root@qiudao ~]# lsblk |grep sdb1
└─sdb1 8:17 0 30M 0 part /test #批量创建大量的小文件 [root@qiudao ~]# touch /test/data/file/{1..15360}.txt #再去到该分区中创建新的文件就会报错。 [root@qiudao ~]# touch /test/test.txt
touch: cannot touch ‘/test/test.txt’: No space left on device #解决思路:查看磁盘分区使用情况,发现磁盘空间是正常的,再次查看inode,发现inode满了。 [root@qiudao ~]# df -h |grep sdb1
/dev/sdb1 27M 9.7M 17M 37% /test
[root@qiudao ~]# df -i |grep sdb1
/dev/sdb1 15424 15424 0 100% /test #怎样找出大量的小文件呢?首先要找出大目录(小文件过多,会导致目录变大。) [root@qiudao ~]# find /test -type d -size +300k |xargs ls -lhd #找到大量小文件之后,首先要确认好之后再删除,不要直接的去删除
先确认是否可以删除。千万不要直接查看目录内容,否则会被刷屏 [root@qiudao ~]# ll /test/data |wc -l [root@qiudao ~]# find /test/data/file/ -type f -delete

RAD介绍及实战,LVM介绍及实战,磁盘常见故障的更多相关文章

  1. Kubeflow实战: 入门介绍与部署实践

    更多内容关注专辑: 机器学习实战 1 介绍 Kubeflow是在k8s平台之上针对机器学习的开发.训练.优化.部署.管理的工具集合,内部集成的方式融合机器学习中的很多领域的开源项目,比如Jupyter ...

  2. linux中LVM介绍及实验过程

    LVM LVM这个词不仅一次出现过,在安装Centos时,磁盘分区时,默认分区就是使用LVM方式分区:再一个就是在OpenStack部署时候用到LVM作为后端存储.对LVM的理解还是不太清晰,查询资料 ...

  3. 项目实战——企业级Zabbix监控实战(一)

    项目实战--企业级Zabbix监控实战 实验一:Zabbix监控的搭建 1.实验准备 centos系统服务器3台. 一台作为监控服务器, 两台台作为被监控节点, 配置好yum源. 防火墙关闭. 各节点 ...

  4. Spark RDD/Core 编程 API入门系列 之rdd实战(rdd基本操作实战及transformation和action流程图)(源码)(三)

    本博文的主要内容是: 1.rdd基本操作实战 2.transformation和action流程图 3.典型的transformation和action RDD有3种操作: 1.  Trandform ...

  5. Hadoop介绍-3.HDFS介绍和YARN原理介绍

    一. HDFS介绍: Hadoop2介绍 HDFS概述 HDFS读写流程   1.  Hadoop2介绍 Hadoop是Apache软件基金会旗下的一个分布式系统基础架构.Hadoop2的框架最核心的 ...

  6. RAID&LVM有关磁盘的故障

    目录 RAID&LVM有关磁盘的故障 RAID 注意:RAID硬盘失效处理--热备和热拔插 RAID实战 LVM介绍 磁盘故障 RAID&LVM有关磁盘的故障 RAID 好处:1.更多 ...

  7. 如何安全的从LVM中移除磁盘

        学习如何安全的从LVM中移除磁盘,当磁盘卷中有磁盘出现问题或是想把磁盘卷中的磁盘重新使用时就显得十分有用.本教程将重点关注以下问题: 如何安全的从LVM中移除磁盘 如何联机从VG中移除磁盘 如 ...

  8. 《图解Spark:核心技术与案例实战》介绍及书附资源

    本书中所使用到的测试数据.代码和安装包放在百度盘提供 下载 ,地址为https://pan.baidu.com/s/1o8ydtKA 密码:imaa 另外在百度盘提供本书附录  下载 ,地址为http ...

  9. .NET Core IdentityServer4实战-开篇介绍与规划

    一.开篇寄语 由于假期的无聊,我决定了一个非常有挑战性的活动,也就是在年假给大家带来一个基于OAuth 2.0的身份授权框架,它就是 IdentityServer4 ,如果没有意外的话,一定可以顺利的 ...

随机推荐

  1. mysql授予权限

    grant show databases on *.* to 'asg'@'%'; grant select on *.* to 'asg'@'%'; grant show view on *.* t ...

  2. Jenkins ant打包部署

    选择项目 自由风格

  3. ROS环境下使用Wireshark抓包(网桥)

    在ROS的管理工具>数据包探测设置里>常规接口选为LAN,数据流>数据流启用>服务器:Wireshark电脑的IP,筛选> IP选要抓包的IP地址 然后在Wireshar ...

  4. Ubuntu查找软件命令

    查找软件: apt-cache search <your search item>

  5. Halo(十二)

    @RequestBody @ResponseBody @RequestBody 1) 该注解用于读取 Request 请求的 body 部分数据,使用系统默认配置的 HttpMessageConver ...

  6. netty-Selector

    上图中加入一句: socketChannel.configureBlocking(false);//设置为非阻塞的 keyIterator.clear(); 每连接一个SocketChannel 都会 ...

  7. MySQL执行计划示例

    以上示例来自尚硅谷!

  8. ES6转ES5环境搭配

    1.初始化项目 在项目根目录创建 package.json 文件 npm init //或者 npm init -y 2.安装babel-cli脚手架 npm install babel-cli -- ...

  9. 【Linux】grep显示匹配行的上下几行的用法

    打印匹配行的前后5行 grep -5 ‘something’ file 打印匹配行的前后5行 grep -C 5 ‘something’ file 打印匹配行的后5行 grep -A 5 ‘somet ...

  10. 2018-2019-2 20175126谢文航 实验三《敏捷开发与XP实践》实验报告

    一.实验报告封面 课程:Java程序设计 班级:1751 班 姓名:谢文航 学号:20175126 指导教师:娄嘉鹏 实验日期:2019年5月2日 实验时间:--- 实验序号:实验三 实验名称:敏捷开 ...