失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Linux笔记 No.17---(磁盘分区fdisk gdisk parted 格式化mkfs mke2fs 挂载mount 卸载umount df du lsof命令)

Linux笔记 No.17---(磁盘分区fdisk gdisk parted 格式化mkfs mke2fs 挂载mount 卸载umount df du lsof命令)

时间:2024-03-19 20:08:54

相关推荐

Linux笔记 No.17---(磁盘分区fdisk gdisk parted 格式化mkfs mke2fs 挂载mount 卸载umount df du lsof命令)

文章目录

一、磁盘(一)机械硬盘(HDD)1.基本组成2.逻辑结构(二)固态硬盘(SSD)二、硬盘分区(一)基本概念1. MBR(MS-DOS 主引导记录区)方案2.GPT(GUID Partition Table)方案(二)lsblk命令(三)磁盘分区:fdisk/gdisk1.gdisk2.fdisk3.parted分区三、格式化(一)mkfs命令格式化(二)mke2fs命令格式化(三)文件系统的管理工具ext系列xfs系列四、文件系统的挂载与卸载(一)各硬件设备在Linux中的文件名(二)挂载mount(二)将设备文件卸载五、df命令六、du命令七、lsof命令

一、磁盘

磁盘(disk)是指利用磁记录技术存储数据的存储器。

磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘),如今常用的磁盘是硬磁盘(Hard disk,简称硬盘)。

在 Linux 系统中,文件系统是创建在硬盘上的。

磁盘是计算机的主要外部存储设备。计算机中的存储设备种类非常多,常见的主要有光盘、硬盘、U 盘等,甚至还有网络存储设备 SAN、NAS 等,使用最多的还是硬盘。

从存储数据的介质上来区分,硬盘可分为机械硬盘(Hard Disk Drive, HDD)和固态硬盘(Solid State Disk, SSD)

(一)机械硬盘(HDD)

1.基本组成

磁盘主要由盘体,控制电路和接口部件组成,盘体就是一个密封,封装了多个盘片的腔体;控制电路包含硬盘BIOS,主控芯片和硬盘缓存等单元;接口部件包含电源、数据接口主从跳线等。

硬盘的盘片一般采用合金材料,多数为铝合金(IBM曾经开发过玻璃材质的盘片但不多见),盘面上涂着磁性材料,厚度一般在0.5mm左右。有些硬盘只装一张盘片,有些则有多张。

硬盘盘片安装在主轴电机的转轴上,在主轴电机的带动下作高速旋转。每张盘片的容量称为单碟容量,而一块硬盘的总容量就是所有盘片容量的总和。早期硬盘由于单碟容量低,所以盘片较多。现代的硬盘盘片一般只有少数几片。

盘片上的记录密度很大,而且盘片工作时会高速旋转,为保证其工作的稳定,数据保存的长久,所以硬片都是密封在硬盘内部。不可自行拆卸硬盘,在普通环境下空气中的灰尘、指纹、头发丝等细小杂质都会对硬盘造成永久损害。

数据就存放在磁盘盘片中。类似于留声机吗。留声机上使用的唱片磁盘盘片非常相似,不过留声机只有一个磁头,而硬盘是上下双磁头,盘片在两个磁头中间高速旋转。

机械硬盘是上下盘面同时进数据读取的。而且机械硬盘的旋转速度要远高于唱片(目前机械硬盘的常见转速是 7200 r/min),所以机械硬盘在读取或写入数据时,非常害怕晃动和磕碰。另外,因为机械硬盘的超高转速,如果内部有灰尘,则会造成磁头或盘片的损坏,所以机械硬盘内部是封闭的,如果不是在无尘环境下,则禁止拆开机械硬盘。

2.逻辑结构

机械硬盘的逻辑结构主要分为盘面、磁道、扇区、拄面、簇、磁头

盘面 platter

硬盘一般会有一个或多个盘片,每个盘片可以有两个面(Side),即第1个盘片的正面称为0面,反面称为1面;第2个盘片的正面称为2面,反面称为3面…依次类推。每个盘面对应一个磁头(head)用于读写数据。第一个盘面的正面的磁头称为0磁头,背面称为1磁头;第二个盘片正面的磁头称为2磁头,背面称为3磁头,以此类推。盘面数和磁头数是相等的。

磁头 read-writer head

一张单面的盘片需要一个磁头,双面的盘片则需要两个磁头。硬盘采用高精度、轻型磁头驱动和定位系统。这种系统能使磁头在盘面上快速移动,读写硬盘时,磁头依靠磁盘的高速旋转引起的空气动力效应悬浮在盘面上,与盘面的距离不到1微米(约为头发直径的百分之一),可以在极短的时间内精确定位到计算机指令指定的磁道上。

磁道 track

每个盘片的每个盘面被划分成多个狭窄的同心圆环,数据就是存储在这样的同心圆环上,我们将这样的圆环称为磁道(Track),每个盘面可以划分多个磁道。关机时磁头停留在硬盘的着陆区(Landing Zone),这个着陆区以前是位于离盘心最近的区域,不存放任何数据。

扇区 sector

把每个磁道划分成若干弧段,每段称为一个扇区(Sector)。扇区是硬盘上存储的物理单位,每个扇区一般为512B或4K。也就是说即使计算机只需要硬盘上存储的某个字节,也须一次把这个字节所在的扇区中的全部512字节读入内存,再选择所需的那个字节。

为了对扇区进行查找和管理,需要对扇区进行编号,扇区的编号从0磁道开始,起始扇区为1扇区,其后为2扇区、3扇区……,0磁道的扇区编号结束后,1磁道的起始扇区累计编号,直到最后一个磁道的最后一个扇区(n扇区)

Tips:扇区是最小的物理存储单位,有512bytes和4K两种格式,最小分区单位通常为扇区

交叉因子:在硬盘磁道中,扇区号是按照某个间隔跳跃着编排。比如,2号扇区并不是1号扇区后的按顺序的第一个而是第八个,3号扇区又是2号扇区后的按顺序的第八个,依此类推,这个“八”称为交叉因子。

数据读取经常需要按顺序读取一系列相邻的扇区(逻辑数据相邻)。如对磁道扇区按物理顺序进行编号,很有可能出现当磁头读取完第一个扇区后,由于盘片转速过快来不及读取下一个扇区,(要知道物理相邻扇区位置距离是极小的),必须等待转完一圈,这极大浪费了时间。所以就用交叉来解决这个问题。

柱面Cylinder

如果硬盘是由多个盘片组成的,每个盘面都被划分为数目相等的磁道,那么所有盘片都会从外向内进行磁道编号,最外侧的就是 0 磁道(依此往里为1磁道,2磁道,3磁道…)。具有相同编号的磁道会形成一个圆柱,这个圆柱就被称作磁盘的柱面

硬盘数据的读写是按柱面进行,即磁头读写数据时首先在同一柱面内从0磁头开始进行操作,依次向下在同一柱面的不同盘面(即磁头上)进行操作,只有在同一柱面所有的磁头全部读写完毕后磁头才转移到下一柱面

将物理相邻的若干个扇区称为了一个簇。操作系统读写磁盘的基本单位是扇区,而文件系统的基本单位是簇。

如查看一个文件的大小,显示:大小:15 字节 (15 字节), 占用空间:4.00 KB (4,096 字节)。这里的占用空间就是机器分区的簇大小,因为再小的文件都会占用空间,逻辑基本单位是4K,所以都会占用4K。

硬盘的容量=柱面数(磁道数) * 磁头数 * 单磁道扇区数 * 单个容量扇区大小(一般初始为512字节)

硬盘的接口

机械硬盘通过接口与计算机主板进行连接。硬盘的读取和写入速度与接口有很大关系。如果接口的性能很差,则会影响机械硬盘的性能。

目前,常见的机械硬盘接口有以下几种:

IDE 硬盘接口(Integrated Drive Eectronics,并口,即电子集成驱动器)也称作 “ATA硬盘” 或 “PATA硬盘”,是早期机械硬盘的主要接口,ATA133 硬盘的理论速度可以达到 133MB/s(此速度为理论平均值)

SATA 接口(Serial ATA,串口),是速度更高的硬盘标准,具备了更高的传输速度,并具备了更强的纠错能力。目前已经是 SATA 三代,理论传输速度达到 600MB/s(理论平均值)

SCSI 接口(Small Computer System Interface,小型计算机系统接口),广泛应用在服务器上,具有应用范围广、多任务、带宽大、CPU 占用率低及热插拔等优点,理论传输速度达到 320MB/s

磁盘的分类:

IDE磁盘:特点价格低廉,兼容性强,性价比高,数据传输慢,不支持热插拔等等。SCSI磁盘:传输速率高,读写性能好,运行稳定,可连接多个设备。可支持热插拔,占用CPU低,但是价格相对来说比较贵,一般用于工作站或服务器上。SATA磁盘:结构简单、支持热插拔USB

其中IDE的磁盘的文件名为 /dev/hd[a-d]

而SCSI、SATA、USB的磁盘文件名为/dev/sd[a-p]

(二)固态硬盘(SSD)

固态硬盘和传统的机械硬盘最大的区别就是不再采用盘片进行数据存储,而采用存储芯片进行数据存储。固态硬盘的存储芯片主要分为两种:一种是采用闪存作为存储介质的;另一种是采用DRAM作为存储介质的。目前使用较多的主要是采用闪存作为存储介质的固态硬盘

固态硬盘和机械硬盘对比主要有以下一些特点

固态硬盘因为丟弃了机械硬盘的物理结构,所以相比机械硬盘具有了低能耗、无噪声、抗震动、低散热、体积小和速度快的优势;不过价格相比机械硬盘更高,而且使用寿命有限。

二、硬盘分区

(一)基本概念

硬盘分区是指将硬盘的整体存储空间划分成多个独立的区域,分别用来安装操作系统、安装应用程序以及存储数据文件等

但在分区之前,应该做一些准备及计划工作,包括一块硬盘要划分为几个分区,每个分区应该有多大的容量,以及每个分区准备使用什么文件系统等。对于某些操作系统而言,硬盘必须分区后才能使用,否则不能被识别。

通常,从文件存放和管理的方便、容易、快捷性出发,建议将硬盘划分多个分区,用以存放不同类型的文件,如存放操作系统、应用程序、数据文件等

只有将磁盘进行分区格式化之后,才能成为操作系统能够利用的文件系统格式(filesystem)传统的磁盘与文件系统的应用中,一个分区可以格式化成为了一个文件系统。

所以我们可以说一个filesystem就是一个partition,随着技术的革新,有了LVM,RAID之后,打破了这个一一对应的关系,现在我们在格式化的时候已经不再针对一个parition,而是我们称为一个可被挂载的数据块为一个文件系统。

硬盘分区表可以说是支持硬盘正常工作的骨架。操作系统正是通过它把硬盘划分为若干个分区,然后再在每个分区里面创建文件系统,写入数据文件。

为什么要分区:

(1)易于管理和使用;(2)有利于数据的安全;(3)节约寻找文件的时间;

目前磁盘分区主要有MBR以及GPT两种格式

1. MBR(MS-DOS 主引导记录区)方案

MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区。

不过,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外的64个字节交给了 DPT(Disk Partition Table硬盘分区表),最后两个字节“55,AA”是分区的结束标志。这个整体构成了硬盘的主引导扇区。

Tips:零磁道一旦受损,将使硬盘的主引导程序和分区表信息将遭到严重破坏,从而导致硬盘无法引导

主引导扇区记录着硬盘本身的相关信息以及硬盘各个分区的大小及位置信息。如果它受到破坏,硬盘上的基本数据结构信息将会丢失,需要用繁琐的方式试探性地重建数据结构信息后,才可能重新访问原先的数据。

主引导扇区内的信息可以通过任何一种基于某种操作系统的分区软件写入,但和某种操作系统没有特定的关系,即只要创建了有效的主引导记录就可以引导任意一种操作系统

分区表由4项组成,每项16个字节(Byte).共4×16 = 64字节(Byte)。每项描述一个分区的基本信息。

MBR分区表上有四项,每一项表示一个分区,所以一个分区表最多只能表示4个分区。分区表上的4项用来表示主分区和扩展分区的信息。因为扩展分区最多只能有一个,所以硬盘最多可以有四个主分区或者三个主分区,一个扩展分区。余下的分区表是表示逻辑分区的。

这里有必要阐述一点:逻辑区都是位于扩展分区里面的,并且逻辑分区的个数没有限制。

硬盘的分区由主分区、扩展分区和逻辑分区组成:主分区(注意扩展分区也是一个主分区)的最大个数是四个,其

个数是由硬盘的主引导记录MBR(Master Boot Recorder)决定的,MBR存放启动管理程序(如GRUB)和分区表记录。

扩展分区下又可以包含多个逻辑分区 — 所以主分区范围是从1-4,逻辑分区是从5开始的

sector1的结构如下图:其中P1、P2、P3、P4代表硬盘最多可以有4个分区,4个分区中最多有一个扩展分区,扩展分区可以在逻辑上分出更多的分区。分区表项结构描述了硬盘分区表项如何描述分区

有了分区表,便可以看看MBR方案是如何进行硬盘分区。把硬盘按柱面顺序展开,得到如下示意图。

假设硬盘有701个柱面,分区表位于第一个柱面的开始处,即第一个逻辑扇区处。分区表将硬盘分为四个分区P1,P2,P3,P4,其中P4位扩展分区,分为L1,L2,L3,L4四个逻辑分区,逻辑分区中分区信息位于每个逻辑分区开始处。逻辑分区的具体数量与操作系统有关。

MBR只支持不超过2T的硬盘。

2.GPT(GUID Partition Table)方案

这是另外一种分区,针对MBR分区,它有很多优点:

(1)几乎突破了分区个数的限制。

在GPT分区表中最多可以支持128个主分区。

(2)单个分区容量几乎没有限制。

单个分区最大支持1EB容量。

因此GPT分区中,主分区和扩展分区,逻辑分区的概念已经很模糊了。甚至没必要这么叫。其实扩展分区之所以存在,意义就是为了解决MBR中分区个数的限制问题。既然在GPT中,分区个数几乎没有了限制,那么这些概念就会模糊起来。

(二)lsblk命令

观察硬盘分区状态,以树形结构列出系统上的所有磁盘列表

用法:lsblk [选项] [device]

选项:

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

【例 1】

[root@admin ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda8:0 0 100G 0 disk ├─sda1 8:1 0 286M 0 part /boot└─sda2 8:2 0 99.7G 0 part ├─centos-root 253:0 0 86.7G 0 lvm /├─centos-swap 253:1 0 3.7G 0 lvm [SWAP]└─centos-home 253:2 0 9.3G 0 lvm /homesdb8:16 0 20G 0 disk sr0 11:0 1 1024M 0 rom

可以看出:有一个sda、一个sdb和一个sr0设备,而sda设备下又有三个分区,其中sda2甚至还有因为LVM而产生的文件系统。

输出信息:

【例 2】

仅列出/dev/sda设备内的所有数据的完整文件名

[root@admin ~]# lsblk -ip /dev/sdaNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT/dev/sda 8:0 0 100G 0 disk |-/dev/sda1 8:1 0 286M 0 part /boot`-/dev/sda2 8:2 0 99.7G 0 part |-/dev/mapper/centos-root 253:0 0 86.7G 0 lvm /|-/dev/mapper/centos-swap 253:1 0 3.7G 0 lvm [SWAP]`-/dev/mapper/centos-home 253:2 0 9.3G 0 lvm /home

同时列出该磁盘内的文件系统与UUID数据信息

[root@admin ~]# lsblk -f /dev/sdaNAME FSTYPELABEL UUIDMOUNTPOINTsda├─sda1xfs4dd7e68d-866e-45c4-90fa-a874f9860a3a /boot└─sda2LVM2_member 0BZ0Fj-Chto-UjJM-1C8c-sllG-LZgX-RchmZs ├─centos-root xfs065251f3-2332-48af-8d1e-bd8f0ecbd94f /├─centos-swap swap b41af099-35bc-4719-8a86-83b7476c3735 [SWAP]└─centos-home xfs6de0d75d-afaf-4550-940f-41ec9ce3302c /home

UUID是全局唯一标识符,Linux会将系统内所有的设备都赋予一个独一无二的标识符,同时也可以使用blkid命令进行查看

[root@admin ~]# blkid/dev/sda1: UUID="4dd7e68d-866e-45c4-90fa-a874f9860a3a" TYPE="xfs" /dev/sda2: UUID="0BZ0Fj-Chto-UjJM-1C8c-sllG-LZgX-RchmZs" TYPE="LVM2_member" /dev/mapper/centos-root: UUID="065251f3-2332-48af-8d1e-bd8f0ecbd94f" TYPE="xfs" /dev/mapper/centos-swap: UUID="b41af099-35bc-4719-8a86-83b7476c3735" TYPE="swap" /dev/mapper/centos-home: UUID="6de0d75d-afaf-4550-940f-41ec9ce3302c" TYPE="xfs"

如上所示,每一行代表一个文件系统,主要列出设备名称,UUID名称以及文件系统的类型(TYPE),不过无法查看磁盘的分区类型,可以使用parted命令查看:

用法:parted device_name print[root@admin ~]# parted /dev/vda printModel: VMware, VMware Virtual S (scsi) #磁盘的模块名称(厂商)Disk /dev/sda: 107GB #磁盘的总容量Sector size (logical/physical): 512B/512B#磁盘的每个逻辑/物理扇区容量Partition Table: msdos#分区表的格式Disk Flags: Number Start End Size TypeFile system 标志 #以下为分区数据11049kB 301MB 300MB primary xfs启动2301MB 107GB 107GB primarylvm

通过输出可以看到,该磁盘的分区格式是使用的是msdos分区格式

(三)磁盘分区:fdisk/gdisk

MBR分区表建议使用fdisk分区,GPT分区建议使用gdisk分区,否则会导致分区失败。

其实这两个工具的软件非常类似,执行了该软件,可以根据该软件内部的操作说明来操作,只需知道方法即可。

1.gdisk

对大于2TB硬盘进行分区

用法:gdisk device

先使用lsblk查看需要进行分区的设备名称

[root@admin ~]# lsblk -dpNAMEMAJ:MIN RM SIZE RO TYPE MOUNTPOINT/dev/sda 8:0 0 100G 0 disk /dev/sdb 8:16 0 20G 0 disk /dev/sdc 8:32 0 3T 0 disk /dev/sr0 11:0 1 1024M 0 rom

这里我们选取/dev/sdc 进行分区

[root@admin ~]# gdisk /dev/sdcGPT fdisk (gdisk) version 0.8.10Partition table scan:MBR: not presentBSD: not presentAPM: not presentGPT: not presentCreating new GPT mand (? for help):<====这里是输入命令操作,可以输入问号(?)来查看命令帮助Command (? for help): ?bback up GPT data to a filecchange a partition's nameddelete a partition<--------删除一个分区ishow detailed information on a partitionllist known partition typesnadd a new partition<-----增加一个分区ocreate a new empty GUID partition table (GPT)pprint the partition table<--------打印出分区表qquit without saving changes<------不保存分区就直接离开gdiskrrecovery and transformation options (experts only)ssort partitionstchange a partition's type codevverify diskwwrite table to disk and exit<------保存分区操作后离开gdiskxextra functionality (experts only)?print this menuCommand (? for help):

例如:新增分区

(1)01024GB的xfs文件系统(Linux)

(2)1024GB的vfat文件系统(Windows)

Command (? for help): nPartition number (1-128, default 1): #选择默认,直接回车即可First sector (34-6442450910, default = 2048) or {+-}size{KMGTP}: #该分区的起始扇区号码,回车即可,默认为上一个分区结束号码加1Last sector (2048-6442450910, default = 6442450910) or {+-}size{KMGTP}: +1024G #终止的扇区号码,我们不需要自己去计算扇区号码,可以通过+容量的方式就可以帮你计算出终止的扇区号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): p#使用p进行查看Disk /dev/sdc: 6442450944 sectors, 3.0 TiBLogical sector size: 512 bytesDisk identifier (GUID): 0562C5C2-F0B5-401A-967C-B77B362F2E3FPartition table holds up to 128 entriesFirst usable sector is 34, last usable sector is 6442450910Partitions will be aligned on 2048-sector boundariesTotal free space is 4294967229 sectors (2.0 TiB)Number Start (sector) End (sector) Size Code Name1 20482147485695 1024.0 GiB 8300 Linux filesystem

继续添加第二个分区:

Command (? for help): nPartition number (2-128, default 2): First sector (34-6442450910, default = 2147485696) or {+-}size{KMGTP}: Last sector (2147485696-6442450910, default = 6442450910) or {+-}size{KMGTP}: +1024GCurrent type is 'Linux filesystem'Hex code or GUID (L to show codes, Enter = 8300): L#输入L查看需要的文件系统类型0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE3000 ONIE boot 3001 ONIE config 4100 PowerPC PReP boot 4200 Windows LDM data4201 Windows LDM metadata 7501 IBM GPFS 7f00 ChromeOS kernel 7f01 ChromeOS root 7f02 ChromeOS reserved 8200 Linux swap 8300 Linux filesystem8301 Linux reserved8302 Linux /home 8400 Intel Rapid Start8e00 Linux LVM a500 FreeBSD disklabela501 FreeBSD boota502 FreeBSD swap a503 FreeBSD UFS a504 FreeBSD ZFS a505 FreeBSD Vinum/RAID a580 Midnight BSD dataa581 Midnight BSD boota582 Midnight BSD swap a583 Midnight BSD UFSa584 Midnight BSD ZFSa585 Midnight BSD Vinum a800 Apple UFS a901 NetBSD swap a902 NetBSD FFSa903 NetBSD LFS a904 NetBSD concatenated a905 NetBSD encrypted a906 NetBSD RAID ab00 Apple boot af00 Apple HFS/HFS+af01 Apple RAID af02 Apple RAID offline af03 Apple label af04 AppleTV recoveryaf05 Apple Core Storage be00 Solaris boot bf00 Solaris rootbf01 Solaris /usr & Mac Z bf02 Solaris swap bf03 Solaris backup bf04 Solaris /varbf05 Solaris /home bf06 Solaris alternate se bf07 Solaris Reserved 1 bf08 Solaris Reserved 2 bf09 Solaris Reserved 3 bf0a Solaris Reserved 4 bf0b Solaris Reserved 5 c001 HP-UX data c002 HP-UX service ea00 Freedesktop $BOOT eb00 Haiku BFS ed00 Sony system partitio ed01 Lenovo system partitPress the <Enter> key to see more codes: 0700ef00 EFI System ef01 MBR partition scheme ef02 BIOS boot partition fb00 VMWare VMFS fb01 VMWare reserved fc00 VMWare kcore crash pfd00 Linux RAID Hex code or GUID (L to show codes, Enter = 8300): 0700 #输入对应的文件系统类型号Changed type of partition to 'Microsoft basic data'Command (? for help): p#查看Disk /dev/sdc: 6442450944 sectors, 3.0 TiBLogical sector size: 512 bytesDisk identifier (GUID): 0562C5C2-F0B5-401A-967C-B77B362F2E3FPartition table holds up to 128 entriesFirst usable sector is 34, last usable sector is 6442450910Partitions will be aligned on 2048-sector boundariesTotal free space is 2147483581 sectors (1024.0 GiB)Number Start (sector) End (sector) Size Code Name1 20482147485695 1024.0 GiB 8300 Linux filesystem221474856964294969343 1024.0 GiB 0700 Microsoft basic dataCommand (? for help):

使用 p 可以列出这块磁盘的分区表信息,输出信息为:

第一行:磁盘容量:3.0T,共有6442450944个扇区第二行:每个扇区的容量为512B(现在的分区主要是以扇区为最小单位)Number:分区编号,对于当前设备来说,1号指的是/dev/sdc1,2号便指的是/dev/sdc2……Start(sector):每一个分区的开始扇区号码位置End (sector):每一个分区的结束扇区号码位置,通过与Start之间可以计算出分区的总容量Size:分区的容量Code:分区的文件类型Name:文件系统的名称

可以看到:还可以继续进行分区,因为最大扇区为6442450944,目前只是用到4294969343;分区的设计中,新分区通常会选用上一个分区的结束扇区号码数加1作为起始扇区号码

注意:gdisk只有root才能执行;使用的设备文不能加上数字,因为磁盘分区是针对整个磁盘设备而不是某个分区

确认分区信息无误后输入 w 进行保存并退出:

Command (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTINGPARTITIONS!!Do you want to proceed? (Y/N): yOK; writing new GUID partition table (GPT) to /dev/sdc.The operation has completed successfully.#输入w 写入保存后,gdisk会先警告你可能出现的问题,我们确认信息无误后,便可以输入y

使用 lsblk查看分区后的情况

[root@admin ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda8:0 0 100G 0 disk ├─sda1 8:1 0 286M 0 part /boot└─sda2 8:2 0 99.7G 0 part ├─centos-root 253:0 0 86.7G 0 lvm /├─centos-swap 253:1 0 3.7G 0 lvm [SWAP]└─centos-home 253:2 0 9.3G 0 lvm /homesdb8:16 0 20G 0 disk sdc8:32 0 3T 0 disk ├─sdc1 8:33 0 1T 0 part └─sdc2 8:34 0 1T 0 part sr0 11:0 1 1024M 0 rom

可以看到,sdc1和sdc2,说明添加分区成功

删除一个分区:

[root@admin ~]# gdisk /dev/sdcGPT fdisk (gdisk) version 0.8.10Partition table scan:MBR: protectiveBSD: not presentAPM: not presentGPT: presentFound valid GPT with protective MBR; using mand (? for help): dPartition number (1-2): 2#删除刚才创建的第二个分区Command (? for help): p#查看是否删除成功Disk /dev/sdc: 6442450944 sectors, 3.0 TiBLogical sector size: 512 bytesDisk identifier (GUID): 0562C5C2-F0B5-401A-967C-B77B362F2E3FPartition table holds up to 128 entriesFirst usable sector is 34, last usable sector is 6442450910Partitions will be aligned on 2048-sector boundariesTotal free space is 4294967229 sectors (2.0 TiB)Number Start (sector) End (sector) Size Code Name1 20482147485695 1024.0 GiB 8300 Linux filesystemCommand (? for help): w #没问题就写入保存并退出

查看:

[root@admin ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda8:0 0 100G 0 disk ├─sda1 8:1 0 286M 0 part /boot└─sda2 8:2 0 99.7G 0 part ├─centos-root 253:0 0 86.7G 0 lvm /├─centos-swap 253:1 0 3.7G 0 lvm [SWAP]└─centos-home 253:2 0 9.3G 0 lvm /homesdb8:16 0 20G 0 disk sdc8:32 0 3T 0 disk └─sdc1 8:33 0 1T 0 part sr0 11:0 1 1024M 0 rom

可以看到sdc已经被删除

注意:不要去处理一个正在使用中的分区

2.fdisk

该命令主要针对MBR分区表。虽然MBR分区表在未来可能会被淘汰,因为现在得磁盘容量基本都是大于2TB,fdisk命令不支持大于 2TB 的分区,目前还无法完整支持GPT,不过还是有小磁盘存在的空间,这时处理MBR分区表就得使用fdisk

用法:

fdisk [选项] <磁盘> 更改分区表

fdisk [选项] -l <磁盘> 列出分区表

fdisk -s <分区> 给出分区大小(块数)

选项:

-b <大小> :扇区大小(512、1024、2048或4096)-c[=<模式>] :兼容模式:“dos”或“nondos”(默认)-u[=<单位>] :显示单位:“cylinders”(柱面)或“sectors”(扇区,默认)-C <数字> :指定柱面数-H <数字> :指定磁头数-S <数字>:指定每个磁道的扇区数

【例 】

[root@admin ~]# fdisk -l磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x0002d275设备 BootStart EndBlocks Id System/dev/sda1 * 2048587775292864 83 Linux/dev/sda2587776 209715199 104563712 8e Linux LVM磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.磁盘 /dev/sdc:3298.5 GB, 3298534883328 字节,6442450944 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:gptDisk identifier: 0562C5C2-F0B5-401A-967C-B77B362F2E3F# StartEnd Size Type Name1 2048 21474856951T Linux filesyste Linux filesystem磁盘 /dev/mapper/centos-root:93.1 GB, 93063217152 字节,181764096 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘 /dev/mapper/centos-swap:4001 MB, 4001366016 字节,7815168 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘 /dev/mapper/centos-home:9999 MB, 9999220736 字节,19529728 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节

使用fdisk进行分区:

因为fdisk和gdisk使用的方式几乎一样,只是一个使用问号(?)作为命令提示信息,一个使用字母m显示提示而已。此外,fdisk有时会使用柱面(cylinder)作为分区的最小单位,与gdisk默认使用扇区不太一样

在 fdisk 交互界面中输入 m 可以得到帮助,帮助里列出了 fdisk 可以识别的交互命令

[root@admin ~]# fdisk /dev/sdb欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。Device does not contain a recognized partition table使用磁盘标识符 0x19264bec 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):m<-------输入m后,就会输出命令帮助信息命令操作a toggle a bootable flag<-----设置可引导标记b edit bsd disklabel<-----编辑 bsd 磁盘标签c toggle the dos compatibility flagd delete a partition<------删除一个磁盘分区g create a new empty GPT partition tableG create an IRIX (SGI) partition tablel list known partition types<-----显示已知的文件系统类型m print this menu<-----显示帮助菜单n add a new partition<------新增一个磁盘分区o create a new empty DOS partition tablep 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<-----改变一个分区的系统 IDu change display/entry units<-----改变显示记录单位v verify the partition table<-----验证分区表w write table to disk and exit<-------将刚刚的操作写入分区表x extra functionality (experts only)<-----附加功能(仅专家)命令(输入 m 获取帮助):

在/dev/sdc磁盘中新增一个2G且文件系统是Linux LVM的主分区

[root@admin ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda8:0 0 100G 0 disk ├─sda1 8:1 0 286M 0 part /boot└─sda2 8:2 0 99.7G 0 part ├─centos-root 253:0 0 86.7G 0 lvm /├─centos-swap 253:1 0 3.7G 0 lvm [SWAP]└─centos-home 253:2 0 9.3G 0 lvm /homesdb8:16 0 20G 0 disk sdc8:32 0 3T 0 disk └─sdc1 8:33 0 1T 0 part sr0 11:0 1 1024M 0 rom #开始创建分区[root@admin ~]# fdisk /dev/sdb欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。命令(输入 m 获取帮助):nPartition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p): p分区号 (1-4,默认 1):起始 扇区 (2048-41943039,默认为 2048):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G分区 1 已设置为 Linux 类型,大小设为 2 GiB命令(输入 m 获取帮助):t已选择分区 1Hex 代码(输入 L 列出所有代码):L0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris 1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT-2 XENIX root39 Plan 983 Linux c4 DRDOS/sec (FAT-3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT-4 FAT16 <32M40 Venix 8028685 Linux 扩展c7 Syrinx 5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据 6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .7 HPFS/NTFS/exFAT 4d QNX4.x88 Linux 纯文本 de Dell 工具8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt 9 AIX 可启动4f QNX4.x 第3部分 93 Amoebae1 DOS 访问 a OS/2 启动管理器 50 OnTrack DM94 Amoeba BBTe3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OSe4 SpeedStorc W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT f W95 扩展 (LBA) 54 OnTrackDM6a6 OpenBSD ef EFI (FAT-12/16/10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC 11 隐藏的 FAT12 56 Golden Bowa8 Darwin UFSf1 SpeedStor12 Compaq 诊断5c Priam Ediska9 NetBSDf4 SpeedStor14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动f2 DOS 次要 16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+fb VMware VMFS 17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep 1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT 1e 隐藏的 W95 FAT1 80 旧 Minix Hex 代码(输入 L 列出所有代码):8e已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):p磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x048456b1设备 BootStart EndBlocks Id System/dev/sdb1 204841963512097152 8e Linux LVM命令(输入 m 获取帮助):wThe partition table has been altered!Calling ioctl() to re-read partition table.正在同步磁盘。#查看是否成功[root@admin ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda8:0 0 100G 0 disk ├─sda1 8:1 0 286M 0 part /boot└─sda2 8:2 0 99.7G 0 part ├─centos-root 253:0 0 86.7G 0 lvm /├─centos-swap 253:1 0 3.7G 0 lvm [SWAP]└─centos-home 253:2 0 9.3G 0 lvm /homesdb8:16 0 20G 0 disk └─sdb1 8:17 0 2G 0 part sdc8:32 0 3T 0 disk └─sdc1 8:33 0 1T 0 part sr0 11:0 1 1024M 0 rom

删除分区为在 fdisk交互界面输入 d,进行删除和使用gdisk一样,这里不赘述

3.parted分区

”parted”,这个工具既可以做MBR分区,又可以做GPT分区,当然还是主要用它来做GPT分区

Parted是一个比fdisk更高级的工具,它支持多种分区表格式,包括MS-DOS和GPT。

它允许用户创建,删除,调整大小,缩小,移动和复制分区,重新组织磁盘使用,以及将数据复制到新硬盘,但在缩小分区时有风险,不建议。

它可以处理最常见的分区格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交换分区。

parted的操作是即刻生效的,无需像fdisk和gdisk需要最后输入 w 保存使之生效

Parted 命令分为两种模式:命令行模式和交互模式

1、命令行模式:

用法:parted [option] device [command]

该模式可以直接在命令行下对磁盘进行分区操作,比较适合编程应用。

选项:

-h:显示此求助信息

-l:列出系统系统中所有的磁盘设备,和fdisk -l命令的作用差不多。

-m:进入交互模式,如果后面不加设备则对第一个磁盘进行操作

-s:脚本模式

-v:显示版本

2、交互模式:parted [option] device 类似于使用 fdisk /dev/xxx

parted交互模式分区管理

与fdisk和gdisk类似,parted可以使用命令“parted 设备名”进入交互模式。进入交互模式后,可以通过parted的各种指令对磁盘分区进行管理。

[root@admin ~]# parted /dev/sdc(parted) help <--parted 的等待输入交互命令的位置,输入 help,可以看到在交互模式下支持的所有命令 help [COMMAND] #打印通用求助信息,或关于 COMMAND 的信息 mklabel,mktable LABEL-TYPE#创建新的磁盘标签 (分区表mkpart PART-TYPE [FS-TYPE] START END#创建一个带有文件系统的分区 name NUMBER NAME#将编号为 NUMBER 的分区命名为“名称” print [devices|free|list,all|NUMBER]#打印分区表,或者分区quit #退出程序rescue START END#挽救临近“起始点”、“终止点”的遗失的分区 resizepart NUMBER END#改变位于编号为 MINOR 的分区中文件系统的大小rm NUMBER #删除编号为 NUMBER 的分区 select DEVICE #选择要编辑的设备 set NUMBER FLAG STATE#改变编号为 NUMBER 的分区的标志unit UNIT#设置单位version #版本

【例 1】新建GPT分区

[root@admin ~]# parted /dev/sdc#对磁盘/dev/sdc进行分区GNU Parted 3.1使用 /dev/sdcWelcome to GNU Parted! Type 'help' to view a list of commands.(parted) #如果忘记有哪些可用的命令,可以按两次Tab键可以显示所以可用的指令,也支持Tab命令补齐,和上下查找历史记align-check disk_toggle mklabelmktableprint rescue resizepart select toggle versiondisk_sethelp mkpart name quit resize rm setunit (parted) help mklabel#查看mklable命令的用法及支持的分区表mklabel,mktable LABEL-TYPEcreate a new disklabel (partition table)#支持的分区类型“标签类型”是以下任意一项:aix, amiga, bsd, dvh, gpt, mac, msdos, pc98, sun, loop(parted) mklabel gpt #创建gpt分区表,如果已存在分区表也可以通过这里命令更改 警告: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?# 警告用户磁盘上的数据将会被销毁,询问是否继续,我们这里是新的磁盘,输入yes后回车是/Yes/否/No? yes (parted) p #查看分区表的信息Model: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3299GBSector size (logical/physical): 512B/512BPartition Table: gpt #分区表以是gpt格式Disk Flags: Number Start End Size File system Name 标志(parted) mkpart#输入mkpart新建分区,如果输入mkpart指令不带任何参数,parted会一步步提示用户输入相关信息最终完成创建 分区名称? []? p1 #分区的名字,这里可以直接回车不给分区命名,也可以输入用来标记的名字文件系统类型? [ext2]?#分区被格式化的文件系统,可以按两次Tab键查看支持的文件系统 affs0 affs5 amufs1 apfs1 ext3 hfs+ linux-swap(new) ntfsaffs1 affs6 amufs2 apfs2 ext4 hfsx linux-swap(old) reiserfsaffs2 affs7 amufs3 asfs fat16 hp-ufs linux-swap(v0) sun-ufsaffs3 amufs amufs4 btrfs fat32 jfs linux-swap(v1) swsuspaffs4 amufs0 amufs5 ext2 hfs linux-swap nilfs2 xfs文件系统类型? [ext2]? xfs #输入被格式化的文件系统为xfs,这里必须要输入文件系统起始点? 0% #开始位置 结束点? 1024G#结束位置,在数字后面加上单位(parted) mkpart p2 ext2 1024G 1524G #如果想一步就把分区创建好就可以这样,p2表示分区名,这样分区这里必须有,后面3项目分别是文件系统,开始位置,结束位置(parted) mkpart p3 ext3 1524G 100% #如果不想创建文件系统这里可以不加这个选项,后面两项分别是开始位置,和结束位置,100%表示使用全部剩余空间(parted) p #输入p查看分区情况,也可以使用print。如果指令是唯一的直接输入指令的首字母也可以Model: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3299GB #磁盘的总容量Sector size (logical/physical): 512B/512B#扇区的大小Partition Table: gptDisk Flags: Number Start EndSize File system Name 标志11049kB 1024GB 1024GB xfsp1#通过一步步创建的第一个分区21024GB 1524GB 500GBp2#通过一步就创建的分区31524GB 3299GB 1775GBp3#创建不带文件系统的分区(parted)

如果Start位置输入的不是0%或1M或0G的数值,分区结束会有这个的提示,Warning: The resulting partition is not properly aligned for best performance.Ignore/Cancel? (意思是说警告:生成的分区没有正确对齐以获得最佳性能。忽略/取消? 我们可以输入Ignore以忽略,但是不建议这样)

这是因为在512B扇区的磁盘驱动器上,Parted希望分区从2048的倍数(即1 MiB对齐)扇区开始。

#非交互式创建GPT分区表:[root@admin ~]#parted /dev/sdc mklabel gpt

【例 2】设置默认的单位

(parted) unit #输入unit更改默认单位,如果不知道支持那些单位直接回车Unit? [compact]? #按两次Tab键,列出支持的单位,在parted交互模式下不知道怎么输入就先按两次Tab键% chscylGiBkiBMiBTBB compact GB kB MB s TiBUnit? [compact]? GB#输入更改后的默认单位(parted) pModel: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3299GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: #默认单位均改为GBNumber Start EndSize File system Name 标志10.00GB 1024GB 1024GB xfsp121024GB 1524GB 500GBp231524GB 3299GB 1775GBp3

非交互式创建分区:

#非交互式创建5G容量的分区p1为分区名必须添加,这里不能直接添加文件系统类型,后面是起始和结束位置[root@admin ~]#parted /dev/sdc mkpart p1 0G 5G#通过命令直接查看分区信息,print改称p也可以[root@admin ~]# parted /dev/sdc print

【例 3】更改分区名

(parted) name#输入name指令更改分区名,输入后回车分区编号? 1#输入要更改名的分区号分区名称? [p1]? part1#输入新的名字(parted) pModel: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3299GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number Start EndSize File system Name 标志10.00GB 1024GB 1024GB xfspart1#已更改21024GB 1524GB 500GBp231524GB 3299GB 1775GBp3

非交互式更改分区名:

[root@admin ~]# parted /dev/sdc name 3 p3 #更改分区3的分区名为p3

【例 4】配置分区的标记

parted的分区标记相当于fdisk gdisk里面的分区类型

(parted) set#输入set更改分区标记,输入后回车分区编号? 3#更改标记的分区Flag to Invert? #输入更改标记的类型,按二次Tab键查看支持的类型atvrecvdiag legacy_boot prep 隐藏分区bios_grub hidden lvmraid boot hp-service msftres启动 Flag to Invert? lvm #标记为lvm类型新状态? [开]/on/关/off? on#输入on回车表示打开(parted) pModel: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3299GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number Start EndSize File system Name 标志10.00GB 1024GB 1024GB xfspart121024GB 1524GB 500GBp231524GB 3299GB 1775GBp3lvm #分区的标记已经生效(parted) set #取消标记操作分区编号? 3Flag to Invert? lvm新状态? 开/on/[关]/off? off#添加标记和取消标记的主要区别就在这里,这里要输入off来关闭标记(parted) pModel: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3299GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number Start EndSize File system Name 标志10.00GB 1024GB 1024GB xfspart121024GB 1524GB 500GBp231524GB 3299GB 1775GBp3#分区的标记已经取消

非交互式配置分区标记:

[root@admin ~]# parted /dev/sdc set 3 lvm #为分区3添加lvm标记New state? [on]/off? on[root@admin ~]# parted /dev/sdc set 3 lvm #取消分区3的lvm标记New state? on/[off]? off #添加标记和取消标记的主要区别就在这里,这里要输入off来关闭标记

【例 5】删除分区

(parted) rm #输入删除指令rm直接回车,如果后面加上分区号在回车就可以直接删除分区分区编号? 3 #输入要删除的分区,这里操作一定要慎重,一旦回车便生效(parted) pModel: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3299GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number Start EndSize File system Name 标志10.00GB 1024GB 1024GB xfspart121024GB 1524GB 500GBp2#成功删除了分区3

非交互式删除分区:

[root@admin ~]# parted /dev/sdc rm 3 #删除分区3

也可以使用parted对MBR类型进行分区,大多数情况下对MBR的分区推荐用fdisk来进行操作

#更改分区表

(parted) mklabel msdos#将现有的GPT分区更改成MBR分区,新磁盘也是通过这个指令来创建MBR分区警告: The existing disk label on /dev/sdc will be destroyed and alldata on this disk will be lost. Do you want to continue?是/Yes/否/No? yes(parted) pModel: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3299GBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags: Number Start End Size Type File system 标志#新建MBR分区(parted) mkpart分区类型? primary/主分区/extended/扩展分区? p文件系统类型? [ext2]? 起始点? 0%结束点? 2G(parted) mkpart primary 2G 1024G(parted) mkpart primary 1024G 3096G (parted) pModel: VMware, VMware Virtual S (scsi)Disk /dev/sdc: 3299GBSector size (logical/physical): 512B/512BPartition Table: msdosDisk Flags: Number Start EndSize TypeFile system 标志10.00GB 2.00GB 2.00GB primary 22.00GB 1024GB 1022GB primary31024GB 3096GB 2072GB primary

三、格式化

分区完成后,如果不格式化写入文件系统,则是不能正常使用的。这时就需要对硬盘分区进行格式化

(一)mkfs命令格式化

Linux下的文件类型有ext2、ext3、ext4、xfs等等,我们可以使用命令:mkfs.然后用连按两次TAB键来查看都有哪些文件类型。

[root@admin ~]# mkfs.mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.xfsmkfs.cramfs mkfs.ext3 mkfs.minix

对于MBR分区而言:扩展分区不能格式化,主分区和逻辑分区可以格式化;对于GPT则不存在,因为没有扩展分区而言了

[root@admin ~]# fdisk /dev/sdb欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。命令(输入 m 获取帮助):p磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x048456b1设备 BootStart EndBlocks Id System/dev/sdb1 204820991991048576 83 Linux/dev/sdb2 20992935032097152 83 Linux/dev/sdb3 6293504 146821114194304 83 Linux/dev/sdb4 14682112 41943039 13630464 5 Extended/dev/sdb5 14684160 230727674194304 83 Linux/dev/sdb6 23074816 419430399434112 83 Linux

对/dev/sdb进行MBR分区后,共有6个分区。1,2,3为主分区,4为扩展分区,5,6为逻辑分区

【例 1】

将/dev/sdb1进行格式化, 文件类型为ext3

[root@admin ~]# mkfs.ext3 /dev/sdb1mke2fs 1.42.9 (28-Dec-)文件系统标签=OS type: Linux块大小=4096 (log=2)分块大小=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks65536 inodes, 262144 blocks13107 blocks (5.00%) reserved for the super user第一个数据块=0Maximum filesystem blocks=2684354568 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (8192 blocks): 完成Writing superblocks and filesystem accounting information: 完成#查看是否格式化成功[root@admin ~]# blkid /dev/sdb1/dev/sdb1: UUID="8916afac-bf20-477f-b369-f51332856c28" SEC_TYPE="ext2" TYPE="ext3"

当done(完成)出现后,意味着格式化已经进行完毕。

【例 2】

mkfs.ext4 /dev/sd1 等价于mkfs -t ext4 /dev/sd1

[root@admin ~]# mkfs -t ext4 /dev/sdb5mke2fs 1.42.9 (28-Dec-)文件系统标签=OS type: Linux块大小=4096 (log=2)分块大小=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks262144 inodes, 1048576 blocks52428 blocks (5.00%) reserved for the super user第一个数据块=0Maximum filesystem blocks=107374182432 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (32768 blocks): 完成Writing superblocks and filesystem accounting information: 完成 [root@admin ~]# blkid /dev/sdb5/dev/sdb5: UUID="b49d1797-6114-4f5c-a888-f7ca7c6d5c5a" TYPE="ext4"

【例 3】

如果将sdb1分区使用mkfs格式化为xfs类型,那么便不能再将sdb1格式化ext系列其它类型;但是,如果sdb1格式化ext系列类型时,可以二次将 sdb1格式化为xfs类型;ext系列之间可以互相格式化

[root@admin ~]# blkid /dev/sdb2/dev/sdb2: UUID="43d1b6dd-b323-44e6-8d9d-8fcc01677212" TYPE="ext4" [root@admin ~]# mkfs.ext3 /dev/sdb2mke2fs 1.42.9 (28-Dec-)文件系统标签=OS type: Linux块大小=4096 (log=2)分块大小=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks131072 inodes, 524288 blocks26214 blocks (5.00%) reserved for the super user第一个数据块=0Maximum filesystem blocks=53687091216 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (16384 blocks): 完成Writing superblocks and filesystem accounting information: 完成

[root@admin ~]# mkfs.xfs -f /dev/sdb2meta-data=/dev/sdb2 isize=512 agcount=4, agsize=131072 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0data= bsize=4096 blocks=524288, imaxpct=25= sunit=0swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log=internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0[root@admin ~]# blkid /dev/sdb2/dev/sdb2: UUID="083857e1-bc44-47c2-937e-0718a7955271" TYPE="xfs" [root@admin ~]# mkfs.ext4 -f /dev/sdb2 #当xfs转为其他ext系列就不行mkfs.ext4:无效选项 -- fUsage: mkfs.ext4 [-c|-l filename] [-b block-size] [-C cluster-size][-i bytes-per-inode] [-I inode-size] [-J journal-options][-G flex-group-size] [-N number-of-inodes]

虽然 mkfs 命令非常简单易用,但其不能调整分区的默认参数(比如块大小是 4096 Bytes),这些默认参数除非特殊清况,否则不需要调整。如果想要调整,就需要使用 mke2fs 命令重新格式化

(二)mke2fs命令格式化

用法:mke2fs [选项] 分区设备文件名

注意:此命令不适用于xfs文件类型

选项:

-t 文件系统:指定格式化成哪个文件系统, 如 ext2、ext3、ext4;-b 字节:指定 block 的大小;-i 字节:指定"字节 inode "的比例,也就是多少字节分配一个 inode-j :建立带有 ext3 日志功能的文件系统-L 卷标名:给文件系统设置卷标名,就不使用 e2label 命令设定了

【例 1】

将/dev/sdb2格式化为ext4文件类型,

[root@admin ~]# mke2fs -t ext4 /dev/sdb2mke2fs 1.42.9 (28-Dec-)文件系统标签=OS type: Linux块大小=4096 (log=2)分块大小=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks131072 inodes, 524288 blocks26214 blocks (5.00%) reserved for the super user第一个数据块=0Maximum filesystem blocks=53687091216 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (16384 blocks): 完成Writing superblocks and filesystem accounting information: 完成 [root@admin ~]# blkid /dev/sdb2/dev/sdb2: UUID="43d1b6dd-b323-44e6-8d9d-8fcc01677212" TYPE="ext4"

【例 2】

将/dev/sdb2格式化为ext3类型,指定block大小为2048Bytes,设置卷标名为juanbiao,指定4096字节分配一个inode

[root@admin ~]# mke2fs -t ext3 -b 2048 -L juanbiao -i 4096 /dev/sdb2mke2fs 1.42.9 (28-Dec-)文件系统标签=juanbiaoOS type: Linux块大小=2048 (log=1)分块大小=2048 (log=1)Stride=0 blocks, Stripe width=0 blocks524288 inodes, 1048576 blocks52428 blocks (5.00%) reserved for the super user第一个数据块=0Maximum filesystem blocks=53791948864 block groups16384 blocks per group, 16384 fragments per group8192 inodes per groupSuperblock backups stored on blocks: 16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (32768 blocks): 完成Writing superblocks and filesystem accounting information: 完成 [root@admin ~]# blkid -ip /dev/sdb2DEVNAME=/dev/sdb2LABEL=juanbiaoUUID=9ad7d089-347b-409b-8972-79a427a00b88SEC_TYPE=ext2VERSION=1.0TYPE=ext3USAGE=filesystemMINIMUM_IO_SIZE=512PHYSICAL_SECTOR_SIZE=512LOGICAL_SECTOR_SIZE=512PART_ENTRY_SCHEME=dosPART_ENTRY_TYPE=0x83PART_ENTRY_NUMBER=2PART_ENTRY_OFFSET=2099200PART_ENTRY_SIZE=4194304PART_ENTRY_DISK=8:16

(三)文件系统的管理工具

ext系列

e2label命令:卷标的查看与设定

查看:e2label device

设定:e2label device LABEL

tune2fs命令:查看或修改ext系列文件系统的某些属性

tune2fs [OPTIONS] device

-l:查看超级块的内容

-j:ext2 --> ext3;

-L LABEL:修改卷标;

-m #:调整预留空间百分比;

dumpe2fs命令:显示ext系列文件系统的属性信息

dumpe2fs [-h] device

resize2fs [选项] device [size]

调整ext2\ext3\ext4文件系统的大小

选项:

-d debug-flags: 打开resize2fs调试特性

-f:强制执行

-F:执行之前刷新文件系统缓冲区

-M:将文件系统缩小到最小值

-p:显示已完成任务的百分比

-P:显示文件系统的最小值

e2fsck:磁盘修复 检查时先卸载

选项:

-a: 检查 partition,如发现问题会自动修复。

-b: 设定 superblock 位置。

-B size: 指定 size 作为区块大小。

-c: 检查 partition 是否有坏轨。

-C file: 将检查结果储存到 file。

-d: 输出 e2fsck debug 结果。

-f: e2fsck 预设只会对错误的文件系统检查,加上 -f 是强制检查。

-F: 在检查前将硬盘的 buffer cache 清空,避免发生错误。

-l list: 记录了坏轨区块加入 list 中。

-d : 打印 e2fsck 的 debug 结果。

-f : 强制检查。

-n: 以 (read-only) 开启档案系统

-p: 关闭互动模式,如有问题自动修复,等同 -a。

-v: 显示详细报告。

-y: 启用使用者互动模式。

fsck:检查与修复文件系统,可以同时检查一个或者多个

fsck [-sACVRP] [-t fstype] [–] [fsck-options] filesys […]

选项:

filesys : device 名称(eg./dev/sda1),mount 点 (eg. / 或 /usr)

-t : 给定文件系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数

-s : 依序一个一个地执行 fsck 的指令来检查

-A : 对/etc/fstab 中所有列出来的 partition 做检查

-C : 显示完整的检查进度

-d : 列印 e2fsck 的 debug 结果

-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行

-R : 同时有 -A 条件时,省略 / 不检查

-V : 详细显示模式

-a : 如果检查有错则自动修复

-r : 如果检查有错则由使用者回答是否修复

xfs系列

xfs_repair处理XFS文件系统,当有xfs文件系统错乱才需要使用这个命令

[root@admin ~]# xfs_repair [-fnd] 设备名称选项与参数:-f:后面的设备其实是个文件而不是实体设备-n:单纯检查并不修改文件系统的任何数据-d:通常用在单人维护模式下面,针对目录(/)进行检查与修复的操作,很危险,不能随便使用例如:检查/dev/sdb1文件系统[root@admin ~]# blkid /dev/sdb1/dev/sdb1: UUID="f7882b80-e080-4500-949d-fe7fad9f3166" TYPE="xfs" [root@admin ~]# xfs_repair /dev/sdb1Phase 1 - find and verify superblock...Phase 2 - using internal log- zero log...- scan filesystem freespace and inode maps...- found root inode chunkPhase 3 - for each AG...- scan and clear agi unlinked lists...- process known inodes and perform inode discovery...- agno = 0- agno = 1- agno = 2- agno = 3- process newly discovered inodes...Phase 4 - check for duplicate blocks...- setting up duplicate extent list...- check for inodes claiming duplicate blocks...- agno = 0- agno = 1- agno = 2- agno = 3Phase 5 - rebuild AG headers and trees...- reset superblock...Phase 6 - check inode connectivity...- resetting contents of realtime bitmap and summary inodes- traversing filesystem ...- traversal finished ...- moving disconnected inodes to lost+found ...Phase 7 - verify and correct link counts...done

提示:由于xfs_repair与fsck.ext4 在扫描磁盘的时候,可能会造成部分文件系统的改变,所以执行xfs_repair与fsck.ext4 时,被检查的硬盘分区务必不可挂载到系统上,亦即是需要在卸载状态

四、文件系统的挂载与卸载

磁盘分区和格式化完成后,磁盘分区要想能够使用,就需要挂载,在挂载某个分区前需要先建立一个挂载点

挂载:将新的文件系统关联至当前文件系统

卸载:将某文件系统与当前文件系统的关联关系移除;卸载时设备没有进程在使用

挂载点:作为要挂载文件系统的访问入口;挂载点事先必须存在;不会被进程使用到的目录;挂载点下原有文件 将会被临时隐藏

tips:我们可以对挂载的含义进行引申,挂载指的是将硬件设备的文件系统和 Linux 系统中的文件系统,通过指定目录(作为挂载点)进行关联。文件系统要想能够被访问,都必须通过“关联”至文件系统上的某个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”

(一)各硬件设备在Linux中的文件名

(二)挂载mount

挂载之前,要清楚:

单一文件系统不应该被重复挂载在不同的挂载点(目录)中;单一目录不应该重复挂载多个文件系统要作为挂载点的目录,理论上都应该是空目录才行

要将文件系统挂载到Linux系统上,就要使用mount命令

用法:

mount [-lhV]

mount -a [选项]

mount [选项] [–source] <源> | [–target] <目录>

mount [选项] <源> <目录>

mount <操作> <挂载点> [<目标>]

选项:

-a:自动检查 /etc/fstab 文件中有无疏漏被挂载的设备文件,如果有,则进行自动挂载操作。

/etc/fstab 文件,此文件是自动挂载文件,系统开机时会主动读取 /etc/fstab 这个文件中的内容,根据该文件的配置,系统会自动挂载指定设备。-l:单纯的输入mount命令会显示目前挂载的信息,加上-l可增列Label名称-t:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型;常见的Linux支持类型有:xfs、ext3、ext4、vfat、iso9660(光盘格式)、nfs、cifs、smbfs-n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性-o:后面可以接一些挂载时额外加上的参数。比如:权限,密码等

sync/async:同步/异步操作;默认为async

atime/noatime:文件或目录在被访问时是否更新其访问时间戳;

diratime/nodiratime:目录在被访问时是否更新其访问时间戳;

remount:重新挂载;

facl:支持使用facl功能;

ro:只读

rw:读写

dev/nodev:此设备上是否允许创建设备文件;

exec/noexec:是否允许运行此设备上的程序文件;

auto/noauto:是否允许此文件系统被以mount -a 自动挂载

user/nouser:是否允许普通用户挂载此文件系统,一般情况下,mount仅有root可以使用

suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效;

defaults:默认值为:rw、suid、dev、exec、auto、nouser、async 、and relatime-r:readonly,只读挂载;-w:read and write, 读写挂载;-L LABEL:挂载时以卷标的方式指明设备;-U UUID:挂载时以UUID的方式指明设备;–bind 源目录 目标目录:可以实现将目录绑定至另一个目录上,作为其临时访问入口;

【例 1】

查看当前系统所有已挂载的设备:

[root@admin ~]# mount[root@admin ~]# cat /etc/mtab[root@admin ~]# cat /proc/mounts

【例 2】

进行挂载

首先通过lsblk命令查看哪些文件系统未被挂载

[root@admin ~]# lsblk /dev/sdbNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb8:16 0 20G 0 disk ├─sdb1 8:17 0 1G 0 part ├─sdb2 8:18 0 2G 0 part ├─sdb3 8:19 0 4G 0 part ├─sdb4 8:20 0 1K 0 part ├─sdb5 8:21 0 4G 0 part └─sdb6 8:22 0 9G 0 part

可以看到/dev/sdb下的所有分区都没有被挂载

通过设备名进行挂载:将/dev/sdb1挂载到/data目录下

[root@admin ~]# mount /dev/sdb1 /data[root@admin ~]# lsblk /dev/sdb1NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb1 8:17 0 1G 0 part /data[root@admin ~]# blkid /dev/sdb1/dev/sdb1: UUID="f7882b80-e080-4500-949d-fe7fad9f3166" TYPE="xfs"[root@admin ~]# df /data文件系统 1K-块 已用 可用 已用% 挂载点/dev/sdb11038336 32992 1005344 4% /data

可以看到,我们甚至不需要使用 -t xfs 命令指定文件系统,因为系统可以自动检测(下同)

通过UUID方式挂载

[root@admin ~]# blkid /dev/sdb2/dev/sdb2: LABEL="juanbiao" UUID="9ad7d089-347b-409b-8972-79a427a00b88" SEC_TYPE="ext2" TYPE="ext3" [root@admin ~]# mount -U 9ad7d089-347b-409b-8972-79a427a00b88 /data1[root@admin ~]# lsblk /dev/sdb2NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb2 8:18 0 2G 0 part /data1

通过卷标名进行挂载

#修改设备/dev/sdb3的卷标名为juan3[root@admin ~]# blkid /dev/sdb3/dev/sdb3: UUID="77c770b2-e166-41cd-aa5f-8eb4481d84af" TYPE="ext4" [root@admin ~]# e2label /dev/sdb3 juan3 #e2label命令只能对ext系列文件系统使用[root@admin ~]# blkid /dev/sdb3/dev/sdb3: LABEL="juan3" UUID="77c770b2-e166-41cd-aa5f-8eb4481d84af" TYPE="ext4"[root@admin ~]# mount -L juan3 /data2[root@admin ~]# lsblk /dev/sdb3NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb3 8:19 0 4G 0 part /data2

【例 2】

将/dev/sdb5以只读方式挂载、指明系统类型且支持使用facl功能

[root@admin ~]# mount -r -t ext4 -o acl /dev/sdb5 /data3 [root@admin ~]# lsblk /dev/sdb5NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb5 8:21 0 4G 0 part /data3

以上挂载方式属于手动临时挂载

当退出当前shell,那么就得重新进行手动挂载。如果需要永久挂载(即启动挂载)则需要将挂载命令写入挂载配置文件/etc/fstab文件中

(1)/etc/fstab文件

磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。

系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。

(2)挂载限制

根目录是必须挂载的,而且一定要先于其他mount point被挂载。因为mount是所有目录的跟目录,其他木有都是由根目录 /衍生出来的。挂载点必须是已经存在的目录。挂载点的指定可以任意,但必须遵守必要的系统目录架构原则所有挂载点在同一时间只能被挂载一次所有分区在同一时间只能挂在一次若进行卸载,必须将工作目录退出挂载点(及其子目录)之外

(3)fstab文件中的参数

[root@admin ~]# cat /etc/fstab ## /etc/fstab# Created by anaconda on Mon Jun 29 16:36:21 ## 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#/dev/mapper/centos-root / xfsdefaults 0 0UUID=4dd7e68d-866e-45c4-90fa-a874f9860a3a /boot xfsdefaults 0 0/dev/mapper/centos-home /home xfsdefaults 0 0/dev/mapper/centos-swap swapswap defaults 0 0

可以看到文件中一共有六列

第一列Divice磁盘设备文件或者设备的Lable页或UUID

①使用设备名和label及uuid作为标识的不同

使用设备名称(/dev/sda)来挂载分区时是被固定死的,一旦磁盘的插槽顺序发生了变化,就会出现名称不对应的问题。因为这个名称是会改变的。不过使用label挂载就不用担心插槽顺序方面的问题。不过要随时注意你的Label name。至于UUID,每个分区被格式化以后都会有一个UUID作为唯一的标识号。使用uuid挂载的话就不用担心会发生错乱的问题了

②可以通过两个命令查看UUID和Lable

[root@admin ~]# dumpe2fs -h /dev/sda1 #该命令只适用于ext系列文件系统[root@admin ~]# blkid /dev/sda1

第二列Mount point设备的挂载点,就是你要挂载到哪个目录下第三列filesystem磁盘文件系统的格式,包括ext2、ext3、xfs、reiserfs、nfs、vfat等第四列parameters文件系统的参数,即mount命令中-o选项后的参数(如果是defaults则包括rw、suid、dev、exec、auto、nouser、async 、and relatime)第五列能否被dump备份命令作用dump是一个用来作为备份的命令。通常这个参数的值为0或者1(0 代表不要做dump备份;1 代表要每天进行dump的操作;2 代表不定日期的进行dump操作)第六列是否检验扇区开机的过程中,系统默认会以fsck检验我们系统是否为完整(0代表不要检验;1代表最早检验(一般根目录会选择使用2);2代表1级别检验完成之后进行检验)

【例 3】设置启动挂载

将/dev/sdb5以读写、异步、不允许普通用户挂载且支持acl、suid、nouser功能的方式挂载到/data4目录下,不需要dump备份,不检查文件系统

[root@admin ~]# blkid /dev/sdb5#查看/dev/sdb5的文件系统类型/dev/sdb5: UUID="b49d1797-6114-4f5c-a888-f7ca7c6d5c5a" TYPE="ext4[root@admin ~]# lsblk /dev/sdb5 #未挂载NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb5 8:21 0 4G 0 part [root@admin ~]# echo "/dev/sdb5 /data4 ext4 rw,async,auto,nouser,async,suid,acl 0 0" >> /etc/fstab#根据要求和规则将配置语句写入/etc/fstab文件中[root@admin ~]# mount -a#测试语法有没有错误,并且使该语句生效,如果没有报错则说明语法没有错误,并且进行执行挂载[root@admin ~]# lsblk /dev/sdb5 #查看挂载情况NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb5 8:21 0 4G 0 part /data4[root@admin ~]# cat /etc/fstab ## /etc/fstab# Created by anaconda on Mon Jun 29 16:36:21 ## 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#/dev/mapper/centos-root / xfsdefaults 0 0UUID=4dd7e68d-866e-45c4-90fa-a874f9860a3a /boot xfsdefaults 0 0/dev/mapper/centos-home /home xfsdefaults 0 0/dev/mapper/centos-swap swapswap defaults 0 0/dev/sdb5 /data4 ext4 rw,async,auto,nouser,async,suid,acl 0 0

同时也可以使用UUID或者卷标名进行启动挂载

[root@admin bin]# lsblk -f /dev/sdb5NAME FSTYPE LABEL UUID MOUNTPOINTsdb5 ext4 jbm b49d1797-6114-4f5c-a888-f7ca7c6d5c5a [root@admin ~]# echo "UUID=b49d1797-6114-4f5c-a888-f7ca7c6d5c5a /data4 ext4 rw,async,auto,nouser,async,suid,acl 0 0" >> /etc/fstab#或者[root@admin ~]# echo "LABEL="jbm" /data4 ext4 rw,async,auto,nouser,async,suid,acl 0 0" >> /etc/fstab#均可以实现挂载[root@admin ~]# df /dev/sdb5文件系统 1K-块 已用 可用 已用% 挂载点/dev/sdb53997376 16376 3754904 1% /data4

另外,我们也可以利用mount来将某个目录挂载到另一个目录。这并不是挂载文件系统,而是额外挂载某个目录的方法。虽然也可以使用软连接来做链接,不过在某些不支持软连接的程序运行中还是要通过这样的方法才行

[root@admin ~]# mkdir /data/var[root@admin var]# mount --bind /var /data/var[root@admin var]# ls -lid /var /data/var69 drwxr-xr-x. 20 root root 278 8月 6 11:06 /data/var69 drwxr-xr-x. 20 root root 278 8月 6 11:06 /var#内容完全一摸一样,因为挂载目录的缘故

看起来,其实两者链接到同一个inode,通过mount --bind的功能,可以将目录挂载到其他目录,而并不是整个文件系统,那么进入 /data/var 就是从进入 /var

(二)将设备文件卸载

[root@admin var]# umount [-fn] 设备文件名或挂载点选项与参数:-f:强制卸载,可用在类似网络文件系统(NFS)无法读取到的情况下-l:立即卸载文件系统,比-f还强-n:不更新/etc/mtab情况下卸载

就是直接将已挂载的文件系统卸载,卸载之后,可以使用df 设备名/挂载点lsblk 设备名mount -l 设备名/挂载点查看是否还存在于目录树中。卸载的方式,可以是设备文件名或挂载点,

【例】

通过设备文件名卸载

[root@admin var]# lsblk /dev/sdb2NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb2 8:18 0 2G 0 part /data1[root@admin var]# umount /dev/sdb2[root@admin var]# lsblk /dev/sdb2NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb2 8:18 0 2G 0 part

通过挂载点进行卸载

[root@admin var]# lsblk /dev/sdb5NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb5 8:21 0 4G 0 part /data4[root@admin var]# umount /data4[root@admin var]# lsblk /dev/sdb5NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb5 8:21 0 4G 0 part

注意:正在被进程访问到的挂载点无法被卸载

查看被哪个或哪些进程所占用:

#lsof MOUNT_POINT

#fuser -v MOUNT_POINT终止所有正在访问某挂载点的进程:

#fuser -km MOUNT_POINT

[root@admin var]# lsblk /dev/sdb3NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb3 8:19 0 4G 0 part /data2[root@admin var]# umount /data2umount: /data2:目标忙。(有些情况下通过 lsof(8) 或 fuser(1) 可以找到有关使用该设备的进程的有用信息)[root@admin var]# fuser -v /data2 #查看被哪些进程所占用用户进程号 权限 命令/data2: rootkernel mount /data2dxk 2084 ..c.. bash[root@admin var]# lsof /data2 #查看被哪些进程所占用COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEbash 2084 dxk cwd DIR 8,194096 2 /data2[root@admin var]# fuser -km /data2#终止所有正在访问该挂载点的进程/data2:2084c[root@admin var]# umount /data2#这时便可以卸载[root@admin var]# lsblk /dev/sdb3NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsdb3 8:19 0 4G 0 part

如果是设置的启动挂载(即将挂载写入fstab文件中的),那么使用umount卸载的话,也只是临时卸载,当重新登入bash后,将会继续自动挂载,所以要完全卸载是需要将fstab文件中的挂载语句删除

五、df命令

用于显示 Linux 系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量、已使用的容量、剩余容量等同时也可以查看挂载信息

与整个文件系统有关的数据,都保存在 Super block(超级块)中,而 df 命令主要读取的数据几乎都针对的是整个文件系统,所以 df 命令主要是从各文件系统的 Super block 中读取数据。

用法:df [选项] [目录或文件名]

选项:

-a:显示所有文件系统信息,包括系统特有的 /proc、/sysfs 等文件系统-m:以 MB 为单位显示容量-k:以 KB 为单位显示容量,默认以 KB 为单位-h:使用人们习惯的 KB、MB 或 GB 等单位自行显示容量-H:以M=1000K替换M=1024K的进位方式计算-T:连同该硬盘分区的文件系统名称(例如xfs)也列出-i:不用硬盘容量显示,而是以含有 inode 的数量来显示

【例 1】

将系统内所有的文件系统全列出来

[root@admin ~]# dfFilesystem1K-blocks Used Available Use% Mounted ondevtmpfs 485840 0 485840 0% /devtmpfs 497840 0 497840 0% /dev/shmtmpfs 497840 7764 490076 2% /runtmpfs 497840 0 497840 0% /sys/fs/cgroup/dev/mapper/centos-root 90837672 3100756 87736916 4% //dev/mapper/centos-home 9754624 33012 9721612 1% /home/dev/sda1 289444 135252 154192 47% /boottmpfs 99572 0 99572 0% /run/user/0

输出结果信息:

Filesystem:代表该文件系统是在哪个硬盘分区,所以列出设备名称1k-blocks:说明下面的数字单位是1KB,可利用-h或-m来改变显示单位Used:表示用掉的硬盘空间大小Available:表示剩余的硬盘空间大小Use%:硬盘空间使用率。如果使用率高达 90% 以上,就需要额外注意,因为容量不足,会严重影响系统的正常运行(例如最容易被占满的/var/spool.mail这个保存邮件的目录)Mounted on:文件系统的挂载点,也就是硬盘挂载的目录位置。

【例 2】

将容量结果以易读的格式显示出来

[root@admin ~]# df -h文件系统 容量 已用 可用 已用% 挂载点devtmpfs 475M0 475M 0% /devtmpfs487M0 487M 0% /dev/shmtmpfs487M 7.6M 479M 2% /runtmpfs487M0 487M 0% /sys/fs/cgroup/dev/mapper/centos-root 87G 3.0G 84G 4% //dev/mapper/centos-home 9.4G 33M 9.3G 1% /home/dev/sda1283M 133M 151M 47% /boottmpfs 98M0 98M 0% /run/user/0

【例 3】

将系统内的所有特殊格式文件以及名称都列出来

[root@admin ~]# df -aT文件系统类型1K-块 已用可用 已用% 挂载点sysfs sysfs 0 0 0- /sysprocproc 0 0 0- /procdevtmpfsdevtmpfs485840 0 485840 0% /devsecurityfs securityfs 0 0 0- /sys/kernel/securitytmpfs tmpfs 497840 0 497840 0% /dev/shmdevpts devpts 0 0 0- /dev/ptstmpfs tmpfs 497840 7764 490076 2% /run……省略……hugetlbfshugetlbfs 0 0 0- /dev/hugepages/dev/mapper/centos-home xfs 9754624 33012 9721612 1% /home/dev/sda1xfs289444 135252 154192 47% /boottmpfs tmpfs 99572 0 99572 0% /run/user/0/dev/mapper/centos-root xfs 90837672 3100756 87736916 4% /data/var

【例 4】

将/etc下面的可用的磁盘容量以易读的容量格式显示出来

[root@admin ~]# df -h /etc文件系统 容量 已用 可用 已用% 挂载点/dev/mapper/centos-root 87G 3.0G 84G 4% /

df会自动分析该目录或文件所在的硬盘分区,并将该硬盘分区的容量显示出来,同时也可以使用df 设备名/挂载点来查看挂载信息

【例 5】

将各个硬盘分区可用的inode数量列出

[root@admin ~]# df -ih文件系统Inode 已用(I) 可用(I) 已用(I)% 挂载点devtmpfs 119K412119K 1% /devtmpfs122K 1 122K 1% /dev/shmtmpfs122K786121K 1% /runtmpfs122K16 122K 1% /sys/fs/cgroup/dev/mapper/centos-root 44M37K44M 1% //dev/mapper/centos-home 4.7M 9 4.7M 1% /home/dev/sda1143K327143K 1% /boottmpfs122K 1 122K 1% /run/user/0

由于df主要读取的数据几乎都是针对一整个文件系统,因此读取的范围主要是在超级区块内的信息,所以这个命令显示的结果速度非常快

六、du命令

统计目录或文件所占磁盘空间大小

使用"ls -r"命令是可以看到文件的大小的。但是大家会发现,在使用"ls -r"命令査看目录大小时,目录的大小多数是 4KB,这是因为目录下的子目录名和子文件名是保存到父目录的 block(默认大小为 4KB)中的,如果父目录下的子目录和子文件并不多,一个 block 就能放下,那么这个父目录就只占用了一个 block 大小

我们在统计目录时,不是想看父目录下的子目录名和子文件名到底占用了多少空间,而是想看父目录下的子目录和子文件的总磁盘占用量大小,这时就需要使用 du 命令才能统计目录的真正磁盘占用量大小。

用法:du [选项] [目录或文件名]

选项:

-a:显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量-h:使用习惯单位显示磁盘占用量,如 KB、MB 或 GB 等;-s:统计总磁盘占用量,而不列出子目录和子文件的磁盘占用量-S:不包括子目录下的总计,与-s有差别-m:以 MB 为单位显示容量-k:以 KB 为单位显示容量

【例 1 】

列出当前目录下的所有文件容量

[root@admin ~]# du18848./bin1448./tar20344.

【例 2】

将文件的容量也列出来

[root@admin ~]# du -a4./.bash_logout4./.bash_profile4./.bashrc4./.cshrc4./.tcshrc4./anaconda-ks.cfg8./.bash_history9132./bin/httpd-2.4.43.tar.gz8956./bin/mariadb-5.5.65-1.el7.x86_64.rpm760./bin/mariadb-libs-5.5.65-1.el7.x86_64.rpm18848./bin4./HelloWorld.java4./HelloWorld.class8./.viminfo1004./tar/libevent-2.1.8-stable.tar.gz444./tar/memcached-1.5.6.tar.gz1448./tar20344.

【例 3】

检查根目录下面每个目录所占用的容量

[root@admin ~]# du -sm /*

【例 4】

只统计磁盘占用量总的大小

[root@admin ~]# du -sh20M.

du命令和df命令的区别

有时我们会发现,使用 du 命令和 df 命令去统计分区的使用情况时,得到的数据是不一样的。那是因为df命令是从文件系统的角度考虑的,通过文件系统中未分配的空间来确定文件系统中已经分配的空间大小。也就是说,在使用 df 命令统计分区时,不仅要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)

七、lsof命令

lsof(list open files)是一个列出当前系统打开文件的工具

在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议(TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的

用法:lsof [选项] [文件]

选项:

[-a] 文件名:列出打开文件存在的进程-c<进程名> :列出指定进程所打开的文件-g [PGID] :列出GID号进程详情-d<文件号> :列出占用该文件号的进程+d<目录> :列出目录下被打开的文件+D<目录> :递归列出目录下被打开的文件-n<目录> :列出使用NFS的文件;-i<条件> :列出符合条件的进程(4、6、协议、:端口、 @ip )-p<进程号> :列出指定进程号所打开的文件;-u :列出UID号进程详情;-s <套接字>:列出指定套接字所打开的文件信息

在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。

【例 1】

列出所有打开的文件

[root@admin ~]# lsofCOMMAND PID TID USER FDTYPE DEVICE SIZE/OFF NODE NAMEsystemd1 root cwd DIR 253,04096 64 /systemd1 root rtd DIR 253,04096 64 /systemd1 root txt REG 253,0 1628608 67575503 /usr/lib/systemd/systemdsystemd1 root mem REG 253,04 67195641 /usr/lib64/libuuid.so.1.3.0……省略……#每一行显示一个打开的文件,不指定条件下默认显示出所有进程打开的文件。

lsof输出各列信息的意义如下:

1. 名称

COMMAND:进程名称PID:进程标识符TID:线程IDUSER:所有者FD:文件描述符TYPE:文件类型DEVICE:磁盘名称SIZE/OFF:文件大小NODE:索引节点(文件在磁盘上的标识)NAME:文件名称

2. FD(文件描述符)

cwd:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行修改txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库rtd:根目录0:表示标准输出1:表示标准输入2:表示标准错误

#一般在标准输出、标准错误、标准输入后还跟着文件状态模式:r、w、u等

(1)u:表示该文件被打开并处于读取/写入模式

(2)r:表示该文件被打开并处于只读模式

(3)w:表示该文件被打开并处于

(4)空格:表示该文件的状态模式为unknow,且没有锁定

(5)-:表示该文件的状态模式为unknow,且被锁定

#同时在文件状态模式后面,还跟着相关的锁

3.文件类型

DIR:目录CHR:字符类型BLK:块设备类型UNIX:UNIX域套接字FIFO:先进先出(FIFO)队列IPv4:国际协议(IP)套接字

【例 2】

列出所有打开的文件:

[root@admin ~]# lsof

备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位

【例 3】

查看谁正在使用某个文件

#lsof /filepath/file

#查看哪个进程在使用文件/usr/lib/systemd/systemd[root@admin ~]# lsof /usr/lib/systemd/systemdCOMMAND PID USER FD TYPE DEVICE SIZE/OFFNODE NAMEsystemd 1 root txt REG 253,0 1628608 67575503 /usr/lib/systemd/systemd

【例 4】

递归查看某个目录的文件被使用信息

#lsof +D /filepath/filepath2/

#递归查看目录/usr/lib/systemd/下文件被使用信息[root@admin ~]# lsof +D /usr/lib/systemd/COMMAND PID USER FD TYPE DEVICE SIZE/OFFNODE NAMEsystemd1 root txt REG 253,0 1628608 67575503 /usr/lib/systemd/systemdsystemd-j 493 root txt REG 253,0 346160 67575517 /usr/lib/systemd/systemd-journaldsystemd-u 530 root txt REG 253,0 416192 67575536 /usr/lib/systemd/systemd-udevdsystemd-l 700 root txt REG 253,0 635760 67575519 /usr/lib/systemd/systemd-logind

备注: 使用了+D,对应目录下的所有子目录和文件都会被列出

【例 5】

比使用+D选项,遍历查看某个目录的所有文件信息 的方法

#lsof | grep ‘/filepath/filepath2/’

[root@admin ~]# lsof | grep /usr/lib/systemd/systemd1 root txt REG 253,0 1628608 67575503 /usr/lib/systemd/systemdsystemd-j 493 root txt REG 253,0 346160 67575517 /usr/lib/systemd/systemd-journaldsystemd-u 530 root txt REG 253,0 416192 67575536 /usr/lib/systemd/systemd-udevdsystemd-l 700 root txt REG 253,0 635760 67575519 /usr/lib/systemd/systemd-logind

【例 6】

列出某个用户打开的文件信息

#lsof -u username

#查看dxk用户打开了哪些文件[root@admin ~]# lsof -u dxkCOMMAND PID USER FD TYPE DEVICE SIZE/OFFNODE NAMEsshd 1300 dxk cwd DIR 253,04096 64 /sshd 1300 dxk rtd DIR 253,04096 64 /sshd 1300 dxk txt REG 253,0 852856 67601578 /usr/sbin/sshdsshd 1300 dxk mem REG 253,015488 53978 /usr/lib64/security/pam_lastlog.sosshd 1300 dxk mem REG 253,015648 67443744 /usr/lib64/libpam_misc.so.0.82.0……省略……

备注: -u 选项,u其实是user的缩写

【例 7】

列出某个程序所打开的文件信息

#lsof -c 程序名

[root@admin ~]# lsof -c javaCOMMAND PID USER FD TYPE DEVICE SIZE/OFFNODE NAMEjava 1413 root cwd DIR 253,0 220 26657 /rootjava 1413 root rtd DIR 253,04096 64 /java 1413 root txt REG 253,07718 1081481 /usr/local/src/jdk1.7.0_79/bin/javajava 1413 root mem REG 253,0 106172832 48650 /usr/lib/locale/locale-archivejava 1413 root mem REG 253,0 62611620 67883252 /usr/local/src/jdk1.7.0_79/jre/lib/rt.jarjava 1413 root mem REG 253,0 123434 470154 /usr/local/src/jdk1.7.0_79/jre/lib/amd64/libzip.sojava 1413 root mem REG 253,061560 67149933 /usr/lib64/libnss_files-2.17.sojava 1413 root mem REG 253,0 22 470122 /usr/local/src/jdk1.7.0_79/jre/lib/amd64/libjava.sojava 1413 root mem REG 253,065437 470147 /usr/local/src/jdk1.7.0_79/jre/lib/amd64/libverify.so……省略……

备注: -c 选项将会列出所有以mysql开头的程序的文件,其实你也可以写成lsof | grep mysql,但是第一种方法明显比

第二种方法要少打几个字符了

【例 8】

列出多个程序所打开的文件信息

#lsof -c mysql -c apache

#列出java和httpd程序所打开的文件信息[root@admin ~]# lsof -c java -c httpdCOMMAND PID USER FDTYPE DEVICE SIZE/OFFNODE NAMEhttpd 1485 root cwd DIR 253,04096 64 /httpd 1485 root rtd DIR 253,04096 64 /httpd 1485 root txt REG 253,0 523608 67130847 /usr/sbin/httpdhttpd 1485 root mem REG 253,086464 67575462 /usr/lib64/libnss_myhostname.so.2httpd 1485 root mem REG 253,0 109976 67149943 /usr/lib64/libresolv-2.17.so……省略……java 1493 root mem REG 253,032768 26495 /tmp/hsperfdata_root/1493java 1493 root 0uCHR 136,1 0t0 4 /dev/pts/1java 1493 root 1uCHR 136,1 0t0 4 /dev/pts/1java 1493 root 2uCHR 136,1 0t0 4 /dev/pts/1java 1493 root 3rREG 253,0 62611620 67883252 /usr/local/src/jdk1.7.0_79/jre/lib/rt.jar

【例 9】

列出某个用户以及某个程序所打开的文件信息

#lsof -u test -c mysql

#列出dxk用户和java程序所打开的文件信息sshd 1300 dxk 9u CHR5,2 0t08519 /dev/ptmxsshd 1300 dxk 13u CHR5,2 0t08519 /dev/ptmxsshd 1300 dxk 14u CHR5,2 0t08519 /dev/ptmxbash 1301 dxk cwd DIR 253,2 99 67 /home/dxkbash 1301 dxk rtd DIR 253,04096 64 /bash 1301 dxk txt REG 253,0 96453611524 /usr/bin/bash……省略……java 1493 root 0u CHR 136,1 0t0 4 /dev/pts/1java 1493 root 1u CHR 136,1 0t0 4 /dev/pts/1java 1493 root 2u CHR 136,1 0t0 4 /dev/pts/1java 1493 root 3r REG 253,0 62611620 67883252 /usr/local/src/jdk1.7.0_79/jre/lib/rt.jar

【例 10】

列出除了某个用户外的被打开的文件信息

#lsof -u ^root

#列出除了root用户外的被打开的文件信息[root@admin ~]# lsof -u ^root COMMAND PID TID USER FDTYPE DEVICE SIZE/OFFNODE NAMEdbus-daem 697 dbus cwd DIR 253,04096 64 /polkitd 699polkitd cwd DIR 253,04096 64 /httpd1490apache 8u a_inode0,10 06509 [eventpoll]

备注:^这个符号在用户名之前,将会把是root用户打开的进程不让显示

【例 11】

通过某个进程号显示该进行打开的文件

#lsof -p 进程号

#查看进程号为1300的进程所打开的文件信息[root@admin ~]# lsof -p 1300 COMMAND PID USER FD TYPE DEVICE SIZE/OFFNODE NAMEsshd 1300 dxk cwd DIR 253,04096 64 /sshd 1300 dxk rtd DIR 253,04096 64 /sshd 1300 dxk txt REG 253,0 852856 67601578 /usr/sbin/sshd

【例 12】

列出多个进程号对应的文件信息

#lsof -p 进程号,进程号,进程号

#查看进程号为1,2,4的进程所打开的文件信息[root@admin ~]# lsof -p 1,2,4systemd1 root 70uunix 0xffff8aa3f84a19800t014854 /run/systemd/journal/stdoutsystemd1 root 71uunix 0xffff8aa3f84a2a800t014666 /run/systemd/journal/stdoutkthreadd 2 root cwd DIR 253,04096 64 /kthreadd 2 root rtd DIR 253,04096 64 /kthreadd 2 root txt unknown/proc/2/exekworker/0 4 root cwd DIR 253,04096 64 /kworker/0 4 root rtd DIR 253,04096 64 /

【例 13】

列出除了某个进程号,其他进程号所打开的文件信息

#lsof -p ^进程号

#列出除了1和2进程其他进程所打开的文件信息[root@admin ~]# lsof -p ^1,^2

【例 14】

列出所有的网络连接

#lsof -i

[root@admin ~]# lsof -iCOMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 1028 root 3u IPv4 212060t0 TCP *:ssh (LISTEN)sshd 1028 root 4u IPv6 212150t0 TCP *:ssh (LISTEN)sshd 1205 root 3u IPv4 215470t0 TCP admin:ssh->192.168.126.1:26728 (ESTABLISHED)sshd 1296 root 3u IPv4 257320t0 TCP admin:ssh->192.168.126.1:26927 (ESTABLISHED)

【例 15】

列出所有tcp 网络连接信息

#lsof -i tcp

[root@admin ~]# lsof -i tcpCOMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 1028 root 3u IPv4 212060t0 TCP *:ssh (LISTEN)sshd 1028 root 4u IPv6 212150t0 TCP *:ssh (LISTEN)sshd 1205 root 3u IPv4 215470t0 TCP admin:ssh->192.168.126.1:26728 (ESTABLISHED)httpd 1487 apache 4u IPv6 272580t0 TCP *:http (LISTEN)httpd 1488 apache 4u IPv6 272580t0 TCP *:http (LISTEN)

【例 16】

列出所有udp网络连接信息

#lsof -i udp

[root@admin ~]# lsof -i udp

【例 17】

列出谁在使用某个端口

#lsof -i :端口号

[root@admin ~]# netstat -aptnActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 00 0.0.0.0:22 0.0.0.0:*LISTEN1028/sshd tcp 0 844 192.168.126.8:22 192.168.126.1:26927ESTABLISHED 1296/sshd: dxk [pri tcp 00 192.168.126.8:22 192.168.126.1:26728ESTABLISHED 1205/sshd: root@pts [root@admin ~]# lsof -i :26927COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 1296 root 3u IPv4 257320t0 TCP admin:ssh->192.168.126.1:26927 (ESTABLISHED)sshd 1300 dxk 3u IPv4 257320t0 TCP admin:ssh->192.168.126.1:26927 (ESTABLISHED)

【例 18】

列出谁在使用某个特定的udp端口

#lsof -i udp:端口号

[root@admin ~]# lsof -i tcp:26728

特定的tcp端口

#lsof -i tcp:端口号

【例 19】

列出某个用户的所有活跃的网络端口

#lsof -a -u 用户名 -i

[root@admin ~]# lsof -a -u dxk -iCOMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 1300 dxk 3u IPv4 257320t0 TCP admin:ssh->192.168.126.1:26927 (ESTABLISHED)

【例 20】

列出所有网络文件系统

#lsof -N

【例 21】

域名socket文件

#lsof -s socket

【例 22】

某个用户组所打开的文件信息

#lsof -g 组id

[root@admin ~]# lsof -g 1

【例 23】

根据文件描述列出对应的文件信息

#lsof -d 文件号

[root@admin ~]# lsof -d 2

【例 24】

根据文件描述范围列出文件信息

#lsof -d 文件号范围

[root@admin ~]# lsof -d 2-3

如果觉得《Linux笔记 No.17---(磁盘分区fdisk gdisk parted 格式化mkfs mke2fs 挂载mount 卸载umount df du lsof命令)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。