Linux之磁盘管理
Posted 锦衣admin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux之磁盘管理相关的知识,希望对你有一定的参考价值。
Linux之磁盘管理
理论储备
硬盘的基本知识
硬盘:用于存储数据的存储介质,硬盘也叫磁盘
硬盘接口:硬盘接口是硬盘与主机系统间的连接部件,作用是在硬盘缓存和主机内存之间传输数据,不同的硬盘接口决定硬盘与计算机之间的连接速度,在整个系统中,硬盘接口的优劣直接影响着程序运行快慢和系统性能好坏。
pc机和服务器硬盘接口区别:
-
个人pc机:IDE接口 ——> SATA I/II/III (接口版本越高,读写速率越快)
-
服务器上:SCSI接口 ——> SAS接口 (SAS是新一代的SCSI技术,可兼容SATA硬盘)
硬盘命名方式:
/dev/sd*
:物理硬盘安装在服务器上的命名方式/dev/vd*
:云计算中的硬盘命名方式,因为使用了红帽公司的kvm技术
OS | IDE(并口) | SATA(串口) | SCSI |
---|---|---|---|
RHEL5 | /dev/hda | /dev/sda | /dev/sda |
RHEL6 | /dev/sda | /dev/sda | /dev/sda |
RHEL7 | /dev/sda | /dev/sda | /dev/sda |
磁盘设备的命名:
-
如果是本机的第一块硬盘,硬盘命名:/dev/sda 或 /dev/vda
-
如果是本机的第二块硬盘,硬盘命名:/dev/sdb或/dev/vdb
如:/dev/sda2
s=硬件接口类型(sata/scsi),d=disk(硬盘),a=第1块硬盘(b,第二块),2=第几个分区
-
/dev/hd
h=IDE硬盘 =>/dev/hdd3
: 表示IDE硬盘的第四块硬盘的第三个分区 -
/dev/vd
v=虚拟硬盘 =>/dev/vdf7
: 标识虚拟硬盘的第五块硬盘的第七个分区
HP服务器硬盘:
如:/dev/cciss/c0d0
-
/dev/cciss/c0d0p1
=> c0第一个控制器, d0第一块磁盘, p1分区1 -
/dev/cciss/c0d0p2
=> c0第一个控制器, d0第一块磁盘, p2分区2
硬盘的分区方式:MBR和GPT
为什么要对硬盘进行分区?
- 需要合理使用硬盘,用不同的分区储存不同的文件
硬盘寻址
基本分区管理
磁盘划分思路:
- 进入分区表 新建分区 fdisk /dev/sdb
- 更新分区表<刷新分区表>
- 格式化分区——>文件系统 mkfs.ext4 /dev/sdb1
- 挂载使用——>mount【开机自动挂载 | autofs自动挂载】
MBR分区方案
MBR分区特点:
-
只能对小于2TB的硬盘进行分区划分(
MBR
分区也叫DPT
分区也叫MSDOS
分区) -
最多划分4个主分区
分区方案:
-
4个主要分区
-
1个主要分区1个扩展分区,再划分逻辑分区
-
2个主要分区1个护展分区,再划分逻辑分区
-
3个主要分区1个扩展分区,再划分逻辑分区
-
1个扩展分区,再划分逻辑分区(操作系统只能安装在主分区上)
添加一块小于2TB硬盘
当添加一块硬盘后需要对硬盘进行分区(需要关机操作)
第一步:fdisk命令[新建分区]
- 对硬盘进行分区
- fdisk命令用于MBR分区方案
- 分区前需要确认硬盘是否存在数据
fdisk命令选项说明:
# lsblk => 查看系统设备挂载情况
# df -h => 查看系统已经挂载的设备情况
# fsidk [选项]
选项说明:
-l:查看当前系统的所有设备分区情况
如:fdisk -l /dec/sdb => 就是列出这个设备的分区情况
设备名称:如 fdisk /dev/sdb,就是对这个设备进行分区
# fdisk 设备名称
选项说明:
Command(m for help): m => 输出帮助信息
Commandaction
a toggle a bootable flag => 设置启动分区
b edit bsd disklabel => 编辑分区标签
c toggle the dos compatibility flag => 切换dos兼容性标志
d delete a partition => 删除一个分区
l list known partition types => 列出分区类型
m print this menu => 帮助
n add a new partition => 建立一个新的分区
o create a new empty DOS partition table => 创建一个新的空白DOS分区表
p print the partition table => 打印分区表
q quit without saving changes => 退出不保存设置
s createa new empty Sun disklabel => 创建一个新的空的SUN标示
t changea partition's system id => 改变分区的类型
u changedisplay/entry units => 改变显示的单位
v verifythe partition table => 检查验证分区表
w write table to disk and exit => 保存分区表
x extra functionality (experts only)
fdisk -l 命令详解:
# fdisk -l
[root@lamp ~]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors => /dev/sda 目录下分区情况
Units = sectors of 1 * 512 = 512 bytes => 单元
Sector size (logical/physical): 512 bytes / 512 bytes => 扇区大小(逻辑/物理) 都是512字节
I/O size (minimum/optimal): 512 bytes / 512 bytes => I/O 大小(最小/最大) 都是512字节
Disk label type: dos => 磁盘标签类型:dos,即分区类型为MSDOS(MBR)分区
Disk identifier: 0x000a316c => 设备识别码
#L 启动设备加* 起始 结束 块 id 系统
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-root: 18.2 GB, 18249416704 bytes, 35643392 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
备注:CentOS 6 中可能还会有:下面一列选项
255 heads, 63 sectors/track, 3263 cylinders
255磁头 63个扇区 每 磁道 3263个圆柱体
对新加硬盘/dev/sdb
创建分区:
# fdisk /dev/sdb => 使用fdisk 设备名称创建分区
[root@lamp ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x5583886d.
Command (m for help): n => "n:代表新建分区"
Partition type:
p primary (0 primary, 0 extended, 4 free) => "p:为新建主分区,编号只能分1-4主分区"
e extended => "e:为新建扩展分区"
Select (default p): 1 => "1:代表新建主分区的编号为1"
First sector (2048-20971519, default 2048): => "直接回车,默认选择启始扇区,系统会自己创建"
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +2G => "+2G:代表创建的1号主分区为2G大小"
Partition 1 of type Linux and of size 2 GiB is set
Command (m for help): p => "p:打印分区表"
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5583886d
#l 设备名称 启始扇区 结束扇区 块大小
Device Boot Start End Blocks Id System => "分区表信息,创建了编号1的主分区"
/dev/sdb1 2048 4196351 2097152 83 Linux
后面以此类推....
#l 删除分区
Command (m for help): d => "d:代表删除分区"
Partition number (1-4, default 4): 1 => "1:代表删除分区的编号,可选选项1-4,因为我创建了4个分区"
Partition 1 is deleted
现在已经删除了1号分区
#l 创建扩展分区
Command (m for help): n => "n:代表新建分区"
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e => "创建扩展分区,因为创建了三个主分区,现在扩展分区改为了扩展分区。但是也可以继续创建主分区"
Using default response e
Selected partition 4 => "现在只剩编号4了所以默认"
First sector (10487810-20971519, default 10489856):
Using default value 10489856
Last sector, +sectors or +size{K,M,G} (10489856-20971519, default 20971519): => "注意:现在默认回车就是把剩下的容量全部给扩展分区,当然也可以自己给,但是会造成硬盘使用不充分浪费了为分配的容量"
Using default value 20971519
Partition 4 of type Extended and of size 5 GiB is set
Command (m for help): p => "p:打印分区表"
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5583886d
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 10487807 3145728 83 Linux
/dev/sdb3 10487808 10487809 1 83 Linux
/dev/sdb4 10489856 20971519 5240832 5 Extended => 扩展分区
#l 在扩展分区下创建逻辑分区,注意:逻辑分区的容量大小是从扩展分区获取的,所有逻辑分区的总大小不超过扩展分区总大小
Command (m for help): n => "n:新建分区"
Partition type:
p primary (2 primary, 1 extended, 1 free) => "p:代表创建扩展分区还是主分区"
l logical (numbered from 5) => "l:代表创建逻辑分区"
Select (default p): l => "l:代表创建扩展分区"
Adding logical partition 5
First sector (10491904-20971519, default 10491904): => "直接回车,启始扇区选项让系统默认创建"
Using default value 10491904
Last sector, +sectors or +size{K,M,G} (10491904-20971519, default 20971519): +1G => "+1G:代表创建逻辑分区大小为1G"
Partition 5 of type Linux and of size 1 GiB is set
Command (m for help): p => "p:打印分区表"
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5583886d
Device Boot Start End Blocks Id System
/dev/sdb2 4196352 10487807 3145728 83 Linux
/dev/sdb3 10487808 10487809 1 83 Linux => "这个是在+1G选项时,我写的+1造成的"
/dev/sdb4 10489856 20971519 5240832 5 Extended
/dev/sdb5 10491904 12589055 1048576 83 Linux => "创建的逻辑分区编号是从5开始的,删除这个逻辑分区时,直接d => 5"
#l 最后最后,
Command (m for help): w => "w:保存退去"
Command (m for help): q => "1:不保存退出"
fdisk分区注意:
-
最多只能创建4个主分区,扩展分区编号(1-4),逻辑分区编号从5开始
-
删除分区时建议从后面的编号开始删除,假设你跳着删除了2号分区,然后重新创建2号分区,那么新创建2号分区的大小只能是你之前删除的2号分区大小 。因为1号和3号分区截断了硬盘中扇区(柱面)的划分
-
逻辑分区总大小不能超过扩展分区,因为其是从扩展分区中取得容量,且逻辑分区是不能挂载使用的。
-
扩删除展分区就是删除这个扩展分区下所有逻辑分区
-
不创建主分区,直接创建一个扩展分区也是可以的,如果扩展分区占满了硬盘容量那么就无法再创建主分区,也就是说这个硬盘只有一个扩展分区
-
当删除分区时,需要将分区数据进行备份,否则数据丢失。
-
如果分区删除后,数据没有进行备份,需要特殊技术才能恢复数据,注意:这时硬盘不能写入数据否则数据无法恢复
第二步:parts命令[刷新分区]
-
当分区文件没有被内核识别出来,需要使用命令进行探测
-
告诉内核去识别、登记某个硬盘上的分区信息。并不是加载,只是识别并记录而已
# partx [选项] 设备名称
选项说明:
-a:登记某块盘上的所有分区信息,如果某个分区信息已有记录,就会报错:
-d: 删除内核中关于某磁盘上的所有分区的记录(不是卸载)
-d --nr m-n 删除从第m--n分区的记录,如果已经挂载,则无法删除,并报错:
如果都删除了,使用-a选项来重新登记,不会有报错。
#l fdisk分区完后,让内核识别分区信息
# partx -a /dev/sdb => 让内核识别分区信息,如果内核已经识别到会报错(报错无关紧要)
partx: /dev/sdb: error adding partitions 1-6
或者使用"partprobe"命令刷新分区:
# partprobe /dev/sdb
使用ls /dev/sdb*命令查看分区信息:
# ls /dev/sdb* => 当出现以下内容时证明该硬盘的分区可以格式化
[root@node3 ~]# ls /dev/sdb*
/dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5 /dev/sdb6
刷新分区注意事项:
- 分区完后需要手动刷新分区表,如果刷新不成功,有可能是设备正在挂载,解挂后再刷新,还不成功就重启系统
第三步:mkfs命令[分区格式化]
需要给分区设置文件系统类型
格式化定义:按照一定的文件系统,对硬盘分区进行存储数据
-
Linux常见文件系统:ext3、ext4、xfs
-
vfat文件系统为Windows中的fat32文件系统
ext与xfs文件系统比较与总结
ext2-4 文件系统
fat 文件系统
Minix文件系统
#l 查看当前系统支持哪些文件系统命令
# mkfs. => 按两次tab键
[root@lamp ~]# mkfs.
mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.fat mkfs.minix mkfs.msdos mkfs.vfat mkfs.xfs
对分区进行格式化:
各分区格式化命令:
# mkfs.[文件系统] 设备目录
或
# mkfs -t [文件系统] 设备目录
#l 查看系统设备情况
[root@node3 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part
├─sdb2 8:18 0 3G 0 part
├─sdb3 8:19 0 1K 0 part
├─sdb5 8:21 0 3G 0 part
└─sdb6 8:22 0 12G 0 part
sr0 11:0 1 1024M 0 rom
给"/dev/sdb1"分区格式化为xfs文件系统:
# mkfs.xfs /dev/sdb1 => 对/dev/sdb1分区进行格式化,且分区文件系统为xfs
给"/dev/sdb2"分区格式化为ext4文件系统:
# mkfs.ext4 /dev/sdb2 => 对/dev/sdb2分区进行格式化,且分区文件系统为ext4
第四步:mount命令[挂载已格式化分区设备]
手动挂载:系统重启后需要重新挂载,手动卸载后需要手动挂载
# mount [选项 选项的值] 需要挂载的设备 挂载目录
选项说明:
-o:挂载选项,以什么方式挂载
ro:只读
rw:读写
sync:同步
remount:重新挂载(挂载一个正在挂载设备),当前设备已经被挂载时使用
挂载:
# mkdir /mnt/sdb1 => 创建挂载目录,注意:设备分区不能挂载在同一目录下
# mount -0 rw,sync /dev/sdb1 /mnt/sdb1
=> 使用读写和同步的方式挂载/dev/sdb1分区
# mkdir /mnt/sdb2 => 创建挂载目录,注意:设备分区不能挂载在同一目录下
# mount -0 rw,sync /dev/sdb2 /mnt/sdb2
=> 使用读写和同步的方式挂载/dev/sdb2分区
查看挂载情况:
# df -h
[root@node3 rc.d]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 6.1G 11G 36% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 24K 182M 1% /run/user/1000
tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 2.0G 33M 2.0G 2% 以上是关于Linux之磁盘管理的主要内容,如果未能解决你的问题,请参考以下文章