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

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0  4.9T  0 disk 
└─sdb1            8:17   0  4.7G  0 part 
sr0              11:0    1   10G  0 rom

-d:仅列出磁盘本身,并不会列出该磁盘的分区数据

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0  4.9T  0 disk 
└─sdb1            8:17   0  4.7G  0 part 
sr0              11:0    1   10G  0 rom  
[root@localhost ~]# lsblk -d
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0   20G  0 disk 
sdb    8:16   0  4.9T  0 disk 
sr0   11:0    1   10G  0 rom

-f:同时列出该磁盘内的文件系统名称

[root@localhost ~]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                                
├─sda1          xfs                         b04f77f1-253f-4c56-bee4-32ab55731275   /boot
└─sda2          LVM2_member                 5H9vhG-Gwsg-u4Xz-Kxt2-7sn8-MkXW-Yqc7Br 
  ├─centos-root xfs                         0bf285bc-f3e5-46b8-91a7-2615d3ecb569   /
  └─centos-swap swap                        6c3b97ba-b0e4-4a4b-b044-b712e410696d   [SWAP]
sdb                                                                                
└─sdb1          ext4                        125c4ba8-995c-43d5-b614-55c3a74f741b   
sr0             iso9660     CentOS 7 x86_64 2018-11-26-14-22-58-00

-i:使用ASCII的字符输出,不要使用复杂的编码

[root@localhost ~]# lsblk -i
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
|-sda1            8:1    0    1G  0 part /boot
`-sda2            8:2    0   19G  0 part 
  |-centos-root 253:0    0   17G  0 lvm  /
  `-centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0  4.9T  0 disk 
`-sdb1            8:17   0  4.7G  0 part 
sr0              11:0    1   10G  0 rom

-m:同时输出该设备在/dev下面的权限信息(rwx数据)

[root@localhost ~]# lsblk -m
NAME             SIZE OWNER GROUP MODE
sda               20G root  disk  brw-rw----
├─sda1             1G root  disk  brw-rw----
└─sda2            19G root  disk  brw-rw----
  ├─centos-root   17G root  disk  brw-rw----
  └─centos-swap    2G root  disk  brw-rw----
sdb              4.9T root  disk  brw-rw----
└─sdb1           4.7G root  disk  brw-rw----
sr0               10G root  cdrom brw-rw----

-p:列出该设备的完整文件名,而不是仅列出最后的名字而已

[root@localhost ~]# lsblk -p
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
/dev/sda                      8:0    0   20G  0 disk 
├─/dev/sda1                   8:1    0    1G  0 part /boot
└─/dev/sda2                   8:2    0   19G  0 part 
  ├─/dev/mapper/centos-root 253:0    0   17G  0 lvm  /
  └─/dev/mapper/centos-swap 253:1    0    2G  0 lvm  [SWAP]
/dev/sdb                      8:16   0  4.9T  0 disk 
└─/dev/sdb1                   8:17   0  4.7G  0 part 
/dev/sr0                     11:0    1   10G  0 rom

-t:列出该磁盘设备的详细数据,包括磁盘阵列机制,预读写的数据量大小

[root@localhost ~]# lsblk -t
NAME            ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED    RQ-SIZE   RA WSAME
sda                     0    512      0     512     512    1 deadline     128 4096   32M
├─sda1                  0    512      0     512     512    1 deadline     128 4096   32M
└─sda2                  0    512      0     512     512    1 deadline     128 4096   32M
  ├─centos-root         0    512      0     512     512    1              128 4096   32M
  └─centos-swap         0    512      0     512     512    1              128 4096   32M
sdb                     0    512      0     512     512    1 deadline     128 4096   32M
└─sdb1                  0    512      0     512     512    1 deadline     128 4096   32M
sr0                     0   2048      0    2048    2048    1 deadline     128  128    0B

2.磁盘分区命令fdisk gdisk
MBR分区表建议使用fdisk分区,GPT分区建议使用gdisk分区
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 <数字>:指定每个磁道的扇区数

使用fdisk进行分区:

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

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

[root@localhost ~]# fdisk /dev/sdb

WARNING: The size of this disk is 5.4 TB (5368709120000 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID 
partition table format (GPT).

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):
命令(输入 m 获取帮助):?
?: unknown command
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
a   toggle a bootable flag		<-----设置可引导标记
   b   edit bsd disklabel			<-----编辑 bsd 磁盘标签
   c   toggle the dos compatibility flag
   d   delete a partition		<------删除一个磁盘分区
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types	<-----显示已知的文件系统类型
   m   print this menu	<-----显示帮助菜单
   n   add a new partition		<------新增一个磁盘分区
   o   create a new empty DOS partition table
   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	<-----改变一个分区的系统 ID
   u   change display/entry units	<-----改变显示记录单位
   v   verify the partition table	<-----验证分区表
   w   write table to disk and exit		<-------将刚刚的操作写入分区表
   x   extra functionality (experts only)	<-----附加功能(仅专家)

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

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): LVM
无效的分区类型“l”

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (9766912-4294967295,默认为 9766912):
将使用默认值 9766912
Last 扇区, +扇区 or +size{K,M,G} (9766912-4294967294,默认为 4294967294):
将使用默认值 4294967294
分区 2 已设置为 Linux 类型,大小设为 2 TiB

命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):
Hex 代码(输入 L 列出所有代码):l

 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris        
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  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.x          88  Linux 纯文本    de  Dell 工具      
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt         
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问       
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  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  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  隐藏的 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”
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:5368.7 GB, 5368709120000 字节,10485760000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5b4c0fe2

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     9766911     4882432   83  Linux
/dev/sdb2         9766912  4294967294  2142600191+  8e  Linux LVM

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0  4.9T  0 disk 
├─sdb1            8:17   0  4.7G  0 part 
└─sdb2            8:18   0    2T  0 part 
sr0              11:0    1   10G  0 rom

gdisk对大于2TB的硬盘进行分区

Command (? for help): ?
b	back up GPT data to a file
c	change a partition's name
d	delete a partition		<--------删除一个分区
i	show detailed information on a partition
l	list known partition types
n	add a new partition			<-----增加一个分区
o	create a new empty GUID partition table (GPT)
p	print the partition table     <--------打印出分区表
q	quit without saving changes		<------不保存分区就直接离开gdisk
r	recovery 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	<------保存分区操作后离开gdisk
x	extra functionality (experts only)
?	print this menu

Command (? for help):

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

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

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

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

选项:

-h:显示此求助信息

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

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

-s:脚本模式

-v:显示版本

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

(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                                  #版本
(parted) mkpart          #输入mkpart新建分区,如果输入mkpart指令不带任何参数,parted会一步步提示用户输入相关信息最终完成创建                                                 
分区名称?  []? p1           #分区的名字,这里可以直接回车不给分区命名,也可以输入用来标记的名字                                             
文件系统类型?  [ext2]?          #分区被格式化的文件系统,可以按两次Tab键查看支持的文件系统                                         
affs0            affs5            amufs1           apfs1            ext3             hfs+             linux-swap(new)  ntfs
affs1            affs6            amufs2           apfs2            ext4             hfsx             linux-swap(old)  reiserfs
affs2            affs7            amufs3           asfs             fat16            hp-ufs           linux-swap(v0)   sun-ufs
affs3            amufs            amufs4           btrfs            fat32            jfs              linux-swap(v1)   swsusp
affs4            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: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  标志
 1      1049kB  1024GB  1024GB  xfs          p1		#通过一步步创建的第一个分区
 2      1024GB  1524GB  500GB                p2		#通过一步就创建的分区
 3      1524GB  3299GB  1775GB               p3		#创建不带文件系统的分区

(parted)

设置默认单位

(parted) unit                                                             
Unit?  [compact]? GB                                                      
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  标志
 2      0.00GB  0.00GB  0.00GB
 1      0.00GB  537GB   537GB   ext4
 3      1024GB  3000GB  1976GB               p3
 4      3000GB  3000GB  0.00GB

更改分区名

(parted) name                                                             
分区编号? 1                                                              
分区名称?  []? 4
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  标志
 2      0.00GB  0.00GB  0.00GB
 1      0.00GB  537GB   537GB   ext4         4
 3      1024GB  3000GB  1976GB               p3
 4      3000GB  3000GB  0.00GB

配置分区的标记

(parted) set                                                              
分区编号? 1                                                              
Flag to Invert?                                                           
atvrecv      boot         hidden       legacy_boot  msftres      raid         隐藏分区
bios_grub    diag         hp-service   lvm          prep         启动         
Flag to Invert? lvm
新状态?  [开]/on/关/off? on                                              
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  标志
 2      0.00GB  0.00GB  0.00GB
 1      0.00GB  537GB   537GB   ext4         4     lvm
 3      1024GB  3000GB  1976GB               p3
 4      3000GB  3000GB  0.00GB

取消标记名

(parted) set                                                              
分区编号? 1                                                          
Flag to Invert? lvm                                                       
新状态?  开/on/[关]/off? off
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  标志
 2      0.00GB  0.00GB  0.00GB
 1      0.00GB  537GB   537GB   ext4         4
 3      1024GB  3000GB  1976GB               p3
 4      3000GB  3000GB  0.00GB

删除分区

(parted) rm                                                               
分区编号? 1                                                              
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  标志
 2      0.00GB  0.00GB  0.00GB
 3      1024GB  3000GB  1976GB               p3
 4      3000GB  3000GB  0.00GB

对MBR类型进行分区

(parted) mklabel msdos
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be
lost. Do you want to continue?
是/Yes/否/No? Yes                                                         
(parted) mkpart                                                           
分区类型?  primary/主分区/extended/扩展分区?

**

对磁盘进行格式化

**
分区完成后,如果不格式化写入文件系统,则是不能正常使用的。这时就需要对硬盘分区进行格式化
mkfs命令进行格式化
对于MBR分区而言:扩展分区不能格式化,主分区和逻辑分区可以格式化;对于GPT则不存在,因为没有扩展分区而言了

mkfs

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-4294967295,默认为 2048):20^H^H
值超出范围。
起始 扇区 (2048-4294967295,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-4294967294,默认为 4294967294):3000
分区 1 已设置为 Linux 类型,大小设为 476.5 KiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# mkfs.ext2 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
64 inodes, 476 blocks
23 blocks (4.83%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=524288
1 block group
8192 blocks per group, 8192 fragments per group
64 inodes per group

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Writing superblocks and filesystem accounting information: 完成

查看是否格式化成功

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="799b6094-72db-4c74-99cb-5fd3e95b5501" TYPE="ext2"

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

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="799b6094-72db-4c74-99cb-5fd3e95b5501" TYPE="ext2" 
[root@localhost ~]# 
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="799b6094-72db-4c74-99cb-5fd3e95b5501" TYPE="ext2" 
[root@localhost ~]# mkfs.ext3 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统小得无法记录日志
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
64 inodes, 476 blocks
23 blocks (4.83%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=524288
1 block group
8192 blocks per group, 8192 fragments per group
64 inodes per group

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Writing superblocks and filesystem accounting information: 完成

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

mke2fs
用法: mke2fs [选项] 分区设备文件名
注意:此命令不适用于xfs文件类型

选项:

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

文件系统管理工具

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 位置。 www.2cto.com
-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文件系统错乱才需要使用这个命令
提示:由于xfs_repair与fsck.ext4 在扫描磁盘的时候,可能会造成部分文件系统的改变,所以执行xfs_repair与fsck.ext4 时,被检查的硬盘分区务必不可挂载到系统上,亦即是需要在卸载状态

文件系统的挂载与卸载

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

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

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

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

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

(一)各硬件设备在Linux中的文件名
设备 在Linux中的文件名
SCSI、SATA、USB磁盘驱动器 /dev/sd/[a-p]
U盘 /dev/sd[a-p] (与SATA相同)
CD-ROM、DVD-ROM /dev/scd[0-1]、/dev/sr[0-1]、/dev/cdroom(当前CD-ROM)
Virto接口 /dev/vd[a-p](用于虚拟机内)
软盘驱动器 /dev/fd[0-7]
IDE磁盘驱动器 /dev/hd[a-d](旧式系统)
磁带机 /dev/ht0(IDE接口)、/dev/st0(SATA/SCSI接口)、/dev/tape(当前磁带)
打印机 /dev/lp[0-2](25针打印机)、/dev/usb/lp[0-15](USB接口)
鼠标 /dev/input/mouse[0-15]、/dev/psaux(PS/2接口)、/dev/mouse(当前鼠标)

挂载
-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 源目录 目标目录:可以实现将目录绑定至另一个目录上,作为其临时访问入口;

查看已经挂载的设备
**

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

**

可通过lsblk查看文件系统是否挂载

[root@admin ~]# lsblk /dev/sdb
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb      8: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

查看data是否有挂载

[root@admin ~]# df /data
文件系统         1K-块  已用    可用 已用% 挂载点
/dev/sdb1      1038336 32992 1005344    4% /data

临时挂载

通过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/sdb2
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb2   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/sdb3
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb3   8:19   0   4G  0 part /data2
将/dev/sdb5以只读方式挂载、指明系统类型且支持使用facl功能

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

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

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

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

(2)挂载限制

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

fstab中的参数

/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=4dd7e68d-866e-45c4-90fa-a874f9860a3a /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    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级别检验完成之后进行检验)

卸载

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

查看被哪个或哪些进程所占用:
#lsof MOUNT_POINT
#fuser -v MOUNT_POINT
终止所有正在访问某挂载点的进程:
#fuser -km MOUNT_POINT

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

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 的数量来显示

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

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

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

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

选项:

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

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 用户的身份运行它才能够充分地发挥其功能。