本篇继续分享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 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a4dca
Boot Start End Blocks Id System
2048 6143 2048 83 Linux
* 6144 4200447 2097152 83 Linux
4200448 209715199 102757376 83 Linux
/dev/vdb:214.7 GB, 214748364800 字节,419430400 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
字节 / 512 字节
大小(最小/最佳):512 字节 / 512 字节
/dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
字节 / 512 字节
大小(最小/最佳):512 字节 / 512 字节
~]# 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 extended
Select (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 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5eb87e6d
Boot Start End Blocks Id System
2048 20973567 10485760 83 Linux
m 获取帮助):t # 更换分区格式
1
Hex 代码(输入 L 列出所有代码):L
Hex 代码(输入 L 列出所有代码):8e
LVM”
m 获取帮助):p # 查看
/dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
字节 / 512 字节
大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x5eb87e6d
Boot Start End Blocks Id System
2048 20973567 10485760 8e Linux LVM
m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
~]# lsblk # 查看分区情况
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 9.5G 0 rom
vda 253:0 0 100G 0 disk
253:1 0 2M 0 part
253:2 0 2G 0 part /boot
253:3 0 98G 0 part /
vdb 253:16 0 200G 0 disk /data
vdc 253:32 0 100G 0 disk
33 0 10G 0 part :
注意:操作时一定要谨慎,如果不小心操作错了,直接使用交互指令q不保存退出,这样先前的操作就会无效。如果输入w则会保存所有修改。
partprobe命令——更新内核的硬盘分区表信息
更新内核中的硬盘分区表数据,主要用于磁盘分区发生变化时。对磁盘分区进行修改后,找不到新分区,可以使用partprobe命令来刷新一下。
[ ]
parted命令——磁盘分区工具
parted命令用于对大于2TB的磁盘进行分区,需要将磁盘转换为GPT格式。
选项:
-l | 显示所有磁盘分区的信息 |
-h | 查看帮助 |
操作:
1、查看帮助
[root@localhost ~]# parted /dev/vdc
GNU Parted 3.1
使用 /dev/vdc
Welcome 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
(parted) mkpart primary 0 5G # 创建主分区,大小为5G
The resulting partition is not properly aligned for best performance. :
Ignore
(parted) p # 打印分区表信息
Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk 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: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk 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已经创建出来
~]# 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
253:1 0 2M 0 part
253:2 0 2G 0 part /boot
253:3 0 98G 0 part /
vdb 253:16 0 200G 0 disk /data
vdc 253:32 0 100G 0 disk
253:33 0 4.7G 0 part
253:34 0 4.7G 0 part
3、删除分区
~]# parted /dev/vdc
GNU Parted 3.1
/dev/vdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
p
Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk 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 # 删除第一个分区
p
Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
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
253:1 0 2M 0 part
253:2 0 2G 0 part /boot
253:3 0 98G 0 part /
vdb 253:16 0 200G 0 disk /data
vdc 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: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk 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文件系统。
操作:
[ ]
[ ]
resize2fs命令——调整ext2/ext3/ext4文件系统大小
resize2fs命令用于扩容或收缩未挂载的ext2/ext3/ext4文件系统。在Linux 2.6或更高版本的内核中,该命令还支持在线扩容已经挂载的文件系统,该命令常用来针对LVM扩容后的分区使用。
[ ]
xfs_growfs命令——调整xfs文件系统的系统大小
xfs_growfs针对的是使用xfs格式化的的文件系统,ext4文件系统使用resize2fs调整文件系统大小。
操作:
# 直接扩展整块磁盘,需要在管理平台增加容量后操作
~]# xfs_growfs /dev/vdb
# 扩展逻辑卷创建的文件系统,需要先使用lvextend扩展逻辑卷大小
~]# 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
172.16.1.27:/data /data nfs nodev,noatime 0 0
EOF
# 文件系统只读时,需要重新挂载根目录为读写模式。
[root@localhost ~]# mount -o remount,rw /
# 确认fstab文件中配置正确,避免重启失败
[root@localhost ~]# mount -a
永久性挂载的磁盘都需要写入/etc/fstab文件中,若这个文件配置有错误会导致系统重启无法正常进入系统。可以使用mount -a进行挂载测试,如果能挂载成功,重启一般会正常。
umount命令——卸载已挂载的文件系统
umount卸载可以接挂载点目录,也可以接设备文件。
选项
-f | 强制卸载 |
-l | 将文件系统从文件系统层次结构中分离出来,并清除我对文件系统的所有引用 |
操作:
[ ]
[ ]
[ ]
umount: /media:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
[ ]
sync命令——刷新文件系统缓存区
sync命令会将内存缓冲区的数据强制刷新到磁盘。
操作:
# 手动将数据从缓冲区刷到磁盘中并重启系统
sync
sync
reboot