磁盘存储管理 和文件系统管理 RAID
1、磁盘管理
1.1 磁盘分区
两种分区方式:MBR,GPT
0磁道0扇区: 512bytes
446bytes:boot loader
64bytes:分区表,其中每16bytes标识一个分区
2bytes:55AA
1.2 管理分区
列出块设备
lsblk
创建分区命令
fdisk 管理MBR分区
gdisk 管理GPT分区
parted 高级分区操作,
1.3 parted 命令
parted的操作是实时生效的,小心使用
格式:
parted [option]...[设备 [命令 [参数]...]...]
1.4 分区工具fdisk和gdisk
gdisk [device...] 类fdisk 的GPT分区工具
fdisk -l [-u] [device...] 查看分区
fdisk [device...] 管理MBR分区工具
子命令:
p 分区列表
t 更改分区类型
n 创建新分区
d 删除分区
v 校验分区
u 转换单位
w 保存退出
q 不保存退出
查看内核是否已经识别新的分区
cat /proc/partations
非交互式创建分区
echo -e 'n\np\n\n\n+2G\nw\n' | fdisk /dev/sdc
1.5 文件系统管理
1.5.1 创建文件管理工具
-
mkfs命令:
(1) mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btfs
vfat
(2) mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL' 设定卷标
- mke2fs:ext系列文件系统专用管理工具
常用选项:
-t {ext2|ext3|ext4|xfs} 指定文件系统类型
-b {1024|2048|4096} 指定块大小
-L 'LABEL' 设定卷标
-i #为数据空间中每第多少个字节创建一个inode;不小于块大小
-N #指定分区中创建多少个inode
-m #默认5%,为管理人员预留空间占总空间的百分比
-o FEATURE[,...] 启用指定特性
-o ^FEATURE 关闭指定特性
-j 相当于 -t ext3
2、逻辑卷管理器
相关工具来自于lvm2 包
2.1 pv管理工具
#显示pv信息
pvs:简要pv信息显示
pvdisplay
#创建pv
pvcreate /dev/DEVICE
#删除pv
pvremove /dev/DEVICE
2.2 vg管理工具
#显示卷组
vgs
vgdisplay
#创建卷组
vgcreate [-s #[KkmMgGtTpPeE]] volumeGroupName physicalDevicepath [PhysicalDevivePath...]
#管理卷组
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevivePath...]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevivePath...]
#删除卷组
先做pvmove
再做 vgremove
2.3 lv管理工具
#显示逻辑卷
lvs
lvdisplay
#创建逻辑卷
lvcreate -l #[mMgGtT] -n Name VolumeGroup
lvcreate -l 60%VG -n mylv testvg
#删除逻辑卷
lvremove /dev/VG_NAME/LV_NAME
2.4 在线扩展逻辑卷
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
# ext格式
resize2fs /dev/VG_NAME/LV_NAME
# xfs格式
xfs_growfs MOUNTPOINT
lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME
3、RAID
3.1 总结RAID各个级别及其组合方式和性能的不同
RAID类型:
RAID 0、RAID 1、RAID 4、RAID 5、RAID 6、RAID 10、RAID 01、RAID 50
RAID常用性能:
RAID 0:需要至少2块硬盘,读写性能提升,可用空间为n块硬盘容量之和,无容错能力。
RAID 1:至少需要2块硬盘,硬盘数为2的倍数,可用空间为n/2容量的空间,读性能提升,写性能降低,有冗余能力。
RAID 5:至少需要3块硬盘,硬盘数为3块以上。可用空间为(n-1),读写性能提升,有容错能力,最多允许坏1块盘。
RAID 6:至少需要4块硬盘,硬盘数为4块以上,可用空间为(n-2),读写性能提升,有容错能力,最多允许坏2块盘。
RAID 10:至少需要4块硬盘,硬盘数为4的偶数,可用空间为n/2,读写性能提升,有容错能力,每组镜像最多只能坏1块盘。先组RAID 1再组 RAID 0。
RAID 01:至少4块盘,硬盘数为4的偶数,可用空间为n/2,读写性能提升,有容错能力。不同镜像不能坏存储相同内容的硬盘,先组RAID 0 再组 RAID 1。
RAID 50:至少需要6块盘,硬盘数为3的倍数,可用空间为(n-3),读写性能提升,有容错能力,每组镜像允许坏1块盘,最多允许坏2块硬盘。
3.2 破坏mbr表并修复
# 备份MBR分区表
[root@CentOS8 ~]#dd if=/dev/sda of=/data/mbr.img bs=1 count=64 skip=446
[root@CentOS8 ~]#scp /data/mbr.img 10.0.0.8:
# 破坏MBR分区表
[root@CentOS8 ~]#dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
#重启无法进入系统
[root@CentOS8 ~]#reboot
#用光盘启动,进入rescue mode,选择1)Continue -->> 回车进入shell
#配置网络
sh-4.4#ip addr add 10.0.0.18/24 dev ens33
sh-4.4#scp 10.0.0.8:/root/mbr.img .
#恢复MBR分区表
sh-4.4#dd if=mbr.img of=/dev/sda bs=1 seek=446
sh-4.4#exit
3.3 磁盘管理实例
3.3.1 创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统 ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项
#创建2G分区
[root@CentOS8 ~]#fdisk -l
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 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: 0x3bce8aa0
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 211814399 209715200 100G 83 Linux
/dev/sda3 211814400 218105855 6291456 3G 82 Linux swap / Solaris
/dev/sda4 218105856 419430399 201324544 96G 5 Extended
/dev/sda5 218107904 322965503 104857600 50G 83 Linux
[root@CentOS8 ~]#fdisk /dev/sda
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.
Command (m for help): n
All primary partitions are in use.
Adding logical partition 6
First sector (322967552-419430399, default 322967552):
Last sector, +sectors or +size{K,M,G,T,P} (322967552-419430399, default 419430399): +2G
Created a new partition 6 of type 'Linux' and of size 2 GiB.
Command (m for help): p
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 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: 0x3bce8aa0
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 211814399 209715200 100G 83 Linux
/dev/sda3 211814400 218105855 6291456 3G 82 Linux swap / Solaris
/dev/sda4 218105856 419430399 201324544 96G 5 Extended
/dev/sda5 218107904 322965503 104857600 50G 83 Linux
/dev/sda6 322967552 327161855 4194304 2G 83 Linux
Command (m for help): w
The partition table has been altered.
Syncing disks.
[root@CentOS8 ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 100G 0 part /
├─sda3 8:3 0 3G 0 part [SWAP]
├─sda4 8:4 0 1K 0 part
├─sda5 8:5 0 50G 0 part /data
└─sda6 8:6 0 2G 0 part
sr0 11:0 1 8.6G 0 rom
#创建2G ext4文件系统
[root@CentOS8 ~]#mkfs.ext4 -b 2048 -L 'TEST' -m 1 /dev/sda6
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 1048576 2k blocks and 131072 inodes
Filesystem UUID: 344bd85b-cf28-4ace-aa25-a962f56a554f
Superblock backups stored on blocks:
16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
[root@CentOS8 ~]#blkid | grep /dev/sda6
/dev/sda6: LABEL="TEST" UUID="344bd85b-cf28-4ace-aa25-a962f56a554f" BLOCK_SIZE="2048" TYPE="ext4" PARTUUID="3bce8aa0-06"
#创建text挂载点并添加挂载配置使开机自动挂载
[root@CentOS8 ~]#mkdir /test
[root@CentOS8 /]#vim /etc/fstab
UUID=344bd85b-cf28-4ace-aa25-a962f56a554f /test ext4 defaults 0 0
#设置默认挂载acl选项
[root@CentOS8 ~]#tune2fs -o acl /dev/sda6
[root@CentOS8 /]#reboot
[root@CentOS8 ~]#df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 2031306 9236 1992908 1% /test
[root@CentOS8 ~]#tune2fs -l /dev/sda6
tune2fs 1.45.6 (20-Mar-2020)
Filesystem volume name: TEST
Last mounted on: <not available>
Filesystem UUID: 344bd85b-cf28-4ace-aa25-a962f56a554f
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery 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 #分区挂载选项支持acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
3.3.2 创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
#创建两个分区,/dev/sda7和/dev/sda8 大小均为10G 且分区格式为lvm
[root@CentOS8 ~]#fdisk /dev/sda
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.
Command (m for help): p
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 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: 0x3bce8aa0
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 211814399 209715200 100G 83 Linux
/dev/sda3 211814400 218105855 6291456 3G 82 Linux swap / Solaris
/dev/sda4 218105856 419430399 201324544 96G 5 Extended
/dev/sda5 218107904 322965503 104857600 50G 83 Linux
/dev/sda6 322967552 327161855 4194304 2G 83 Linux
Command (m for help): n
All primary partitions are in use.
Adding logical partition 7
First sector (327163904-419430399, default 327163904):
Last sector, +sectors or +size{K,M,G,T,P} (327163904-419430399, default 419430399): +10G
Created a new partition 7 of type 'Linux' and of size 10 GiB.
Command (m for help): t
Partition number (1-7, default 7): 7
Hex code (type L to list all codes): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden or c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi ea Rufus alignment
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT
10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f1 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f4 SpeedStor
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ f2 DOS secondary
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fc VMware VMKCORE
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fd Linux raid auto
1c Hidden W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep
1e Hidden W95 FAT1 80 Old Minix be Solaris boot ff BBT
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'.
Command (m for help): n
All primary partitions are in use.
Adding logical partition 8
First sector (348137472-419430399, default 348137472):
Last sector, +sectors or +size{K,M,G,T,P} (348137472-419430399, default 419430399): +10G
Created a new partition 8 of type 'Linux' and of size 10 GiB.
Command (m for help): t
Partition number (1-8, default 8): 8
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'.
Command (m for help): p
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 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: 0x3bce8aa0
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 211814399 209715200 100G 83 Linux
/dev/sda3 211814400 218105855 6291456 3G 82 Linux swap / Solaris
/dev/sda4 218105856 419430399 201324544 96G 5 Extended
/dev/sda5 218107904 322965503 104857600 50G 83 Linux
/dev/sda6 322967552 327161855 4194304 2G 83 Linux
/dev/sda7 327163904 348135423 20971520 10G 8e Linux LVM
/dev/sda8 348137472 369108991 20971520 10G 8e Linux LVM
Command (m for help): w
The partition table has been altered.
Syncing disks.
#安装lvm管理工具,查看工具包安装文件
[root@CentOS8 ~]#yum -y install lvm2
[root@CentOS8 ~]#rpm -ql lvm2
#创建物理卷PV
[root@CentOS8 ~]#pvcreate /dev/sda7
Physical volume "/dev/sda7" successfully created.
[root@CentOS8 ~]#pvcreate /dev/sda8
Physical volume "/dev/sda8" successfully created.
[root@CentOS8 ~]#pvs
PV VG Fmt Attr PSize PFree
/dev/sda7 lvm2 --- 10.00g 10.00g
/dev/sda8 lvm2 --- 10.00g 10.00g
#创建卷组VG,且PE大小为16MB
[root@CentOS8 ~]#vgcreate -s 16M testvg /dev/sda{7,8}
Volume group "testvg" successfully created
[root@CentOS8 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
testvg 2 0 0 wz--n- <19.97g <19.97g
[root@CentOS8 ~]#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 3peGQY-6UoH-3haX-rQCG-OeEY-jFcj-wKPFNu
#创建逻辑卷LV,大小为5G的testlv
[root@CentOS8 ~]#lvcreate -n testlv -L 5G testvg
Logical volume "testlv" created.
[root@CentOS8 ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
testlv testvg -wi-a----- 5.00g
[root@CentOS8 ~]#lvdisplay
--- Logical volume ---
LV Path /dev/testvg/testlv
LV Name testlv
VG Name testvg
LV UUID c2bGkH-5o3O-pM60-Kvxd-VoxM-bzoz-Nlgr0S
LV Write Access read/write
LV Creation host, time CentOS8.localdomain, 2021-03-26 06:21:59 +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:0
[root@CentOS8 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
testvg 2 1 0 wz--n- <19.97g <14.97g
#创建ext4文件系统并自动挂载/users目录
[root@CentOS8 ~]#mkfs.ext4 /dev/testvg/testlv
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 1310720 4k blocks and 327680 inodes
Filesystem UUID: 2b540cd3-9f3a-4617-8940-1ae155b51474
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@CentOS8 ~]#blkid
/dev/sda7: UUID="F3GTs3-X70f-lifj-Cjbz-QCp5-tk7F-3Qz3q0" TYPE="LVM2_member" PARTUUID="3bce8aa0-07"
/dev/sda8: UUID="Qk2QT3-fUdm-w4QT-3TDO-BUbM-kZbv-PEPNC2" TYPE="LVM2_member" PARTUUID="3bce8aa0-08"
/dev/sr0: BLOCK_SIZE="2048" UUID="2020-11-18-21-39-52-00" LABEL="CentOS-8-3-2011-x86_64-dvd" TYPE="iso9660" PTUUID="6b8b4567" PTTYPE="dos"
/dev/mapper/testvg-testlv: UUID="2b540cd3-9f3a-4617-8940-1ae155b51474" BLOCK_SIZE="4096" TYPE="ext4"
[root@CentOS8 ~]#mkdir /users
[root@CentOS8 ~]#vim /etc/fstab
#最后一行,添加
UUID=2b540cd3-9f3a-4617-8940-1ae155b51474 /users ext4 defaults 0 0
#手动挂载文件系统
[root@CentOS8 ~]#mount -a
[root@CentOS8 ~]#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/testvg-testlv 4.9G 20M 4.6G 1% /users