一、硬盘分区两种方式
1、MBR(Main Boot Record)是过去很长一段时间的主流分区方式。
主引导记录。以硬盘最前面512字节存储引导信息。其中前446字节保存引导信息,后64字节保存分区表信息,最后2字节为结束标志,标识MBR是否有效。
由于是用64字节保存分区表,每个分区用16字节表示。所以最多只能划分4个主分区,最大支持卷为大小为2TB。且分区表无备份。近些年缺点也日益显现出来。
2、GPT(GUID Partition Table)随着技术的发展,慢慢有成为主流的趋势。
全局唯一标识分区表。会利用独立分区保存分区表信息且有备份。GPT很好的解决了MBR的分区的一些缺陷。
第一个扇区存储“保护MBR”。出于兼容性考虑,用来标识硬盘分区为GPT分区,防止管理程序对误读或数据的破坏。实际内部只保存了0xEE标识的一个分区。
第二个扇区保存GPT头信息。1.保存了硬盘的GUID,可用空间以及分区表项的大小和数量。2.GPT头本身信息(位置,大小)以及备份GPT头的位置以及大小信息。3.保存了本身和分区表的CRC32校验码。通过校验码来判断分区表是否正确。
第三个扇区至三十三扇区保存分区表项,即分区表信息。一个分区表项,用前16个字节表示分区类型GUID。后面16个字节表示分区本身GUID。之后是分区的起始和末尾的64位扇区编号,分区名字以及属性。
第三十四扇区开始为分区空间。实际分区,用以储存数据
磁盘最后一段空间或者说一些扇区为备份信息。从后向前依次分别为,GPT头信息备份,分区表项信息备份。各自大小同源数据占用扇区数相同。
二、linux系统中创建一个分区,大小为10G。格式化为EXT4文件系统。
利用fidisk命令实现划分分区。
fdisk /dev/sda 根据交互提示划分分区(图一为fdisk界面)。划分分区最后记得输入 “w”,用以保存分区表。
partprobe
通知系统分区表更改,重读分区表,识别出新划分的分区。
partx -a
亦可识别新分区,需要多执行几次。
格式化分区,block大小为2048.预留空间20%。建表为MYDATA。
mke2fs -b 2048 -t ext4 -L MYDATA -m 20 /dev/sda2
mkfs.ext4 /dev/sda2
(格式化为ext4文件系统,其他选项默认。常用)
挂载至/mydata目录下,挂载时禁止程序自动运行,且不更新文件的访问时间戳。
开机自动挂载。
mount -o noatime,noexec /dev/sda2 /mydata
三、建一个大小为1G的swap分区,并启用
图一
Ps:上图为fdisk界面,全程交互式,使用方法请自己摸索,非常简单,不再赘述。
1.建一个swap。使用fdisk划分出一个分区,分区类型为swap。类型编号为82。(建立分区过程同上)
swap分区建立之后依然需要让内核重新设别新的分区,执行
partprobe
启动用新的swap分区。
swapon /dev/sda3
关闭swap分区
swapoff /dev/sda3
查看swap分区
swapon -s
如果需要开机自动挂载,需要在配置文件/etc/fstab 中加入如下一行:
/dev/sda3 swap swap defaults 0 0
或
uuid swap swap dafaults 0 0
查看uuid的命令
blkid
2.实际环境中可能因为各种 原因,无法分区,可能会利用大文件制作swap使用。
我写个思路算是抛砖引玉,各位有需求可以深入研究使用。
利用dd命令制作一个大镜像文件。
dd if=/dev/zero of=/opt/mydata/swap.img bs=1M count =1024
mkswap /opt/mydata/swap.img
然后测试
swapon /opt/mydata/swap.img
测试没有问题,添加到/etc/fstab文件中,实现开机自动挂载。
至此swap设置完成。各位有兴趣自行动手试一试吧。
四、编写脚本,计算/etc/passwd 文件中第10个用户和第20个用户的id号之和。
五、将当前主机名保存至HOSTNAME变量中,如果主机名为空,或者为localhost。localdomain则将设置为 www.magedu.com。
六、编写脚本。通过命令行传入一个用户名,判断id号是偶数还是奇数。
七、LVM基本应用以及扩展缩减的实现。
LVM (Logical Volume Manager)逻辑卷管理。
随着技术发展Raid技术及存储硬件设备,云服务器的广泛应用。LVM的可适用范围也越来越小。
并且lvm是在文件系统层面之下一个层面,且不属于非维护型的文件系统。所以无特殊需求不建议生产环境应用LVM。以下对LVM做基本应用介绍:
LVM 组成部分 PV物理卷,VG卷组,LV逻辑卷。
根据层级关系,可以不太准确得描述为,PV最底层,之上是VG,之上是LV。(帮助大家便于理解)
PV 物理卷
查看PV信息
pvs 简要信息
pvdispay 详细信息
创建PV
pvcreate /dev/sda# (某个分区且分区类型必须为lvm)
删除PV
pvmove /dev/sda# (删除pv之前,需要删除其上面的所有vg)!!!注意,数据将丢失
VG 卷组
查看VG信息
vgs 简要信息
vgdispay 详细信息
创建VG
vgcreate /dev/sda# (创建为PV的分区,一个vg可包含多个PV)
-s 可指定PE大小。默认为4M。PE决定了单个逻辑卷的最大容量。
扩展VG
vgextend vg01 /dev/sda# (指明pv)
删除VG
vgmove /dev/sda# (删除vg之前,需要删除其上面的所有lv)!!!注意,数据将丢失
LV 逻辑卷
查看LV信息
lvs 简要信息
lvdispay 详细信息
创建LV
lvcreate -n lv01 -L 1G /dev/vg0 (指明加入哪个VG)
-n 对新创建的lv命名,不命名默认为“lvol#”格式
-L 指定lv大小。支持常用单位B,M,G等等
扩展LV
lvextend /dev/vg01/lv01 (指明需要扩展的LV,VG需要有足够的空间可供扩展才可以)
-L 指定需要扩展的大小。支持常用单位B,M,G等等
-r resizefs 非常好用的命令。扩展lv的同时将其上面的文件系统一并扩展。
删除LV
lvmove /dev/sda# (删除lv之前,卸载其上面的所有分区)!!!注意,数据将丢失
大家可能发现了。对于PV,VG,LV的操作命令都及其相似,只有各自参数略有却别。这也为我们使用提供了很多方便。以上关于LVM的简单操作。
PS:最后lv创建成功还无法使用,需要在lv上面创建文件系统才可以挂载到系统中存储数据。
如果格式化各种文件系统,实现临时挂载或者开机自动挂载,请查看我博客其他文字。
谢谢