Linux磁盘管理(分区、格式化、挂载)
场景
- 服务器磁盘容量过小,添加新的磁盘。
- 磁盘格式化,重新分区。
概念
主分区 VS 扩展分区 VS 逻辑分区
在linux中第一块硬盘分区为vda(sda)分区,第二块则为vdb(sdb),依此类推。
单个磁盘来说,主分区编号为vda1-4(扩展分区会占用主分区编号)。硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两个分区,一个是主分区(Primary Partion)一个是扩展分区(extended partition)。主分区可以马上被使用但不能再分区,扩展分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么由扩展分区再分下去的是什么呢?它就是逻辑分区(Logical Partion),逻辑分区没有数量上限制,逻辑分区从vda5开始。
磁盘 | 分区 |
---|---|
磁盘1 | vda1 |
磁盘1 | vda2 |
磁盘2 | vdb1 |
磁盘2 | vdb2 |
完全虚拟化 VS 半虚拟化
- /dev/sda是第一个检测到的IDE / SATA / SCSI类型的磁盘。在这种情况下,由管理程序模拟(完全虚拟化)。
- /dev/vda是第一个检测到的半虚拟化磁盘驱动程序。如果两者都被引用到同一磁盘,则它比模拟的sdX设备更快,因为与模拟驱动器相比,其操作的开销更少。
Ext3 VS Ext4
区别
- ext3是第三代扩展文件系统,目前所支持的最大16TB 文件系统和最大 2TB 文件。
- ext4文件系统提供了更佳的性能和可靠性,具有了更为丰富的功能,兼容ext3,支持更大容量的文件系统和文件。
无损升级
确认系统支持Ext4
确认系统内核版本 > 2.6.28
uname -a
升级
# 卸载要升级的磁盘sdb1
umount /dev/sdb1
# 升级ext4
tune2fs -O extents,uninit_bg,dir_index /dev/sdb1
# 转换成 ext4 后必须用 fsck 扫描,否则不能 mount,-p 参数表明 “自动修正 ” 文件系统
fsck -pf /dev/sdb1
# 重新挂载 xxx为你要挂载的目录
mount -t ext4 /dev/sdb1 /xxx
注意
- 如果/boot分区目前是Ext3,那么最好保留,因为现在系统上的 grub 很可能不支持 Ext4,需要有个commit 的特别版本grub 才能支持 Ext4。
分区 VS 挂载
区别
- 分区,将一个磁盘分为多个区(类比windows中的 D E F 盘),提高磁盘容错性和搜素效率。
- 挂载,Linux的宗旨是一切皆文件,所有文件都放置在以根目录为树根的树形目录结构中。在 Linux 看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构)。因此产生的问题是,当在 Linux 系统中使用这些硬件设备时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用,合二为一的过程称为“挂载”。
注意
并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。
分区
查看当前磁盘信息
df -h
查看系统分区情况
fdisk -l
可以看到 /dev/vdb还未分区
为新添加的硬盘创建分区
- 开始创建分区,因此我们输入n(添加一个新分区),然后回车。
- 可以看到分区类型p(0个主要分区,0个扩展分区,还有4个闲置分区),e(默认为扩展分区),此时我们输入p,然后回车。
- 选择分区数量:我这里就选择1,然后回车。
- 选择起始扇区,直接默认不输入,然后回车。
- 选择结束扇区,直接默认不输入,然后回车。
查看是否分区完成
fdisk -l
可以看到我们的dev/vdb1分区已经识别出来了,带*号代表启动盘
格式化
什么是格式化
格式化指将分区格式化成不同的文件系统,分区完成后,如果不格式化写入文件系统,则是不能正常使用的。这时就需要使用 mkfs 命令对硬盘分区进行格式化。
文件类型
Linux下的文件类型有ext2、ext3、ext4、xfs等等,要结合自身系统支持的格式和场景选择文件类型。
mkfs 命令
## 格式化
mkfs -t ext4 /dev/vdb1
挂载
为什么要挂载
Linux中所有的硬件设备必须挂载之后才能使用,挂载指的是将硬件设备的文件系统和 Linux 系统中的文件系统,通过指定目录(作为挂载点)进行关联。
创建挂载目录
mkdir /xxx
挂载分区
mount /dev/vdb1 /xxx
查看分区是否挂载成功
df -h /xxx
可以看到分区已经挂载成功。
注意
当前为临时挂载,重启挂载会丢失(需要手动重新挂载),需要配置自动挂载。
# 编辑
vi /etc/fstab
# 添加
/dev/vdb1 /xxx ext4 defaults 0 0