分区、格式化与修复
磁盘分区命令
不同的文件系统要用不同的命令来分区,在执行分区前应该执行lsblk和parted命令来查看相关信息,然后再执行分区。执行磁盘分区时主要用gdisk和fdisk命令,这两个命令分别适用于MBR分区和GPT分区,不能搞混。
gdisk后加装置命令就可以进入分区命令模式,然后会让用户输入指令,可以按?查看可输入的指令,注意该命令只能root使用,且装置名不能加数字,因为它不是针对某个分区的命令。
新增分区槽时会询问用户分区号和新分区空间,删除分区时会让用户指定要删除的分区号,删除和新增都需要执行partprobe命令更新linux核心分区表信息,注意不能删除正在活动的文件系统,应该先卸除(取消挂载)该分区然后再删除。
分区命令还有一个parted命令,它同时支持MBR和GPT,而且它还能修改分区表格式,这个parted的好处在于适合写入脚本中自动执行,它可以不和用户进行互动来完成分区。
以fdisk为例:
执行fdisk /dev/sdb
其中sdb是设备文件名,不能后面加编号,如sdb1,因为此时还没有分区。执行分区后进入命令模式,按p会显示分区状态,l可以查看分区ID号,82是swap,83是linux分区,n是新建分区,然后按e表示建立扩展分区,按p表示创建主分区。然后输入分区号,开始柱面和结束柱面。
必须建立扩展分区后才能建立逻辑分区。
分区后按w保存退出,有时必须重启才能生效,此时可以重新读取分区表信息partprobe
,如果该命令还是无效还是要重启。
分区结束后进行格式化mkfs -t ext4 /dev/sdb1
注意此时扩展分区不能格式化。然后把设备挂载就可以使用了,但是使用mount命令再次开机时挂载就会失效,此时应该进行永久挂载。
磁盘格式化
当磁盘分区好后,应该执行磁盘格式化。格式化主要是使用mkfs(make filesystem)命令
把磁盘分区格式化为xfs文件系统:mkfs.xfs 分区装置名
,这个命令可以设置格式化时的参数,包括block的大小、inode大小、CPU核心数、stripe大小等,一般默认即可。stripe和磁盘阵列(RAID)有关,磁盘阵列就是将多个磁盘组合成一个大磁盘,然后写文件时可以将文件分为多个小型的分区区块(stripe)后,同时写入多个磁盘中,这样不仅可以加快读写速度,还增加了容错能力。
把磁盘分区格式化为ext4文件系统:mkfs.ext4 分区装置名
,格式化时也可以设置参数。
也可以把磁盘格式化为其他文件系统,输入mkfs按两下tab就可以显示可格式化的文件系统。
文件系统的修复
因为数据异步的原因,宕机可能会导致文件系统的混乱,对于XFS文件系统主要用xfs_repair加装置分区名来修复文件系统,对于EXT4系统应该用fsck.ext4命令加装置分区名来修复,被修复的文件系统不能被挂载,可以卸除再进行修复,但对于不可卸除的根目录来说,想要修复就必须进入单人模式然后通过加选项强制修复。这个命令只能root用户有执行权限,正常情况下使用这些指令可能会造成对系统的损坏。
文件系统参数修改
装置文件有两个参数分别是major和minor,执行lsblk就能看到相关的数字,系统就是通过这两个参数来识别各种装置的,参考linux核心官网就能找到很多的硬件装置代码major和minor。
mknod可以修改装置代码:mknod 装置分区名 b 252 10
,后面两个数字分别代表major和minor。
还可以建立FIFO文件:mknod 文件名 p
,用ll命令可以看到文件类型变成了p。
xfs_admin可以修改XFS文件系统的UUID和LABEL:
xfs_admin -L 标签名 装置分区名
、xfs_admin -U uuid值 装置分区名
,注意这里的uuid值必须是新的,可以用uuidgen命令来产生新的UUID。
tune2fs可以修改ext4文件系统的UUID和LABEL:
tune2fs -L 标签名 装置分区名
系统修复模式
进入修复模式步骤:首先在开机时按键盘,(如果已加密就先按p输入密码),按e,将光标移动到kernel再按e,改为b quiet 1,然后回车,再按b就能单用户模式启动。
该模式不需要输入用户名和密码,可以在该状态重新设置root密码:passwd root
,还可以修改默认运行级别(如果修改为0就无法开机,但是可以通过这种方法来设置回去)
如果忘记grub密码可以通过光盘修复模式破解,光盘修复模式开机时加载的是光盘而不是硬盘,此时可以修改grub加密密码从而得到root用户密码。