第七周:磁盘及文件系统管理

1、破坏mbr表并修复

#备份MBR分区表,skip表示从输入文件跳过前446个字节,即/dev/sda
⏱ 22:44:07-root:~#dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446    
⏱ 22:44:07-root:~#scp /data/dpt.img 10.0.0.8:
#破坏MBR分区表,seek代表从输出跳过前446个字节,记不住就记单词意思,seek是寻找,skip是跳过,跳过一般都是从源跳过,寻找从目标寻找
⏱ 22:44:07-root:~#dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446    #seek代表从输出文件跳过前446个字节
⏱ 22:44:07-root:~#reboot

#用光盘启动,选择救援模式进入rescue mode,选第3项skip to shell
#配置网络
#ifconfig ens160 10.0.0.8/24
#scp 10.0.0.8:/root/dpt.img .   这里有个.别忘记,代表从远程主机下载dpt.img到当前目录
#恢复MBR分区表
#dd if=dpt.img of=/dev/sda bs=1 seek=446
#exit

2、总结RAID的各个级别及其组合方式和性能的不同。(这里只列举常用raid)

raid 级别

多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供

外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置
软件RAID:通过OS实现,比如:群晖的NAS

级别:多块磁盘组织在一起的工作方式有所不同

  • RAID-0:条带卷,strip
  • RAID-1:镜像卷,mirror
  • RAID-2
  • ..
  • RAID-5
  • RAID-6
  • RAID-10
  • RAID-01
  • RAID级别
raid 0

将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快。RAID 0亦称为带区集。它是将多个磁盘并列起来,成为一个大磁盘。在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都会丢失,危险程度与JBOD相当。
理论上越多的磁盘性能就等于“单一磁盘性能”ד磁盘数”,但实际上受限于总线I/O瓶颈及其它因素的影响,RAID性能会随边际递减,也就是说,假设一个磁盘的性能是50MB每秒,两个磁盘的RAID 0性能约96MB每秒,三个磁盘的RAID 0也许是130MB每秒而不是150MB每秒,所以两个磁盘的RAID 0最能明显感受到性能的提升。

image-20201219223224310.png
  • 读、写性能提升
  • 可用空间:N*min(S1,S2,...)
  • 无容错能力
  • 最少磁盘数:2, 2+
raid 1

两组硬盘互为镜像,数据会以镜像的方式写入到另一块硬盘,理论上读速度=硬盘数量的倍数,写入速度会有略微降低,冗余最高,一块硬盘损坏后不影响数据完整性,但无论多少块硬盘,最后都只算1块硬盘,是raid级别中磁盘利用率最低的一种,如果两块磁盘大小不一组建riad1,容量以最小的磁盘计算,多余的空间可划分另外一个分区使用,并不浪费。

image-20201219223347331.png
  • 读性能提升、写性能略有下降
  • 可用空间:1*min(S1,S2,...)
  • 有冗余能力
  • 最少磁盘数:2, 2N
raid 4
  • 多块数据盘异或运算值存于专用校验盘 磁盘利用率 (N-1)/N
  • 有冗余能力
  • 至少3块硬盘才可以实现
raid 5

RAID Level 5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5至少需要三颗硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢,若使用“回写高速缓存”可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜


image-20201219224613616.png
  • 读、写性能提升
  • 可用空间:(N-1)*min(S1,S2,...)
  • 有容错能力:允许最多1块磁盘损坏
  • 最少磁盘数:3, 3+
raid 6
image-20201219225049356.png
  • 读、写性能提升
  • 可用空间:(N-2)*min(S1,S2,...)
  • 有容错能力:允许最多2块磁盘损坏
  • 最少磁盘数:4, 4+
raid 10 和 raid 01对比

如何记忆RAID1+0和RAID0+1,哪个数字在前就先做哪个RAID,例如RAID10就是,先做RAID1,后做RAID0,反之亦然

image-20201219224953055.png

RAID0+1是先做两个RAID0,然后再做RAID1,因此RAID0+1允许坏多个盘,但只能在坏在同一个RAID0中,不允许两个RAID0都有坏盘。
RAID1+0是先做RAID1,然后再做RAID0,因此RAID1+0允许坏多个盘,只要不是一对磁盘坏就可以啦。
因此说RAID1+0比RAID0+1安全得多,因为在同一对磁盘中,两块磁盘都坏掉的概率很低。
RAID 0和RAID 1分别用于增强存储性能(RAID 0 条带)和数据安全性(RAID 1 镜像),而RAID 0+1和RAID 10兼顾了RAID 0和RAID 1的优点,它在提供RAID 1一样的数据安全保证的同时,也提供了与RAID 0近似的存储性能。虽然RAID 0+1和RAID 10基本原理相近,都是RAID0和RAID1的结合,不过还是有些区别。在MySQL数据库中,通常我们选用RAID 10。
综上,raid1+0是要比raid0+1更安全一些

raid 50

同理,先做RAID5,后做RAID0,即RAID50,实现磁盘冗余同时提升磁盘读写性能(同时满足数据安全和数据冗余功能)

image-20201219230047578.png
其它级别

RAID7

可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的RAID模式

常用级别: RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD

JBOD:just a bunch of disks

功能:将多块磁盘的空间合并一个大的连续空间使用

可用空间:sum(S1,S2,...)

image-20201219230313971.png
3.创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统 ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项
⏱ 22:31:13-root:~# mkfs.ext4 -m 1 -L TEST -b 2048 -O acl /dev/sdd1  
mke2fs 1.45.6 (20-Mar-2020)
/dev/sdd1 contains a ext4 file system labelled 'TEST'
    last mounted on Sat Jan  9 22:15:07 2021
Proceed anyway? (y,N) y
Invalid filesystem option set: acl

⏱ 22:17:34-root:~# lsblk -f
NAME            FSTYPE      LABEL                      UUID                                   MOUNTPOINT
sda                                                                                           
├─sda1          ext4                                   29090182-4327-42a5-8b5e-1593be1da80e   /boot
├─sda2          LVM2_member                            thR0RF-sibL-cgtk-v778-iPF5-uX39-2FHeRc 
│ ├─cl-root     xfs                                    cdcfdf4c-2493-46c9-b1e4-8339eb8abf87   /
│ ├─cl-swap     swap                                   31276342-47f9-4f0a-8b91-f1725e19a3c2   [SWAP]
│ └─cl-date     xfs                                    6acc18fa-5d5c-467d-8b95-1311f26bcf71   /date
└─sda3          ext4                                   c2783a60-a6fc-4f6d-a118-a1344aeeb7ec   
sdb             LVM2_member                            WqSW6e-BTxW-xMV2-Bdw8-ox6t-PJHe-ykYCgP 
sdc             LVM2_member                            OaDeVf-U11t-AZze-38t6-o8gv-xkWB-AYf1YW 
└─testvg-testlv ext4                                   07db0c4d-9540-4d9c-a79c-455aa0d4e4f1   /testlv
sdd                                                                                           
└─sdd1          ext4        TEST                       661adda1-ba20-431b-9608-0122c700e769   
sr0             iso9660     CentOS-8-2-2004-x86_64-dvd 2020-06-08-22-08-25-00

⏱ 22:32:28-root:~# tune2fs -l /dev/sdd1
tune2fs 1.45.6 (20-Mar-2020)
Filesystem volume name:   TEST
Last mounted on:          
Filesystem UUID:          661adda1-ba20-431b-9608-0122c700e769
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              65536
Block count:              262144
Reserved block count:     2621
Free blocks:              249189
Free inodes:              65525
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      127
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sat Jan  9 22:06:30 2021
Last mount time:          Sat Jan  9 22:15:07 2021
Last write time:          Sat Jan  9 22:17:05 2021
Mount count:              1
Maximum mount count:      -1
Last checked:             Sat Jan  9 22:06:30 2021
Check interval:           0 ()
Lifetime writes:          17 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      ddab3b50-7803-4b13-83c3-9074c3d5a9d8
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0x322e1a54

⏱ 22:40:41-root:/etc# blkid /dev/sdd1   #查询sdd1的UUID
/dev/sdd1: LABEL="TEST" UUID="661adda1-ba20-431b-9608-0122c700e769" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="5f1013a7-01"

⏱ 22:43:47-root:/etc# sed -rn 's/^[^#.*]//p' /etc/fstab     #在/etc/fstab文件中按格式填入sdd1的UUID,实现自动挂载
dev/mapper/cl-root     /                       xfs     defaults        0 0
UID=29090182-4327-42a5-8b5e-1593be1da80e /boot                   ext4    defaults        1 2
dev/mapper/cl-date     /date                   xfs     defaults        0 0
dev/mapper/cl-swap     swap                    swap    defaults        0 0
UID="07db0c4d-9540-4d9c-a79c-455aa0d4e4f1 /testlv            ext4  defaults  0 0 
UID=661adda1-ba20-431b-9608-0122c700e769 /test ext4   acl  0 0

⏱ 22:53:08-root:mount -a 
⏱ 22:53:08-root:/etc# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   200G  0 disk 
├─sda1            8:1    0   1.9G  0 part /boot
├─sda2            8:2    0 143.4G  0 part 
│ ├─cl-root     253:0    0  93.1G  0 lvm  /
│ ├─cl-swap     253:1    0   3.7G  0 lvm  [SWAP]
│ └─cl-date     253:2    0  46.6G  0 lvm  /date
└─sda3            8:3    0  54.7G  0 part 
sdb               8:16   0     2G  0 disk 
sdc               8:32   0    18G  0 disk 
└─testvg-testlv 253:3    0    15G  0 lvm  /mnt/testlv
sdd               8:48   0     2G  0 disk 
└─sdd1            8:49   0     1G  0 part /test
sr0              11:0    1   7.7G  0 rom
4、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
⏱ 18:50:04-root:~# lsblk    #查看新添加的两块硬盘sdb和sdc
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0   200G  0 disk 
├─sda1        8:1    0   1.9G  0 part /boot
└─sda2        8:2    0 143.4G  0 part 
  ├─cl-root 253:0    0  93.1G  0 lvm  /
  ├─cl-swap 253:1    0   3.7G  0 lvm  [SWAP]
  └─cl-date 253:2    0  46.6G  0 lvm  /date
sdb           8:16   0     2G  0 disk 
sdc           8:32   0    18G  0 disk 
sr0          11:0    1   7.7G  0 rom  

⏱ 18:50:06-root:~# pvcreate /dev/sdb /dev/sdc   #第一步,将sdb和sdc创建成物理卷
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.
  
⏱ 18:50:19-root:~# pvdisplay 
  --- Physical volume ---
  "/dev/sdb" is a new physical volume of "2.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               2.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               WqSW6e-BTxW-xMV2-Bdw8-ox6t-PJHe-ykYCgP
   
  "/dev/sdc" is a new physical volume of "18.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               18.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               OaDeVf-U11t-AZze-38t6-o8gv-xkWB-AYf1YW

⏱ 18:51:02-root:~# vgcreate -s 16m testvg /dev/sdb /dev/sdc #第二部,创建逻辑卷组,指定pe大小位16m,名称testvg
  Volume group "testvg" successfully created
⏱ 18:51:58-root:~# vgdisplay 
  --- Volume group ---
  VG Name               testvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               <19.97 GiB
  PE Size               16.00 MiB
  Total PE              1278
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1278 / <19.97 GiB
  VG UUID               BPlN7k-kcH4-5EFg-xrwx-kWd2-QRTq-YRT4IT
  
⏱ 18:52:02-root:~# pvs
  PV         VG     Fmt  Attr PSize    PFree 
  /dev/sda2  cl     lvm2 a--  <143.43g  4.00m
  /dev/sdb   testvg lvm2 a--     1.98g  1.98g
  /dev/sdc   testvg lvm2 a--    17.98g 17.98g

⏱ 18:59:56-root:~# lvcreate -n testlv -L 5G testvg  #第三步,创建大小位5G的逻辑卷testlv
  Logical volume "testlv" created.
⏱ 19:01:39-root:~# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/testvg/testlv
  LV Name                testlv
  VG Name                testvg
  LV UUID                dBIkjz-xUPP-2iiA-UL3g-KC6B-k366-VI8ItR
  LV Write Access        read/write
  LV Creation host, time Centos8.2-10.0.0.8, 2021-01-09 19:01:39 +0800
  LV Status              available
  # open                 0
  LV Size                5.00 GiB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3
  
⏱ 19:11:38-root:~# mkfs.ext4 /dev/testvg/testlv     #第4步,为testlv创建ext4的文件系统
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 1310720 4k blocks and 327680 inodes
Filesystem UUID: 07db0c4d-9540-4d9c-a79c-455aa0d4e4f1
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 

⏱ 19:19:05-root:~# mkdir /users #第5步,创建挂载点
⏱ 19:19:31-root:~# mount /dev/testvg/testlv /users  #第6步,挂载,持久挂载要将testlv的UUID填入到/etc/fstab文件中即可
⏱ 19:19:49-root:~# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   200G  0 disk 
├─sda1            8:1    0   1.9G  0 part /boot
└─sda2            8:2    0 143.4G  0 part 
  ├─cl-root     253:0    0  93.1G  0 lvm  /
  ├─cl-swap     253:1    0   3.7G  0 lvm  [SWAP]
  └─cl-date     253:2    0  46.6G  0 lvm  /date
sdb               8:16   0     2G  0 disk 
sdc               8:32   0    18G  0 disk 
└─testvg-testlv 253:3    0     5G  0 lvm  /users
sr0              11:0    1   7.7G  0 rom  

你可能感兴趣的:(第七周:磁盘及文件系统管理)