1-13-硬盘介绍和磁盘管理


时间:2018-05-24 姓名:魏文应


一、硬盘

硬盘的正常使用流程:

购买设备 -> 设备联机 -> 磁盘分区 -> 磁盘格式化(创建文件系统) -> 磁盘挂载 -> 正常使用
  • 9181524-418d0d4f5a7457b7.png
    sda磁盘.png

我们看 /dev/sda1 之类的:

  • /dev/ : 设备文件目录。
  • sd : SCSI接口类型的硬盘。
  • a : 代表第几块盘,a代表第一块盘。
  • 1 : 分区,1、2、3、4是主分区,5、6、7、8、9等是逻辑分区。

二、使用fdisk管理分区

  • 注意:fdisk 无法支持 2T 以上容量的磁盘分区,超过2T,请使用后面将会讲到的parted工具。

实验准备

做实验之前,添加一块硬盘,VMware虚拟机中,点击添加,然后添加一块硬盘:

  • 9181524-81f992c3af9a9755.png
    添加一块硬盘

然后重启系统,用 fdisk -l 命令就可以看到新添加的硬盘了:

  • 9181524-61e8f3660fb4f560.png
    sdb就是新添加的盘

图中的 /dev/sdb 就是我们刚才添加的硬盘。

给一块磁盘分区

实验 fdisk 命令,加上磁盘,比如我要对sdb磁盘分区,执行 fdisk /dev/sdb 命令,然后会进入fdisk的一些命令提示中,输入m打印帮助信息:

  • 9181524-32cbb3fabad9288a.png
    fdisk帮助信息( 图片来源:www.xuegod.cn)

然后输入相应的分区命令:

  • 9181524-f87a40677efed61a.png
    分区过程

然后输入 w 保存退出,分区完成,执行命令ls /dev/sd*, 就能看到刚才分区得到的磁盘分区了。接下来,格式化分区

mkfs.ext4 /dev/sdb1

这里我格式化为ext4类型文件系统,你也可以格式化为其它类型(输入mkfs,再按两下Tab键,就能看到有哪些文件系统类型可以选择)。通过 blkid命令,查看硬盘分区类型

blkid /dev/sdb1

然后 挂载分区

# 创建一个挂载点
mkdir /sdb1

# 将/dev/sdb1分区挂载到/sdb1
mount /dev/sdb1 /sdb1

# 查看一下挂载上了没有
df -Th | tail 1

进入/sdb1这个目录,如果看到 lost+found 文件夹,也你能说明挂载没有问题。注意:磁盘挂载中,一个挂载点可以挂载多个磁盘,比如:

mount /dev/sdb2 /sdb1
mount /dev/sdb1 /sdb1

这里都挂载到/sdb1这个目录下,那么去掉这个挂载点,你就要umount 两次:

umount /sdb1
umount /sdb1

这样 /sdb1 这个挂载点才没有挂载磁盘。 当然,也可以直接指定设备去卸载:

umount /dev/sdb1

开机自动挂载分区

刚才mount 是手动挂载磁盘分区, 下面是开机自动挂载。在 /etc/fstab 文件中,加入下面一句话:

/dev/sdb1               /sdb1                   ext4    defaults        0 0

它是什么意思呢? 意思如下:

/dev/sdb1 /sdb1 ext4 defaults 0 0
要挂载的设备分区 挂载点 文件系统类型 挂载选项 是否要备份 是否检测

考虑到 /dev/sdb1 不是唯一的(因为这个值是变的),比如:

/dev/sda 磁盘disk1
/dev/sdb 磁盘disk2
/dev/sdc 磁盘disk3

这里表示有三块磁盘,如果 磁盘disk1 被拔下来了,重新开机时就是(因为系统检测到磁盘,是a/b/c/d这样来排列的,先从a开始表示第一块磁盘):

/dev/sda 磁盘disk2
/dev/sdb 磁盘disk3

如果我们还认为 /dev/sda磁盘disk1 ,就会发生问题,因为这时它是 磁盘disk2。为了解决这个问题,我们应该用 UUID标识 一块磁盘(UUID具有全球唯一性),所以我们应该这样:

UUID=9d0d24e5-0bbe-463e-9cfa-ec6c9f44cca8 /sdb1  ext4    defaults        0 0

这个 UUID 可以通过 blkid 这个命令查询得到:

blkid /dev/sdb1

让/etc/fstab内容立即生效

我们在修改了磁盘配置文件 /etc/fstab 这个文件以后,可以执行下面命令让其生效:

mount -a

这个命令执行了 /etc/fstab 的配置信息。

将剩余磁盘容量都给逻辑分区

当我们创建了一些主分区以后,我们还想创建逻辑分区,那么我们就可以先执行操作,将剩下的容量都给了逻辑分区:

  • 9181524-b8315c6a429ba24b.png
    创建逻辑分区

我这里sdb4就是剩下容量。然后我们可以和之前创建主分区一样的方法,创建逻辑分区。注意:这时候的sdb4是不能直接访问的。 意思是我们要在sdb4的基础上,创建逻辑分区。

三、使用parted分区工具

  • GPT 分区表:全球唯一标识分区表, GPT对分区数量没有限制(windows系统GPT有限制,最大128个分区,可管理磁盘大小18EB,NTFS文件系统最大才支持256TB)。
  • MBR 分区表:最大4个分区表项。
  • parted工具:适用于大容量磁盘的分区(超过2T)。

准备工作:

  • 查看parted工具是否已经安装: rpm -rf `which parted`
  • 查看磁盘状态信息:parted -l
  • 在VMware设置中添加一块新的磁盘,大小为3T(你的物理磁盘没有这么大没有关系,这是虚拟的),reboot重启linux。
  • 使用 fdisk -l 命令,看看有没有我们刚才添加的3T磁盘,我这里是/dev/sdc。

然后对磁盘进行分区操作:

  • 指定要分区磁盘: parted /dev/sdc
  • 上面一步开始,就进入了parted命令行操作。
  • 指定分区表类型: mklabel gpt
  • 创建分区: mkpart primary 0 100 (primary是分区名称,你任意取一个,0是分区起始地址,100是100M大小)。
  • 忽略警告信息(这是分区比较小的提示信息,如果大点就没有这个警告了): ignore
    warning: The resulting partition is not properly aligned for best performance.
    警告:结果分区没有正确对齐以获得最佳性能。
    
  • 可以查看一下分区结果: print
  • 最后退出parted : quit

可以分一个大点的分区

  • 指定要分区磁盘: parted /dev/sdc

  • 9181524-b2461e1b715cfe66.png
    parted工具分配磁盘过程
  • 最后退出parted : quit

对分区进行格式化和挂载:

  • 格式化分区: mkfs.ext4 /dev/sdc1 (我这里是/dev/sdc1这个分区,你根据自己要格式化的分区而定)。
  • 创建挂载点: mkdir /sdc1
  • 挂载: mount /dev/sdc1 /sdc1

在格式化分区时,如果没有安装相关文件系统格式化工具,可以用yum搜索安装,比如安装mkfs.xfs 工具,

yum search mkfs

或者

yum search xfs

比如结果显示: xfsprogs.i686,那么用yum安装它即可:yum -y install xfsprogs.i686

四、扩展swap分区

我们可以对swap分区大小进行修改。下面扩大swap分区:

  • 创建两个逻辑分区,我这里是/dev/sdb3、/dev/sdb5,这两个分区100M。

  • 格式化分区(swap专用工具):mkswap /dev/sdb3mkswap /dev/sdb5

  • 可以查看一下内存情况: free -m (MB为单位显示)。

  • 添加到swap中:swapon /dev/sdb3

  • 再查看一下内存情况,你会发现内存swap分区变大了约100M: free -m

  • 去除swap分区:swapoff /dev/sdb3 (将刚才添加的sdb3从swap分区中去掉)。

开机时自动挂载swap分区:

  • 打开配置文件: vim /etc/fstab ,添加刚才的磁盘分区:

    /dev/sdb3                  swap                    swap     defaults       0 0
    

    更好的做法是,通过 blkid /dev/sdb3指令,查看 /dev/sdb3 的UUID,用UUID替代 /dev/sdb3:

    UUID=4fb2dd10-2bc7-48fe-8158-376dd4001c67 swap     swap    defaults      0 0
    
  • 直接执行 mount -a 发现不起作用,reboot 重启系统就可以了,然后通过 free -m查看一下。

十、问题处理

磁盘分区后,在/dev/目录下找不到刚才新建的分区

如果分区以后,执行 ls /dev/sdb2 命令,没有看到你的分区(比如我这里是sdb2分区),那么刷新一下磁盘:

partprobe /dev/sdb

如果执行 partprobe /dev/sdb 命令,提示下面错误信息:

Warning: WARNING: the kernel failed to re-read the partition table on /dev/sdb (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.

可能是这块磁盘的哪个分区已经被挂载了:

df -Th

比如我们之前执行 mount /dev/sdb1 /sdb1 命令,将 /dev/sdb1/ 挂载了 /sdb1 上,那么我们可以先卸载这个挂载点:

umount /sdb1

然后再执行 partprobe /dev/sdb 命令。如果还是不行,看看磁盘是否有分区被挂载为了swap分区:

cat /proc/swaps

如果有sdb磁盘挂载到swap分区,可以关闭它:

swapoff /dev/sdb3

猜你喜欢

转载自blog.csdn.net/weixin_33964094/article/details/87425343