linux学习[11]磁盘与文件系统(2):lsblk&blkid&parted&fdisk&gdisk&mkfs

前言:

写了VMware的磁盘扩容之后,磁盘分区格式化等操作用上了,这篇博客就做一个知识点补充归纳。

这篇博客主要写:
指令磁盘分区容量查看指令:lsblk、blkid、parted;
磁盘分区指令:gdisk/fdisk;
格式化指令:mkfs相关


1. 磁盘容量

1.1 lsblk

lsblk真的是yyds了,和指令ls一样是常用指令。前者是磁盘的查看,ls是目录和文件的查看。
一般用法:lsblk 选项与参数 设备
例如:lsblk -d /dev/sda

选项与参数含义
-d仅列出磁盘本身,并不会列出该磁盘的分区数据
-f同时列出该磁盘内的文件系统名称
-i使用 ASCII 的线段输出
-m同时输出该设备在 /dev 下面的权限数据 (rwx 的数据)
-p列出该设备的完整文件名
-t列出该磁盘设备的详细数据,包括磁盘伫列机制、预读写的数据量大小等

以我的虚拟机上的60G磁盘为例进行效果演示。

使用lsblk常用的显示的字段含义如下:

字段名称字段含义
NAME设备的文件名,省略 /dev 等前导目录
MAJ:MIN主要:次要设备代码
RM是否为可卸载设备,如光盘、USB 磁盘等等
SIZE容量
RO是否为只读设备
TYPE种类:磁盘(disk)、分区(partition) 、只读存储器(om)
MOUTPOINT挂载点
FSTYPE文件系统
LABEL标签
UUID全域单一识别码

1.2 blkid

blkid其实就是lsblk -f中单独显示UUID的一个指令。
所以其对应的含义为:列出设备的UUID;
这里需要注意的是,只有管理员权限才可以列出对应的内容。
下图中我用ubuntu用户输入blkid没有反应,改变为root权限后才可以。
其实也可以直接sudo blkid

如何想查看一个指定的磁盘,在没有管理员权限的情况下可以使用:
指令:sudo blkid /dev/sda
使用这个指令,可能linux系统还会提示你输入管理员密码。
在这里插入图片描述


1.3 parted

parted指令用来列出磁盘的分区表类型以及分区信息。

一般用法:parted /dev/sda print

这个指令也是需要管理员权限的,别忘加sudo,或者切换到root

在这里插入图片描述

这里我们看字段:Partition Table:msdos
我们的是MBR分区表,分区表还有GPT分区。强调这一点是因为不同分区再磁盘分区的时候使用的指令是不一样的。


2. 磁盘分区

2.1 fdisk/gdisk

请注意fdisk对应MBR分区表,gdisk对应GPT分区表。
使用MBR分区表的操作系统例如:ubuntu
使用GPT分区表的操作系统例如:CentOS

使用指令sudo fdisk /dev/sda进入磁盘分区模式。
前面sudo说明磁盘分区要管理员权限,后面/dev/sda表明对哪个磁盘分区。

在这里插入图片描述
输入m查看指令帮助
在这里插入图片描述

这边列个表翻译一下:

指令选项含义
a切换可启动标志,对某个分区用a则表示从这个分区启动
b编辑嵌套BSD磁盘标签
c切换dos兼容性标志
d删除分区
F列出可用的未分区空间
l(小写L)列出已知的分区类型
n添加新分区
t更改分区类型
v验证分区表
i打印有关分区的信息
m打印这个菜单
u更改显示/输入单位
x额外功能(仅限专家)
I(大写I)从sfdisk脚本文件加载磁盘布局
O将磁盘布局转储到sfdisk脚本文件
w将表写入磁盘并保存
q退出而不保存更改
g创建一个新的GPT分区表
G创建一个新的空SGI(IRIX)分区表
o创建一个新的空DOS分区表
s创建一个新的空Sun分区表

其中标红的是常用的。对磁盘分区的任何操作最后如果不输入w,都是不生效的!!!!

2.2 磁盘分区实例参考:

磁盘分区的详细运用可以参考博客:磁盘分区章节


3. 磁盘格式化

我们再window上的磁盘格式化大概就是清空数据,回复初始设定这种。但对于刚分好区的磁盘,对磁盘的格式化其实是创建文件系统。

磁盘格式化的通用指令是mkfs.xxxx这里xxx和文件系统类别有关,xxxx可以是xfs,也可以是ext4等等。

在命令行输入mkfs接两个tab,就可以知道系统支持哪些种类的文件系统格式化功能。

在这里插入图片描述


3.1 mkfs.xfs

一般用法:mkfs.xfs 选项与参数 (数值大小) 设备名称,这个数值大小根据选项与参数来定,有的没有数值。
例如:mkfs.xfs -f /dev/sda这个-f就表示强制格式化,并没有数值。

mkfs.xfs再CentOS里面用的多,其实我们平常用ubuntu大部分都是用mkfs.ext4.
mkfs.xfs的格式化其实很多值都设定为默认的可以了,折射到指令上大概如下例子:

例:给/dev/sda创建xfs文件系统,保持默认配置
指令:mkfs.xfs /dev/sda

关于单位:下面只要谈到“数值”时,没有加单位则为 Bytes 值,可以用 k,m,g,t,p (小写)等来解释
比较特殊的是 s 这个单位,它指的是 sector 的“个数”

选项与参数含义说明
-b后面接的是 block 容量,可由 512 到 64k,不过最大容量限制为 Linux 的 4k
-d后面接的是重要的 data section 的相关参数值,主要的值有:
  agcount=数值  :设置需要几个储存群组的意思(AG),通常与 CPU 有关
  agsize=数值   :每个 AG 设置为多少容量的意思,通常 agcount/agsize 只选一个设置即可
  file          :指的是“格式化的设备是个文件而不是个设备”的意思!(例如虚拟磁盘)
  size=数值     :data section 的容量,亦即你可以不将全部的设备容量用完的意思
  su=数值       :当有 RAID 时,那个 stripe 数值的意思,与下面的 sw 搭配使用
  sw=数值       :当有 RAID 时,用于储存数据的磁盘数量(须扣除备份碟与备用碟)
  sunit=数值    :与 su 相当,不过单位使用的是“几个 sector(512Bytes大小)”的意思
  swidth=数值   :就是 su*sw 的数值,但是以“几个 sector(512Bytes大小)”来设置
选项与参数含义说明
-f如果设备内已经有文件系统,则需要使用这个 -f 来强制格式化才行!
-i与 inode 有较相关的设置,主要的设置值有:
  size=数值     :最小是 256Bytes 最大是 2k,一般保留 256 就足够使用了!
  internal=[0|1]:log 设备是否为内置?默认为 1 内置,如果要用外部设备,使用下面设置
  logdev=device :log 设备为后面接的那个设备上头的意思,需设置 internal=0 才可!
  size=数值     :指定这块登录区的容量,通常最小得要有 512 个 block,大约 2M 以上才行!
选项与参数含义说明
-L后面接这个文件系统的标头名称 Label name 的意思!
-r指定 realtime section 的相关设置值,常见的有:
  extsize=数值  :就是那个重要的 extent 数值,一般不须设置,但有 RAID 时,
                  最好设置与 swidth 的数值相同较佳!最小为 4K 最大为 1G 。

3.2 mkfs.ext4

一般用法:mkfs.ext4 选项 数值 设备名称

选项数值含义
-b可取1K,2K,4K设置 block 的大小
-L取名任意后面接这个设备的标头名称。

3.3 mkfs.vfat

一般用法:mkfs.vfat 选项 数值 设备名称

写到这,我发现这个两个指令参数确实有点多,同时书上的内容也不全,因此我新开了一篇博客归纳整理。
关于mkfs.ext4,mkfs.vfat的详细介绍请参考我整理的另一篇博客:
mkfs.vfat以及mkfs.ext4命令详解

总结:

这篇文章主要是分区内容查看和磁盘分区,格式化部分因为书上内容有限,所以这篇文章暂时记录的不多。这篇文章结合磁盘拓展这篇文章实践,学习起来效果回更好一些。