① linux 磁盘分区详解
Linux 系统中所有的硬件设备都是用文件的形式来表示和使用的,也就是说,如果你想使用某个硬件设备首先你就需要将其挂载到某个目录下面,通过对这个目录的操作来操作设备;如果不挂载,通过Linux系统中的图形界面系统可以查看找到硬件设备,但命令行方式无法找到。
并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录
磁盘也是一样的,磁盘的文件是存放在 /dev 目录下,磁盘设备文件的命名规则为:
常见的主设备号有:sd,hd;它们是代表的不同的磁盘类型: sd 代表的 IDE 硬盘, hd 代表的是 SCSI 硬盘
次设备号就是同一类型设备的次序,用 [a-z] 来表示, /dev/sda 表示第一块 IDE 类型的磁盘, /dev/sdb 表示第二块 IDE 类型的磁盘
磁盘分区编号,每一块磁盘都会被划分为多个磁盘分区(这个下面会介绍),每一个分区都会有一个编号,比如: /dev/sda1 表示这是该磁盘的第一个分区,以此类推
在 Linux 中,每一个硬盘设备都只能划分四个主分区;若是划分了一个扩展分区那最多可以划分三个主分区;可以表示为:
主分区加扩展分区最多只有四个;可以全部划分为主分区,也可以之划分一个主分区;但是扩展分区最多只有一个;扩展分区是不能直接使用的,还有进一步划分为逻辑分区才能使用;一个扩展分区可以划分为多个逻辑分区;
主分区的分区编号是:1,2,3,4;从扩展分区划分出来的逻辑分区的编号是从 5 开始,以次累加
这跟系统启动有关系;当你启动电脑时,首先就会加载 BIOS 信息,这里面包含了 Cpu 和其他硬件设备的信息;找到它计算机就知道怎么启动了
接下来,它会去找 MBR(Master Boot Record) ,也就是主引导记录;为了方便 BIOS 的查找,所以就会把它放在磁盘上第0磁道上的第一个扇区中,磁盘中每个扇区有 512 字节;虽然只有这么大一点,但是要存三部分信息:
磁盘分区表总共只有 64 字节,而每个分区信息占 16 个字节,所以就只能有四个主分区了
这应该是历史遗留的问题了,一开始只有四个分区,后来发现四个分区不够用,就引入了扩展分区,而扩展分区是不能直接使用的,它必须再划分为逻辑分区,逻辑分区的数量可以是任意多个。
对用户而言,主分区和逻辑分区使用起来没有任何的区别,同时还能够达到无限分区的目的
我想很多人都思考过这个问题,我再了解了之后才发现磁盘分区还是有很多的好处的。具体例子:
现在给你一个仓库,你打算存放快递,一开始你一股脑的把所有的快递直接放进去,等到别人来取快递的时候你就发愁了,几十甚至上百个快递得找到啥时候啊
所以你打算开始分区管理,因为你代理了中通,圆通,百世等好几个快递,所以你打算按照不同的快递分为三个货架;
过一段时间发现同一种快递如果量大的时候还是会混乱;因此你又想了个办法就是按照日期给快递编号,然后按照不同的日期将货架分为多层,每一层存放某一天的快递,同时你又找了个表记录了每个分区快递存放的位置,这大大增加了存取的效率
磁盘分区的目的,
Linux 常见目录:
一般要是新手,可以只建立两个分区:
这种分区方式比较简单,如果只是测试可以用这种;要是想当成一个常用的系统,就需要更细一点划分了,常用的分区方案如下(假如有磁盘有100G):
② Linux下的boot等分区,和主分区、扩展分区是什么关系
1.
boot分区是存放启动linux系统所必需的文件,包括内核文件,启动菜单配置文件,出于系统安全考虑,/boot目录通常被划分为单独的分区。
2.
硬盘分区主要可以划分为:主分区、扩展分区、逻辑分区,主分区最多有4个,扩展分区可以看成一个特殊的主分区类型,逻辑分区是在扩展分区之上建立的,主分区主要是用来安装操作系统,扩展分区则用来存储文件数据等
3.
如果想一些linux教程,推荐你去看一下《linux就该这么学》,教程介绍的很详细。
③ linux主分区和扩展分区的区别
区别在于是层级关系:
在linux中第一块硬盘分区为hda分区,
主分区编号为hda1-4,逻辑分区从5开始。
硬盘的容量=主分区的容量+扩展分区的容量
扩展分区的容量=各个逻辑分区的容量之和
主分区也可成为“引导分区”,
会被操作系统和主板认定为这个硬盘的第一个分区。
所以C盘永远都是排在所有磁盘分区的第一的位置上。
MBR(主引导记录)的分区表(主分区表)
只能存放4个分区,
如果要分更多的分区的话就要一个扩展分区表(EBR),
扩展分区表放在一个系统ID为0x05的主分区上,
这个主分区就是扩展分区,
扩展分区能可以分若干个分区,
每个分区都是个逻辑分区。
④ linux-存储结构与磁盘划分
Linux系统中的一切都是从根/目录开始的,并按照文件层次化标准(FHS)采用树形结构来存放文件,以及常见目录的用途。
Linux文件存储结构:
/
/root /bin /boot /dev /etc /home /var /lib /usr /media /tmp /proc
I I I
/root/Desktop /root/Media /usr/bin /usr/lib
/boot 开机所需文件-内核、开机菜单以及所需配置文件等
/dev 以文件形式存放任何设备与接口
/etc 配置文件
/home 用户家文件
/bin 存放单用户模式下还可以操作的命令
/lib 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
/sbin 开机过程中需要的命令
/media 用于挂载设备文件的目录
/opt 放置第三方的软件
/root 系统管理员的家目录
/srv 一些网络服务的数据文件目录
/tmp 任何人都可使用的共享临时目录
/proc 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
/usr/local 用户自行安装的软件
/var 主要存放日志等经常变化的文件
linux中SCSI\SATA\U盘的命名规则为/dev/sd[a-p]
硬盘设备是由大量的扇区组成的,每个扇区的容量为512字节。其中第一个扇区保存主引导记录与分区表信息(446字节),分区表64字节,结束字符2字节;其中分区表中每记录一个分区信息就需要占用16字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这四个分区就是主分区。为了解决分区数不够的问题就要将第一个扇区中的分区表中16字节(扩展分区)拿来指向另外一个分区
主分区或扩展分区的编号从1开始,到4结束
逻辑分区的编号从5开始
举个栗子:
主分区1 sda1 主分区2 sda2 主分区3 sda3 扩展分区
I
逻辑分区1 sda5 逻辑分区2 sda6
PS:/dev中sda之所以是a并不是由插槽决定的,而是由系统内核的识别顺序来决定的
PS2:可有手动指定分区的数字编号所以并不能以编号来判定硬盘位置是设备上的第几个
PS3:扩展分区其实并不是一个真正的分区,而更像是一个占用16个字节分区表空间的指针-----一个指向另外一个分区的指针
为什么一般看不见sda4?
通常硬盘分区的二种方式,4p,3p+e,也就是说可以分为4个主分区或者3个主分区加一个扩展分区如果使3p+e的话那么久不存在第4个主分区而是将第四个主分区的位置换为了扩展分区而扩展分区的第一个逻辑分区会被命名为sda5
⑤ linux如何扩展主分区
这里以Red hat AS4 为例。当磁盘分区发现不够用时,能想道的第一个做法就是增加分区大小。但是一般Linux如果没有采用逻辑卷管理,则动态增加分区大小很困难,一个能想道的办法就是,备份分区文件系统数据,删除分区,然后再重新创建分区,恢复备份的文件系统,这个做法比较玄,可能删除分区后导致系统无法启动。
第二个做法就是,创建一个新的逻辑分区(当然必须有未使用的磁盘空间能分配),将文件系统从老分区拷贝到新分区,然后修改fstab,使用新分区/文件系统替换老的分区/文件系统
第三种做法是,创建一个新的逻辑分区,将新的逻辑分区格式化ext3(或其他类型)的文件系统,mount到磁盘空间不够的文件系统,就跟原来的分区/文件系统一样的使用。
这里采用的是第三种方式:
sdb为第二个SCSI硬盘。
[root@hdp0 hadoop]# /sbin/fdisk /dev/sdb
The number of cylinders for this disk is set to 8942.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/sdb: 73.5 GB, 73557090304 bytes
255 heads, 63 sectors/track, 8942 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 130 1044193+ 83 Linux
/dev/sdb2 131 391 2096482+ 82 Linux swap
/dev/sdb3 392 521 1044225 83 Linux
/dev/sdb4 522 8942 67641682+ 5 Extended
/dev/sdb5 522 586 522081 83 Linux
/dev/sdb6 587 651 522081 83 Linux
/dev/sdb7 652 1173 4192933+ 83 Linux
可以看出sdb1,2,3为主分区,sdb4为扩展分区。后面的sdb5,6,7则为逻辑分区。柱面编号(Start,End)是连续的,sdb7只用道了1173,而从扩展分区看最大到8942,也就是说,还有7769个柱面是空闲的,一个柱面大小为8225280,约为8M大小。还剩7769*8225280bytes,约62G未使用。
新增加一个逻辑分区(注:若涉及到主分区和扩展分区,实际情况可能比这个复杂,这里4个主分区(包括扩展分区)都分过了,所以只能分逻辑分区)
Command (m for help): n
First cylinder (1174-8942, default 1174):
Using default value 1174
增加大小为10G
Last cylinder or +size or +sizeM or +sizeK (1174-8942, default 8942): +10240M
增加后看一下,多了一个逻辑分区/dev/sdb8
Command (m for help): p
Disk /dev/sdb: 73.5 GB, 73557090304 bytes
255 heads, 63 sectors/track, 8942 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 130 1044193+ 83 Linux
/dev/sdb2 131 391 2096482+ 82 Linux swap
/dev/sdb3 392 521 1044225 83 Linux
/dev/sdb4 522 8942 67641682+ 5 Extended
/dev/sdb5 522 586 522081 83 Linux
/dev/sdb6 587 651 522081 83 Linux
/dev/sdb7 652 1173 4192933+ 83 Linux
/dev/sdb8 1174 2419 10008463+ 83 Linux
可以看到,增加了一个sdb8的分区,柱面号从1174到2419.
写入分区表,执行分区操作
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
分区完后,是看不到文件系统的
[root@hdp0 hadoop]# df -m
Filesystem 1M-块 已用 可用 已用% 挂载点
/dev/sdb1 1004 582 372 62% /
none 1014 0 1014 0% /dev/shm
/dev/sdb3 1004 807 147 85% /home
/dev/sdb5 494 11 458 3% /opt
/dev/sdb7 4031 3272 554 86% /usr
/dev/sdb6 494 87 382 19% /var
重启机器
reboot
格式化文件系统
[root@hdp0 hadoop]#/sbin/mkfs.ext3 /dev/sdb8
mount文件系统,/home/develop 为/home下一目录
[root@hdp0 hadoop]#mount /dev/sdb8 /home/develop
查看文件系统,可以看到新建立的分区/文件系统已经挂载上,能够使用了。
[root@hdp0 hadoop]# df -m
Filesystem 1M-块 已用 可用 已用% 挂载点
/dev/sdb1 1004 582 372 62% /
none 1014 0 1014 0% /dev/shm
/dev/sdb3 1004 807 147 85% /home
/dev/sdb5 494 11 458 3% /opt
/dev/sdb7 4031 3272 554 86% /usr
/dev/sdb6 494 87 382 19% /var
/dev/sdb8 9621 54 9079 1% /home/develop
⑥ LINUX分区是什么
分区就是把一片空间分割成多块,文件系统就是分区(或者别的空间)里放的东西。
分区是将块设备按照其物理地址分成若干区域作为可独立管理的子设备,分区只是划分了块设备的地址空间,只是一种静态划分,分完就完了,没有更多作用了。
Linux系统分区方式
常见的两种分区表现形式
MBR分区表:最大支持2.1T磁盘,最多支持4个分区,支持32位和64位系统;
GPT分区表:全局唯一标示分区表,支持9.4ZB,理论上支持的分区数没有限制,只支持64位系统。
虽然GPT是一个较新的分区机制,解决了MBR很多缺点,但是目前使用最多的还是MBR分区方式。MBR最多有4个分区,分区类型有三种:
1、主分区
2、扩展分区
①最多有一个
②扩展分区+主分区数最多不超过4个
③不能写入数据,不能格式化,只能用来包含逻辑分区
3、逻辑分区
①包含在扩展分区内,可以有多个
②扩展分区至少要包含一个逻辑分区