linux磁盘管理
磁盘分区
磁盘分区类型和特点
DOS分区表: 只能用于小于2T的硬盘(常用)。也就是MBR分区
GPT分区表: 万能分区表(小于2T,大于2T都可以)。
MBR分区
- 主分区:
- 必须存在的分区
- 装系统(第一个主分区)
- 主分区数量不能超过4个
- 分区编号,只能是1-4
- 扩展分区
- 独立小磁盘,有独立分区表,不能直接放数据。
- 占用主分区编号(2-4),主分区+扩展分区最多4个
- 最多只能有1个。
- 要想存数据必须在其下划分逻辑分区。
- 逻辑分区
- 不能独立存在,必须在扩展分区之上。
- 编号最小是5,及以上。
- 用来存放数据。
GPT分区
- GPT分区没有扩展分区 ,他可以分128个主分区。
- 使用gdisk或parted工具
分区工具
fdisk(只能用于MBR类型)
fdisk 是 Linux 的磁盘分区表操作工具,只能用于MBR类型,支持创建、删除和修改分区。
用法
fdisk [-l] 名称
选项与参数:
-l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来
-lu:显示分区磁盘的详细内容,包括分区类型。
d delete a partition #删除分区
m print this menu #打印帮助
n add a new partition #添加新分区
p print the partition table #打印分区表
q quit without saving changes #退出不保存
w write table to disk and exit #保存并退出
fdisk 添加分区
fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x9068f0a6 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n ###添加新分区
Partition type:
p primary (0 primary, 0 extended, 4 free) #主分区
e extended #扩展分区
Select (default p): p ###选择主分区
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G ###设置大小为10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):w ###退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
分区以后通知内核分区表已经修改:
partprobe /dev/sdb
fdisk删除分区
fdisk /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 2DCCA8BC-D71C-4954-8BE9-FEAA1EB765EE
# Start End Size Type Name
1 2048 20973567 10G Linux filesyste Linux filesystem
2 20973568 25167871 2G Linux filesyste Linux filesystem
命令(输入 m 获取帮助):d #删除分区
分区号 (1,2,默认 2):2 #选择分区号为2
分区 2 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 2DCCA8BC-D71C-4954-8BE9-FEAA1EB765EE
# Start End Size Type Name
1 2048 20973567 10G Linux filesyste Linux filesystem
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
删除分区之后,通知内核分区表已经修改:
partprobe /dev/sdb
警告:删除分区时要小心,请看好分区的序号,如果您删除了扩展分区,扩展分区之下的逻
辑分区都会删除;所以操作时一定要小心;如果知道自己操作错了,请不要惊慌,用 q 不保
存退出;切记切记!!!!在分区操作错了之时,千万不要输入 w 保存退出!!!
gdisk
gdisk既可以用于MBR分区也可以用于GPT分区,支持创建、删除和修改分区
用法:
gdisk /dev/磁盘名
-n 创建一个新分区
-p 显示当前磁盘的分区表
-w 将更改写入并退出
-q 不保存退出
-d 删除分区
不常用的:
b 将GPT数据以文件格式备份
c 更改分区名
i 显示分区详细信息
l 列出分区类型
o 创建一个新的空白GPT分区表
p 显示当前磁盘的分区表
t 改变分区类型
v 验证磁盘分区表
x 专家模式
? 帮助
gdisk添加分区
gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************
Command (? for help): n #创建一个新分区
Partition number (2-128, default 2): #输入分区编号
First sector (34-41943006, default = 20973568) or {+-}size{KMGTP}: #输入扇区的开始位置,选择默认即可,也可手动指定。
Last sector (20973568-41943006, default = 41943006) or {+-}size{KMGTP}: +2G #输入扇区的结束位置,当然一般都是指定磁盘大小,这里输入+2G表示新分区大小为2G。
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ##指定文件系统,默认即可,分区完成后可以修改。
Changed type of partition to 'Linux filesystem'
Command (? for help): p #显示当前磁盘的分区表
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 2DCCA8BC-D71C-4954-8BE9-FEAA1EB765EE
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 16777149 sectors (8.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 20973567 10.0 GiB 8300 Linux filesystem
2 20973568 25167871 2.0 GiB 8300 Linux filesystem
Command (? for help): w #将更改写入并退出
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y #确认更改
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
添加分区之后,通知内核分区表已经修改:
partprobe /dev/sdb
gdisk删除分区
gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): d #删除分区
Partition number (1-2): 2 #选择分区2
Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 2DCCA8BC-D71C-4954-8BE9-FEAA1EB765EE
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 20971453 sectors (10.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 20973567 10.0 GiB 8300 Linux filesystem
Command (? for help): w #保存并退出
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdb.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.
删除分区之后,通知内核分区表已经修改:
partprobe /dev/sdb
parted
parted用于对磁盘(或RAID磁盘)进行分区及管理,与fdisk分区工具相比,支持2TB以上的磁盘分区,也可以划分普通的MBR分区。
用法
-h:显示帮助信息;
-i:交互式模式;
-s:脚本模式,不提示用户;
-v:显示版本号。
命令行模式查看指定分区:
parted /dev/sdb print
进入交互模式
parted
交互模式下获取帮助
help
获取指定命令帮助文档
help command
选择分区
select /dev/sdb
查看分区信息剩余磁盘空间
print free
删除一个分区
rm 1
print
创建一个分区
mkpart
将磁盘格式化为GPT磁盘
mklabel gpt
将磁盘格式化为MBR磁盘
mklabel msdos
gpt格式下创建一个分区
mkpart
退出交换模式
quit
parted添加分区
parted /dev/sdb
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name
1 1049kB 10.7GB 10.7GB ext4 Linux filesystem
(parted) mkpart
分区名称? []? sdb3
文件系统类型? [ext2]? ext3
起始点? 12G
结束点? 15G
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name
1 1049kB 10.7GB 10.7GB ext4 Linux filesystem
2 12.0GB 15.0GB 3000MB sdb3
(parted) q
信息: You may need to update /etc/fstab.
删除分区
parted /dev/sda
GNU Parted 3.1
使用 /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/sdb
使用 /dev/sdb
(parted) rm 2
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name
1 1049kB 10.7GB 10.7GB ext4 Linux filesystem
(parted) q
信息: You may need to update /etc/fstab.
swap虚拟分区
什么是swap虚拟分区
swap是一个虚拟的内存空间,作用是当系统的物理内存不够时,将硬盘空间的一部分空间释放出来,以供当前运行的程序使用。
当物理内存不够时会随机kill占用内存的进程,从而产生oom,使用swap可以弥补内存不足,防止重要的进程被kill
如何使用
- 找一块硬盘划分1G分区,使用fdisk去划分
- 格式化为swap分区 mkswap /dev/sdb1
- 通过swapon -a /dev/sdb1 将该设备加入已有磁盘空间
- 使用free -m 检查swap的大小
- 想要永久生效需要加入到开机自启
禁用swap
# 禁用该设备使用虚拟分区
swapoff /dev/sdb1
# 禁用所有设备使用swap
swapoff -a
# 想要永久生效需要加入到开机自启
格式化磁盘
可以格式化整个磁盘,也可以格式化磁盘中的分区
为什么需要格式化:
磁盘分区在没有格式化前,操作系统是无法识别系统上磁盘分区格式的,也就无法存取文件目录属性和权限等内容,把分区格式化成操作系统支持的某个文件系统后,再存放数据,系统就会根据这个文件系统的格式进行存取文件了。
mkfs的参数
-t 指定文件系统类型,ext4,xfs等
-i 设定inode大小
-N 设定inode数量
mkfs -t ext4 /dev/sdb
什么是文件系统
【文件系统】是一种【存储和组织计算机中数据文件的机制或方法】,它使得对计算机内的数据的存储、访问和查找变得更容易、简单。文件系统落到计算机里其实就是一个应用软件。如ext2、ext3(CentoS5.x )、ext4(CentoS6.x)、xfs(CentOS7.x)、zfs和Reiserfs或FAr、NTFs等都是常见文件系统。
查看文件系统
df -T
挂载磁盘
mount常用参数
# -t 指定文件系统
# -a 挂载/etc/fstab配置文件中的配置
# -o 指定挂载的参数(权限,功能)
mount -t ext4 /dev/sdb /opt
永久挂载
写入/etc/fstab
/etc/fstab 配置文件格式:
/dev/sdb1 /mnt xfs defaults 0 0
要挂载的设备 挂载点 文件系统类型 挂载参数 是否备份 是否检查
写入/etc/rc.local里
which查找mount命令的命令文件位置,用绝对路径的方式挂载磁盘,写入到/etc/rc.local里
vim /etc/rc.local
/usr/bin/mount /dev/sdc1 /data
这种方式需要给rc.local授予执行权限
umount取消挂载
umount /opt 或者 umount /dev/sdb
# -l 强制卸载