RAID 独立磁盘冗余阵列(Redundant Array of Independent Disks)
高效的数据组织和条带化的并行访问
1.1 RAID 数据组织的形式条带:硬盘中单个或多个连续的扇区,是一块硬盘进行一次数据读写的最小单元
分条:同一个硬盘的阵列中,有多个硬盘驱动器上相同位置编号的条带
raid分为软件raid和硬件raid ,硬件raid需要raid卡
1.2 RAID数据保护方式1、在另外一块冗余的硬盘上保存副本
2、奇偶校验算法
1.3 RAID常用级别Raid 0 用在UI数据安全要求不高,但是要求廉价,高利用率的情况下
Raid 1 主要通过二次读写,实现镜像磁盘,在数据安全很重要的场所使用
Raid 3 比Raid 0多了奇偶检验,多一块磁盘,但是数据冗余性好
Raid 5 *每个磁盘都能存检验,有几个盘就你能产生几个读写盘,比Raid 3减少一个检验盘
Raid 6 Raid 6 P+Q 、RAID6 DP 两种校验算法,至少需要N+2个磁盘来构成阵列,一般用在数据可靠性极高,可用性极高的场所
Raid 10 将镜像Raid和条带进行组合,先进行Raid 1镜像,然后再做Raid 0
Raid 50 使用了Raid 5 和Raid 0来混合使用,第一级Raid 5,第二级是raid 0
RAID 的两种备份方法:热备和重构
1.4 RAID 的状态1、创建Raid
2、创建成功,Raid正常工作
3、发生故障,Raid降级等待
4、假设重构成功,则回到2状态
5、如果失败则raid直接失效
1.6 RAID实验 1.6.1 RAID 10实验通过linux服务器添加4块新硬盘,完成Raid10的部署
#查看目前系统的硬盘情况 [root@wentan ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 6.6G 0 rom /run/media/root/RHEL-8-0-0-baseOS-x86_64 nvme0n1 259:0 0 25G 0 disk ├─nvme0n1p1 259:1 0 1G 0 part /boot └─nvme0n1p2 259:2 0 24G 0 part ├─rhel-root 253:0 0 22G 0 lvm / └─rhel-swap 253:1 0 2G 0 lvm [SWAP] nvme0n2 259:3 0 20G 0 disk nvme0n3 259:4 0 20G 0 disk nvme0n4 259:5 0 20G 0 disk nvme0n5 259:6 0 20G 0 disk
mdadm 命令的常用参数及作用
| 参数 | 作用 |
|---|---|
| -a | 检测设备名称 |
| -n | 指定设备数量 |
| -l | 指定RAID级别 |
| -C | 创建 |
| -v | 显示过程 |
| -f | 模拟设备损坏 |
| -r | 移除设备 |
| -Q | 查看摘要信息 |
| -D | 查看详细信息 |
| -S | 停止RAID磁盘阵列 |
[root@wentan ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4 /dev/nvme0n5
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
#查看四块硬盘Raid等级
[root@wentan ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 6.6G 0 rom /run/media/root/RHEL-8-0-0-baseOS-x86_64
nvme0n1 259:0 0 25G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 24G 0 part
├─rhel-root 253:0 0 22G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:3 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10
nvme0n3 259:4 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10
nvme0n4 259:5 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10
nvme0n5 259:6 0 20G 0 disk
└─md0 9:0 0 40G 0 raid10
#把/dev/md0格式化成ext4文件系统
[root@wentan ~]# mkfs.ext4 /dev/md0
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: e1feb5ef-c7f1-4189-a976-d9661edcbfb9
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
#创建挂载点,把硬盘设备挂载到挂载点
[root@wentan ~]# mkdir /RAID
[root@wentan ~]# mount /dev/md0 /RAID
[root@wentan ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 10M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/rhel-root 22G 4.2G 18G 19% /
/dev/nvme0n1p1 1014M 169M 846M 17% /boot
tmpfs 376M 16K 376M 1% /run/user/42
tmpfs 376M 2.3M 374M 1% /run/user/0
/dev/sr0 6.7G 6.7G 0 100% /run/media/root/RHEL-8-0-0-baseOS-x86_64
/dev/md0 40G 49M 38G 1% /RAID
#通过—D命令查看详细信息
[root@wentan RAID]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Jan 16 11:41:10 2022
Raid Level : raid10
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sun Jan 16 11:47:08 2022
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : wentan:0 (local to host wentan)
UUID : 096170c1:5b9e7606:f4e8c353:cd0c020e
Events : 19
Number Major Minor RaidDevice State
0 259 3 0 active sync set-A /dev/nvme0n2
1 259 4 1 active sync set-B /dev/nvme0n3
2 259 5 2 active sync set-A /dev/nvme0n4
3 259 6 3 active sync set-B /dev/nvme0n5
当确认无误后,我们需要对系统做永久挂载,永久挂载配置文件 /etc/fstab
[root@wentan RAID]# vim /etc/fstab /dev/md0 /RAID ext4 defaults 0 0 #最后一行加入以上信息,完成后务必mount -a 保存配置文件没有问题,如果报错 必须回去修改配置文件 [root@wentan RAID]# mount -a1.6.2 RAID 10 损坏磁阵列及修复
在确认有一块物理硬盘设备出现损坏而不能继续正常使用后,应该使用mdadm命令将其移除,然后查看RAID磁盘阵列的状态,可以发现状态已经改变。
#首先我们手动损坏一块硬盘
[root@wentan RAID]# mdadm /dev/md0 -f /dev/nvme0n3
mdadm: set /dev/nvme0n3 faulty in /dev/md0
[root@wentan RAID]# mdadm -D /dev/md0
Number Major Minor RaidDevice State
0 259 3 0 active sync set-A /dev/nvme0n2
- 0 0 1 removed
2 259 5 2 active sync set-A /dev/nvme0n4
3 259 6 3 active sync set-B /dev/nvme0n5
1 259 4 - faulty /dev/nvme0n3
在Raid 10级别的磁盘阵列中,当RAID 1磁盘阵列中存在一个故障盘时并不影响RAID 10磁盘阵列的使用。当购买了新的硬盘设备后再使用mdadm命令来予以替换即可,在此期间我们可以在/RAID目录中正常地创建或删除文件。由于我们是在虚拟机中模拟硬盘,所以先重启系统,然后再把新的硬盘添加到RAID磁盘阵列中。
#取消挂载
[root@wentan ~]# umount /RAID
#添加新的磁盘
[root@wentan ~]# mdadm /dev/md0 -a /dev/nvme0n3
mdadm: added /dev/nvme0n3
Number Major Minor RaidDevice State
0 259 3 0 active sync set-A /dev/nvme0n2
4 259 4 1 spare rebuilding /dev/nvme0n3
2 259 5 2 active sync set-A /dev/nvme0n4
3 259 6 3 active sync set-B /dev/nvme0n5
#此时发现新添加的硬盘正在重构,最后可以 mount -a 把刚刚的挂载挂上去
[root@wentan ~]# mount -a
1.6.3 RAID 50 磁盘阵列+备份盘
为了避免多个实验之间相互发生冲突,我们需要保证每个实验的相对独立性,为此需要大家自行将虚拟机还原到初始状态。
部署RAID 5磁盘阵列时,至少需要用到3块硬盘,还需要再加一块备份硬盘,所以总计需要在虚拟机中模拟4块硬盘设备
现在创建一个RAID 5磁盘阵列+备份盘。在下面的命令中,参数-n 3代表创建这个RAID 5磁盘阵列所需的硬盘数,参数-l 5代表RAID的级别,而参数-x 1则代表有一块备份盘。当查看/dev/md0(即RAID 5磁盘阵列的名称)磁盘阵列的时候就能看到有一块备份盘在等待中了。
[root@wentan ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4 /dev/nvme0n5
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/md0 started.
#查看磁盘状态,有一块备份盘
[root@wentan ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Jan 16 13:50:08 2022
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 : Sun Jan 16 13:51:57 2022
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : wentan:0 (local to host wentan)
UUID : 0d7fd374:a2001c3d:737de6c9:d3baae39
Events : 18
Number Major Minor RaidDevice State
0 259 3 0 active sync /dev/nvme0n2
1 259 4 1 active sync /dev/nvme0n3
4 259 5 2 active sync /dev/nvme0n4
3 259 6 - spare /dev/nvme0n5
#把/dev/md0格式化成ext4文件系统
[root@wentan ~]# mkfs.ext4 /dev/md0
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: 68f42614-5bd2-40d5-88ee-99cd714d3ad0
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
#创建挂载点,把硬盘设备挂载到挂载点
[root@wentan ~]# mkdir /RAID
[root@wentan ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
#挂载
[root@wentan ~]# mount -a
[root@wentan ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md0 40G 49M 38G 1% /RAID
1.6.4 RAID 50 损坏磁盘
#手动损坏一块硬盘 [root@wentan ~]# mdadm /dev/md0 -f /dev/nvme0n3 mdadm: set /dev/nvme0n3 faulty in /dev/md0 [root@wentan ~]# mdadm -D /dev/md0 Number Major Minor RaidDevice State 0 259 3 0 active sync /dev/nvme0n2 3 259 6 1 spare rebuilding /dev/nvme0n5 4 259 5 2 active sync /dev/nvme0n4 1 259 4 - faulty /dev/nvme0n3 #备份硬盘自动顶上 开始重构。二、磁盘管理 2.1 分区
将磁盘划分为多个逻辑上的存储单元,这些单元称之为分区,对不同的分区,执行不同的功能
为了让系统能够识别和管理物理设备上的不同分区,需要在物理设备前加上一些数据用于记录分区的情况,这些数据就是分区表数据,目前分区表有两种主流的格式:
2.2.1MBR分区类型: 主分区、扩展分区、 逻辑分区
限制:最多只有四个主分区,而且硬盘最大是2TB
管理的硬盘大小不能超过2T
有主分区和扩展分区两种,不管是哪种分区,总数不能超过4个分区
扩展分区内部可以逻辑上划分多个区域,但是在分区表中都算在一个分区内
如果作为系统盘,必须要设置一个激活分区,用于存放系统的引导文件
2.2.2 GPT
提供使用全局唯一的GUID来识别磁盘和分区
提供分区表备份功能,主GPT位于磁盘头部,备份GPT位于磁盘尾部
限制:最多128个分区 磁盘最大8ZIB
2.2 分区工具(1)fdisk(适合MBR)
(2)gdisk (适合GPT)
(3)parted (全适合)
2.3 分区实验 2.3.1 实验一 使用parted 来做磁盘分区首先从VMWare加入一块nvme的硬盘到虚拟机上
#首先查看增加的这块硬盘的名称 p[root@wentan ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 6.6G 0 rom /run/media/wentan/RHEL-8-0-0-baseOS-x86_64 nvme0n1 259:0 0 25G 0 disk ├─nvme0n1p1 259:1 0 1G 0 part /boot └─nvme0n1p2 259:2 0 24G 0 part ├─rhel-root 253:0 0 22G 0 lvm / └─rhel-swap 253:1 0 2G 0 lvm [SWAP] nvme0n2 259:3 0 20G 0 disk #通过命令查看,硬盘已经存在 名字叫nvme0n2 #注意磁盘的位置在/dev/目录下 #使用分区工具parted [root@wentan ~]# parted /dev/nvme0n2 GNU Parted 3.2 Using /dev/nvme0n2 Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) help align-check TYPE N check partition N for TYPE(min|opt) alignment help [COMMAND] print general help, or help on COMMAND mklabel,mktable LABEL-TYPE create a new disklabel (partition table) mkpart PART-TYPE [FS-TYPE] START END make a partition name NUMBER NAME name partition NUMBER as NAME print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition quit exit program rescue START END rescue a lost partition near START and END resizepart NUMBER END resize partition NUMBER rm NUMBER delete partition NUMBER select DEVICE choose the device to edit disk_set FLAG STATE change the FLAG on selected device disk_toggle [FLAG] toggle the state of FLAG on selected device set NUMBER FLAG STATE change the FLAG on partition NUMBER toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER unit UNIT set the default unit to UNIT version display the version number and copyright information of GNU Parted #首先因为我们这块磁盘没有定义磁盘类型 (parted) print Error: /dev/nvme0n2: unrecognised disk label Model: NVMe Device (nvme) Disk /dev/nvme0n2: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: unknown #磁盘报错,因为没有选择磁盘类型 (parted) mklabel New disk label type? msdos #使用mklabel,把这块磁盘类型变成msdos(MBR) 或者gpt (parted) print Model: NVMe Device (nvme) Disk /dev/nvme0n2: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags #此时我们已经选好了磁盘类型,print可以查看磁盘的相关配置,接下来可以开始做分区 (parted) mkpart Partition type? primary/extended? primary File system type? [ext2]? xfs Start? 1M End? 2048M #检查分区是否完成 (parted) print Model: NVMe Device (nvme) Disk /dev/nvme0n2: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 2048MB 2047MB primary xfs lba #接着可以创建第二块磁盘 (parted) mkpart Partition type? primary/extended? primary File system type? [ext2]? ext2 Start? 2049M End? 10241M (parted) print Model: NVMe Device (nvme) Disk /dev/nvme0n2: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 2048MB 2047MB primary 2 2049MB 10.2GB 8193MB primary ext2 lba #如何删除磁盘 rm Number #即可直接把一块分区删除 rm 1 rm 2 quit退出
关于parted操作命令
cp [FROM-DEVICE] FROM-MINOR TO-MINOR #将文件系统复制到另一个分区 help [COMMAND] #打印通用求助信息,或关于 COMMAND 的信息 mklabel 标签类型 #创建新的磁盘标签 (分区表) mkfs MINOR 文件系统类型 #在 MINOR 创建类型为“文件系统类型”的文件系统 mkpart 分区类型 [文件系统类型] 起始点 终止点 #创建一个分区 mkpartfs 分区类型 文件系统类型 起始点 终止点 #创建一个带有文件系统的分区 move MINOR 起始点 终止点 #移动编号为 MINOR 的分区 name MINOR 名称 #将编号为 MINOR 的分区命名为“名称” print [MINOR] #打印分区表,或者分区 quit #退出程序 rescue 起始点 终止点 #挽救临近“起始点”、“终止点”的遗失的分区 resize MINOR 起始点 终止点 #改变位于编号为 MINOR 的分区中文件系统的大小 rm MINOR #删除编号为 MINOR 的分区 select 设备 #选择要编辑的设备 set MINOR 标志 状态 #改变编号为 MINOR 的分区的标志2.3.2 实验二 使用fdisk来做磁盘分区
fdisk不是实时的,最后一定要输入w保存,所以Be careful before using the write command。
#首先可以fdisk -l 查看所有磁盘的状态
[root@wentan ~]# fdisk -l
# 使用fdisk来创建磁盘
[root@wentan ~]# fdisk /dev/nvme0n2
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
# 输入m来获取命令帮助
# Command (m for help): m
Help:
DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c toggle the dos compatibility flag
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
u change display/entry units
x extra functionality (experts only)
script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
#首先要查看一下目前这块磁盘的分区
# Command (m for help):p
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x3bb7df1a
#接着开始创建分区
# Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
#这边直接默认,就是从起始位置开始的
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +5G
#这边可以使用+大小的方式,不用计算结束位置
Created a new partition 1 of type 'Linux' and of size 5 GiB.
#检查分区是否创建成功
# Command (m for help): p
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x3bb7df1a
Device Boot Start End Sectors Size Id Type
/dev/nvme0n2p1 2048 10487807 10485760 5G 83 Linux
#分区1已结创建成功,就下来创建一个10G的主分区2
#Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (10487808-41943039, default 10487808):
Last sector, +sectors or +size{K,M,G,T,P} (10487808-41943039, default 41943039): +10G
Created a new partition 2 of type 'Linux' and of size 10 GiB.
#Command (m for help): p
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x3bb7df1a
Device Boot Start End Sectors Size Id Type
/dev/nvme0n2p1 2048 10487807 10485760 5G 83 Linux
/dev/nvme0n2p2 10487808 31459327 20971520 10G 83 Linux
#分区2也创建成功
#删除分区
#Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.
#Command (m for help): p
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x3bb7df1a
Device Boot Start End Sectors Size Id Type
/dev/nvme0n2p1 2048 10487807 10485760 5G 83 Linux
#保存
# Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
#注意:fdisk是不会把分区直接做成文件系统的,fdisk做出来的分区需要手动做成文件系统
#制作文件系统
[root@wentan ~]# mkfs.ext4 /dev/nvme0n2p1
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 1310720 4k blocks and 327680 inodes
Filesystem UUID: 80c65106-61fe-4c95-a5f8-00093b4185fb
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
#我们也可以修改一个分区的文件系统(格式化命令)
#注意:里面所有内容全都没了
[root@wentan ~]# mkfs.xfs -f /dev/nvme0n2p1
meta-data=/dev/nvme0n2p1 isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=1310720, 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
fdisk命令中的参数以及作用
| 参数 | 作用 |
|---|---|
| m | 查看全部可用的参数 |
| n | 添加新的分区 |
| d | 删除某个分区信息 |
| l | 列出所有可用的分区类型 |
| t | 改变某个分区的类型 |
| p | 查看分区信息 |
| w | 保存并退出 |
| q | 不保存直接退出 |
| 目录名称 | 应放置文件的内容 |
|---|---|
| /boot | 开机所需文件—内核、开机菜单以及所需配置文件等 |
| /dev | 以文件形式存放任何设备与接口 |
| /etc | 配置文件 |
| /home | 用户家目录 |
| /bin | 存放单用户模式下还可以操作的命令 |
| /lib | 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数 |
| /sbin | 开机过程中需要的命令 |
| /media | 用于挂载设备文件的目录 |
| /opt | 放置第三方的软件 |
| /root | 系统管理员的家目录 |
| /srv | 一些网络服务的数据文件目录 |
| /tmp | 任何人均可使用的“共享”临时目录 |
| /proc | 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等 |
| /usr/local | 用户自行安装的软件 |
| /usr/sbin | Linux系统开机时不会使用到的软件/命令/脚本 |
| /usr/share | 帮助与说明文件,也可放置共享文件 |
| /var | 主要存放经常变化的文件,如日志 |
| /lost+found | 当文件系统发生错误时,将一些丢失的文件片段存放在这里 |
(1)首先会从硬盘中读取BootLoader,然后将整个系统控制权交给BootLoader,红帽系统的BootLoader 叫做GRUB
(2)GRUB 会加载 /boot/grub2/grub.cfg 配置文件会选择启动内核
(3)GRUB会加载内核,并且放到内存里面,然后启动硬件模块初始化脚本
(4)BootLoader 会把控制权交给内核,内核开始找各种驱动,并且初始化这些硬件
(5)在RHEL系统中,会启动systemd执行所有的目标单元
(6)还会将root文件系统中的挂载 /etc/fstab 配置运行
(7)内核根据我们的文件系统,切换到 /sysroot 的根文件系统
(8)systemd 会使用硬盘中安装的system来重新执行
(9)systemd 最终会查找默认的启动目标 target,最后启动一个基于文化或者图形化的界面
3.3 强制破解Linux服务器开机密码实验1.重启系统
2.将光标移动到要启动的内核
3.按e来编辑
4.在linux开头的行的末尾输入rd.break
5.ctrl+x继续启动,自动进入swith_root
重置密码:
1.重启以读写的方式挂载/sysroot
命令:mount -o remount,rw /sysroot
2.切换到真正操作系统的根/sysroot
命令:chroot /sysroot
3.重置密码:
命令:echo 123456 |passwd --stdin root
4.打标签:
命令:touch /.autorelabel
exit退出两次
此时root密码已被修改为123456
四、物理设备的命名规则 4.1 常见的硬件设备及其文件名称| 硬件设备 | 文件名称 |
|---|---|
| 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 |
Linux mkfs(英文全拼:make file system)命令用于在特定的分区上建立 linux 文件系统。
格式:
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
选项:
device #预备检查的硬盘分区,例如:/dev/sda1 -V #详细显示模式 -t #给定档案系统的型式,Linux 的预设值为 ext2 -c #在制做档案系统前,检查该partition 是否有坏轨 -l bad_blocks_file #将有坏轨的block资料加到 bad_blocks_file 里面 block #给定 block 的大小五、文件系统与数据资料
文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。Linux系统支持数十种的文件系统,而最常见的文件系统如下所示。
| 文件系统 | 解释 |
|---|---|
| Ext3 | 是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。 |
| Ext4 | Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。 |
| XFS | 是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为18EB,这几乎满足了所有需求。 |
格式化文件系统会发生什么事情?
Linux创建一个硬盘地图 superblock,记录此filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
inode记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block 号码,默认一个inode表格128字节,一个block记录消耗4B,记录满了后会新建inode用于扩展。
该文件的访问权限(read、write、execute); 该文件的所有者与所属组(owner、group); 该文件的大小(size); 该文件的创建或内容修改时间(ctime); 该文件的最后一次访问时间(atime); 该文件的修改时间(mtime); 文件的特殊权限(SUID、SGID、SBIT); 该文件的真实数据地址(point)。 block:用于存储数据
计算机系统在发展过程中产生了众多的文件系统,为了使用户在读取或写入文件时不用关心底层的硬盘结构,Linux内核中的软件层为用户程序提供了一个VFS(Virtual File System,虚拟文件系统)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了。
六、swap分区swap分区:交换分区
内核使用交换分区,保存内容中暂时不活动的数据,如果内核重新访问这部分数据,会将这部分数据重新写入内存,类似于windows的虚拟内存、缓存
swap消耗的是硬盘容量
作为linux管理员我们应该根据系统的工作负载来决定swap分区到底应该给多少
| 负载内存 | swap需求 |
|---|---|
| 2G | swap需要4G |
| 2-8G | swap需要同等大小 |
| 8-64G | swap至少8G |
| 64G以上 | swap至少8G |
添加swap分区,文件类型要设置为linux-swap 该文件系统最好是msdos
实例
#查看系统内存,会发现swap存在
[root@wentan ~]# free
total used free shared buff/cache available
Mem: 3848776 1445308 1493312 12936 910156 2143676
Swap: 2146300 0 2146300
七、文件系统修复工具
7.1 fsck 工具
针对ext系列文件系统
fsck #文件系统检查修复 -v #详细修复 -a #自动修复 -r #交互式修复 [root@wentan ~]# fsck /dev/nvme0n1p17.2 e2fsck 工具
针对ext系列文件系统
e2fsck #文件系统检测修复工具 -y #自动修复 -g #强制修复 [root@wentan ~]# e2fsck /dev/nvme0n1p17.3 xfs_repair 工具
针对xfs文件系统
xfs_repair 设备名 #自动检测修复工具 [root@wentan ~]#xfs_repair /dev/nvme0n1p1 #修复这个磁盘的文件系统
关注公众号:问渠清源
回复关键字 视频 获取视频教程



