目录
一、硬盘存储容量
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)为单位。
用于读取和写入数据。
磁头数通常是2的幂次(如8个磁头表示为3位二进制数)。
每个磁盘上的同一半径的所有磁道组成一个柱面。
磁道数表示为10位二进制数。
磁盘上最小的可寻址存储单元。
每个扇区的字节数通常为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柱面=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
磁盘上的每一个区域可以通过柱面、磁头和扇区来唯一定位。这三个参数的组合决定了磁盘上的一个具体位置。
在Linux中,硬盘和分区等设备均表示为文件。例如,/dev/sdb5
表示一个具体的分区。
sd
表示SCSI设备hd
表示IDE设备查看硬盘的整体情况和分区情况
Device:分区的设备文件名称。
Boot:是否是引导分区。若是,则有“*”标识。
Start:该分区在硬盘中的起始位置(柱面数)。
End:该分区在硬盘中的结束位置(柱面数)。
Blocks:分区的大小,以 Blocks(块)为单位,默认的块大小为 1024 字节。
Id:分区对应的系统 ID 号。83 表示 Linux 中的 XFS 分区或 EXT4 分区、8e 表示 LVM 逻辑卷。LVM 是 Linux 操作系统中对磁盘分区进行管理的一种逻辑机制,与之相关的知识将在后面的章节介绍。
System:分区类型。识别到新的硬盘设备后,就可以在该硬盘中建立新的分区了。在 Linux 操作系统中,分区和格式化的过程是相对独立的,关于格式化分区的操作将在后续内容中讲解。
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) #特殊功能,不建议初学者使用
首先建立第一个主分区(/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 //创建分区大小
lsblk 以树形查看磁盘分区
blkid 查看磁盘的UUID 唯一
blkid /dev/sdb1 //查看磁盘分区的UUID
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
挂载文件系统、ISO镜像到指定文件夹
mount [ -t 类型 ] 存储设备 挂载点目录 #用于指定文件系统类型,通常可以省略,由系统自动识别
mount -o loop ISO镜像文件 挂载点目录
-o options 主要用来描述设备或档案的挂接方式 #挂载参数列表,以英文逗号分隔:如用来描述特殊设备,用loop指定
loop:用来把一个文件当成硬盘分区挂接上系统
卸载已挂载的文件系统
umount 存储设备位置
umount 挂载点目录
.作用df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。
df格式 [options]
主要参数
-s:对每个Names参数只给出占用的数据块总数。
-a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-k:以1024字节为单位列出磁盘空间使用情况。
-x:跳过在不同文件系统上的目录不予统计。
-l:计算所有的文件大小,对硬链接文件则计算多次。
-i:显示inode信息而非块使用量。
-h:以容易理解的格式印出文件系统大小,例如136KB、24MB、21GB。
-P:使用POSIX输出格式。
-T:显示文件系统类型。
-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 主要是用来划分容量大于 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 #格式化