磁盘分区总结

一、磁盘术语总结

磁盘结构图

  • head:一个盘面对应一个磁头
  • track:磁盘上的数据存储区域,这些区域通常以同心圆的形式排列。
  • sector: 把磁道按照每512字节细分出扇区,每个磁道上的扇区数量可不同。
  • cylinder: 柱面是硬盘上所有磁头(磁头数等于硬盘的磁头面数)可以同时读写的磁道的集合。每个柱面包含相同数量的磁道,这些磁道在硬盘的每个面上都是对应的。

二、MBR、GPT

2.1 MBR

MBR:Master Boot Record
分区结构图:

在MBR分区中,因为在0磁道0扇区上只留了64bytes空间存储分区表信息,而一个分区的关键信息要占用16个字节来存放,所以每块硬盘只能分四个分区:3个主分区+1个拓展分区,其中拓展分区中可以分出N个逻辑分区。每个分区中最大空间不能超过2T

2.2 GPT分区

GPT:GUID(Globals Unique Identifiers) partition table

GPT分区结构分为4个区域:
GPT头
分区表
GPT分区
备份区域

GPT使用64位寻址空间,不限制分区数量,理论最大分区9.4ZB的存储空间。

三、分区文件系统命令总结

3.1 分区命令

fdisk

#使用fdisk命令对sdb硬盘分区
[root@centos7.9_105 ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb    8:16   0  20G  0 disk 
#查看硬盘情况
[root@centos7.9_105 ~]# fdisk -l /dev/sdb
....
#查看相关帮助
]# fdisk  /dev/sdb
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
#新建分区 一个5个G的分区
[root@centos7.9_105 ~]# fdisk  /dev/sdb 
......
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p  #选择分区类型
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G #分配分区大小
Partition 1 of type Linux and of size 5 GiB is set

Command (m for help): p  #打印分区情况

Disk /dev/sdb: 21.5 GB, 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
Disk label type: dos
Disk identifier: 0x1f2e77b5

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux

Command (m for help): w  #保存并退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
#查看分区
[root@centos7.9_105 ~]# lsblk /dev/sdb
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  20G  0 disk 
└─sdb1   8:17   0   5G  0 part 

parted

#prated命令分区和fdisk命令不同,parted命令是非交互式的
#查看分区情况
]# parted -l
....
#创建gpt分区
[root@centos7.9 ~]# parted /dev/sdc mklabel gpt
Information: You may need to update /etc/fstab.

[root@centos7.9 ~]# parted /dev/sdc print
....
Partition Table: gpt

[root@centos7.9 ~]# parted /dev/sdc mkpart primary 1 1001
Information: You may need to update /etc/fstab.

[root@centos7.9 ~]# parted /dev/sdc print
......
Number  Start   End     Size    File system  Name     Flags
 1      1049kB  1001MB  1000MB               primary

[root@centos7.9 ~]# parted /dev/sdc mkpart primary 1002 2000

#删除分区
[root@centos7.9 ~]# parted /dev/sdc rm 2                                  
Information: You may need to update /etc/fstab.

[root@centos7.9 ~]# parted /dev/sdc print                                 
......
Number  Start   End     Size    File system  Name     Flags
 1      1049kB  1001MB  1000MB               primary

mkfs

#mkfs用于将分区格式化为文件系统
[root@centos7.9 ~]# mkfs
mkfs         mkfs.btrfs   mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.minix   mkfs.xfs

#将/dev/sdb1格式化成ext2文件系统
[root@centos7.9 ~]# mkfs.ext2 /dev/sdb1 
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
......

tune2fs

tune2fs 是一个用于调整 Linux 文件系统参数的命令行工具,特别是针对 ext2、ext3 和 ext4 文件系统。这个工具可以设置或查看文件系统的许多属性,例如块大小、检查间隔、挂载计数等。

以下是一些 tune2fs 的常用选项:

-j:启用或修改日志文件系统(如 ext3 或 ext4)的日志功能。
-c:设置文件系统的最大挂载次数。
-i:设置文件系统的挂载间隔,即两次挂载之间需要等待的时间。
-l:列出文件系统的详细信息。
-o:启用或禁用文件系统的某些特性,如用户配额、文件系统日志等。
-m:设置文件系统的预留空间百分比,用于系统进程和用户。

[root@centos7.9 ~]# tune2fs -l /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          dd770993-4e9c-47a7-8542-6844e62e98b9
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
......

xfs_info

fs_info 可以提供有关文件系统状态、配置和统计信息的详细信息。
以下是一些 xfs_info 的常用功能和输出示例:

文件系统状态:显示文件系统的挂载状态、是否正在使用等信息。
块大小:显示文件系统使用的块大小。
inode 数量:显示文件系统中 inode 的总数和已使用的数量。
空间使用情况:显示文件系统的空间使用情况,包括总空间、已用空间、可用空间等。
挂载选项:显示文件系统挂载时使用的选项。
文件系统特性:显示文件系统支持的特性,如延迟分配、空间预分配等。

[root@centos7.9 ~]# xfs_info /dev/sda1
meta-data=/dev/sda1              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
......

fsck

fsck 可以检测文件系统中的错误,如损坏的目录结构、丢失的文件、不一致的链接等,并尝试自动修复这些问题。
常用选项
-A:检查所有挂载的文件系统。
-R:从根文件系统开始检查,然后递归地检查所有其他文件系统。
-N:不执行实际的修复操作,只进行模拟检查。
-y:自动回答所有提示,执行修复操作。
-n:不自动回答任何提示,需要用户确认。
-v:详细模式,显示更多信息。
-f 或 --force:强制检查,即使文件系统看起来是干净的。

mount和unmount

mount
格式化之后的分区与本地文件目录挂载,使得分区可以正常使用。
常用选项
-a:挂载 /etc/fstab 中定义的所有文件系统。
-o:后面跟挂载选项,如 ro(只读)、rw(读写)、noexec(不允许执行二进制文件)等。
-t:指定文件系统的类型,如 ext4、xfs、ntfs 等。
-L:通过标签挂载设备。
-U:通过 UUID 挂载设备。
#把前面格式化的分区/dev/sdb1挂载到/nmt/data
[root@centos7.9 ~]# mkdir /mnt/data
[root@centos7.9 ~]# mount /dev/sdb1 /mnt/data/
[root@centos7.9 ~]# df -Th |grep  /mnt
/dev/sdb1               ext2      5.0G   10M  4.7G   1% /mnt/data
注:mount命令只是临时挂载,当服务器重启,挂载将会取消,想要实现永久挂载需要把挂载关系写入/etc/fstab文件中,或者把挂载命令写入rc.local文件中。

unmount
用于解除文件和分区的挂载关系

常用选项
-f:强制卸载文件系统,即使有进程正在使用该文件系统。
-n:卸载时不更新 /etc/mtab 文件(通常在卸载根文件系统时使用)。
-l:懒卸载,即在下次挂载时执行必要的清理工作,而不是立即执行。
-a:卸载所有挂载的文件系统。
#解除/dev/sdb1 /mnt/data/的挂载关系
[root@centos7.9 ~]# umount /dev/sdb1 /mnt/data/

四、raid 相关

RAID(Redundant Array of Independent Disks)是一种将多个硬盘驱动器组合成一个逻辑单元的数据存储虚拟化技术,以提高性能、可靠性或容量。以下是几种常见RAID级别的工作原理、利用率、冗余性、性能和最少硬盘数量的总结:

RAID 0

  • 工作原理:条带化,数据分散存储在两个或多个硬盘上,没有冗余。
  • 利用率:100%,所有硬盘空间都可用于存储数据。
  • 冗余性:没有冗余,单个硬盘故障会导致数据丢失。
  • 性能:读写性能高,因为数据分散在多个硬盘上并行处理。
  • 最少硬盘数量:2个。

RAID 1

  • 工作原理:镜像,数据在两个硬盘上存储两份,完全冗余。
  • 利用率:50%,只有一半的硬盘空间可用于存储数据。
  • 冗余性:高,即使一个硬盘故障,另一个硬盘仍然可以工作。
  • 性能:写入性能较低,因为数据需要同时写入两个硬盘;读取性能较高,可以同时从两个硬盘读取。
  • 最少硬盘数量:2个。

RAID 5

  • 工作原理:带奇偶校验的条带化,数据和奇偶校验信息交错存储在三个或更多的硬盘上。
  • 利用率:(n-1)/n,其中n是硬盘数量,例如,3个硬盘的利用率约为67%。
  • 冗余性:允许单个硬盘故障,奇偶校验信息用于数据恢复。
  • 性能:写入性能较低,因为需要计算奇偶校验;读取性能较高。
  • 最少硬盘数量:3个。

RAID 10 (或称 RAID 1+0)

  • 工作原理:先镜像再条带化,结合了RAID 1和RAID 0的特点。
  • 利用率:50%,因为先进行镜像,再进行条带化。
  • 冗余性:高,每个数据块都有镜像副本。
  • 性能:读写性能都高,因为数据分布在多个硬盘上并行处理。
  • 最少硬盘数量:4个(2个用于镜像,每个镜像包含2个硬盘)。

RAID 01 (或称 RAID 1+0)

  • 工作原理:先条带化再镜像,与RAID 10相反,但性能和特性相似。
  • 利用率:50%,与RAID 10相同。
  • 冗余性:高,与RAID 10相同。
  • 性能:读写性能都高,与RAID 10相同。
  • 最少硬盘数量:4个。

五、lvm

LVM(Logical Volume Manager)是一种在现代操作系统中广泛使用的高级硬盘管理工具,特别是在Linux系统中。LVM 提供了一种灵活的方式来管理磁盘空间,允许用户以逻辑卷的形式动态调整存储空间的大小,而不需要重新格式化或重新分区。

#创建pv
[root@centos7.9 ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created.
#查看pv
[root@centos7.9 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--  <39.00g   4.00m
  /dev/sdc1         lvm2 ---  954.00m 954.00m

[root@centos7.9 ~]# pvdisplay /dev/sdc1
  "/dev/sdc1" is a new physical volume of "954.00 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name               
  PV Size               954.00 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               x9XHzS-waFV-aWqf-BlMw-WR2v-Z7y2-GiVCu8
#移除pv
[root@centos7.9 ~]# pvremove /dev/sdc1

VG
#创建vg
[root@centos7.9 ~]# vgcreate -s 16M testvg /dev/sdc1
  Volume group "testvg" successfully created
[root@centos7.9 ~]# vgs testvg 
  VG     #PV #LV #SN Attr   VSize   VFree  
  testvg   1   0   0 wz--n- 944.00m 944.00m

#扩展vg
[root@centos7.9 ~]# vgextend testvg /dev/sdb1

  Physical volume "/dev/sdb1" successfully created.
  Volume group "testvg" successfully extended
[root@centos7.9 ~]# vgs testvg 
  VG     #PV #LV #SN Attr   VSize  VFree 
  testvg   2   0   0 wz--n- <5.91g <5.91g

lv
#创建lv
[root@centos7.9 ~]# lvcreate -l 100 -n lv1 testvg
  Logical volume "lv1" created.

[root@centos7.9 ~]# lvcreate -L 100 -n lv2 testvg
  Rounding up size to full physical extent 112.00 MiB
  Logical volume "lv2" created.
[root@centos7.9 ~]# lvcreate -l 10%free -n lv3 testvg
  Logical volume "lv3" created.
#查看lv
[root@centos7.9 ~]# lvs /dev/testvg/lv*
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  testvg -wi-a-----   1.56g                                                    
  lv2  testvg -wi-a----- 112.00m                                                    
  lv3  testvg -wi-a----- 432.00m        

六、程序包管理器

程序包管理器在不同发行版Linux中有所不同

6.1 Redhat

在centos、rocky等红帽系列Linux系统中使用的包管理器有rpm和yum,rpm不能自动解决安装包之间的依赖关系,yum可以自动解决包之间的依赖关系。

rpm常用用法
1. 安装软件
rpm -i 包名
2.查看包产生那些目录
rmp -ql 包名
3查看是否已安装指定的包
rpm -qa 包名

yum 常用用法
1.安装软件
yum install -y 包名
2.卸载软件 
yum remove 包名
3.查询命令来自哪个安装包
yum provides 命令名
4.列出所有安装包
yum list

6.2 Debian

在Debian系列的Linux中常用的包管理器是dkpg和apt

dpkg常用用法
1.安装文件
dpkg -i 包名
2.查看安装包产生的文件
dpkg -L 包名
3.卸载包
dpkg -r 包名
4.检查包是否安装
dpkg -l | grep 包名
5.检查软件包是否依赖其他包
dpkg -c 包名

apt常用用法
1.更新安装包信息
apt update
2.安装软件
apt install -y 包名
3.卸载软件且删除依赖
apt autoremove 包名

6.3 yum包管理器

yum包管理器是基于C/S的工作模式,分为客户端和服务端,提供下载包的一段为服务端。

示例:搭建私有仓库

服务端:

1.安装一个能提供httP服务的软件nginx或者apache都可以
[root@server ~]# yum -y install httpd
2.设置开机自启
[root@server ~]# systemctl enable --now httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
3.检查80端口是否监听中
[root@server ~]# ss -ntlp |grep 80
LISTEN     0      128         :::80                      :::*                   users:(("httpd",pid=1309,fd=4),("httpd",pid=1308,fd=4),("httpd",pid=1307,fd=4),("httpd",pid=1306,fd=4),("httpd",pid=1305,fd=4),("httpd",pid=1304,fd=4))
4.浏览器访问服务端地址或者添加域名解析访问域名看看访问是否正常
5.从网络上下载包到本地
[root@server ~]# yum install -y dnf-4.0.9.2-1.el7_6.noarch
[root@server ~]# yum install -y python3
dnf reposync --repoid=epel --download-metadata -p /var/www/html/ 
#--repoid=是从哪个仓库下载包 --d..这里是存放包的地址,会自动生成和前面下载包一致的文件夹
#在同步之前可以先使用yum repolist看看有哪些源可以用
#检查是否已下载包
[root@server ~]#cd /var/www/html/
[root@server html]#ls epel/
Packages  repodata
#Packages是安装包存放目录 repodata是元数据目录

浏览器访问界面:

服务端从网络上下载rpm包过程

客户端:

#确保客户端和服务端的网络可达可以先ping一下
[root@client ~]#ping 10.0.0.20
PING 10.0.0.20 (10.0.0.20) 56(84) bytes of data.
64 bytes from 10.0.0.20: icmp_seq=1 ttl=64 time=0.208 ms

#配置源地址
[root@client ~]#cat /etc/yum.repos.d/test.repo
[localrpm]
name=localrpm
baseurl=http://10.0.0.20/epel/ #这里的地址要是服务端的地址
gpgcheck=0
[BaseOS]
name=BaseOS
baseurl=file:///mnt/cdrom/BaseOS/
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///mnt/cdrom/AppStream/
gpgcheck=0
#清空缓存
[root@client ~]#yum clean all
0 files removed
[root@client ~]#yum repolist
#查看私有仓库信息
[root@client ~]#yum repoinfo localrpm
localrpm 185 MB/s | 14 MB 00:00
ustc 23 MB/s | 14 MB 00:00
Last metadata expiration check: 0:00:05 ago on Sun 18 Aug 2024 11:25:35 PM CST.
Repo-id : localrpm
Repo-name : localrpm
Repo-status : enabled
Repo-revision : 1723854430
Repo-updated : Sat 17 Aug 2024 08:27:52 AM CST
Repo-pkgs : 10,217
Repo-available-pkgs: 10,213
Repo-size : 19 G
Repo-baseurl : http://10.0.0.20/epel/
Repo-expire : 172,800 second(s) (last: Sun 18 Aug 2024 11:25:29 PM CST)
Repo-filename : /etc/yum.repos.d/test.repo
#私有仓库已经搭建完成,在安装软件时指定仓库即可使用

浏览器访问:http://10.0.0.20/epel可以看到有下面两个目录

此条目发表在第三周作业分类目录,贴了标签。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注