一、磁盘阵列

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 3Raid 0多了奇偶检验,多一块磁盘,但是数据冗余性好

  • Raid 5 *每个磁盘都能存检验,有几个盘就你能产生几个读写盘,比Raid 3减少一个检验盘

  • Raid 6 Raid 6 P+QRAID6 DP 两种校验算法,至少需要N+2个磁盘来构成阵列,一般用在数据可靠性极高,可用性极高的场所

  • Raid 10 将镜像Raid和条带进行组合,先进行Raid 1镜像,然后再做Raid 0

  • Raid 50 使用了Raid 5Raid 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, 7962624Allocating 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.2Creation Time : Sun Jan 16 11:41:10 2022Raid Level : raid10Array Size : 41908224 (39.97 GiB 42.91 GB)Used Dev Size : 20954112 (19.98 GiB 21.46 GB)Raid Devices : 4Total Devices : 4Persistence : Superblock is persistentUpdate Time : Sun Jan 16 11:47:08 2022State : clean Active Devices : 4Working Devices : 4Failed Devices : 0Spare Devices : 0Layout : near=2Chunk Size : 512KConsistency Policy : resyncName : wentan:0  (local to host wentan)UUID : 096170c1:5b9e7606:f4e8c353:cd0c020eEvents : 19Number   Major   Minor   RaidDevice State0     259        3        0      active sync set-A   /dev/nvme0n21     259        4        1      active sync set-B   /dev/nvme0n32     259        5        2      active sync set-A   /dev/nvme0n43     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 -a
1.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/md0Number   Major   Minor   RaidDevice State0     259        3        0      active sync set-A   /dev/nvme0n2-       0        0        1      removed2     259        5        2      active sync set-A   /dev/nvme0n43     259        6        3      active sync set-B   /dev/nvme0n51     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 State0     259        3        0      active sync set-A   /dev/nvme0n24     259        4        1      spare rebuilding   /dev/nvme0n32     259        5        2      active sync set-A   /dev/nvme0n43     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.2Creation Time : Sun Jan 16 13:50:08 2022Raid Level : raid5Array Size : 41908224 (39.97 GiB 42.91 GB)Used Dev Size : 20954112 (19.98 GiB 21.46 GB)Raid Devices : 3Total Devices : 4Persistence : Superblock is persistentUpdate Time : Sun Jan 16 13:51:57 2022State : clean Active Devices : 3Working Devices : 4Failed Devices : 0Spare Devices : 1Layout : left-symmetricChunk Size : 512KConsistency Policy : resyncName : wentan:0  (local to host wentan)UUID : 0d7fd374:a2001c3d:737de6c9:d3baae39Events : 18Number   Major   Minor   RaidDevice State0     259        3        0      active sync   /dev/nvme0n21     259        4        1      active sync   /dev/nvme0n34     259        5        2      active sync   /dev/nvme0n43     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, 7962624Allocating 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/nvme0n41     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) alignmenthelp [COMMAND]                           print general help, or help on COMMANDmklabel,mktable LABEL-TYPE               create a new disklabel (partition table)mkpart PART-TYPE [FS-TYPE] START END     make a partitionname 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  Flags1      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  Flags1      1049kB  2048MB  2047MB  primary2      2049MB  10.2GB  8193MB  primary  ext2         lba#如何删除磁盘
rm  Number  #即可直接把一块分区删除
rm 1
rm 2quit退出

关于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/nvme0n2Welcome 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 flagb   edit nested BSD disklabelc   toggle the dos compatibility flagGenericd   delete a partitionF   list free unpartitioned spacel   list known partition typesn   add a new partitionp   print the partition tablet   change a partition typev   verify the partition tablei   print information about a partitionMiscm   print this menuu   change display/entry unitsx   extra functionality (experts only)ScriptI   load disk layout from sfdisk script fileO   dump disk layout to sfdisk script fileSave & Exitw   write table to disk and exitq   quit without saving changesCreate a new labelg   create a new empty GPT partition tableG   create a new empty SGI (IRIX) partition tableo   create a new empty DOS partition tables   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 typep   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: 0x3bb7df1aDevice         Boot Start      End  Sectors Size Id Type
/dev/nvme0n2p1       2048 10487807 10485760   5G 83 Linux#分区1已结创建成功,就下来创建一个10G的主分区2
#Command (m for help): n
Partition typep   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): +10GCreated 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: 0x3bb7df1aDevice         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): 2Partition 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: 0x3bb7df1aDevice         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, 884736Allocating 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 不保存直接退出

三、存储结构与磁盘划分

3.1 Linux 系统中常见的目录名称以及相应内容
目录名称 应放置文件的内容
/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 当文件系统发生错误时,将一些丢失的文件片段存放在这里
3.2 Linux开机流程

(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
4.2 mkfs工具

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内核中的软件层为用户程序提供了一个VFSVirtual 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 ~]# freetotal        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/nvme0n1p1
7.2 e2fsck 工具

针对ext系列文件系统

e2fsck     #文件系统检测修复工具
-y         #自动修复
-g         #强制修复
[root@wentan ~]# e2fsck   /dev/nvme0n1p1
7.3 xfs_repair 工具

针对xfs文件系统

xfs_repair   设备名  #自动检测修复工具
[root@wentan ~]#xfs_repair    /dev/nvme0n1p1   #修复这个磁盘的文件系统

关注公众号:问渠清源
回复关键字 视频 获取视频教程

Linux 基础入门 07相关推荐

  1. Linux基础入门教程

    Linux基础入门教程 --------- Linux学习路径 Linux学习者,常常不知道自己改怎么学习linux: Linux初级,也就是入门linux 前提是需要有一些计算机硬件相关的知识或是有 ...

  2. SRE运维工程师笔记-Linux基础入门

    SRE运维工程师笔记-Linux基础入门 1. Linux基础 1.1 用户类型 1.2 终端terminal 1.2.1 终端类型 1.2.2 查看当前的终端设备 1.3 交互式接口 1.3.1 交 ...

  3. 腾讯云实验之Linux 基础入门

    image.png Linux 基础入门 目录操作 任务时间:5min ~ 10min 创建目录 使用 mkdir 命令创建目录 mkdir $HOME/testFolder 切换目录 使用 cd 命 ...

  4. Linux 基础入门

    Linux 基础入门 本课程教你如何熟练地使用 Linux,本实验中通过在线动手实验的方式学习 Linux 常用命令,用户与权限管理,目录结构与文件操作,环境变量,计划任务,管道与数据流重定向等基本知 ...

  5. Linux基础入门--驱动开发--USB

    Linux基础入门--驱动开发--USB 1.基本概念 2.组成结构 2.1 设备描述符 2.2 配置描述符 2.3 接口描述符 2.4 端点描述符 2.5 字符串描述符 3.管道 4.端点分类 4. ...

  6. Linux基础入门之内外命令讲解篇

    Linux基础入门篇--之内外命令讲解 1.基础命令 命令 使用方法 cat /etc/motd 设置用户成功登录系统后显示的提示信息.比如欢迎语! cat /etc/issue 设置用户成功登录系统 ...

  7. Linux 基础入门 02

    Linux 基础入门 02 一.用户&组管理 1.1 usermod 用来修改用户账号的各项设定 -c<备注> #修改用户帐号的备注文字. -d登入目录> #修改用户登入时的 ...

  8. Linux基础入门--进程间通信--共享内存

    Linux基础入门--进程间通信--共享内存 1.共享内存IPC原理 2.共享内存管理 1.共享内存IPC原理 共享内存进程间通信机制主要用于实现进程间大量的数据传输,共享内存是在内存单独开辟的一段内 ...

  9. Linux基础入门--网络工具--usb_modeswitch

    Linux基础入门--网络工具--usb_modeswitch 1.概述 2.语法 3.选项 1.概述 控制"多状态"USB设备的模式.一些新的USB设备有他们的专有Windows ...

最新文章

  1. Spring Boot @ConfigurationProperties使用指导
  2. tensorflow eager调试模式关键导入如下两行便于debug
  3. 怀旧服湖畔镇服务器位置,《魔兽世界怀旧服》今天再开10组新服 47组服务器免费转服开启...
  4. 服务器 kvm 进入系统,服务器CAT5 KVM切换器系统
  5. Java 守护线程概述
  6. 表单验证--插件-1.0.1
  7. Entity Framework Core 软删除与查询过滤器
  8. 不能将紧实的字段 绑定到_代码整洁之道【笔记】
  9. c++对象回收string类型成员时coredump_本体技术视点 | 虚拟机中引用性动态语言对象模型思考...
  10. Nginx(四):负载均衡Load balancing
  11. Integer 数据类型
  12. 【读书笔记】《大型互联网企业安全架构(石祖文)》
  13. 计算机excel 的分栏在哪,excel分栏在哪里
  14. java eclipse oxygen_Eclipse 安装(Oxygen版本)
  15. 光伏电站融资租赁初具规模
  16. 细说Java性能测试第一课 Jmeter导读
  17. JESD79-4 第4章 SDRAM命令描述与操作(4.24)
  18. java调用python文件的几种方式【超细讲解!】
  19. 查看微信好友是否删除自己
  20. php中生成随机数种子的函数有哪些,PHP内置函数生成随机数的方法汇总

热门文章

  1. 专访卜茂霞:嵌入式汽车开发潜力巨大
  2. iPad上用code-server运行VS Code
  3. 论机电一体化的发展By integration of machinery development
  4. UNI-APP安卓本地打包详细教程(保姆级)
  5. 干货|我的三年产品基本功之PRD文档攥写
  6. 001之Persimmon UI Builder与柿饼派GUI智能屏模组学习
  7. c语言如何统计不同分数段学生人数,Excel统计不同班级各个分数段的学生人数的方法...
  8. 让荣之学告诉你Shopee选品思路及运营方法!
  9. oracle数据库报错1033,ORACLE出现错误1033和错误ORA-00600的解决方法
  10. 1033:计算线段长度