1、磁盘分区
(1)易于管理和使用:
比如说我们把磁盘分了sda1、sda2、sda3、sda4盘,我们假设sda1盘为系统盘,其他的比如说游戏、办公、软件盘,这样我们要重新分哪个区就直接在对应的盘分就可以了,不需要整块磁盘进行分区。根据用途我们也能较快的去使用相应的磁盘。
(2)有利于数据的安全:
通过分区可以降低数据损失的风险。出现硬盘坏道、错误操作、重装系统都有可能造成数据损失,如果分区了,那么我们就可以将损失最小化。
(3)节约寻找文件的时间:
这个我觉得跟第一条比较像,但是这里所说的寻找文件的时间,是指电脑搜索文件的时间。分区以后,电脑搜索文件时只需要在相对应的分区搜索就可以了,没必要进行全盘搜索。大大节省了寻找文件的时间。
一个扇区是512字节,其中有64个字节存储的是分区表,一条分区信息占16个字节,因此磁盘最多只能分四个分区,要想有多个分区怎么办?这时候就有了扩展分区。
扩展分区可以被继续划分为多个逻辑分区,逻辑分区是可以进行格式化的。扩展分区把逻辑分区的分区信息在扩展分区中找了一个位置给存起来。假如说p4扩展分区划分了三个逻辑分区那么第1个逻辑分区命名为sda5、第2个为sda6、第3个sda7,以此类推。一个磁盘被分为四个分区,第四个分区被设置为扩展分区,第一个逻辑分区为sda5。但是当整个磁盘被分为3个分区的时候,我们把扩展分区划分的第1个逻辑分区依然命名为sda5,而不是其它的。总结一下,就是不论磁盘有几个主分区,第一个逻辑分区一定是从sda5开始。
Linux系统有一个理念:“一切皆文件”,所以计算机的硬件在linux中也是以“文件”的形式存在于/dev目录中。
比如,光驱对应的文件是/dev/cdrom,CPU对应的文件是/dev/cpu。而硬盘对应的是/dev/sd*。第一块硬盘是/dev/sda,第二块磁盘是/dev/sdb。
但是一个磁盘通常又被分成多个分区,所以在磁盘文件的后面加上分区的序号来对应这个分区。参考下面的表格中的例子
输入命令#fdisk /dev/sdb
输入p 查看当前硬盘分区,目前没有分区。
新建分区
修改分区类型
注意:sdb1:存放的是与系统相关的文件
sdb2:虚拟内存交换分区
start、end表示分区开始的扇区位置和结束的扇区位置。
blocks:表示块的信息,一个块里面有多个扇区。
Id:表示磁盘类型编号
system:表示Linux系统分区的一个分区信息。
此时不要着急,我们一定要记住要保存,在命令行输入w保存分区信息。我们通过w保存并退出后,使用fdisk -l 可以查看到磁盘的分区信息。
但是当你在格式化的时候,有可能找不到这个分区。这是因为Linux没有把分区信息读到内核来,我们需要输入partprobe这个命令,来使我们内核重读一下我们的分区信息。
命令:mke2fs mke2fs [选项] 文件系统 磁盘盘符=
注释:
1、磁盘虽然分好区了,但是还不能用,还需要在这每一个分区上格式化,所谓格式化,其实就是安装文件系统,Windows下的文件系统有Fat32、NTFS,CentOS使用的文件系统为ext,之前centOS5版本使用ext3作为默认的文件系统,而CentOS6使用ext4作为默认的文件系统;
2、当用man查询这四个命令的帮助文档时,你会发现我们看到了同一个帮助文档,这说明四个命令是一样的;
3、指定文件系统格式为ext4,该命令等同于mkfs ext4 /dev/sdb5,以后我们遇到余姚格式磁盘分区的时候,直接指定格式化为ext4即可,也可以根据操作系统的版本来决定格式化什么格式;
选项:
-b:分区时设定每个数据块占用空间大小,目前支持1024、2048以及4096 bytes每个块;
-i:设定inode的大小;
-N:设定inode数量,有时使用默认的inode数不够用,所以要自定设定inode数量;
-c:在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢;
-L:预设该分区的标签label;
-j:建立ext3格式的分区,如果使用mkfs.ext3就不用加这个选项了;
-t:用来指定什么类型的文件系统,可以是ext2、ext3也可以是ext4;
-m:格式化时,指定预留给管理员的磁盘比例,是一个百分比,只针对mke2fs命令;
例如:mke2fs -t ext4 -b 4096 /dev/sdb5
注意:其中一个指标是“块的大小=4096”这里涉及到一个“块”的概念,磁盘在被格式化的时候会预先规定好每一个块的大小,然后再把所有的空间分割成一个一个的小块,存数据的时候也是一个快一个快的去写入,所以如果你的磁盘存的都是特别小特别小的文件,比如说1k或者2k,那么建议在格式化磁盘的时候指定块数值小一点,ext文件系统默认块的大小为4096,也就是4k,在格式化的时候,可以指定块大小为1024、2048或者4096(它们是成倍增加的),虽然格式化的时候可以指定块大小超过4096,但是一旦超过4096则不能正常挂载;
指定块的大小: mke2fs -t ext4 -b 8192 /dev/sdb5
注意:可以使用-L来指定标签,标签会在挂载磁盘的时候使用,另外也可以写到配置文件里,关于格式化的这一部分,我建议除非有需求,否则不需要指定块的大小,也就是说,你只需要记住这两个选项:-t和-L即可。
更多关于Linux磁盘格式化的基础分享:
基本功,格式化命令,以格式化 /dev/sda1 分区为例:
$ sudo umount /dev/sda1
$ sudo mkfs.vfat -F 32 /dev/sda1 # -F 参数必须大写,参数有 12,16 和 32,分别对应 FAT12,FAT16,FAT32。
$ sudo apt-get install ntfsprogs
#然后执行格式化命令,以格式化 /dev/sda1 分区为例:
$ sudo umount /dev/sda1 # 必须先卸载该分区
$ sudo mkfs.ntfs /dev/sda1 # 格式化为ntfs速度有点慢。
$ sudo umount /dev/sda1 # 必须先卸载该分区
$ sudo mkfs.ext4 /dev/sda1 # 格式化为ext4分区
$ sudo mkfs.ext3 /dev/sda1 # 格式化为ext3分区
$ sudo mkfs.ext2 /dev/sda1 # 格式化为ext2分区
由于ext系列的分区都有一个给super user的保留空间,必须占用一定的百分比,默认5%,这么一来格式化容量小的分区还不觉得,5%也没多少,但是如果是几百G,1T的分区就会有问题,in this case,5%可是不小的数目啊!
『解决方法』
一、针对将要格式化的分区,以ext3为例:
$ sudo umount /dev/sda1 # 必须先卸载该分区,这里要格式化的是 /dev/sda1 分区。
$ sudo mkfs.ext3 -m 0.05 /dev/sda1 # 注意-m后的参数,设定的已经是百分位,这里设定为0.05,是0.05%,也就是万分之5!
好了,这样以1T的分区为例,1T=1024GB=1048576MB(都是乘以1024的关系),1048576MB*0.0005=524.288MB。
也就是说设定-m参数之后,保留区大概是524MB。当然你可以根据自己喜好设定。
二、对已经格式化完毕的分区,并且不想擦出分区中的数据,可以使用tune2fs -m的方法:
$ sudo tune2fs -m 0.05 /dev/sda2 # 这个例子是转换 /dev/sda2 分区的super user保留区,同样设定为0.05,在提醒一次,是0.05%,也就是万分之5。
提示:使用df -h命令可以查看当前系统中已经挂载的分区
1
mount -t /dev/sdb1 /mnt/sdb1
卸载分区umount命令格式:
1
umount [option] special | node
使用umount卸载分区时,可以指定挂载点,也可以指定挂载的路径
比如本例要卸载sdb1分区的挂载,则使用
1
umount /dev/sdb1或者umount /mnt/sdb1
ps:使用umount卸载时,如果是指定的设备路径,则umount会按照按照挂载顺序去卸载分区最后被挂载的挂载点。
linux系统在启动时,会从/etc/fstab文件自动挂载分区。
图中是一个fstab文件的示例。
fstab中,每条配置信息都分为固定的6个部分
[1]:分区路径,或者UUID
[2]:fs_file - 该字段描述希望的文件系统加载的目录点,对于swap设备,该字段为none;对于加载目录名包含空格的情况,用40来表示空格。
[3]:fs_type - 定义了该设备上的文件系统,一般常见的文件类型为ext4 (Linux设备的常用文件类型)、vfat(Windows系统的fat32格式)、NTFS、isoArray600等。在不确定的情况下可以使用auto。
[4]:fs_options - 指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。
对于大多数系统使用"defaults"就可以满足需要。不多说。
[5]:fs_dump - 该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设
置该字段为0
[6]:fs_pass - 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字
段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0
本例,在fstab文件中添加sdb1分区自动挂载的配置如下:
1 /dev/sdb1 /mnt/sdb1 ext4 defaults 0 2
ps:其它账户(如orac、mysql)在使用这个新的分区时,可能会遇到权限不足的问题,使用以下命令解决
1 chmod 777 /mnt/sdb1