本篇继续分享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磁盘标识符:0x000a4dcaBoot Start End Blocks Id System2048 6143 2048 83 Linux* 6144 4200447 2097152 83 Linux4200448 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/vdcfdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。Device does not contain a recognized partition table0x5eb87e6d 创建新的 DOS 磁盘标签。m 获取帮助):m命令操作a toggle a bootable flagb edit bsd disklabelc toggle the dos compatibility flagd delete a partitiong create a new empty GPT partition tableG create an IRIX (SGI) partition tablel list known partition typesm print this menun add a new partitiono create a new empty DOS partition tablep print the partition tableq quit without saving changess create a new empty Sun disklabelt change a partition's system idu change display/entry unitsv verify the partition tablew write table to disk and exitx 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):2048Last 扇区, +扇区 or +size{K,M,G} (2048-209715199,默认为 209715199):+10G1 已设置为 Linux 类型,大小设为 10 GiBm 获取帮助):p # 打印分区表/dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区Units = 扇区 of 1 * 512 = 512 bytes字节 / 512 字节大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x5eb87e6dBoot Start End Blocks Id System2048 20973567 10485760 83 Linuxm 获取帮助):t # 更换分区格式1Hex 代码(输入 L 列出所有代码):LHex 代码(输入 L 列出所有代码):8eLVM”m 获取帮助):p # 查看/dev/vdc:107.4 GB, 107374182400 字节,209715200 个扇区Units = 扇区 of 1 * 512 = 512 bytes字节 / 512 字节大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x5eb87e6dBoot Start End Blocks Id System2048 20973567 10485760 8e Linux LVMm 获取帮助):wThe partition table has been altered!Calling ioctl() to re-read partition table.正在同步磁盘。~]# lsblk # 查看分区情况NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsr0 11:0 1 9.5G 0 romvda 253:0 0 100G 0 disk253:1 0 2M 0 part253:2 0 2G 0 part /boot253:3 0 98G 0 part /vdb 253:16 0 200G 0 disk /datavdc 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/vdcGNU Parted 3.1使用 /dev/vdcWelcome to GNU Parted! Type 'help' to view a list of commands.(parted) halign-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/vdcGNU 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: 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 primary2 5001MB 10.0GB 5000MB logical(parted) q # 退出: You may need to update /etc/fstab.
查看分区情况,可见vdc1和vdc2已经创建出来
~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsr0 11:0 1 9.5G 0 rom /mntvda 253:0 0 100G 0 disk253:1 0 2M 0 part253:2 0 2G 0 part /boot253:3 0 98G 0 part /vdb 253:16 0 200G 0 disk /datavdc 253:32 0 100G 0 disk253:33 0 4.7G 0 part253:34 0 4.7G 0 part
3、删除分区
~]# parted /dev/vdcGNU Parted 3.1/dev/vdcWelcome to GNU Parted! Type 'help' to view a list of commands.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 primary2 5001MB 10.0GB 5000MB logical(parted) rm 2 # 删除第二个分区(parted) rm 1 # 删除第一个分区pModel: Virtio Block Device (virtblk)Disk /dev/vdc: 107GBSector size (logical/physical): 512B/512BPartition Table: gptDisk 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 MOUNTPOINTsr0 11:0 1 9.5G 0 rom /mntvda 253:0 0 100G 0 disk253:1 0 2M 0 part253:2 0 2G 0 part /boot253: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文件系统。
操作:
[][]
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 -Add命令——转换或复制文件
选项:
| 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/fstab172.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 | 将文件系统从文件系统层次结构中分离出来,并清除我对文件系统的所有引用 |
操作:
[][][]umount: /media:目标忙。(有些情况下通过 lsof(8) 或 fuser(1) 可以找到有关使用该设备的进程的有用信息)[]
sync命令——刷新文件系统缓存区
sync命令会将内存缓冲区的数据强制刷新到磁盘。
操作:# 手动将数据从缓冲区刷到磁盘中并重启系统syncsyncreboot
