一、常识

扇区(sector)是磁盘最小的物理存储单元,单位是512字节
操作系统无法对数目众多的扇区进行寻址,因此操作系统将相邻的扇区组合在一起,形成了块block(8个扇区,4k大小)
在Linux文件系统中多个连续的扇区称之为block,块,也是在系统中被认为是最小的存储单位 du -h /tmp/
在windows文件系统中多个连续的扇区称作簇
操作系统规定,一个block只能存放一个文件的内容,因此文件占用空间,只能是block的整数倍 du -h /etc/

即使文件大小,小于一个block,也就是小于4k,同样占用一个block的大小

常见的文件系统:
1、FAT16、FAT32,最早的Windows的文件系统,缺点是单个文件不能操作2GB
2、NTFS文件系统,支持文件加密,采用日志形式的文件系统,详细的记录磁盘的读写操作
3、exFAT文件系统,新式的文件系统,单个文件支持16GB,能够在Windows、linux、mac同时使用

一块硬盘的结构如下:
系统默认分区1-4留给了主分区和扩展分区
1、主分区1*(星号代表引导分区,引导分区安装在这里)
2、主分区2、主分区3
3、主分区4(extended)
逻辑分区

二、fdisk命令

  1. [root@ylinux ~]# fdisk -l #查看磁盘分区信息
  2. Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors #sda第一块scsi硬盘,大小21.5
  3. Units = sectors of 1 * 512 = 512 bytes
  4. Sector size (logical/physical): 512 bytes / 512 bytes
  5. I/O size (minimum/optimal): 512 bytes / 512 bytes
  6. Disk label type: dos #磁盘格式MBR主分区引导记录//GPT分区
  7. Disk identifier: 0x000a86e8
  8. Device Boot Start End Blocks Id System
  9. /dev/sda1 * 2048 2099199 1048576 83 Linux #引导分区
  10. /dev/sda2 2099200 41943039 19921920 8e Linux LVM #第二个主分区
  11. Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors #第二块scsi硬盘
  12. Units = sectors of 1 * 512 = 512 bytes
  13. Sector size (logical/physical): 512 bytes / 512 bytes
  14. I/O size (minimum/optimal): 512 bytes / 512 bytes
  15. Disk /dev/mapper/centos-root: 18.2 GB, 18249416704 bytes, 35643392 sectors
  16. Units = sectors of 1 * 512 = 512 bytes
  17. Sector size (logical/physical): 512 bytes / 512 bytes
  18. I/O size (minimum/optimal): 512 bytes / 512 bytes
  19. Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
  20. Units = sectors of 1 * 512 = 512 bytes
  21. Sector size (logical/physical): 512 bytes / 512 bytes
  22. I/O size (minimum/optimal): 512 bytes / 512 bytes
  23. [root@ylinux ~]#
  1. 分区:
  2. fdisk /dev/sdb #多使用m帮助,4个主分区+逻辑分区,小于2TB的
  3. parted /dev/sdb #针对大于2TB的进行分区,然后磁盘格式为gbt
  1. [root@ylinux ~]# df -h #查看当前设备的挂载磁盘
  2. Filesystem Size Used Avail Use% Mounted on
  3. devtmpfs 974M 0 974M 0% /dev
  4. tmpfs 991M 0 991M 0% /dev/shm
  5. tmpfs 991M 11M 980M 2% /run
  6. tmpfs 991M 0 991M 0% /sys/fs/cgroup
  7. /dev/mapper/centos-root 17G 5.1G 12G 30% /
  8. /dev/sda1 1014M 213M 802M 21% /boot
  9. tmpfs 199M 12K 199M 1% /run/user/42
  10. tmpfs 199M 0 199M 0% /run/user/0
  11. [root@ylinux ~]# cat /proc/partitions #磁盘分区表号
  12. major minor #blocks name
  13. 11 0 4601856 sr0
  14. 8 0 20971520 sda
  15. 8 1 1048576 sda1
  16. 8 2 19921920 sda2
  17. 8 16 5242880 sdb
  18. 8 17 262144 sdb1
  19. 8 18 1 sdb2
  20. 253 0 17821696 dm-0
  21. 253 1 2097152 dm-1
  22. [root@ylinux ~]# partx -a /dev/sdb #让内核重读磁盘分区表

三、文件系统格式化、挂载

日志型文件系统,系统会自动保存用户的操作日志,即使突然崩溃也能找回文件
mkfs针对磁盘分区进行格式化文件系统
fsck命令,修复文件系统的命令
默认读取/etc/fstab开机挂载文件的

  1. [root@ylinux opt]# cat /etc/fstab
  2. #
  3. # /etc/fstab
  4. # Created by anaconda on Mon Nov 30 16:55:33 2020
  5. #
  6. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  7. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  8. #
  9. /dev/mapper/centos-root / xfs defaults 0 0 #此次如果最后一位数字为1表示开机时需要对文件系统进行检查
  1. [root@ylinux opt]# lsblk -f #查看磁盘对应的文件系统
  2. NAME FSTYPE LABEL UUID MOUNTPOINT
  3. sda
  4. ├─sda1 xfs 8decaa3e-dcdc-4674-bdf5-112b4d1df929 /boot
  5. └─sda2 LVM2_member HbnrhU-V3O1-7zIt-5fCV-d2lu-8aew-j38Zwm
  6. ├─centos-root
  7. xfs 20dff565-ecdf-44e0-88bd-d665d241691e /
  8. └─centos-swap
  9. swap b033a1e6-8de1-4298-87b4-f4a2a8002d36 [SWAP]
  10. sdb
  11. └─sdb1
  12. sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
  1. [root@ylinux opt]# mkfs.ext
  2. mkfs.ext2 mkfs.ext3 mkfs.ext4
  3. [root@ylinux opt]# mkfs.xfs /dev/sdb1 #格式化为xfs文件系统
  4. meta-data=/dev/sdb1 isize=512 agcount=4, agsize=6400 blks
  5. = sectsz=512 attr=2, projid32bit=1
  6. = crc=1 finobt=0, sparse=0
  7. data = bsize=4096 blocks=25600, imaxpct=25
  8. = sunit=0 swidth=0 blks
  9. naming =version 2 bsize=4096 ascii-ci=0 ftype=1
  10. log =internal log bsize=4096 blocks=855, version=2
  11. = sectsz=512 sunit=0 blks, lazy-count=1
  12. realtime =none extsz=4096 blocks=0, rtextents=0

linux系统下文件需要挂载才能使用

  1. mount 将指定的文件系统挂载到指定的目录上
  2. 分区 格式化 挂载
  3. -l 显示系统所有挂载的设备信息
  4. -t 指定文件系统类型
  5. -o 添加挂载功能
  6. -r read挂载后只读
  7. -w 可读写
  1. mount 设备 挂载点
  2. [root@ylinux opt]# df -Th #显示所有的设备和挂载的情况
  3. [root@ylinux opt]# mount /dev/sdb1 /mnt #将sdb1挂载到mnt下,挂载建覆盖mnt下的文件,取消挂载之后文件恢复
  4. [root@ylinux mnt]# mount -o ro /dev/sdb1 /mnt #以只读的方式挂载
  5. mount -o noexec /dev/sdb1 /mnt #不能执行二进制文件
  1. 在/etc/fstab中添加:
  2. /dev/sdb1 /mnt/mnt1 ext4 defaults 0 0 #开机自动挂载信息(磁盘 挂载点 类型 0 0是否备份 是否检查磁盘),mount -a重新加载挂载表,无需重启

四、raid 磁盘冗余阵列

  1. raid 0 数据依次写入到物理磁盘,在理想情况下,写入速度是翻倍的
  2. 由于数据分别写入到两个硬盘中,所有任意一块损坏数据不可用
  3. raid 1 数据同时写入到多块硬盘中,任意一块损坏数据不受影响,容量减半
  4. raid 3 利用计算机异或运算,数字相同为0,不通为1
  5. 最少三块硬盘(两块数据盘,一块异或盘),通过异或运算当一块故障时反推损坏硬盘的数据
  6. raid 4 强化的raid 3技术,三块盘都作为数据盘,异或值作为数据存在数据盘中,每一块磁盘即存储数据也存储异或值,单盘故障无影响
  7. raid 10 raid 0 + raid 1
  8. 至少四块盘,通过raid 1实现磁盘两两备份,提高数据安全性;又通过raid 0提高磁盘的读写效率
  9. 只要不是同一个raid 1的磁盘组的两个磁盘故障,数据无影响
硬RAID与软RAID
硬RAID购买磁盘阵列卡
软RAID CPU去控制硬盘驱动器,进行数据转换,计算的过程就是软件raid的实现过程
       消耗额外的CPU资源,造成服务器压力
RAID 10的部署    先raid 0在raid 1
1.部署4个硬盘
2.学习mdadm 用于建设,管理和监控RAID技术的命令
3.mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sda    /dev/sdb /dev/sdc /dev/sdd
4.格式化、挂载、使用
5.mdadm    -D    /dev/md0    查看挂载详细信息

五、LVM

当配置了raid磁盘之后,容量大小就是固定的,扩容很麻烦,
不同的磁盘分区,都是相对独立的,没有任何联系,可能导致空间利用率低
logical volume manager 逻辑卷管理技术,LVM将一个或者多个磁盘在逻辑上进行了合并,相当于一个大的硬盘去使用;当空间不够时,可以使用其他硬盘的空间,这就是一个动态的磁盘容量管理技术
LVM的使用方式:
1、硬盘的多个分区,由LVM统一进行管理为卷组,可以弹性的调整卷组的大小,加入新硬盘,可以充分的利用磁盘容量
文件系统的创建在逻辑卷上,逻辑卷可以根据需求改变大小(总容量控制在卷组中)
2、基于硬盘创建LVM
多块硬盘做成逻辑卷,将整个逻辑卷统一管理,对分区进行动态的扩容

LVM常见名词:
    PP(physical parttion),物理分区    LVM直接创建在物理分区之上的
    PV(physical volume),物理卷    处于LVM的最底层,一般一个PV对应一个PP
    PE(physcal extends),物理区域    PV中可以用于分配的最小存储单位,同一个VG所有的PV中的PE大小相同
    VF(volume group),卷组    卷组创建在PV之上,可以划分为多个PV
    LE(logical extends),逻辑扩展单元,LE是组成LV的基本单元,一个LE对应一个PE
    LV(logical volume),逻辑卷,创建咋VG之上,是一个可以动态扩容的分区概念

image.png
LVM原理:
LVM动态扩容大小,其实就是通过互相交换PE的过程,达到弹性扩容分区大小
扩大容量,就是将PE添加到直接的LV中;减少容量,就是将剔除PE的过程
PE默认大小一般都是4M,LVM最多是可以创建出65534个PE,因此LVM最大的VG卷组单位是256G
PE其实是LVM最小的存储单位,类似于操作系统block(4K)
LV逻辑卷的概念(类似普通分区,/dev/sda)