磁盘管理与文件系统

目录

一、硬盘存储容量
        1.1关键概念
        1.2硬盘存储容量公式
二、1.Linux 中使用的文件系统类型
        1.1磁盘分区的表示
        1.2文件系统
        1.3其他文件系统
三、fdisk
        3.1fdisk -l
        3.2交互模式中的常用指令
        3.3实操建分区
        3.4lsblk
四、gdisk命令
五、mount命令
六、umount命令
七、df命令
八、lsblk命令
九、自动挂载
十、gdisk 磁盘分区工具


一、硬盘存储容量

        硬盘存储容量是指硬盘能够存储数据的总量,通常以字节(B)、千字节(KB)、兆字节(MB)、千兆字节(GB)、和太字节(TB)为单位。

1.1关键概念

1.1.1磁头(Head)

用于读取和写入数据。

磁头数通常是2的幂次(如8个磁头表示为3位二进制数)。

1.1.2磁道(Cylinder)

每个磁盘上的同一半径的所有磁道组成一个柱面。

磁道数表示为10位二进制数。

1.1.3扇区(Sector)

磁盘上最小的可寻址存储单元。

每个扇区的字节数通常为512字节。

1.1.4柱面(Cylinder)

每个柱面由同一半径的所有磁道组成,跨越所有盘面。

一个柱面可以用来唯一定位磁盘上的一个区域。

1.2硬盘存储容量公式

硬盘存储容量可以通过以下公式计算:

存储容量=磁头数×柱面数×每柱面扇区数×每扇区字节数存储容量=磁头数×柱面数×每柱面扇区数×每扇区字节数

1.2.1例子计算

假设硬盘有以下参数:

  • 磁头数:8
  • 柱面数:1024
  • 每柱面扇区数:63
  • 每扇区字节数:512字节

计算硬盘存储容量:

存储容量=8×1024×63×512存储容量=8×1024×63×512

存储容量=8×1024×63×512=265,420,800字节存储容量=8×1024×63×512=265,420,800字节

转换为兆字节(MB):

存储容量=265,420,80010242≈253MB存储容量=10242265,420,800​≈253MB

1.2.2详细的柱面计算

假设柱面参数如下:

  • 扇区数:63
  • 磁头数:255
  • 磁道数:512

一个柱面的容量可以通过以下公式计算:

1柱面=512字节/扇区×扇区数/柱面×磁头数/柱面1柱面=512字节/扇区×扇区数/柱面×磁头数/柱面

将上述参数代入公式:

1柱面=512×63×2551柱面=512×63×255

1柱面=8,225,280字节1柱面=8,225,280字节

转换为兆字节(MB):

1柱面=8,225,28010242≈7.84MB1柱面=102428,225,280​≈7.84MB

1.2.3唯一定位磁盘区域

磁盘上的每一个区域可以通过柱面、磁头和扇区来唯一定位。这三个参数的组合决定了磁盘上的一个具体位置。

二、1.Linux 中使用的文件系统类型

1.1磁盘分区的表示

在Linux中,硬盘和分区等设备均表示为文件。例如,/dev/sdb5表示一个具体的分区。

  • sd表示SCSI设备
  • hd表示IDE设备
  • 硬盘的顺序号,以字母a、b、c等表示
  • 分区的顺序号,以数字1、2、3等表示。主分区编号为1-4,第一个逻辑分区始终从5开始。

1.1.1主启动记录(MBR)磁盘分区

  • 主启动记录(MBR):位于硬盘的第一个物理扇区,总共512字节。
    • 前446字节是主引导记录。
    • 分区表保存在第447-510字节,有4个分区记录区,每个记录区占16字节。
  • MBR磁盘分区:支持最大卷为2.2TB,每个磁盘最多有4个主分区,或3个主分区和1个扩展分区(扩展分区中可以有多个逻辑分区)。

1.2文件系统

1.2.1XFS

  • XFS:一种高性能的日志文件系统,擅长处理大文件,可支持上百万TB的存储空间。
    • 开启日志功能,即便发生宕机也能通过日志记录在短时间内恢复数据。

1.2.2SWAP

  • SWAP:交换文件系统,用于建立交换分区,相当于虚拟内存,缓解物理内存不足的问题。
    • 一般建议交换分区大小为物理内存的1.5~2倍。如果物理内存足够大(如8GB以上),可以不设置交换分区。
    • 交换分区不用于直接存储用户文件和目录。

1.2.3EXT4

  • EXT4:第4代扩展文件系统,默认用于存放文件和目录数据。
    • 是Linux系统中默认使用的文件系统(CentOS 7 默认使用XFS)。
    • 作为典型的日志型文件系统,具有良好的存取性能和稳定性。

1.3其他文件系统

  • JFS:多用于商业版本的UNIX操作系统,具有出色的性能表现。
  • FAT16/FAT32:常见于早期的Windows系统。
  • NTFS:微软公司的专有文件系统,Linux系统默认只支持从NTFS分区读取文件,写入文件需结合其他软件(如NTFS-3G)。

三、fdisk

3.1fdisk -l

查看硬盘的整体情况和分区情况 

 Device:分区的设备文件名称。
Boot:是否是引导分区。若是,则有“*”标识。
Start:该分区在硬盘中的起始位置(柱面数)。
End:该分区在硬盘中的结束位置(柱面数)。
Blocks:分区的大小,以 Blocks(块)为单位,默认的块大小为 1024 字节。
Id:分区对应的系统 ID 号。83 表示 Linux 中的 XFS 分区或 EXT4 分区、8e 表示 LVM 逻辑卷。LVM 是 Linux 操作系统中对磁盘分区进行管理的一种逻辑机制,与之相关的知识将在后面的章节介绍。
System:分区类型。识别到新的硬盘设备后,就可以在该硬盘中建立新的分区了。在 Linux 操作系统中,分区和格式化的过程是相对独立的,关于格式化分区的操作将在后续内容中讲解。

 3.2交互模式中的常用指令

fdisk指令说明
Command (m for help): m                      #输入m指令
  a   toggle a bootable flag                 #设置可引导标记
  b   edit bsd disklabel                     #修改bsd的磁盘标签
  c   toggle the dos compatibility flag      #设置DOS操作系统兼容标记
  d   delete a partition                     #删除一个分区
  l   list known partition types             #显示已知的分区类型,其中82为  Linux swap分区,83为Linux分区
  m   print this menu                        #显示帮助菜单
  n   add a new partition                    #增加一个新的分区
  o   create a new empty DOS partition table #创建一个新的空白的DOS分区表
  p   print the partition table              #显示磁盘当前的分区表
  q   quit without saving changes            #退出fdisk程序,不保存任何修改
  s   create a new empty Sun disklabel       #创建一个新的空白的Sun磁盘标签
  t   change a partition's system id         #改变一个分区的系统号码
  u   change display/entry units             #改变显示记录单位
  v   verify the partition table             #对磁盘分区表进行验证
  w   write table to disk and exit           #保存修改结果并退出fdisk程序
  x   extra functionality (experts only)     #特殊功能,不建议初学者使用

 3.3实操建分区

首先建立第一个主分区(/dev/sdb1),容量指定为 20GB,具体操作如下:
Command (m for help): n    //开始创建第 1 个分区
Partition type:
p    primary (0 primary, 0 extended, 4 free) e    extended
Select (default p): p        //选择创建的为主分区
Partition number (1-4, default 1): 1    //设置第一个主分区的编号为 
1 First sector (2048-209715199, default 2048):    //直接按Enter 键接受默认值
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +20G
Partition 1 of type Linux and of size 20 GiB is se     //创建分区大小

3.4lsblk

 lsblk 以树形查看磁盘分区

 blkid 查看磁盘的UUID   唯一 
blkid /dev/sdb1     //查看磁盘分区的UUID

 四、gdisk命令

gdisk命令交互模式中的指令

b 将GPT数据备份到一个文件
c 更改分区名称
d 删除一个分区
i 显示分区详细信息
l 列出已知分区类型。此处8200是Linux swap,8300是Linux filesystem(对应fdisk的82和83)。还有一个8e00是Linux LVM
n 增加一个新的分区
o 创建一个新的空白的GPT分区表
p 显示当前磁盘的分区表
q 退出gdisk程序,不保存任何修改
r 恢复和转换选项(仅限专家)
s 排序分区
t 改变分区的类型
v 验证磁盘分区表
w 将分区表写入裁判并退出(保存并退出)
x 额外功能(仅限专家)
? 显示帮助信息

创建系统文件(格式化)
mkfs -t xfs /dev/sdb1 和 mkfs.xfs /dev/sdb1

不重启加载新建的硬盘
磁盘添加完成,进入系统,使用下面命令扫描SCSI总线

echo "- - -" > /sys/class/scsi_host/host0/scan
                                    host1
                                    host2
创建系统文件(格式化)
mkfs -t xfs /dev/sdb1 和 mkfs.xfs /dev/sdb1

SWAP创建系统文件
mkswap /dev/sdb5  #创建分区
swapon 是开启swap   注:/dev/sdb2(swap分区)
swapof 是关闭swap     注:/dev/sdb2(swap分区)
swapon -s #查看每个分区的swap状态信息
free -m#查看总的swap状态信息

FAT32创建系统文件
mkfs -t vfat -F 32 /dev/sdb6 和mkfs.vfat -F 32 /dev/sdb6

[root@localhost ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 97.6G  0 part /
sdb      8:16   0   20G  0 disk 
└─sdb1   8:17   0   10G  0 part 
sr0     11:0    1 1024M  0 rom 

查看UUID
[root@localhost /]# blkid /dev/sdb1 
/dev/sdb1: UUID="9819f48c-34f5-42e0-8315-6201e1933884" TYPE="xfs" 
UUID=d0243353-c87e-4385-94cb-9fb000c4cf74 /  xfs   defaults   0 0

五、mount命令

挂载文件系统、ISO镜像到指定文件夹
mount  [ -t 类型 ]  存储设备  挂载点目录      #用于指定文件系统类型,通常可以省略,由系统自动识别
mount  -o loop  ISO镜像文件  挂载点目录
-o options 主要用来描述设备或档案的挂接方式    #挂载参数列表,以英文逗号分隔:如用来描述特殊设备,用loop指定
loop:用来把一个文件当成硬盘分区挂接上系统

六、umount命令

卸载已挂载的文件系统
umount  存储设备位置
umount  挂载点目录

七、df命令

.作用df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。
df格式 [options]
主要参数
-s:对每个Names参数只给出占用的数据块总数。
-a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-k:以1024字节为单位列出磁盘空间使用情况。
-x:跳过在不同文件系统上的目录不予统计。
-l:计算所有的文件大小,对硬链接文件则计算多次。
-i:显示inode信息而非块使用量。
-h:以容易理解的格式印出文件系统大小,例如136KB、24MB、21GB。
-P:使用POSIX输出格式。
-T:显示文件系统类型。

八、lsblk命令

-a    显示所有设备
-b    以bytes方式显示设备大小
-d    不显示 slaves 或 holders
-D    print discard capabilities
-e    排除设备
-f    显示文件系统信息
-h    显示帮助信息
-i    use ascii characters only
-m    显示权限信息
-l    使用列表格式显示
-n    不显示标题
-o    输出列
-P    使用key=”value”格式显示
-r    使用原始格式显示
-t    显示拓扑结构信息

九、自动挂载

在/etc/fstab 文件中,每一行记录对应一个分区或设备的挂载配置信息,这些信息从左到右包括六个字段(使用空格或制表符分隔),各部分的含义如下所述。
/dev/sdb1 /                       xfs     defaults        0 0

第 1 字段:设备名或设备卷标名。
第 2 字段:文件系统的挂载点目录的位置。
第 3 字段:文件系统类型,如 XFS、Swap 等。
第 4 字段:挂载参数,即mount 命令“-o”选项后可使用的参数。例如,defaults、rw、ro、
noexec 分别表示默认参数、可写、只读、禁用执行程序。
第 5 字段:表示文件系统是否需要 dump 备份(dump 是一个备份工具)。一般设为 1
时表示需要,设为 0 时将被 dump 忽略。
第 6 字段:该数字决定在系统启动时进行磁盘检查的顺序。0 表示不进行检查,1 表示优先检查,2 表示其次检查。根分区应设为 1,其他分区设为 2。
通过在/etc/fstab 文件中添加相应的挂载配置,可以实现开机后自动挂载指定的分区。例如,执行以下操作将添加自动挂载分区/dev/sdb1 的配置记录

十、gdisk 磁盘分区工具

gdisk 主要是用来划分容量大于 2T 的硬盘,大于 2T fdisk 搞不定两种类型的分区表:GPT 和 MBR ; MBR 不支持 4T 以上
GPT 分区:GPT,全局唯一标识分区表(GUID Partition Table),它使用 128 位 GUID 来唯一标识每个磁盘和分区,与 MBR 存在单一故障点不同,GPT 提供分区表信息的冗余,一个在磁盘头部一个在磁盘尾部;它通过 CRC 校验和来检测 GPT 头和分区表中的错误与损坏;默认一个硬盘支持 128 个分区
例:对 sdb 做 gpt 分区,创建一个 sdb1 
[root@xuegod63 ~]# gdisk /dev/sdb
。。。
Command (? for help): ?    # 查看帮助b    back up GPT data to a file
cchange a partition's name

ddelete a partition    #删除分区ishow detailed information on a partition llist known partition types
n    add a new partition    # 添加一个分区
o    create a new empty GUID partition table (GPT) p    print the partition table    # 打印分区表
qquit without saving changes    # 退出不保存
rrecovery and transformation options (experts only) s    sort partitions
t    change a partition's type code v    verify disk
w    write table to disk and exit    # # 写入分区表并退出x    extra functionality (experts only)
?    print this menu

Command (? for help): n    #新建分区表
Partition number (1-128, default 1):    #直接回车
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:    #直接回车, 从头开始划分空间Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +1G #给 1G 空间
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):      #分区类型直接回车注:8300 Linux filesystem ;8e00 Linux LVM 想查看,可以按 L 来显示Changed type of partition to 'Linux filesystem'

Command (? for help): p #查看
。。。
Number   Start (sector)    End (sector)   Size    Code Name
1    2048        2099199    1024.0 MiB 8300 Linux filesystem Command (? for help): w    #保存
Do you want to proceed? (Y/N): y    #确定写入
OK; writing new GUID partition table (GPT) to /dev/sdb. The operation has completed successfully.
[root@xuegod63 ~]# mkfs.xfs /dev/sdb1 #格式化

你可能感兴趣的:(数据结构)