磁盘管理常用命令

df

用于查看磁盘空间的使用情况,还可以查看磁盘分区的类型或inode节点的使用情况

参数 说明
-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,eg:/proc文件系统
-k 以k为单位显示
-i 显示i节点信息,而不是磁盘块
-t 显示各指定类型的文件系统的磁盘空间使用 情况
-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t相反)
-h 以更直观的方式显示磁盘空间
-T 显示文件系统类型
  1. 查看当前系统所有分区使用情况
  2. [root@lhuan ~]# df -ah
  3. Filesystem Size Used Avail Use% Mounted on
  4. sysfs 0 0 0 - /sys
  5. proc 0 0 0 - /proc
  6. devtmpfs 909M 0 909M 0% /dev
  7. securityfs 0 0 0 - /sys/kernel/security
  8. tmpfs 919M 24K 919M 1% /dev/shm
  9. devpts 0 0 0 - /dev/pts
  10. tmpfs 919M 516K 919M 1% /run
  11. tmpfs 919M 0 919M 0% /sys/fs/cgroup
  12. cgroup 0 0 0 - /sys/fs/cgroup/systemd
  13. pstore 0 0 0 - /sys/fs/pstore
  14. cgroup 0 0 0 - /sys/fs/cgroup/memory
  15. cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct
  16. cgroup 0 0 0 - /sys/fs/cgroup/pids
  17. cgroup 0 0 0 - /sys/fs/cgroup/devices
  18. cgroup 0 0 0 - /sys/fs/cgroup/hugetlb
  19. cgroup 0 0 0 - /sys/fs/cgroup/perf_event
  20. cgroup 0 0 0 - /sys/fs/cgroup/net_cls,net_prio
  21. cgroup 0 0 0 - /sys/fs/cgroup/freezer
  22. cgroup 0 0 0 - /sys/fs/cgroup/cpuset
  23. cgroup 0 0 0 - /sys/fs/cgroup/blkio
  24. configfs 0 0 0 - /sys/kernel/config
  25. /dev/vda1 50G 12G 36G 25% /
  26. systemd-1 0 0 0 - /proc/sys/fs/binfmt_misc
  27. hugetlbfs 0 0 0 - /dev/hugepages
  28. debugfs 0 0 0 - /sys/kernel/debug
  29. mqueue 0 0 0 - /dev/mqueue
  30. tmpfs 184M 0 184M 0% /run/user/0
  31. #查看当前每个inode节点占用情况
  32. [root@lhuan ~]# df -i
  33. Filesystem Inodes IUsed IFree IUse% Mounted on
  34. devtmpfs 232527 317 232210 1% /dev
  35. tmpfs 235257 7 235250 1% /dev/shm
  36. tmpfs 235257 449 234808 1% /run
  37. tmpfs 235257 16 235241 1% /sys/fs/cgroup
  38. /dev/vda1 3276800 133808 3142992 5% /
  39. tmpfs 235257 1 235256 1% /run/user/0
  40. You have new mail in /var/spool/mail/root
  41. #显示分区类型
  42. [root@lhuan ~]# df -T
  43. Filesystem Type 1K-blocks Used Available Use% Mounted on
  44. devtmpfs devtmpfs 930108 0 930108 0% /dev
  45. tmpfs tmpfs 941028 24 941004 1% /dev/shm
  46. tmpfs tmpfs 941028 508 940520 1% /run
  47. tmpfs tmpfs 941028 0 941028 0% /sys/fs/cgroup
  48. /dev/vda1 ext4 51473868 12047428 37229196 25% /
  49. tmpfs tmpfs 188208 0 188208 0% /run/user/0
  50. #显示指定文件类型的磁盘使用情况
  51. [root@lhuan ~]# df -t tmpfs
  52. Filesystem 1K-blocks Used Available Use% Mounted on
  53. tmpfs 941028 24 941004 1% /dev/shm
  54. tmpfs 941028 508 940520 1% /run
  55. tmpfs 941028 0 941028 0% /sys/fs/cgroup
  56. tmpfs 188208 0 188208 0% /run/user/0

du

查看磁盘或者某个目录占用的情况

参数 说明
-a 显示全部目录和其子目录下的每个文件所占的磁盘空间
-b 大小用bytes表示
-c 最后加上总计
-h 以更直观的方式显示大小,以1024进制进行单位换算
-s 显示各文件大小的总和
-x 只计算属于同一个文件系统的文件
-L 计算所有的文件大小
#统计当前文件夹的大小,默认不统计软链接指向目的文件夹
[root@lhuan ~]# du -sh
134M    .

#按层级统计文件夹大小,在定位占用磁盘大的文件夹的时候比较有用
[root@lhuan ~]# du --max-depth=1 -h
16K    ./lars
2.8M    ./.cache
8.0K    ./.pip
16K    ./.local
4.0K    ./.ssh
8.0K    ./.pki
12K    ./.config
134M    .

文件系统管理命令

mkfs

当完成硬盘分区以后要进行硬盘的格式化,mkfs系列对应的命令用于将硬盘格式化为指定 格式的文件系统。
mkfs本身并不执行建立文件系统的工作,而是去调用相关的程序来执行。
如果-t参数中指定ext2,mkfs会调用mke2fs来建立文件系统
使用mkfs时如果忽略指定“块数”参数,mkfs会自动设置适当的块数。

参数 说明
-V 详细显示模式
-t: 给定文件系统类型,支持的格式由ext2、ext3、ext4、xfs、btrfs等
-c 操作之前检查分区是否有坏道
-l 记录坏道的数据
block 指定block的大小
-L: 建立卷标
[root@lhuan ~]# ls -l /usr/sbin/mkfs.*
-rwxr-xr-x. 1 root root 375240 Aug  7  2017 /usr/sbin/mkfs.btrfs
-rwxr-xr-x  1 root root  37024 Dec  3  2019 /usr/sbin/mkfs.cramfs
-rwxr-xr-x  4 root root  96384 Aug  9  2019 /usr/sbin/mkfs.ext2
-rwxr-xr-x  4 root root  96384 Aug  9  2019 /usr/sbin/mkfs.ext3
-rwxr-xr-x  4 root root  96384 Aug  9  2019 /usr/sbin/mkfs.ext4
-rwxr-xr-x  1 root root  37136 Dec  3  2019 /usr/sbin/mkfs.minix
-rwxr-xr-x  1 root root 368424 Aug  9  2019 /usr/sbin/mkfs.xfs

tune2fs

用户查看和调整文件系统参数,可以设置自检次数和周期。
ps:tune2fs命令只能在ext2,ext3和ext4文件系统上。

参数 说明
-l 查看详细信息
-c 设置自检次数,每挂载一次,mount count就会加1,超过次数就会强制自检
-e 设置当错误发生时内核的处理方式
-i 设置自检天数,d表示天,m表示月,w表示周
-m 设置预留空间
-j 用于文件系统格式转换
-L 修改文件系统格式转换
-r 修改系统保留空间
[root@lhuan ~]# tune2fs -i 1m /dev/shm
tune2fs 1.42.9 (28-Dec-2013)
tune2fs: Is a directory while trying to open /dev/shm
Couldn't find valid filesystem superblock.

dumpe2fs

浏览文件系统情况

[root@node1 ~]# dumpe2fs   /dev/sdb
[root@node1 ~]#  dumpe2fs   /dev/sdb | more
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   testdisk
Last mounted on:          <not available>
Filesystem UUID:          98a98969-4b12-496c-93c0-28f512053d2e
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 6
4bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              1310720
Block count:              5242880
Reserved block count:     262144
Free blocks:              5116558
Free inodes:              1310709
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      1024
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sun Apr 26 12:57:07 2020
Last mount time:          n/a
Last write time:          Sun Apr 26 12:57:09 2020
Mount count:              0
Maximum mount count:      -1
Last checked:             Sun Apr 26 12:57:07 2020
Check interval:           0 (<none>)
Lifetime writes:          132 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:              256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      cbeda33f-00be-426c-8eac-3de295931c7b
Journal backup:           inode blocks
Journal features:         (none)
Journal size:             128M
Journal length:           32768
Journal sequence:         0x00000001
Journal start:            0
Group 0: (Blocks 0-32767)
  Checksum 0xda17, unused inodes 8181
  Primary superblock at 0, Group descriptors at 1-3
  Reserved GDT blocks at 4-1027
  Block bitmap at 1028 (+1028), Inode bitmap at 1044 (+1044)
  Inode table at 1060-1571 (+1060)
  23510 free blocks, 8181 free inodes, 2 directories, 8181 unused inodes
  Free blocks: 9258-32767
  Free inodes: 12-8192
Group 1: (Blocks 32768-65535) [INODE_UNINIT]
  Checksum 0xd3ac, unused inodes 8192
  Backup superblock at 32768, Group descriptors at 32769-32771
  Reserved GDT blocks at 32772-33795
  Block bitmap at 1029 (bg #0 + 1029), Inode bitmap at 1045 (bg #0 + 1045)
  Inode table at 1572-2083 (bg #0 + 1572)
  31740 free blocks, 8192 free inodes, 0 directories, 8192 unused inodes
  Free blocks: 33796-65535
  Free inodes: 8193-16384

mke2fs

创建文件系统是专门用于管理ext系列文件系统的一个专门的工具。其还有像mkfs.ext2,mkfs.ext3,mkfs.ext4等衍生的命令,它们的用法mke2fs类似

参数 说明
-t fs-type 指定文件系统类型(如ext2,ext3,ext4等等),则会从/etc/mke2fs.conf文件中读取默认配置;
-b block-size 设置硬盘的block大小。
-L ‘LABEL’ 设置卷标;
-j 创建ext3文件系统,mkfs.ext3自带了该选项;
-N 设置inode节点的数量;
-m 设置为文件系统预留的块的百分比;
-c 在创建文件系统前进程硬盘自检;
[root@node1 ~]#  mke2fs -t ext4 -L 'testdisk' /dev/sdb
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb is entire device, not just one partition!
Proceed anyway? (y,n) y\^H
Filesystem label=testdisk
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 

[root@node1 ~]# mke2fs -t ext4 /dev/sdb
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done

fsck

用来检查和维护不一致的文件系统,检查系统是否掉线或磁盘发生问题

参数 说明
-a 自动修复文件系统,不询问任何问题
-A 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统;
-N 不执行指令,仅列出实际执行会进行的动作
-P 与-A一起使用,会同时检查所有的文件系统
-r 采用交互模式,在执行修复时询问问题,让用户得以确认并决定处理方式
-s 依序执行检查,而不是同时执行
-t 指定要检查的文件系统类型
-T 不显示标题信息
-v 显示指令执行过程
[root@node1 ~]# fsck     #自检全部的硬盘
fsck from util-linux 2.23.2
[root@node1 ~]# fsck  /dev/sdb
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
testdisk: clean, 11/1310720 files, 126322/5242880 blocks

e2fsck

用于检查使用 Linux ext2 档案系统的 partition 是否正常工作

参数 说明
device 预备检查的硬盘 partition,例如:/dev/sda1
-a 对 partition 做检查,若有问题便自动修复,等同 -p 的功能
-b 设定存放 superblock 的位置
-B 设定单位 block 的大小
-c 检查该partition 是否有坏轨
-C file 将检查的结果存到 file 中以便查看
-d 列印 e2fsck 的 debug 结果
-f 强制检查
-F 在开始检查前,将device 的 buffer cache 清空,避免有错误发生
-l bad_blocks_file 将有坏轨的block资料加到 bad_blocks_file 里面
-L bad_blocks_file 设定坏轨的block资料存到 bad_blocks_file 里面,若无该档则自动产生
-n 将档案系统以[唯读]方式开启
-p 对 partition 做检查,若有问题便自动修复
-v 详细显示模式
-V 显示出目前 e2fsck 的版本
-y 预先设定所有检查时的问题均回答[是]

系统文件挂载

概念

挂载:将一个设备(通常是存储设备)挂载到一个已经存在的目录上,我们要访问设备中的文件必须将文件的分区挂载到一个已经存在的目录上,然后通过访问这个目录来访问该存储设备
卸载 :解除关联的过程
挂载点:挂载的目录,需要存在且不可被其他进程使用到挂载点下的所有源文件在挂载后会被临时屏蔽掉,通常情况下挂载点的目录是空目录

mount

mount命令用户挂载分区,对应的卸载分区命令为unmount。
这两个命令一般由root用户执行。
除了挂载磁盘分区之外,光盘、内存都可以使用该命令挂载到用户指定的目录。
查看当前系统挂载的所有设备

[root@tenor ~]# mount -h
Usage:
 mount [-lhV]
 mount -a [options]
 mount [options] [--source] <source> | [--target] <directory>
 mount [options] <source> <directory>
 mount <operation> <mountpoint> [<target>]
挂载

命令使用格式mount [-fnrsvw] [-t vfstype] [-o options] device dir
device :指明要挂载的目录
1.设备
2.卷标 -l
3.UUID -U ‘UUID’
4.伪文件系统名称 proc
dir:挂载点事先存在,建议使用空目录

参数

参数 说明
-V 显示程序版本
-h 显示帮助信息
-v u
-a 加载文件/etc/fstab中设置的所有设备
-F 需要与-a参数同时使用。所有再/etc/fstab中设置的设备会被同时加载,可加快执行速度
-n 不将加载信息记录再/etc/mtab文件中
-L 加载指定卷标的文件系统
-r 挂载为只读模式
-w 挂载为读写模式
-t 指定文件系统的形态,通常不必指定,mount会自动选择正确的形态。
常见的文件系统由ext2,msdos,nfs,iso9660,ntfs等
-o 指定加载文件系统时的选项,如noatime每次存取时不更新inode的存取时间

-o options

挂载文件系统的选项

选项 说明
async 异步模式
sync 同步模式
atime/noatime 当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。是否开启atime
diratime/nodiratime 是否开启diratime,目录的访问时间戳
auto/noauto 是否支持自动挂载
exec/noexec 是否支持在此文件系统上应用程序运行为进程
dev/nodev 是否支持在此文件系统上使用设备文件
suid/nosuid 是否支持在此文件系统使用特殊权限
remount 重新挂载
ro 只读
rw 读写
user/nouser 是否允许普通用户挂载此设备
acl 启用此文件系统上的acl功能

默认挂载选项:defaults:rw, suid,dev, exec, auto, nouser, and async

开机自动挂载

[root@node1 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Apr 26 23:05:07 2020
#
# 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 /                       xfs     defaults        0 0
UUID=29e32837-f7cf-488e-9dcb-59bd5223f3d0 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

每行的格式 要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序
UUID=6efb8a23-bae1-427c-ab10-3caca95250b1 /boot xfs defaults 0 0
转储速率 0:不做备份 1: 每天备份 2: 每隔一天转储
自检次序 0:不自检 1:首先自检,一般只有rootfs才用1

/etc/fstab和/etc/mtab的区别

/etc/fstab文件的作用:记录了计算机上硬盘分区的相关信息启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘
/etc/mtab文件的作用: 记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等;而/etc/fstab是系统准备装载的。每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。当然我们自己还可以通过读取/proc/mount也可以来获取当前挂载信息

cat /proc/mounts

查看内核追踪到已挂载的所有设备

unmount

卸载命令
unmount DEVICE
unmount MOUNT_POINT

[root@node1 ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root  17774592 1028276  16746316   6% /
devtmpfs                  3982984       0   3982984   0% /dev
tmpfs                     3995144       0   3995144   0% /dev/shm
tmpfs                     3995144   11952   3983192   1% /run
tmpfs                     3995144       0   3995144   0% /sys/fs/cgroup
/dev/sda2                 1038336  148716    889620  15% /boot
tmpfs                      799032       0    799032   0% /run/user/0
/dev/sdc1                 5028480   10364   4756024   1% /root/mmm
[root@node1 ~]# umount /dev/sdc1 
[root@node1 ~]# umount mmm
[root@node1 ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root  17774592 1028276  16746316   6% /
devtmpfs                  3982984       0   3982984   0% /dev
tmpfs                     3995144       0   3995144   0% /dev/shm
tmpfs                     3995144   11952   3983192   1% /run
tmpfs                     3995144       0   3995144   0% /sys/fs/cgroup
/dev/sda2                 1038336  148716    889620  15% /boot
tmpfs                      799032       0    799032   0% /run/user/0

磁盘分区

块设备文件:存取单位i是块,磁盘,允许I/O操作以字符的形式进行
分区目的:
方便OS管理,提高系统管理效率
大大减少寻找文件所花费的时间,节省花销
image.png

磁盘分区和目录

磁盘分区和目录的关系
1.任何一个分区都必须挂载到某个目录上
2.目录是逻辑上的区分,分区是物理上的区分
3.磁盘Linux分区都必须挂载到目录树中的某一个具体的目录上才能进行读写操作
4.根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区

lsblk

列出块设备文件

root@node1 ~]# 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   20G  0 disk 
sr0              11:0    1  918M  0 rom  
块设备文件:存取单位是块
字符设备文件  通过内存缓冲区来使数据的读写操作以数据块的方式实现

fdisk分区工具

fdisk默认的分区格式是mbr,可以输入‘g’选项,将分区格式修改为gpt。
不过在修改完保存退出之后,在输入 fdisk /dev/sdb 命令进入分区模式,会出现 WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. 信息,提示fdisk gpt分区是新的功能,目前还在实验阶段。

[root@node1 ~]# fdisk -l

Disk /dev/sda: 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: 0x000d8f75

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

名词接释:
sectos:扇区
通过指定id来指定分区类型
linux是通过hd*x或者sd*x来表示的
*表示的是abc……
x表示的数字123……
hd大多是IDE硬盘;sd大多是SCSI或移动存储;引导(Boot):表示引导分区,在上面的例子中sda1 是引导分区;
Start (开始):表示的一个分区从Xcylinder(磁柱)开始;
End (结束):表示一个分区到 Ycylinder(磁柱)结束

对于一块硬盘来说最多管理15分区

参数 说明
a 设置启动分区
b 编辑分区标签
p 显示已有分区
n 创建新的分区
d 删除新分区
w 写入磁盘并退出
q 放弃更新并退出
m 获取帮助
l 列出所有分区类型
t 调整分区
o 重建新的空白DOS分区表
v 验证分区表,显示剩余没有被划分的扇区

n

输入n选项来开始创建分区

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
#p:基本分区     e:拓展分区
Partition number (1-4, default 1): 2
# 交互界面提示需要选择一个分区号,范围为2-4。由于已经存在了一个基本分区,所以只可选择2、3、4(默认2,顺序累加)
First sector (2048-41943039, default 2048):
#可以看到交互界面提示序号选择其实扇区,默认为剩余未被分配的最小扇区,推荐选择默认(直接点击回车);
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 
Using default value 41943039
#交互界面提示,要输入需要分配的截止扇区,默认为未被分配的最小扇区,此处推荐默认(直接点击回车):
Partition 2 of type Linux and of size 20 GiB is set
#创建成功

p

查看分区

Command (m for help): p

Disk /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: 0xf319789b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048       44444       21198+  83  Linux
/dev/sdb2           45056       55555        5250    5  Extended
/dev/sdb5           47104       55555        4226   83  Linux

d

删除分区

Command (m for help): d
Partition number (1,2,5, default 5): 2
#交互界面提示输入要删除的分区的分区号,此处选择2
Partition 2 is deleted

w

将分区信息写入到磁盘中

Command (m for help): w
The partition table has been altered!

parted[分区工具]

是一个可以分区并进行分区调整的工具,以创建,破坏,移动,复制,调整ext2 linux-swap fat fat32 reiserfs类型的分区,可以创建,调整,移动Macintosh的HFS分区,检测jfs,ntfs,ufs,xfs分区。
既可以创建MBR分区,也可以创建GPT分区
如果你的硬盘大于2TB则必须要使用parted来创建GPT格式的分区

参数 说明
-h 帮助
-l 列出所有块设备上的分区
-m 显示机器可分区输出
-s 从不提示用户
-v 显示版本
-a 新分区的对齐方式
[root@node1 ~]# parted -l
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1075MB  1074MB  primary  xfs          boot
 2      1075MB  21.5GB  20.4GB  primary               lvm

交互模式
命令 解释
# parted /dev/sdb 对/dev/sdb进行分区或管理操作
GNU Parted 1.8.1使用 /dev/sdbWelcome to GNU Parted! Type ‘help’ to view a list of commands. 系统返回值
(parted) mklabel gpt 定义分区表格式(常用的有msdos和gpt分区表格式,msdos不支持2TB以上容量的磁盘,所以大于2TB的磁盘选gpt分区表格式)
(parted) mkpart p1 创建第一个分区,名称为p1(p1只是第一个分区的名称,用别的名称也可以,如part1)
File system type? [ext2]? ext3 定义分区格式(不支持ext4,想分ext4格式的分区,可以通过mkfs.ext4格式化成ext4格式)
Start? 1 定义分区的起始位置(单位支持K,M,G,T)
End? 5T 定义分区的结束位置(单位支持K,M,G,T)
(parted) print 查看当前分区情况
Model: ATA VBOX HARDDISK (scsi)Disk /dev/sda: 21.5GBSector size (logical/physical): 512B/512BPartition Table: msdos Number Start End Size File system Name Flags1 32.3kB 5TB 5TB ext3 p1 系统返回值
(parted) h                                                                
  align-check TYPE N                        check partition N for TYPE(min|opt)
        alignment
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available
        devices, free space, all found partitions, or a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END

  resizepart NUMBER END                    resize partition NUMBER
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  disk_set FLAG STATE                      change the FLAG on selected device
  disk_toggle [FLAG]                       toggle the state of FLAG on selected device
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright
        information of GNU Parted

创建分区

[root@node1 ~]# parted   /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
# mklabel gpt 或者 mktable gpt 命令格式化分区类型和设置标签,选择mbr和gpt类型,如果修改分区标签类型,分区的所有数据将会丢失
(parted) mklabel gpt                                                      
(parted) print       #显示分区信息
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt   #分区已经是GPT分区格式
Disk Flags: 

Number  Start  End  Size  File system  Name  Flags

#创建分区  mkpart命令

(parted) help mkpart
  mkpart PART-TYPE [FS-TYPE] START END     make a partition

    PART-TYPE is one of: primary, logical, extended
    #分区类型:主分区、逻辑分区、拓展分区
    #文件系统是一下任意一项
       FS-TYPE is one of: btrfs, nilfs2, ext4, ext3, ext2, fat32, fat16, hfsx, hfs+,
        hfs, jfs, swsusp, linux-swap(v1), linux-swap(v0), ntfs, reiserfs, hp-ufs,
        sun-ufs, xfs, apfs2, apfs1, asfs, amufs5, amufs4, amufs3, amufs2, amufs1,
        amufs0, amufs, affs7, affs6, affs5, affs4, affs3, affs2, affs1, affs0,
        linux-swap, linux-swap(new), linux-swap(old)
        START and END are disk locations, such as 4GB or 10%.  Negative values count
        from the end of the disk.  For example, -1s specifies exactly the last sector.

        'mkpart' makes a partition without creating a new file system on the partition.
        FS-TYPE may be specified to set an appropriate partition ID.
 #创建       
(parted) mkpart xfs 0 25                                   #mkpart 文件系统类型  磁盘的起始位置   磁盘的结束位置         
Warning: The resulting partition is not properly aligned for best performance.
#分区没有正确对齐,会影响最佳新能
#parted默认是M为位置单位,所以这里需要使用s说明是扇区为单位
Ignore/Cancel? C                                                          
(parted) mkpart xfs 2048s 25%
#其中不需要指明分区类型是主分区还是逻辑分区,GPT分区只有一种分区格式
#如果是msdos(mbr)才需要指明。可以使用 rm 分区号 命令删除分区
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  5369MB  5368MB               xfs        

#如果创建的是mbr分区
(parted) mktable mbr 
parted: invalid token: primary
New disk label type? p 
(parted) P                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: pc98
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      8225kB  5371MB  5363MB               xfs

删除分区
命令 解释
# parted /dev/sdb 对/dev/sdb进行分区或管理操作
(parted) rm rm删除命令(删除之前必须确保分区没有被挂载)
Partition number? 1 删除第一个分区
(parted) print 查看当前分区情况
Model: ATA VBOX HARDDISK (scsi)Disk /dev/sda: 21.5GBSector size (logical/physical): 512B/512BPartition Table: msdos Number Start End Size File system Name Flags 系统返回值

cat /proc/partitions

查看内核当中是否识别新的分区

[root@node1 ~]#  cat /proc/partitions
major minor  #blocks  name

  11        0     940032 sr0
   8        0   20971520 sda
   8        1    1048576 sda1
   8        2   19921920 sda2
   8       16   20971520 sdb
 253        0   17821696 dm-0
 253        1    2097152 dm-1

partx

查看内核当前磁盘的分区情况
对一个磁盘或者分区表类型,尝试解析分区表。可以增加或删除分区

参数:
-a:增加指定的分区或读取磁盘新增的分区
-d:删除指定或所有的分区
-l::列出分区
—type:指定分区类型,dos,bsd,solaris,unix,或者gpt
—nr: M-N指定分区范围

root@node1 ~]#  partx -a /dev/sda
partx: /dev/sda: error adding partition 6
[root@node1 ~]#  partx -l /dev/sda
# 6:      6666-    77777 (    71112 sectors,     36 MB)

partprobe

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

用于重读分区表,当出现删除文件后,出现仍然占用空间|
可以在不重启的情况下重读分区

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

[root@node1 ~]# partprobe /dev/sda
Error: Partition(s) 1, 2, 6 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now before making further changes.

当磁盘分区信息完整时,手动删除/dev/disk/by-id目录下对应的wwn链接文件,执行partprobe操作,系统会自己创建删除的链接文件。
通过udevadmin monitor命令可以监控到相关信息