Linux磁盘管理——分区+挂载(fdisk+gdisk+mount+lsblk+df)
Posted 何翰宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux磁盘管理——分区+挂载(fdisk+gdisk+mount+lsblk+df)相关的知识,希望对你有一定的参考价值。
文章目录
一、硬盘基础知识
IDE ——> SATA I/II/III 个人pc机 SCSI ——> SAS 服务器上
1. 硬盘命名方式
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 |
2. 磁盘设备的命名
/dev/sda2
- s:硬件接口类型(sata/scsi)
- d:disk(硬盘)
- a:第1块硬盘(b,第二块),
- 2:第几个分区
- /dev/hd: h=IDE硬盘
- /dev/hdd3
- /dev/vd: v=虚拟硬盘
3. 硬盘的分区方式
MBR <2TB fdisk 4个主分区或者3个主分区+1个扩展分区(N个逻辑分区)
- 分区表中保存的分区信息都是主分区与扩展分区的分区信息,扩展分区不能直接使用,需要在扩展分区内
划分一个或多个逻辑分区后才能使用 - 逻辑分区的分区信息保存在扩展分区内而不是保存在MBR分区表内,这样,就可以突破MBR分区表只能保
存4个分区的限制
GPT >2TB gdisk(parted) 128个主分区
详细了解链接
注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!
二、基本分区管理
1. 磁盘划分思路
- 进入分区表,新建分区
- 刷新分区表
- 格式化分区(不格式化没法挂载)
- 挂载使用
注意:
- 最多只能分4个主分区,主分区编号1-4
- 逻辑分区大小总和不能超过扩展分区大小,逻辑分区分区编号从5开始
- 如果删除扩展分区,下面的逻辑卷分区也被删除
- 扩展分区的分区编号(1-4)
2.lsblk命令
命令:lsblk
作用:查看当前设备的挂载情况
[root@localhost ~]# 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 10G 0 disk
sr0 11:0 1 4.3G 0 rom
MOUNTPOINT:挂载点
3. df 命令
命令:df -h
作用:查看单前设备的挂载情况
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.1G 16G 6% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.5M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
4. fdisk
fdisk适用于MBR 分区方式
命令:fdisk [选项]
常用选项:
-l
:查看当前系统的所有设置的分区情况
1)进入分区
通过fdisk [磁盘路径]
进行分区
设备文件一般都在/dev
目录下
fdisk /dev/sdb
进入分区选项
输入m获取帮助
Command(m for help): m 输出帮助信息
Commandaction
a toggle a bootable flag 设置启动分区
b edit bsd disklabel 编辑分区标签
c toggle the dos compatibility flag
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 保存分区表
2)新建分区
新建拓展分区
Command (m for help): n # 输入n新建分区
Partition type:
p primary #主分区
e extended # 扩展分区
Select (default p): p
Partition number (1-4, default 1): 1 # 选择主分区编号
First sector (2048-20971519, default 2048): #起始柱面默认回车即可
Using default value 2048
Last sector, +sectors or +sizeK,M,G (2048-20971519, default 20971519): +2G # 分区大小2G
Partition 1 of type Linux and of size 2 GiB is se
新建扩展分区
Command (m for help): n #新建分区
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e # 扩展分区
Partition number (2-4, default 2):
First sector (4196352-20971519, default 4196352):
Using default value 4196352
Last sector, +sectors or +sizeK,M,G (4196352-20971519, default 20971519): +4G #4G的扩展分区分区
Partition 2 of type Extended and of size 4 GiB is set
在扩展分区下建立逻辑分区
注意:逻辑分区时基于扩展分区的,所以所有逻辑分区的大小不能超过扩展分区,
Command (m for help): n # 新建分区
Partition type:
p primary # 主分区
l logical # 逻辑分区
Select (default p): l #选择逻辑分区
Adding logical partition 5 #逻辑分区默认从5号开始
First sector (4198400-12584959, default 4198400): # 其实柱面默认直接回车
Using default value 4198400
Last sector, +sectors or +sizeK,M,G (4198400-12584959, default 12584959): +1G # 逻辑分区大小
Partition 5 of type Linux and of size 1 GiB is set
保存退出
输入w
即可
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
3)查看分区信息
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 12584959 4194304 5 Extended
/dev/sdb5 4198400 6295551 1048576 83 Linux
4)查看分区情况
通过lsblk
命令
[root@localhost ~]# lsblk
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 2G 0 part # 主分区
├─sdb2 8:18 0 1K 0 part # 扩展分区
└─sdb5 8:21 0 1G 0 part # 逻辑分区
注意:扩展分区时不能使用的,它里面保存的是它是其下的逻辑分区的信息
5)刷新分区表信息
命令:partx -a [磁盘路径]
[root@localhost ~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-2
partx: /dev/sdb: error adding partition 5
6)格式化分区
分区需要格式化后才能使用
查看可以格式化的文件系统
[root@localhost ~]# mkfs.
mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.xfs
mkfs.cramfs mkfs.ext3 mkfs.minix
把std1
分区格式化成ext4
格式
[root@localhost ~]# mkfs.ext4 /dev/sdb1
把std5
格式或成xfs
格式
[root@localhost ~]# mkfs.xfs /dev/sdb5
6)创建挂载点
注意:挂载点一定要是空目录
[root@localhost ~]# mkdir /u1
[root@localhost ~]# mkdir /u2
7)挂载使用
[root@localhost ~]# mount /dev/sdb1 /u1
[root@localhost ~]# mount /dev/sdb5 /u2
8)小结
- 扩展分区的大小决定了所有逻辑分区的大小
- 删除扩展分区后下面的逻辑分区都被删除
- 分完区后需要手动刷新分区表,如果刷新不成功需要重启操作系统
- 创建分区的时候尽可能注意分区序号的连续性
5. gdisk
如果一个磁盘大于2TB,就不适合采用MBR分区了,就得采用GPT分区。
而gdisk
命令就是用于针对GPT方式分区方式。
下面用fdisk
对4.3TB的磁盘sdb分区,就做出了警告
[root@localhost ~]# lsblk
sdb 8:16 0 3.9T 0 disk
[root@localhost ~]# fdisk /dev/sdb
WARNING: The size of this disk is 4.3 TB (4294967296000 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID
partition table format (GPT).
1)基本使用
安装:yum -y install gdisk
使用命令:gdisk [磁盘路径]
[root@localhost ~]# lsblk
sdb 8:16 0 3.9T 0 disk
[root@localhost ~]# gdisk /dev/sdb
2)获取帮助
通过help
或者?
获取命令帮助
Command (? for help): help
b back up GPT data to a file
c change a partition's name
d delete a partition
i show detailed information on a partition
l list known partition types
n add a new partition
o create a new empty GUID partition table (GPT)
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit
x extra functionality (experts only)
? print this menu
3)新建分区
输入n
新建分区
Command (? for help): n #新建分区
Partition number (1-128, default 1): 1 # 可建立128个分区
First sector (34-8388607966, default = 2048) or +-sizeKMGTP: #其实柱面,直接回车
Last sector (2048-8388607966, default = 8388607966) or +-sizeKMGTP: +20G #结束柱面,也就是分区大小
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): # 直接回车
Changed type of partition to 'Linux filesystem'
4)查看分区
通过p
查看分区
Command (? for help): p
Disk /dev/sdb: 8388608000 sectors, 3.9 TiB
Number Start (sector) End (sector) Size Code Name
1 2048 41945087 20.0 GiB 8300 Linux filesystem
2 41945088 73402367 15.0 GiB 8300 Linux filesystem
3 73402368 136316927 30.0 GiB 8300 Linux filesystem
5)删除分区
输入d
删除分区,要指定分区编号,建议从后往前删
Command (? for help): p #查看分区
Number Start (sector) End (sector) Size Code Name
1 2048 41945087 20.0 GiB 8300 Linux filesystem
2 41945088 73402367 15.0 GiB 8300 Linux filesystem
3 73402368 136316927 30.0 GiB 8300 Linux filesystem
Command (? for help): d # 删除
Partition number (1-3): 3 # 分区编号
Command (? for help): p #查看分区
Number Start (sector) End (sector) Size Code Name
1 2048 41945087 20.0 GiB 8300 Linux filesystem
2 41945088
6)保存分区并退出
w
保存分区退出,q
是直接退出不保存
Command (? for help): w # 保存退出
Do you want to proceed? (Y/N): y # 确认
通过lsblk
查看分区
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 3.9T 0 disk
├─sdb1 8:17 0 20G 0 part
└─sdb2 8:18 0 15G 0 part
三、手动挂载和自动挂载
1. 手动挂载
使用mount
命令进行手动挂载,系统重启后就需要重新挂载
命令:mount [选项] [需要挂载的设备] [挂载点]
常用选项:
-o
:挂载选项 ro,sync,rw,remount-t
:文件系统类型
注意:
mount -t nfs 等价于 mount.nfs
mount -t cifs 等价于 mount.cifs(SAMBA)
1)blkid命令
作用:查看设备的UUID和文件系统类型
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="c28261f4-97b3-474f-bbe8-efe1d8b6c87d" TYPE="ext4"
2)重新挂载设备
remount
:重新挂载一个设备(针对已经挂载的设备)
[root@localhost ~]# lsblk
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 2G 0 part /u1
├─sdb2 8:18 0 1K 0 part
└─sdb5 8:21 0 1G 0 part
我们发现sdb1已经被挂载到了,/u1
目录下
重新挂载:把ro重新挂载成rw
[root@localhost ~]# mount
/dev/sdb1 on /u1 type ext4 (ro,relatime,seclabel,data=ordered)
[root@localhost ~]# mount -o remount,rw /dev/sdb1
/dev/sdb1 on /u1 type ext4 (rw,relatime,seclabel,data=ordered)
注意:重新挂载,既可以写设备文件本身,也可以写挂载路径
# mount -o remount,ro /dev/sdb1
# mount -o remount,ro /u01
3)挂载设备方式(e2label 命令)
挂载设备方式可以通过
- 真实设备
- 设备UUID
- 设备的卷标
通过设备的UUID挂载
[root@localhost ~]# blkid /dev/sdb5
/dev/sdb5: UUID="cf856a04-47e6-4b50-bed7-23e98d517ab6" TYPE="xfs"
[root@localhost ~]# mount UUID="cf856a04-47e6-4b50-bed7-23e98d517ab6" /u2
[root@localhost ~]# lsblk
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 2G 0 part /u1
├─sdb2 8:18 0 1K 0 part
└─sdb5 8:21 0 1G 0 part /u2
设置卷标命令:e2label [设备路径] [要设置的卷标名称]
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="c28261f4-97b3-474f-bbe8-efe1d8b6c87d" TYPE="ext4"
[root@localhost ~]# e2label /dev/sdb1 test_db
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="test_db" UUID="c28261f4-97b3-474f-bbe8-efe1d8b6c87d" TYPE="ext4"
通过卷标挂载
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="test_db" UUID="c28261f4-97b3-474f-bbe8-efe1d8b6c87d" TYPE="ext4"
[root@localhost ~]# mount LABEL="test_db" /u1
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 2G 0 part /u1
├─sdb2 8:18 0 1K 0 part
└─sdb5 8:21 0 1G 0 part
4)卸载设备:umount
命令:umount [挂载路径]
或umount [设备路径]
[root@localhost ~]# lsblk
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 2G 0 part /u1
├─sdb2 8:18 0 1K 0 part
└─sdb5 8:21 0 1G 0 part
[root@localhost ~]# umount /u1
[root@localhost ~]# lsblk
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 2G 0 part
├─sdb2 8:18 0 1K 0 part
└─sdb5 8:21 0 1G 0 part
2. 开机自动挂载
1)挂载选项
挂载选项:
async/sync 异步/同步:
auto/noauto 自动/非自动:
rw/ro 读写/只读:
exec/noexec 可被执行/不可被执行:
remount 重新挂在一个已经挂载的文件系统,常用于修改挂载参数
user/nouser 允许/不允许其他普通用户挂载:
suid/nosuid 具有/不具有suid权限:该文件系统是否允许SUID的存在。
usrquota 这个是在启动文件系统的时候,让其支持磁盘配额,这个是针对用户的。
grpquota 支持用户组的磁盘配额。
2)设置开机自动挂载
修改/etc/rc.local
配置文件
因为配置文件里的命令要写查看挂载命令的完整路径,通过which
查看命令的查看挂载命令的完整路径。
# 查看挂载命令的完整路径
[root@localhost ~]# which mount
/usr/bin/mount
修改配置文件vim /etc/rc.local
示例:开机以只读同步的方式自动挂载/etc/sdb1
到/u1
目录下
/usr/bin/mount -o sync,ro /dev/sdb1 /u1
重启机器看看是否自动挂载
3.自动挂载(autofs)
示例:让系统自动挂载/dev/sdb5设备,如果2分钟没有被用自动卸载
先格式化/dev/sdb5
分区
命令:mkfs.ext4 /dev/sdb5
1)autofs
特点:挂载是由访问产生;卸载是由超时产生;依赖于后台的autofs服务
安装命令:yum -y install autofs
2)修改配置文件
修改/etc/auto.master
定义一级挂载点和子配置文件
定义一级挂载点/u1
和子配置文件:vim /etc/auto.master
# 在8行添加
# -t 120等价于 --timeout 120 表示120秒(两分中没有使用自动卸载)
/u1 /etc/auto.test -t 120
注意:子配置文件一定要是auto.
开头
手动创建子配置文件,定义二级挂载点和需要挂载的设备
命令:vim /etc/auto.test
test -fstype=ext4,ro :/dev/sdb5
3)重启服务
命令:systemctl restart autofs
4)验证自动挂载
只要一访问就能自动挂载/dev/sdb5
[root@localhost ~]# df -h
[root@localhost ~]# cd /u2
[root@localhost u2]# ll
total 0
[root@localhost u2]# cd test
[root@localhost test]# cd ~
[root@localhost ~]# df -h
# 自动挂载
/dev/sdb5 3.9G 16M 3.7G 1% /u2/test
发现只要一访问到指定的test目录,就会自动创建test目录并自动挂载。
马上退出该目录后,只要不使用,过120秒回自动解挂该分区
4. NFS自动挂载
将(NFS)主机上的共享目录/share/nfs挂载到(server)本地的/nfstmp下面
1) 环境准备
主机名 | ip | 作用 |
---|---|---|
nfs | 192.168.44.160 | 搭建NFS服务共享目录 |
auto | 192.168.44.200 | 使用autofs自动挂载nfs主机上的目录 |
关闭防火墙和SELInux
2)nfs主机
安装NFS:yum -y install rpcbind nfs-utils
创建/share/nfs
目录,并创建测试文件
[root@nfs~]# mkdir -p /share/nfs
[root@nfs~]# touch /share/nfs/test1..5
修改配置文件
vim /etc/exports
# 共享/share/nfs目录给auto主机
/share/nfs 192.168.44.200/24(rw)
重启nfs服务
[root@nfs~]# systemctl restart rpcbind
[root@nfs~]# systemctl restart nfs
3)auto主机
创建挂载目录/nfstmp
# mkdir /nfstmp
安装:yum -y install nfs-utils
使用autofs方式自动挂载
编写/etc/auto.master
配置文件,定义一级挂载点/nfstmp
和自配置文件
/nfstmp /etc/auto.nfstest --timeout 60
手动创建auto.nfstest
子配置文件,定义二级挂载点和需要挂载的目录
vim /etc/auto.nfstest
/test -nfs,ro 192.168.44.160:/share/nfs
4)重启服务
命令:systemctl restart autofs
5)测试验证
访问 定义的挂载目录(注意这个目录并没有创建)/nfstmp/test
,只要一访问旧会自动挂载nfs主机下/share/nfs
目录
[root@localhost ~]# ls /nfstmp/test
test1 test2 test3 test4 test5
[root@localhost ~]# df -h
192.168.44.160:/share/nfs 17G 11G 6.8G 61% /nfstmp/test
[root@localhost ~]#
四、总结挂载设备的三种方式
注意:想要挂载磁盘分区,一定要先格式化分区!
- 设备要被挂载,必须要有文件系统类型(mkfs.类型)
- 手动挂载mount mount -o 挂载选项(ro,rw,auto,noexec…) 需要挂载设备 挂载点
重启需要再次重新挂载 - 开机自动挂载
修改/etc/rc.local文件 启动后最后读取文件,执行该文件必须要有可执行权限 - autofs自动挂载
使用时触发自动挂载
超时自动卸载
如何配置设备的autofs自动挂载
1)安装autofs软件
2)修改/etc/auto.master文件 定义1级挂载点和超时时间,子配置文件
3)创建刚刚定义的子配置文件 二级挂载点和需要挂载设备以及文件系统类型及挂载方式
4)启动服务,测试验证
以上是关于Linux磁盘管理——分区+挂载(fdisk+gdisk+mount+lsblk+df)的主要内容,如果未能解决你的问题,请参考以下文章