Linux 磁盘分区详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 磁盘分区详解相关的知识,希望对你有一定的参考价值。
参考技术A 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):
20磁盘管理—linux磁盘管理详解(分区)
linux磁盘管理
添加磁盘步骤:
fdisk 管理磁盘分区
格式化文件系统。
设备挂载
开机自动挂载
UUID挂载
取消挂载点
Parted(gpt大于2G分区)
查看文件系统的使用情况。
df 查看挂载信息与磁盘使用量
du 查看使用量
查看分区状况lsblk
查看设备信息blkid
linux磁盘管理
当全新安装了一块新的硬盘设备后,为了更充分、安全的利用硬盘空间首先要进行磁盘的分区,然后格式化,最后挂载使用。
添加磁盘步骤:
添加设备->分区->格式化(创建文件系统)-> [起名]->修改配置文件->创建一个挂载点->挂载
fdisk 管理磁盘分区
fdisk命令用于管理磁盘分区,格式为:
“fdisk [磁盘名称]”
。
管理某硬盘的分区:“fdisk /dev/sda”
常用参数 作用 m
查看全部可用的参数 n
添加新的分区 d
删除某个分区信息 l
列出所有可用的分区类型 t
改变某个分区的类型 p
查看分区表信息 w
保存并退出 q
不保存直接退出
使用fdisk命令对sdb硬盘进行分区:
[[email protected] ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x7516baf3.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won‘t be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
switch off the mode (command ‘c‘) and change display units to
sectors (command ‘u‘).
Command (m for help):
敲击字符p
查看分区表信息(当前为空):
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7516baf3
Device Boot Start End Blocks Id System
敲击字符n
创建新的分区信息:
Command (m for help): n
敲击字符p
,这个p
代表是主分区,e
为扩展分区:
Command action
e extended
p primary partition (1-4)
p
敲击数字1
代表分区编号为1
:
Partition number (1-4): 1
磁盘的起始扇区,直接回车即可:
First cylinder (1-2610, default 1):
键入+2G
,代表该分区的大小为2G
:
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G
再看下分区表信息(增加了sdb1分区信息):
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7516baf3
Device Boot Start End Blocks Id System
/dev/sdb1 1 262 2104483+ 83 Linux
敲击字符w
,将上述分区信息保存:
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[[email protected] ~]#
让内核同步分区信息(此步骤仅在没有找到分区设备的情况下才需要执行,非必要动作。):
[root@localhost ~]# partprobe
格式化文件系统。
在Linux系统中用于格式化的命令是mkfs,它支持的文件类型有:
cramfs,ext2,ext3,ext4,fat,msdos,xfs,btrfs,minix,vfat
使用方法非常的简单:"mkfs.文件类型名称"
,例如要格式分区为ext4,则命令为"mkfs.ext4 硬盘分区名称"
。
使用mkfs.ext4来对/dev/sdb1进行格式化:
[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131648 inodes, 526120 blocks
26306 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=541065216
17 block groups
32768 blocks per group, 32768 fragments per group
7744 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
设备挂载
将硬盘设备挂载到/web目录。
[root@localhost ~]# mkdir /web
[root@localhost ~]# mount /dev/sdb1 /web/
开机自动挂载
设置系统启动后自动挂载该硬盘设备
[[email protected] ~]# vim /etc/fstab
/dev/sdb1 /web ext4 defaults 0 0
要挂载的分区 挂载点 文件系统类型 挂载选项 是否备份 是否检测
最后两个0
第一个0:fs_dump 是否要使用dump命令进行备份. 0为不备份,1为要备份 。
第二个0:fs_pass – 该字段被fsck命令用来决定在启动时是否需要被扫描的文件系统的顺序,根文件系统/对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动 时扫描则设置该字段为0
UUID挂载
UID是一个标识你系统中的存储设备的字符串,其目的是帮助使用者唯一的确定系统中的所有存储设备,不管它们是什么类型的。它可以标识DVD驱动器,USB存储设备以及你系统中的硬盘设备等。
取消挂载点
umount命令用于撤销已经挂载的设备文件,格式为:“umount [挂载点/设备文件]”
。
取消对/dev/sdb1设备文件的挂载:
[root@localhost ~]# umount /dev/sdb1
特点:
它是真正的唯一标志符
Linux中的许多关键功能现在开始依赖于UUID
查找UUID
可以通过 blkid 命令获取各分区的UUID
[email protected] ~]# blkid | grep sdb1
/dev/sdb1: LABEL="cc" UUID="11e9fc80-cd17-46fa-b0ff-0e5bdc2fd133" TYPE="ext4"
[[email protected] ~]# tune2fs -l /dev/sdb1 | grep UUID
Filesystem UUID: 11e9fc80-cd17-46fa-b0ff-0e5bdc2fd133
Parted(gpt大于2G分区)
通常我们用的比较多的一般都是fdisk工具来进行分区,但是现在由于磁盘越来越廉价,而且磁盘空间越来越大;而fdisk工具他对分区是有大小限制的,它只能划分小于2T的磁盘。但是现在的磁盘空间很多都已经是远远大于2T了,甚至达到2.5T和3T,那要怎么办能,有两个方法,其一是通过卷管理来实现,其二就是通过我们今天谈到的Parted工具来实现对GPT磁盘进行分区操作。
然后格式化,挂载使用
查看文件系统的使用情况。
df 查看挂载信息与磁盘使用量
df命令用于查看挂载点信息与磁盘使用量,格式为:“df [选项] [文件]”
。
查看挂载信息与硬盘使用量:“df -h”
参数作用 -a
显示出所有的文件系统(包括虚拟的) --total
展出出总体使用量 -h
更易读的容量格式如1K,234M,2G… -i
展示出Inode的信息(默认是磁盘使用信息) -T
显示出文件系统的类型
查看到所有已挂载的挂载信息与硬盘使用情况:
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-root 20G 333M 19G 2% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 34M 147M 19% /boot
/dev/mapper/vg0-usr 9.8G 1.9G 7.4G 21% /usr
/dev/mapper/vg0-var 20G 113M 19G 1% /var
/dev/sdb1 2.0G 3.1M 1.9G 1% /web
du 查看使用量
du命令用于查看磁盘的使用量,格式为:“ du [选项] [文件]”
。
查看根目录的总占用空间:
du -sh /
查看当前目录下各文件所占空间:du -sh *
参数 作用 -a
评估每个文件而非目录整体占用量。 -c
评估每个文件并计算出总占用量总和。 -h
更易读的容量格式如1K,234M,2G… -s
仅显示占用量总和。
查看到该挂载目录的占用硬盘量:
[root@localhost ~]# du -sh /web/
20K /web/
查看分区状况lsblk
[[email protected] ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 200M 0 part /boot
└─sda2 8:2 0 60G 0 part
├─vg0-root (dm-0) 253:0 0 20G 0 lvm /
├─vg0-swap (dm-1) 253:1 0 2G 0 lvm [SWAP]
├─vg0-usr (dm-2) 253:2 0 10G 0 lvm /usr
└─vg0-var (dm-3) 253:3 0 20G 0 lvm /var
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 1.9G 0 part
└─sdb2 8:18 0 1.9G 0 part
查看设备信息blkid
[[email protected] ~]# blkid
/dev/sda1: UUID="a4acde25-491e-425e-9a3c-3ccc995ee4c4" TYPE="ext4"
/dev/sda2: UUID="qivYdT-3t0K-JdU2-1afU-lZGG-NvNt-22lYE1" TYPE="LVM2_member"
/dev/mapper/vg0-root: UUID="e5ea11e5-157f-42b2-aba1-d92ff6002af3" TYPE="ext4"
/dev/mapper/vg0-swap: UUID="c30b0464-2b30-45ca-ac65-79baa79af17b" TYPE="swap"
/dev/mapper/vg0-usr: UUID="16ebdfae-1ddd-4841-9415-ea105add7857" TYPE="ext4"
/dev/mapper/vg0-var: UUID="6d6cc476-2c4f-40a9-9e8b-b9c1f90c6fe4" TYPE="ext4"
本文出自 “家住海边喜欢浪” 博客,请务必保留此出处http://zhang789.blog.51cto.com/11045979/1847232
以上是关于Linux 磁盘分区详解的主要内容,如果未能解决你的问题,请参考以下文章