文章目录

  • 1.前言
  • 2.磁盘结构
    • 2.1设备文件
    • 2.2设备的命名规则
      • (1)物理设备
      • (2)虚拟磁盘设备
      • (3)创建设备文件
    • 2.3硬盘类型
      • (1)硬盘接口类型
      • (2)服务器硬盘大小
      • (3)机械硬盘和固态硬盘
  • 3.磁盘存储管理
    • 3.1磁盘分区方式
      • (1)MBR分区
      • (2)GPT分区
    • 3.2磁盘管理命令
      • (1)fdisk--管理MBR分区
      • (2)gdisk--管理GPT分区
      • (3)parted--高级分区操作
      • (4)lsblk--列出块设备
      • (5)partx--同步磁盘分区信息
      • (6)partprobe--重载分区表
      • (7)blkid--查看块设备信息
  • 4.文件系统
    • 4.1文件系统概念
    • 4.2文件系统类型
      • (1)Linux常用文件系统类型
      • (2)Windows常用文件系统类型
      • (3)Unix常用文件系统类型
      • (4)常用的文件系统特性
      • (5)文件系统的组成
      • (6)查看支持的文件系统
    • 4.3文件系统命令管理
      • (1)mkfs--格式化分区
      • (2)mount--挂载分区
      • (3)umount--卸载分区
      • (4)mkswap--设置交换分区
      • (5)swapon/swapoff--开启/关闭交换空间

1.前言

  磁盘和文件系统的管理是运维人员的重要工作内容之一,本文对磁盘和文件系统的一些概念做了详细解释,管理命令给出了常用示例,方便自己在工作时随时查阅,也欢迎各位一同学习。

2.磁盘结构

2.1设备文件

在linux系统中,一切皆文件,磁盘设备也是文件的一种。
设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信

设备号码:

  • 主设备号:major number, 标识设备类型
  • 次设备号:minor number, 标识同一类型下的不同设备

设备类型:

  • 块设备:block,存取单位“块”,磁盘
  • 字符设备:char,存取单位“字符”,键盘
  • 网络设备:主机与主机之间进行数据交换的设备

2.2设备的命名规则

(1)物理设备

  系统内核中的 udev 设备管理器会自动将硬件名称规范起来,让用户通过设备文件的名字即可猜出设备的大致属性及分区信息。另外,此设备管理器服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件。 Linux系统中常见的硬件设备文件名如下表所示:

硬件设备 文件名称
IDE设备 /dev/hd[a-d]
SCSI / SATA / U盘 /dev/sd[a-p]
软驱 /dev/fd[0-1]
打印机 /dev/1p[0-15]
光驱 /dev/cdrom 或 /dev/sr0
鼠标 /dev/mouse
磁带机 /dev/st0 或 /dev/ht0

  现在IDE设备已经比较少,大部分硬盘设备都会以 /dev/sd 开头。一台主机上可以有多块硬盘,系统采用从a~p来代表16块不同的硬盘,默认从a开始分配。各个硬盘的分区编号也是有规范的,主分区或扩展分区编号范围为1-4,逻辑分区的编号从5开始。

这里有两点要注意:

  • /dev/sda设备之所以是a,是由内核的识别顺序决定的, 与主板上的插槽无关,很多主板上的插槽顺序与内核的识别顺序一致
  • /dev/sda4代表这是设备上编号为4的分区,并不表示此设备上有4个分区

为什么主分区编号最大为4呢?

  对于硬盘设备都是由大量的扇区组成的,每个扇区的容量为512字节,其中第一个扇区存储着主引导记录和分区列表信息,主引导记录占用446字节,分区表占用64字节,结束符占用2字节,而分区表中,每记录一个分区信息需要16字节,这样一来就只有4个分区信息可以记录在第一扇区了,这4个分区即是主分区。

扩展分区:它不是一个实际的分区,它仅是一个指向下一个分区的指针,其指针形成一个意向链表。

[root@c7-4 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        900M     0  900M    0% /dev
tmpfs           910M     0  910M    0% /dev/shm
tmpfs           910M  9.6M  901M    2% /run
tmpfs           910M     0  910M    0% /sys/fs/cgroup
/dev/sda2        50G  1.2G   49G    3% /
/dev/sda5        40G   33M   40G    1% /data
/dev/sda1       2.0G  141M  1.9G    7% /boot
tmpfs           182M     0  182M    0% /run/user/0[root@c7-4 ~]# fdisk -l
磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a8c67设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     4196351     2097152   83  Linux
/dev/sda2         4196352   109053951    52428800   83  Linux
/dev/sda3       109053952   117442559     4194304   82  Linux swap / Solaris
/dev/sda4       117442560   209715199    46136320    5  Extended
/dev/sda5       117444608   201330687    41943040   83  Linux[root@c7-4 ~]# cat /proc/partitions
major minor  #blocks  name8        0  104857600 sda     #第一块硬盘总大小8        1    2097152 sda1     #boot分区8        2   52428800 sda2       #根分区8        3    4194304 sda3      #swap分区8        4          1 sda4       #扩展分区8        5   41943040 sda5     #逻辑分区,自己分的 /data 分区11        0    1048575 sr0        #光盘镜像
#sda表示第一块硬盘,sda1表示第一块硬盘的第一个分区,sda1-4为主分区或者扩展分区
#从sda5开始为逻辑分区

(2)虚拟磁盘设备

虚拟磁盘常用的设备文件名为:

/dev/vd
/dev/xvd

(3)创建设备文件

[root@c7-2 ~]#df /boot
Filesystem     1K-blocks   Used Available Use% Mounted on
/dev/sda1        1038336 182952    855384  18% /boot
[root@c7-2 ~]#ls /boot
config-3.10.0-1062.el7.x86_64  initramfs-0-rescue-aaee489cf65d45c498afb87639413169.img  System.map-3.10.0-1062.el7.x86_64
efi                            initramfs-3.10.0-1062.el7.x86_64.img                     vmlinuz-0-rescue-aaee489cf65d45c498afb87639413169
grub                           initramfs-3.10.0-1062.el7.x86_64kdump.img                vmlinuz-3.10.0-1062.el7.x86_64
grub2                          symvers-3.10.0-1062.el7.x86_64.gz
[root@c7-2 ~]#mkdir /data
[root@c7-2 ~]#mknod /data/partition-sda1 b 8 1
[root@c7-2 ~]#ll /data/partition-sda1
brw-r--r-- 1 root root 8, 1 Aug  8 16:08 /data/partition-sda1
[root@c7-2 ~]#mount /data/partition-sda1 /mnt/
[root@c7-2 ~]#ls /mnt
config-3.10.0-1062.el7.x86_64  initramfs-0-rescue-aaee489cf65d45c498afb87639413169.img  System.map-3.10.0-1062.el7.x86_64
efi                            initramfs-3.10.0-1062.el7.x86_64.img                     vmlinuz-0-rescue-aaee489cf65d45c498afb87639413169
grub                           initramfs-3.10.0-1062.el7.x86_64kdump.img                vmlinuz-3.10.0-1062.el7.x86_64
grub2                          symvers-3.10.0-1062.el7.x86_64.gz[root@c7-2 ~]#ll /dev/zero
crw-rw-rw- 1 root root 1, 5 Aug  6 23:21 /dev/zero
[root@c7-2 ~]#mknod /data/zero c 1 5
[root@c7-2 ~]#ll /data/zero
crw-r--r-- 1 root root 1, 5 Aug  8 16:09 /data/zero

2.3硬盘类型

(1)硬盘接口类型

  • IDE:133MB/s,并行接口,早期家用电脑
  • SCSI:640MB/s,并行接口,早期服务器
  • SATA:6Gbps,SATA数据端口与电源端口是分开的,即需要两条线,一条数据线,一条电源线
  • SAS:6Gbps,SAS是一整条线,数据端口与电源端口是一体化的,SAS中是包含供电线的,而
    SATA中不包含供电线。SATA标准其实是SAS标准的一个子集,二者可兼容,SATA硬盘可以插入 SAS主板上,反之不成
  • USB:480MB/s
  • M.2:

注意:速度不是由单纯的接口类型决定,支持Nvme协议硬盘速度是最快的

(2)服务器硬盘大小

  • LFF:3.5寸,一般见到的台式机硬盘的大小
  • SFF:2.5寸,不同于2.5寸的笔记本硬盘
    L、S分别是大、小的意思,服务器或者盘柜采用 SFF 规格的硬盘主要是考虑增大单位密度内的磁盘容量、增强散热、减小功耗。

(3)机械硬盘和固态硬盘

机械硬盘:

机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由盘片,磁头,盘片转轴及控制电
机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴
上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直
径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径
方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操
作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精
密设备,进入硬盘的空气必须过滤。

固态硬盘:

固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储
单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的
完全相同,在产品外形和尺寸上也与普通硬盘一致。

  SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,HDD在价格、容量占有绝对优势,但是硬盘有价,数据无价,目前SSD不能完全取代HHD。

3.磁盘存储管理

3.1磁盘分区方式

(1)MBR分区

磁盘的第一个扇区即 0 磁道 0 扇区共有 512 bytes,分别为:

  • 446 bytes: boot loader
  • 64 bytes:分区表,其中每16 bytes 标识一个分区
  • 2 bytes: 55AA,主引导记录有效标志

MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)
MBR分区:主分区和扩展分区对应的1-4,逻辑分区从5开始(/dev/sda5)

示例:备份MBR的分区表,并破坏后恢复

#备份MBR分区表
[root@centos8 ~]#dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446
[root@centos8 ~]#scp /data/dpt.img 10.0.0.102:
#破坏MBR分区表
[root@centos8 ~]#dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
#无法启动
[root@centos8 ~]#reboot
#用光盘启动,进入rescue mode,选第3项skip to shell
#配置网络
#ifconfig ens160 10.0.0.8/24
#ip a a 10.0.0.8/24 dev/ens160
#scp 10.0.0.102:/root/dpt.img .
#恢复MBR分区表
#dd if=dpt.img of=/dev/sda bs=1 seek=446
#exit

(2)GPT分区

  GPT,全局唯一标识分区表(GUID Partition Table),它使用128位GUID来唯一标识每个磁盘和分区。与MBR存在单一故障点不同,GPT提供分区表信息的冗余,一个在磁盘头部,一个在磁盘尾部;它通过CRC校验来检测GPT头和分区表中错误与损坏。默认一个硬盘支持128个分区(可以更多)。
GPT最大支持18EB(1EB=1024PB,1PB=1024TB),MBR最大支持2TB

GPT分区结构分为4个区域:

  • GPT头
  • 分区表
  • GPT分区
  • 备份区域

3.2磁盘管理命令

(1)fdisk–管理MBR分区

fdisk 是一个创建和维护分区表的程序,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表
格式:

fdisk [参数] [分区]
参数 含义
-l 查看硬盘的整体情况和分区情况,后面跟分区可以查看指定分区情况
-u 与 -l 搭配使用,显示分区数目
-s <分区编号> 以分区块为单位,显示指定分区的大小
-b <大小> 指定扇区大小,(512,1024,2048或4096B)
-C <编号> 指定柱面编号
-H <编号> 指定磁头编号
-S <编号> 指定磁道扇区编号

fdisk 交互模式常用指令:

  m     #显示帮助菜单a     #设置可引导标记b     #修改bsd的磁盘标签c     #设置DOS操作系统兼容标记d     #删除一个分区l     #显示已知的分区类型,其中82为Linux swap分区,83为Linux分区n     #增加一个新的分区o     #创建一个新的空白的DOS分区表p     #显示磁盘当前的分区表q     #退出fdisk程序,不保存任何修改s     #创建一个新的空白的Sun磁盘标签t     #改变一个分区的系统号码u     #改变显示记录单位v     #对磁盘分区表进行验证w     #保存修改结果并退出fdisk程序x     #特殊功能,不建议初学者使用

示例:

[root@c7-3~]#fdisk -l磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c3e8d设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    10487807     4194304   82  Linux swap / Solaris
/dev/sda3        10487808   209715199    99613696   83  Linux#非交互式创建分区,分区号默认,起始扇区默认,终止扇区+20G,其中\n表示换行
echo -e 'n\np\n\n\n+20G\nw\n' | fdisk /dev/sdc
#这种分区方式表示不太友好,也可以用下面这种,空的两行表示两个默认操作
echo "n
p+20G
w" |fdisk /dev/sdc

(2)gdisk–管理GPT分区

  gdisk 又叫 GPT fdisk,是fdisk的延伸,主要使用的是 GPT 分区类型,用来划分容量大于 2T 的硬盘,最小化安装的系统可能没有 gdisk,执行 yum -y install gdisk 安装 。
格式:

gdisk [参数] [分区]

fdisk 交互模式常用指令:

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 额外功能(仅限专家)
? 显示帮助信息

示例:

[root@xuexi ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10 Partition table scan: MBR: MBR only BSD: not present APM: not present GPT: not present ***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
*************************************************************** Command (? for help): p  //显示当前磁盘的分区表
Disk /dev/sdb: 4194304 sectors, 2.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 4E50861F-8360-4B97-986E-51F4080BF678
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 4194270
Partitions will be aligned on 2048-sector boundaries
Total free space is 2097085 sectors (1024.0 MiB) Number  Start (sector)    End (sector)  Size       Code  Name 1            2048         2099199   1024.0 MiB  8300  Linux filesystem Command (? for help): d  //删除一个分区
Using 1 Command (? for help): n  //新建一个分区
Partition number (1-128, default 1):
First sector (34-4194270, default = 2048) or {+-}size{KMGTP}:    //开始扇区
Last sector (2048-4194270, default = 4194270) or {+-}size{KMGTP}: +1G  //终止扇区
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):   //分区类型
Changed type of partition to 'Linux filesystem' Command (? for help): w  //保存并退出 Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!! Do you want to proceed? (Y/N): y  //确认覆盖
OK; writing new GUID partition table (GPT) to /dev/sdb.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.  //提示在下次重启后生效
The operation has completed successfully.

(3)parted–高级分区操作

规划大小超过2T的分区,也可用于小分区的规划
格式:

parted [选项]... [设备 [命令 [参数]...]...]
参数 含义
-h 显示帮助信息
-l 列出所有设备的分区信息
-i 在必要时,提示用户
-s 从不提示用户
-v 显示版本

交互式操作命令:

cp [FROM-DEVICE] FROM-MINOR TO-MINOR          #将文件系统复制到另一个分区
help [COMMAND]                                #打印通用求助信息,或关于 COMMAND 的信息
mklabel 标签类型                               #改变磁盘的文件类型 ;
mkfs MINOR 文件系统类型                         #在 MINOR 创建类型为“文件系统类型”的文件系统
mkpart 分区类型 [文件系统类型] 起始点 终止点      #创建一个分区
mkpartfs 分区类型 文件系统类型 起始点 终止点      #创建一个带有文件系统的分区
move MINOR 起始点 终止点                        #移动编号为 MINOR 的分区
name MINOR 名称                                #将编号为 MINOR 的分区命名为“名称”
print/p [MINOR]                               #打印分区表,或者分区
quit/q                                        #保存退出程序
rescue 起始点 终止点                            #挽救临近“起始点”、“终止点”的遗失的分区
resize MINOR 起始点 终止点                      #改变位于编号为 MINOR 的分区中文件系统的大小
rm MINOR                                      #删除编号为 MINOR 的分区
select 设备                                    #选择要编辑的设备
set MINOR 标志 状态                            #改变编号为 MINOR 的分区的标志

示例:

[root@www ~]# parted /dev/sdj
GNU Parted 2.1
使用 /dev/sdj
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help    #交互式获得帮助align-check TYPE N                        check partition N for TYPE(min|opt) alignmentcheck NUMBER                             do a simple check on the file systemcp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another partitionhelp [COMMAND]                           print general help, or help on COMMANDmklabel,mktable LABEL-TYPE               create a new disklabel (partition table)mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on partition NUMBERmkpart PART-TYPE [FS-TYPE] START END     make a partitionmkpartfs PART-TYPE FS-TYPE START END     make a partition with a file systemmove NUMBER START END                    move partition NUMBERname NUMBER NAME                         name partition NUMBER as NAMEprint [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a particular partitionquit                                     exit programrescue START END                         rescue a lost partition near START and ENDresize NUMBER START END                  resize partition NUMBER and its file systemrm NUMBER                                delete partition NUMBERselect DEVICE                            choose the device to editset NUMBER FLAG STATE                    change the FLAG on partition NUMBERtoggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBERunit UNIT                                set the default unit to UNITversion                                  display the version number and copyright information of GNU Parted
(parted) mklabel gpt  #先将磁盘结构改为gpt
警告: The existing disk label on /dev/sdj will be destroyed and all data on this disk will be lost. Do you want to continue?
是/Yes/否/No? yes
(parted) mkpart    #分区第一种方式
分区名称?  []? primary
文件系统类型?  [ext2]? ext4
起始点? 1
结束点? 10
(parted) mkpart primary 11 20    #分区第2中方式
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? ignore
(parted) p        #打印分区列表
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdj: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gptNumber  Start   End     Size    File system  Name     标志1      1049kB  10.5MB  9437kB               primary2      11.0MB  20.0MB  9000kB               primary(parted) q
信息: You may need to update /etc/fstab.

非交互式创建示例:

#创建
parted /dev/sdb mklabel gpt yes
parted /dev/sdb mklabel primary ext4 0 100 ignore
parted /dev/sdb mklabel logic ext4 0 100 ignore#将修改后的内容告诉内核,否则需要重启
partprobe /dev/sdb#查看
ll /dev/sd* 或 fdisk -l

(4)lsblk–列出块设备

列出所有磁盘和磁盘内分区情况
格式:

lsklk [参数]
参数 含义
-d 仅列出磁盘本身,并不会列出该磁盘的分区数据
-f 同时列出该磁盘内的文件系统名称
-i 使用ASCII的线段输出,不要使用复杂的编码
-m 同时输出该设备在/dev下面的权限数据(rwx)
-p 列出该设备的完整文件名!而不是仅列出最后的名字而已
-t 列出该磁盘设备的详细数据,包括磁盘伫列机制、预读写的数据量大小等

lsblk 默认标题栏含义:

NAME:    #设备名字,会省略/dev等前导目录。-p会取消这一限制
MAJ:MIN   #Kernel识别设备用到的代码,分别是主要、次要设备代码
RM        #是否为可卸载设备,如光盘、USB磁盘等,1说明是可移动设备
SIZE      #容量
RO        #是否为只读设备,0表明不是只读设备
TYPE      #是磁盘(disk)、分区(partition)还是只读存储器(rom)等输出
MOUTPOINT #挂载点

示例:

[root@c7-4 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk
├─sda1   8:1    0    2G  0 part /boot
├─sda2   8:2    0   50G  0 part /
├─sda3   8:3    0    4G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part
└─sda5   8:5    0   40G  0 part /data
sdb      8:16   0   80G  0 disk
└─sdb1   8:17   0   20G  0 part /home
sr0     11:0    1  4.4G  0 rom

(5)partx–同步磁盘分区信息

  /proc/partitions 记录了系统中所有硬盘及其上面的分区信息,包括已挂载和未挂载的,之后的格式化或挂载都是基于这个文件中的记录进行的。在 /proc/partitions 中,对有些硬盘没有记录分区信息,可能是没有分区,或者有分区但未进行记录。partx直接从硬盘上读取分区信息,并可以对系统关于硬盘分区信息的记录(/proc/partitions)进行更新。
格式:

partx [-a|-d|-s|-u] [--nr <n:m> | <分区>] <磁盘>

选项:

 -a, --add            向内核中添加某磁盘上分区的情况(只是同步信息,不是真的添加)-d, --delete         删除内核中关于某磁盘上的分区的记录(不是卸载)-s, --show           列出分区-u, --update         更新指定的分区或所有分区-b, --bytes          以字节为单位而非易读的格式来打印 SIZE-g, --noheadings     --show 时不打印标题-n, --nr <n:m>       指定分区范围(例如:--nr 2:4)-o, --output <type>  定义使用哪个输出列-P, --pairs          使用 key=“value” 输出格式-r, --raw            使用原生输出格式-t, --type <类型>    指定分区类型(dos、bsd、solaris 等)-v, --verbose        详尽模式-h, --help          显示此帮助并退出-V, --version       输出版本信息并退出

示例:

#同步磁盘 /dev/sda 分区信息
partx -a /dev/sda 或 kpartx -af /dev/sda#删除 /dev/sda 磁盘上 6-8 分区的信息
partx -d --nr 6-8 /dev/sda

(6)partprobe–重载分区表

partprobe:将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表
格式:

参数 含义
-d 不更新内核
-s 显示磁盘分区汇总信息
-h 显示帮助信息
-v 显示版本信息

示例:

#虚拟机新增了一块硬盘并执行了分区操作,这时候需要执行以下命令将分区信息告诉内核
partprobe /dev/sdx

(7)blkid–查看块设备信息

  blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。
格式:

blkid -L <label> | -U <uuid>
blkid [-c <file>] [-ghlLv] [-o <format>] [-s <tag>] [-t <token>] [<dev> ...]
blkid -p [-s <tag>] [-O <offset>] [-S <size>] [-o <format>] <dev> ...
blkid -i [-s <tag>] [-o <format>] <dev> ...
参数 含义
-L 通过卷标查找对应的分区
-U 通过UUID查找对应的分区
-s UUID 显示指定设备的UUID(默认显示所有设备)
-s LABEL 显示指定设备的LABEL(默认显示所有设备)
-s TYPE 显示指定设备的文件系统(默认显示所有设备)
-o device 显示所有设备名称
-o list 以列表形式查看详细信息(默认显示所有设备)

示例:

[root@c7-4 ~]# blkid -o list
device                                    fs_type        label           mount point                                   UUID
------------------------------------------------------------------------------------------------------------------------------------------------------------
/dev/sda2                                 xfs                            /                                             4cb85cf7-a546-4eca-af58-af1d14ee3dd8
/dev/sdb1                                 xfs                            /data/data1                                   711b4652-0809-40db-b010-156362f9b328
/dev/sdb2                                 swap                           <swap>                                        b184a2a2-90ee-4d5b-922f-f144490f1420
/dev/sdb5                                 xfs                            /data/data2                                   6ea1a44f-735a-48b7-b942-cc6f40223abf
/dev/sda1                                 xfs                            /boot                                         61a1daaf-fd0d-4cca-9eca-06ffff1977fa
/dev/sda3                                 swap                           <swap>                                        d0141d64-c02c-4a80-b81e-c10bec2092ee
/dev/sda5                                 xfs                            /data                                         e2f9854d-a1a9-47df-b89a-5c580a2bf750
/dev/sr0                                  iso9660        CentOS 7 x86_64 (not mounted)                                 2019-09-11-18-50-31-00

4.文件系统

4.1文件系统概念

  文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。

#查看系统支持的文件系统
ll /lib/modules/`uname -r`/kernel/fs#查看帮助
man 5 fs

4.2文件系统类型

(1)Linux常用文件系统类型

ext2:Extended file system 适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分 区
ext3:是 ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复
ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件
(16TB)、最大1EB的文件系统,以及速度的提升
xfs:SGI,支持最大8EB的文件系统
swap
iso9660 光盘
btrfs(Oracle)
reiserfs

(2)Windows常用文件系统类型

FAT32
NTFS
exFAT

(3)Unix常用文件系统类型

FFS(fast)
UFS(unix)
JFS2

(4)常用的文件系统特性

FAT32

最多只能支持16TB的文件系统和4GB的文件

NTFS

最多只能支持16EB的文件系统和16EB的文件

EXT3

最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件
Ext3目前只支持32000个子目录
Ext3文件系统使用32位空间记录块数量和 inode数量
当数据写入到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块

EXT4

EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本
Ext4的文件系统容量达到1EB,而支持单个文件则达到16TB
理论上支持无限数量的子目录
Ext4文件系统使用64位空间记录块数量和 inode数量
Ext4的多块分配器支持一次调用分配多个数据块
修复速度更快

XFS

根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
用优化算法,日志记录对整体文件操作影响非常小
是一个全64-bit的文件系统,最大可以支持8EB的文件系统,而支持单个文件则达到8EB
能以接近裸设备I/O的性能存储数据

(5)文件系统的组成

用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虚拟文件系统:VFS
内核中的模块:ext4, xfs, vfat

(6)查看支持的文件系统

[root@c7-3~]#cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   ramfs
nodev   bdev
nodev   proc
......

4.3文件系统命令管理

(1)mkfs–格式化分区

mkfs 命令用于在特定的分区上建立 linux 文件系统
格式:

mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
参数 含义
-t {ext2,ext3,ext4,xfs} 指定文件系统类型
-b {1024,2048,4096} 指定块 block 大小
-L ‘LABEL’ 设置卷标
-c 在制做档案系统前,检查该partition 是否有坏轨
-l bad_blocks_file 将有坏轨的block资料加到 bad_blocks_file 里面

示例:

#将 /dev/sdb1 格式化为 xfs 格式
mkfs -t xfs /dev/sdb1 或 mkfs.xfs /dev/sdb1#在 /dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来
mkfs -V -t msdos -c /dev/hda5

(2)mount–挂载分区

mount 可以将分区挂接到 Linux 的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了。

挂载的概念:

将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为

挂载规则:

一个挂载点同一时间只能挂载一个设备
一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
一个设备可以同时挂载到多个挂载点
通常挂载点一般是已存在空的目录

格式:

mount [-fnrsvw] [-t vfstype] [-o options] device mountpoint
参数 含义
-t 指定要挂载的设备上的文件系统类型
-r readonly,只读挂载
-w read and write, 读写挂载
-n 不更新/etc/mtab,mount不可见
-a 将 /etc/fstab 中定义的所有设备自动挂载
-L ‘LABEL’ 以卷标指定挂载设备
-U ‘UUID’ 以UUID指定要挂载的设备
-B 绑定目录到另一个目录上
# -o选项太多,不写在表格里
-o options:(挂载文件系统的选项),多个选项使用逗号分隔async   异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高,但不安全sync    同步模式,内存更改时,同时写磁盘,安全,但效率低下atime/noatime          包含目录和文件diratime/nodiratime 目录的访问时间戳auto/noauto          是否支持开机自动挂载,是否支持-a选项exec/noexec       是否支持将文件系统上运行应用程序dev/nodev      是否支持在此文件系统上使用设备文件suid/nosuid    是否支持suid和sgid权限remount      重新挂载ro/rw           只读、读写   user/nouser     是否允许普通用户挂载此设备,/etc/fstab使用acl/noacl      启用此文件系统上的acl功能loop          使用loop设备_netdev         当网络可用时才对网络资源进行挂载,如:NFS文件系统defaults        相当于rw, suid, dev, exec, auto, nouser, async

示例:

#将 /dev/hda1 挂在 /mnt 之下
mount /dev/hda1 /mnt#将 /dev/hda1 用只读模式挂在 /mnt 之下
mount -o ro /dev/hda1 /mnt#将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光 碟 ISO 档在不烧录成光碟的情况下检视其内容
mount -o loop /tmp/image.iso /mnt/cdrom#通过查看/etc/mtab文件显示当前已挂载的所有设备
mount#查看内核追踪到的已挂载的所有设备
cat /proc/mounts#永久挂载
将挂载保存到 /etc/fstab 中可以下次开机时,自动启用挂载
[root@c7-4 ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Aug  9 10:07:45 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=4cb85cf7-a546-4eca-af58-af1d14ee3dd8 /                       xfs     defaults        0 0
UUID=61a1daaf-fd0d-4cca-9eca-06ffff1977fa /boot                   xfs     defaults        0 0
UUID=e2f9854d-a1a9-47df-b89a-5c580a2bf750 /data                   xfs     defaults        0 0
UUID=d0141d64-c02c-4a80-b81e-c10bec2092ee swap                    swap    defaults        0 0
/dev/sdb1                                 /home                   xfs     defaults        0 0

(3)umount–卸载分区

卸载文件系统,卸载时可使用设备,也可以使用挂载点
格式:

umount 设备名|挂载点
参数 含义
-a 卸载所有文件系统(记录在 /etc/mtab 中)
-n 卸载时不将信息写入 /etc/mtab 文件中
-r 若卸载失败,尝试以只读方式重新挂臷
-l 立即断开文件系统,所有清理以后执行
-f 强制卸载(遇到不响应的 NFS 系统时)
-i 不调用 umount.<类型> 辅助程序
-R 递归卸载目录及其子对象
-t <列表> 限制文件系统集合
-O <列表> 限制文件系统集合(和 -a 选项一起使用)
-d 若挂臷了回环设备,也释放该回环设备
-A 卸载当前名字空间内指定设备对应的所有挂臷点

示例:

#通过设备名卸载
umount -v /dev/sda1#通过挂载点卸载
umount -v /mnt/mymount/#强制卸载
umount -lf /home

(4)mkswap–设置交换分区

mkswap 可将磁盘分区或文件设为Linux的交换区
格式:

mkswap [选项] 设备 [大小]

用法:

 -c, --check               创建交换区前检查坏块-f, --force               允许交换区大于设备大小-p, --pagesize SIZE       指定页大小为 SIZE 字节-L, --label LABEL         指定标签为 LABEL-v, --swapversion NUM     指定交换空间版本号为 NUM-U, --uuid UUID           指定要使用的 UUID-V, --version             输出版本信息并退出-h, --help                显示此帮助并退出

示例:

[15:39:11 root@c7-1 ~]#fdisk -l     #查看磁盘情况,现在只有一块 sda 磁盘,添加一块磁盘 sdb
Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 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: 0x000f2378Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    10487807     4194304   82  Linux swap / Solaris
/dev/sda3        10487808   209715199    99613696   83  Linux#如果想在不关机的情况下让系统识别新加的磁盘需要执行下列命令,不然需要重启
#该命令会重新扫描scsi主机并更新信息
[15:39:13 root@c7-1 ~]#echo "- - -" > /sys/class/scsi_host/host0/scan[15:39:22 root@c7-1 ~]#fdisk -l     #此时 sdb 已经显示
Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 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: 0x000f2378Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    10487807     4194304   82  Linux swap / Solaris
/dev/sda3        10487808   209715199    99613696   83  LinuxDisk /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[15:39:24 root@c7-1 ~]#fdisk /dev/sdb     #分 10G 作为 SWAP分区
Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x27cb3073.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):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +10G
Partition 1 of type Linux and of size 10 GiB is setCommand (m for help): pDisk /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: 0x27cb3073Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  LinuxCommand (m for help): t
Selected partition 1
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'Command (m for help): pDisk /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: 0x27cb3073Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   82  Linux swap / SolarisCommand (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.[15:53:29 root@c7-1 ~]#mkswap /dev/sdb1      #将 sdb1 设置为 swap
Setting up swapspace version 1, size = 10485756 KiB
no label, UUID=88fd4b7f-0783-4df0-87b1-1815d4446b2c
[15:54:54 root@c7-1 ~]#swapon /dev/sdb1        #开启 sdb1 交换功能
[15:55:15 root@c7-1 ~]#free        #此时 swap 共有 14G total        used        free      shared  buff/cache   available
Mem:        1863104      779176      127240       21664      956688      897120
Swap:      14680056        3584    14676472
[15:55:17 root@c7-1 ~]#swapoff /dev/sdb1   #关闭交换功能
[15:55:26 root@c7-1 ~]#free        #关闭 sdb1 后 swap 还原为 4Gtotal        used        free      shared  buff/cache   available
Mem:        1863104      770988      135416       21664      956700      905312
Swap:       4194300        2468     4191832[16:08:35 root@c7-1 ~]#vim /etc/fstab       #写进配置文件里
#
# /etc/fstab
# Created by anaconda on Fri Jul 23 15:33:12 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=adf79f65-0a7d-4159-adde-099e05b62786 /                       xfs     defaults        0 0
UUID=e269bb76-c9d1-499b-a0d3-9bb86dbbb72d /boot                   xfs     defaults        0 0
UUID=61978a53-09e9-4404-96d1-7b3e2bfe7bba swap                    swap    defaults        0 0
/dev/sdb1                                 swap                    swap    defaults        0 0[16:10:49 root@c7-1 ~]#mount -a       #重新加载 /etc/fstab 内容,无需重启虚拟机

(5)swapon/swapoff–开启/关闭交换空间

swapon 命令用于激活 Linux 系统中交换空间
swapoff 命令用于关闭 Linux 系统中交换空间

#将 /etc/fstab 文件中所有设置为 swap 的设备开启
swapon -a
#将 /etc/fstab 文件中所有设置为 swap 的设备关闭
swapoff -a

—————————————————————————————————

本文告一段落,如有错误,欢迎各位同僚指正,本人不胜感激!

Linux磁盘管理和文件系统相关推荐

  1. Linux磁盘管理与文件系统

    Linux磁盘管理与文件系统 磁盘结构 ■硬盘的物理结构 ■硬盘的数据结构 ■硬盘存储容量公式 MBR与磁盘分区表示 ■主引导记录(MBR: Master Boot Record) 磁盘分区结构 文件 ...

  2. 【AWSL】之Linux磁盘管理与文件系统(fdisk、df、mount、umount、lsblk)

    序言 这里我主要介绍以下Linux的磁盘管理与文件系统的一些操作与概述 磁盘和文件 序言 一.磁盘分区结构 二.文件系统类型 三. 检测并确认新硬盘 1.fdisk命令 2.fdisk -l 3.规划 ...

  3. Linux磁盘管理与文件系统(实验详解,一看就懂)

    磁盘管理与文件系统 一.磁盘管理 1.1 磁盘结构 1.2 MBR与磁盘分区表示 1.2.1 MBR 1.2.2 磁盘分区表示 二.文件系统 2.1 文件系统类型 2.2 检测并确认新硬盘 2.3 管 ...

  4. 简介Linux磁盘管理与文件系统

    磁盘管理与文件系统 一.磁盘基础 1.磁盘结构 1.1.硬盘的物理结构 1.2.硬盘的数据结构 1.3.硬盘的存储容量 1.4.可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域 1.5.磁盘接口类型 ...

  5. 分析Linux磁盘管理与文件系统专题三

    1.前言 紧接着我的上一篇博客进行磁盘管理操作: http://zhangfengzhe.blog.51cto.com/8855103/1430531 我们已经对磁盘进行了分区,信息如下: [root ...

  6. Linux怎么把硬盘ex2改为ex4,linux磁盘管理和文件系统创建

    1磁盘管理 1.1硬盘的构造原理 硬盘分类: 机械式硬盘,固态硬盘 硬盘出厂会进行低级格式化,分磁盘,再分扇区,硬盘的第一个磁道的一个扇区就是MBR 512Bytes Master boot reco ...

  7. Linux磁盘管理和文件系统(相思相见知何日?此时此夜难为情)

    目录 一.磁盘基础 1.磁盘结构 2.MBR与磁盘分区表示 3.磁盘分区结构 4.文件系统 (1)XFS文件系统 (2)swap交换文件系统 (3)Linux支持的其他文件系统类型 二.检测并确认新硬 ...

  8. Linux磁盘管理——XFS文件系统符号链接硬链接

    九.xfs文件系统 XFS文件系统的配置 基本上XFS就是一个日志式文件系统,之所以现在把它当预设的文件系统 是因为它原本就是被开发用于高容量磁盘以及高性能文件系统之用的,相当适合于现在的环境.此外, ...

  9. Linux———磁盘管理与文件系统!!!

    前言 磁盘基础 1.硬盘的结构 2.磁盘分区表示 3.磁盘分区的结构 文件系统类型 检测并确认新硬盘 1.规划硬盘中的分区 2.检测并确认新硬盘 3.规划硬盘中的分区 管理文件系统 1.创建文件系统 ...

最新文章

  1. Android -------GestureDetector类的用法
  2. Code Valley团队拟在澳洲建立一座价值5000万美元的BCH科技园
  3. Android View 的onDraw 和 draw 一定会调用吗?
  4. Configuring the Java Virtual Manager (JVM)
  5. 这是一个有趣的问题,Java 8 Lambda 表达式被编译成了什么?
  6. 【转载】SAP集成会计凭证生成的原理
  7. 数学--数论--Miller_Rabin判断一个大数是不是素数(随机算法)
  8. jquery checkbox 实现单选
  9. RabbitMQ中BasicGet与BasicConsume的区别
  10. 利用消息机制实现.NET AOP(面向方面编程)--基本概念和实现
  11. 开源人工智能技术将改变一切
  12. 高性能编程之IO复用之epoll
  13. mysql between 边界
  14. 卡巴斯基安全部队2014,越来越像VISTA了
  15. java 爬虫大型教程(一)
  16. kvaser怎么用?Kvaser 汽车CAN通讯协议总线分析仪新手入门常见问题解决方案教程
  17. 运动会加油稿计算机学院,学院运动会加油稿范文
  18. 被黑客入侵了怎么办_被黑客入侵后该怎么办
  19. Web 2.0时代RSS的.Net实现
  20. MacBook Pro 16寸 i9-9880H对比 桌面级CPU i7-8700

热门文章

  1. 安装程序向硬盘复制文件是遇到错误:[Errno 5] Input/out error ;U盘安装Ubuntu18.04.1遇到错误
  2. Android应用漏洞及常见解决方案
  3. 第15周项目二—洗牌(1)
  4. 基于web 3d 演示_评论:排名前五的基于Web的演示工具比较
  5. APP测试概念/Appium实战
  6. 致敬!向中外9名杰出女数学家
  7. java实现lbs_Java总结篇系列:Java泛型
  8. JVM内存模型和性能调优:阿里巴巴Arthas调优工具:什么是Arthas- 第43篇
  9. 计算机学报在线阅读,含指针程序的单子切片方法-计算机学报.pdf
  10. 使用DOM技术操纵文档