Linux 基础入门 07

一、磁盘阵列

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 主要通过二次读写,实现镜像磁盘,在数据安全很重要的场所使用

img

  • Raid 3Raid 0多了奇偶检验,多一块磁盘,但是数据冗余性好

img

  • 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

img

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的部署

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NZZLScSh-1642336690751)(C:\Users\tan-1210\AppData\Roaming\Typora\typora-user-images\image-20220116140826663.png)]

#查看目前系统的硬盘情况
[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 -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/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个分区

  • 扩展分区内部可以逻辑上划分多个区域,但是在分区表中都算在一个分区内

  • 如果作为系统盘,必须要设置一个激活分区,用于存放系统的引导文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GVphGzZv-1642336690752)(C:\Users\tan-1210\AppData\Roaming\Typora\typora-user-images\image-20220116203234257.png)]

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不保存直接退出
三、存储结构与磁盘划分
3.1 Linux 系统中常见的目录名称以及相应内容
目录名称应放置文件的内容
/boot开机所需文件—内核、开机菜单以及所需配置文件等
/dev以文件形式存放任何设备与接口
/etc配置文件
/home用户家目录
/bin存放单用户模式下还可以操作的命令
/lib开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
/sbin开机过程中需要的命令
/media用于挂载设备文件的目录
/opt放置第三方的软件
/root系统管理员的家目录
/srv一些网络服务的数据文件目录
/tmp任何人均可使用的“共享”临时目录
/proc虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
/usr/local用户自行安装的软件
/usr/sbinLinux系统开机时不会使用到的软件/命令/脚本
/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是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。
Ext4Ext3的改进版本,作为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,虚拟文件系统)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PI9nAurx-1642336813062)(C:\Users\tan-1210\AppData\Roaming\Typora\typora-user-images\image-20220116203042128.png)]

六、swap分区

swap分区:交换分区

内核使用交换分区,保存内容中暂时不活动的数据,如果内核重新访问这部分数据,会将这部分数据重新写入内存,类似于windows的虚拟内存、缓存

swap消耗的是硬盘容量

作为linux管理员我们应该根据系统的工作负载来决定swap分区到底应该给多少

负载内存swap需求
2Gswap需要4G
2-8Gswap需要同等大小
8-64Gswap至少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/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   #修复这个磁盘的文件系统

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tan-1210

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值