磁盘分区重点知识
磁盘分区的重点:
1)给磁盘分区的实质就是针对上述0磁头0磁道1扇区的前446字节后面接下来的64bytes的分区表进行设置,即主要是划分起始以及结束磁头号、扇区号及柱面号
2)给磁盘分区的工具有fdisk(适合给小于2T的磁盘分区),parted(擅长给大于2T的磁盘分区,可以对小于2T的磁盘分区),首选fdisk,只有大于2T时才去选parted
补:(一台服务器6块600G的磁盘,raid5后,总大小3T,此时无法装系统的,解决办法是做raid5后,不要重启装系统,而是再raid界面,继续分1个小的虚拟磁盘vd 200G,用这个200G的虚拟磁盘装系统,装完系统后再把剩余的2.8T分区通过parted)
3)一块磁盘的分区表仅有64个bytes大小,每个分区表要占用16个字节,因此一块磁盘仅支持四个分区表信息,即主分区+扩展分区的总量不超过4个
4)磁盘分区是按照柱面(cylinder)来划分的(从磁盘读写原理角度可以理解)
5)扩展分区不能直接使用的,还需要在扩展分区的基础上创建逻辑分区才行
6)扩展分区有自己的分区表,因此,扩展分区下面的逻辑分区可以有多个
磁盘在使用前一般需要进行分区,当然如果不分区直接格式化使用也是没问题的,但这不是常见情况。磁盘分区有主分区、扩展分区和逻辑分区之分。一块磁盘最多可以有4个分区表信息(磁盘本身限制),在这个扩展分区内可以划分多个逻辑分区(IDE磁盘逻辑分区大概编号可以是5-63;SATA编号5-15)
磁盘分区实战fdisk命令
dd convert and copy a file
1、fdisk 磁盘分区工具(<2T),-l 列表
2、linux下最常用的分区工具,一般是装完系统后进行分区。装系统之前的分区,多数都是系统ISO里面的工具分,或者raid里分小磁盘
3、fdisk只能root权限用户使用
4、fdisk适合于对装系统后的剩余空间进行分区,例如:安装系统时没有全部分区,或者安装系统后添加硬盘
问题:不能对大于2T的文件系统分区
fdisk分区的实质
用fdisk分区的实质,就是修改0磁头0磁道1扇区的前446字节之后的64字节的分区表信息
可以使用fdisk分区的磁盘大小必须小于2T,如果大于2T呢,分区就用parted(gpt)
5、fdisk [ -l ] [ 设备名称 ]
参数 -l:输出后面设备的所有分区的内容,若后面不接设备名称则会列出系统能够找到的所有分区的均列出
传统的MBR(Master Boot Record)分区方式,有一个局限:
无法支持超过2TB的硬盘的分区(或单个分区超过2TB)
如果大于2T就用GPT分区的概念
GPT的分区表很好解决了传统MBR无法逾越2TB的限制
但是在linux系统中,传统的fdisk命令无法支持gpt分区方式
parted分区
parted的操作都是实时的,也就是说你执行了一个分区的命令,他就实实在在地分区了,而不是像fdisk那样,需要执行w命令写入所做的修改,所以进行parted的测试千万注意不能在生产环境中
简述:parted是一个磁盘分区管理工具,它比fdisk更加灵活,功能也更丰富,同时还支持GUID分区表
实验100M盘
非交互式
parted /dev/sdb mklabel gpt Yes
parted /dev/sdb mkpart primary 0 10 Ignore
parted /dev/sdb mkpart primary linux-swap 11 21 Ignore
parted /dev/sdb mkpart logical ext4 22 32 Ignore
parted /dev/sdb p (快速分区)
了解
fdisk非交互式分区:
方法1:
parted /dev/sdb mklabel bsd yes #将硬盘分区表由gpt格式转换为bsd格式(即MBR)
vi fdisk.txt #编辑分区文件
fdisk /dev/sdb <fdisk.txt #执行分区
ll /dev/sdb* #检查分区是否成功
mkfs.ext4 /dev/sdb1 #格式化分区
mount /dev/sdb1 /mnt #挂载分区
df -h |grep /dev/sdb1
fdisk.txt文件内容:
n #新建一个分区
p #primary分区
1 #分区编号
#起始扇区(可以不写)
+100M #结束扇区(可以直接写大小)
p #打印分区表
w #保存修改并退出
方法2:echo -e "n\np\n\n+10M\nn\np\n2\n\n+10M\nw" | fdisk /dev/sdb
swap分区知识
1、使用物理分区构建swap
fdisk /dev/sdb #分成一个区/dev/sdb1
mkswap /dev/sdb1
free
swapon /dev/sdb1
free
2、使用文件构建swap
dd if=/dev/zero of=/tmp/swap bs=1M count=128
ls -l -h /tmp/swap
mkswap /tmp/swap
free
swapon -s
swapoff /tmp/swap
swapoff /dev/sdb1
企业案例场景:
swap在工作中,特别是java环境,程序写的有问题,会发生内存泄漏,可能会被占用。
让开发改程序,临时运维加大swap。swapoff,swapon