本篇继续分享Linux中常用命令。主要分享Linux系统的磁盘管理相关的命令。

fdisk命令——磁盘分区工具
fdisk是Linux系统下常用的分区工具。受mbr分区表的限制,fdisk工具只能给小于2TB的磁盘划分分区。如果大于2TB,无法识别超过2TB那部分容量。如果磁盘大于2TB最好使用parted分区工具。
选项:
-l | 显示所有磁盘分区的信息 |
交互式命令:
m | 帮助 |
n | 新建一个分区 |
d | 删除一个分区 |
t | 更改分区格式 |
l | 查看分区类型 |
p | 打印分区表 |
w | 保存退出 |
q | 不保存退出 |
操作:
[root@localhost ~]# fdisk -l
磁盘 /dev/vda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512
字节I/O 大小(最小/最佳):512 字节 / 512
字节磁盘标签类型:dos磁盘标识符:0x000a4dca
设备 Boot Start End Blocks Id System
/dev/vda1 2048 6143 2048 83 Linux
/dev/vda2 * 6144 4200447 2097152 83 Linux
/dev/vda3 4200448 209715199 102757376 83 Linux
磁盘 /dev/vdb:214.7 GB, 214748364800 字节,419430400 个扇区Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512
字节I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512
字节I/O 大小(最小/最佳):512 字节 / 512 字节
[root@localhost ~]# fdisk /dev/vdc欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。
Device does not contain a recognized partition table使用磁盘标识符 0x5eb87e6d 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m命令操作
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)
命令(输入 m 获取帮助):n # 新增加一个分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extendedSelect (default p): p
# 新增一个主分区分区号 (1-4,默认 1):1起始
扇区 (2048-209715199,默认为 2048):
将使用默认值 2048
Last 扇区,
+扇区 or +size{K,M,G} (2048-209715199,默认为 209715199):+10G分区 1 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):p# 打印分区表
磁盘 /dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512
字节I/O 大小(最小/最佳):512 字节 / 512
字节磁盘标签类型:dos磁盘标识符:0x5eb87e6d
设备 Boot Start End Blocks Id System/dev/vdc1 2048 20973567 10485760 83 Linux
命令(输入 m 获取帮助):t# 更换分区格式已选择分区 1
Hex 代码(输入 L 列出所有代码):L
Hex 代码(输入 L 列出所有代码):8e已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p# 查看
磁盘 /dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512
字节I/O 大小(最小/最佳):512 字节 / 512
字节磁盘标签类型:dos磁盘标识符:0x5eb87e6d
设备 Boot Start End Blocks Id System/dev/vdc1 2048 20973567 10485760 8e Linux LVM
命令(输入 m 获取帮助):wThe partition table has been altered!
Calling ioctl() to re-read partition table.正在同步磁盘。
[root@localhost ~]# lsblk# 查看分区情况NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 9.5G 0 rom
vda 253:0 0 100G 0 disk
├─vda1 253:1 0 2M 0 part
├─vda2 253:2 0 2G 0 part /boot
└─vda3 253:3 0 98G 0 part /vdb
253:16 0 200G 0 disk
/datavdc 253:32 0 100G 0 disk
└─vdc1 253:33 0 10G 0 part
注意:操作时一定要谨慎,如果不小心操作错了,直接使用交互指令q不保存退出,这样先前的操作就会无效。如果输入w则会保存所有修改。
partprobe命令——更新内核的硬盘分区表信息
更新内核中的硬盘分区表数据,主要用于磁盘分区发生变化时。对磁盘分区进行修改后,找不到新分区,可以使用partprobe命令来刷新一下。
[root@localhost ~]# partprobe /dev/vdc
parted命令——磁盘分区工具
parted命令用于对大于2TB的磁盘进行分区,需要将磁盘转换为GPT格式。
选项:
-l | 显示所有磁盘分区的信息 |
-h | 查看帮助 |
操作:
1、查看帮助
[root@localhost ~]# parted /dev/vdcGNU
Parted 3.1使用 /dev/vdcWelcome to GNU Parted! Type 'help' to view a list of commands.(parted) h align-check TYPE N # 检查磁盘分区
help [COMMAND] # 查看帮助
mklabel,mktable LABEL-TYPE # 创建分区表
mkpart PART-TYPE [FS-TYPE] START END # 创建分区
name NUMBER NAME # 为分区命名
print [devices|free|list,all|NUMBER] # 显示分区表
quit # 退出
resizepart NUMBER END # 重设分区大小
rm NUMBER # 删除编号为NUMBER的分区
select DEVICE # 选择要编辑的分区
set NUMBER FLAG STATE # 改变分区的标志
toggle [NUMBER [FLAG]] # 设置分区标志
unit UNIT # 设置默认单位
version # 显示版本号(parted)
2、创建新分区
# 根据/dev/vdc磁盘创建新分区
[root@localhost ~]# parted /dev/vdc
GNU Parted 3.1使用 /dev/vdc(parted)
mklabel gpt # 为vdc创建GPT分区表警告: The existing disk label on /dev/vdc will be destroyed and all data on this disk will be lost. Do you want to continue?是/Yes/否/No? yes(parted)
mkpart primary 0 5G # 创建主分区,大小为5G警告: The resulting partition is not properly aligned for best performance.忽略/Ignore/放弃/Cancel? Ignore(parted)
p # 打印分区表信息Model: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:
Number Start End Size File system Name 标志 1 17.4kB 5000MB 5000MB primary
(parted)mkpart logical 5001 10G # 创建逻辑分区,大小为5G(parted)
p # 打印分区表信息Model: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:
Number Start End Size File system Name 标志 1 17.4kB 5000MB 5000MB primary 2 5001MB 10.0GB 5000MB logical
(parted) q # 退出信息: You may need to update /etc/fstab.
查看分区情况,可见vdc1和vdc2已经创建出来
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 9.5G 0 rom /mnt
vda 253:0 0 100G 0 disk
├─vda1 253:1 0 2M 0 part
├─vda2 253:2 0 2G 0 part /boot
└─vda3 253:3 0 98G 0 part /
vdb 253:16 0 200G 0 disk /data
vdc 253:32 0 100G 0 disk
├─vdc1 253:33 0 4.7G 0 part
└─vdc2 253:34 0 4.7G 0 part
3、删除分区
[root@localhost ~]# parted /dev/vdcGNU
Parted 3.1使用 /dev/vdcWelcome to GNU Parted! Type 'help' to view a list of commands.(parted) pModel: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:
Number Start End Size File system Name 标志 1 17.4kB 5000MB 5000MB primary 2 5001MB 10.0GB 5000MB logical
(parted) rm 2 # 删除第二个分区(parted) rm 1 # 删除第一个分区(parted) pModel: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:
Number Start End Size File system Name 标志
(parted) q信息: You may need to update /etc/fstab.
[root@localhost ~]# lsblk # 再次查看分区情况NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 9.5G 0 rom /mnt
vda 253:0 0 100G 0 disk
├─vda1 253:1 0 2M 0 part
├─vda2 253:2 0 2G 0 part /boot
└─vda3 253:3 0 98G 0 part /vdb
253:16 0 200G 0 disk /datavdc
253:32 0 100G 0 disk
4、非交互方式创建分区
直接使用一条命令创建一个分区。
[root@localhost ~]# parted /dev/vdc
mklabel gpt yes mkpart primary 0 10G Ignore p
警告: The existing disk label on /dev/vdc will be destroyed and all data on this disk will be lost. Do you want to continue?
警告: The resulting partition is not properly aligned for best performance.Model: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags:
Number Start End Size File system Name标志 1 17.4kB 10.0GB 10000MB primary
信息: You may need to update /etc/fstab.
mkfs命令——创建文件系统
mkfs命令用于在指定的设备(或磁盘分区)上创建格式化并创建文件系统。创建分区后并不能使用分区,需要对分区进行格式化为特定文件系统后才能用来存取数据。
选项:
-t | 指定要创建的文件系统类型 |
-c | 创建文件系统时检查磁盘坏块 |
mkfs只是一个前端命令,它通过-t参数指定文件系统类型后会调用相应的命令mkfs.fstype。因此可以直接使用mkfs.ext4这个命令创建ext4文件系统。
操作:
# 将/dev/vdc1格式化为xfs文件系统
[root@localhost ~]# mkfs.xfs /dev/vdc1
# 将/dev/vdc2格式化为ext4系统[root@localhost ~]# mkfs -t ext4 /dev/vdc2
resize2fs命令——调整ext2/ext3/ext4文件系统大小
resize2fs命令用于扩容或收缩未挂载的ext2/ext3/ext4文件系统。在Linux 2.6或更高版本的内核中,该命令还支持在线扩容已经挂载的文件系统,该命令常用来针对LVM扩容后的分区使用。
[root@localhost ~]# resize2fs /dev/centos/root # 扩容文件系统,ext4文件系统格式
xfs_growfs命令——调整xfs文件系统的系统大小
xfs_growfs针对的是使用xfs格式化的的文件系统,ext4文件系统使用resize2fs调整文件系统大小。
操作:
# 直接扩展整块磁盘,需要在管理平台增加容量后操作
[root@localhost ~]# xfs_growfs /dev/vdb
# 扩展逻辑卷创建的文件系统,需要先使用lvextend扩展逻辑卷大小[root@localhost ~]# xfs_growfs /dev/centos/root
fsck命令——检查并修复Linux文件系统
fsck命令用于检查并修复文件系统中的错误。需要注意的是:文件系统必须是卸载状态,否则可能会出现故障;不要对正常的分区使用fsck,fsck会根据/etc/fstab进行文件系统检查。
选项:
-a | 自动修复文件系统,不询问任何问题 |
-s | 按顺序检查多个文件系统 |
-t | 指定要检查的分区的文件系统类型 |
-A | 检查文件/etc/fstab内所列的全部文件系统 |
只有当系统开机显示磁盘错误时,才需要执行。
[root@localhost ~]# fsck -A
dd命令——转换或复制文件
选项:
if=<输入文件> | 从指定文件中读取,input file |
of=<输出文件> | 写入到指定文件,output file |
bs=<字节数> | 一次读写的字节数,block size |
cout=<块数> | 指定复制的block块的个数 |
obs=<字节数> | 一次性写的字节,默认是512 |
ibs=<字节数> | 一次读的字节,默认512 |
操作:
# 生成任意大小的测试文件(/dev/zero是一个特殊块设备,相当什么都没有)
[root@localhost ~]# dd if=/dev/zero of=datatest bs=1M,
# 制作Linux系统的ISO镜像[root@localhost ~]# dd if=/dev/cdrom of=CentOS7.9.iso
# 删除分区/dev/vdb1分区的数据,谨慎操作![root@localhost ~]# dd if=/dev/zero of=/dev/vdb1
monut命令——挂载文件系统
一个分区被格式化后并不可以直接使用,还需要将其挂载到指定的挂载点上才可以被访问。
选项:
-l | 显示已经挂载的设备相关信息 |
-a | 挂载/etc/fstab文件中的配置信息 |
-t | 指定挂载的文件系统类型。如nfs,iso9660(光盘) |
-o | 后接一些挂载选项。 |
操作:
# 显示系统的挂载信息
[root@localhost ~]# mount/dev/vda3 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)nfsd on /proc/fs/nfsd type nfsd (rw,relatime)/dev/vdb on /data type xfs (rw,relatime,seclabel,attr2,inode64,noquota)/dev/vda2 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
# 挂载光盘光驱,前提是有光驱镜像
[root@localhost ~]# mount /dev/cdrom /media[root@localhost ~]# ll /media
# 挂载nfs文件系统[root@localhost ~]# mount -t nfs -o nodev,noatime 172.16.1.27:/data /data永久挂载要写入到/etc/fstab中
[root@localhost ~]# cat >> /etc/fstab <<EOF172.16.1.27:/data /data nfs nodev,noatime 0 0EOF
# 文件系统只读时,需要重新挂载根目录为读写模式。[root@localhost ~]# mount -o remount,rw /# 确认fstab文件中配置正确,避免重启失败[root@localhost ~]# mount -a
永久性挂载的磁盘都需要写入/etc/fstab文件中,若这个文件配置有错误会导致系统重启无法正常进入系统。可以使用mount -a进行挂载测试,如果能挂载成功,重启一般会正常。
umount命令——卸载已挂载的文件系统
umount卸载可以接挂载点目录,也可以接设备文件。
选项
-f | 强制卸载 |
-l | 将文件系统从文件系统层次结构中分离出来,并清除我对文件系统的所有引用 |
操作:
# 卸载挂载点/media
[root@localhost ~]# umount /media# 强制删除[root@localhost ~]# cd /media/
[root@localhost media]# umount /media # 如果处于挂载点中,则无法卸载,可以退出挂载点再卸载或强制卸载
umount: /media:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以 找到有关使用该设备的进程的有用信息)
[root@localhost media]# umount -lf /media
sync命令——刷新文件系统缓存区
sync命令会将内存缓冲区的数据强制刷新到磁盘
操作:# 手动将数据从缓冲区刷到磁盘中并重启系统
sync
sync
reboot
写SSD磁盘性能不佳怎么排查 – LinuxGuideLinuxGuide
Linux磁盘管理命令-xfs 管理命令 – LinuxGuideLinuxGuide