linux新增硬盘
文章目录
- linux新增硬盘
- 步骤1:添加硬盘
- 步骤2:对硬盘进行分区
- 步骤3:对硬盘分区进行格式化
- 步骤4:将硬盘分区挂载到目录上
- 步骤5:设置“永久挂载”
本文主要参考B站视频“P59_韩顺平Linux_增加磁盘应用实例”。
本文目的:在根目录/
下创建新目录newdisk
,并将一块新硬盘sdb
的第一个分区sdb1
挂载到/newdisk
上。
步骤1:添加硬盘
本步骤主要是使Linux系统能识别到新增了一个物理硬盘。物理机实际新装一个磁盘即可,使用VMware虚拟机时则需要:菜单栏中的“虚拟机”–>设置,然后一路按照下面6张图片所示进行设置,中间只有选择磁盘大小的地方需要修改,至到完成:
进行到最后一个界面时,可以发现新增的硬盘已经出现在“虚拟机设置”的列表中了。然后重启系统! 如下指令:
reboot
重启后,重新登录root账户,可以发现Linux系统已经识别到新挂载的磁盘sdb
:
[root@CentOS76 ~]# 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 2G 0 part [SWAP]
└─sda3 8:3 0 17G 0 part /
sdb 8:16 0 1G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64
步骤2:对硬盘进行分区
上个步骤中,Linux系统已经可以识别到硬盘sdb
,但并没有进行分区,所以现在要对硬盘进行分区。进行硬盘分区的主要指令为fdisk
:
# 基本语法-fdisk
fdisk [选项] <磁盘> # 更改分区表
fdisk [选项] -l <磁盘> # 列出分区表
fdisk -s <分区> # 给出分区大小(块数)
fdisk -h # 查看中文帮助文档
# 设置命令-注意这个不是fdisk的选项
m 显示命令列表
n 新增分区
p 显示磁盘分区,同fdisk -l
d 删除分区
w 写入并退出
q 不保存设置直接退出
由于/dev
文件夹存储的都是设备文件,所以硬盘sdb
的文件夹路径为/dev/sdb
。于是对硬盘分区的设置就是依次输入下面的指令:
fdisk /dev/sdb # 进入硬盘分区设置
n # 新增分区
p # 分区类型为主分区
回车键 # 分区号默认为1
回车键 # 起始扇区采用默认
回车键 # Last扇区采用默认
w # 写入分区并退出
实际的终端操作界面为:
[root@CentOS76 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x66b67813 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-2097151,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151):
将使用默认值 2097151
分区 1 已设置为 Linux 类型,大小设为 1023 MiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@CentOS76 ~]#
此时再查看lsblk
就可以硬盘sdb
已经成功分区出sdb1
:
[root@CentOS76 ~]# 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 2G 0 part [SWAP]
└─sda3 8:3 0 17G 0 part /
sdb 8:16 0 1G 0 disk
└─sdb1 8:17 0 1023M 0 part
sr0 11:0 1 4.4G 0 rom
步骤3:对硬盘分区进行格式化
虽然现在硬盘已经有了分区,但是如下面lsblk -f
查看所示,该分区sdb1
没有UUID,所以还要进行格式化才能使用。
[root@CentOS76 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 2e1b1edd-64e9-43f0-9362-138e2bd6adc5 /boot
├─sda2 swap 7e2d03c3-f47a-4721-b29d-1a7b9170fe61 [SWAP]
└─sda3 ext4 43bc1b00-e520-4cfb-8c4b-8f0afbde5dbe /
sdb
└─sdb1
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
格式化磁盘分区sdb1
的指令是:
mkfs -t ext4 /dev/sdb1 # 其中ext4是分区类型
实际的终端显示窗口内容为:
[root@CentOS76 ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 261888 blocks
13094 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@CentOS76 ~]#
步骤4:将硬盘分区挂载到目录上
上述格式化分区sdb1
完成后,再输入lsblk -f
就可以发现sdb1
已经有了自己的UUID,但是还没有挂载点(mount-point)。于是本步骤就是将sdb1
硬盘分区 挂载 到Linux中的目录/newdisk
下。
[root@CentOS76 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 2e1b1edd-64e9-43f0-9362-138e2bd6adc5 /boot
├─sda2 swap 7e2d03c3-f47a-4721-b29d-1a7b9170fe61 [SWAP]
└─sda3 ext4 43bc1b00-e520-4cfb-8c4b-8f0afbde5dbe /
sdb
└─sdb1 ext4 af8f970f-db7c-4582-9ca2-a33a9c20027a
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
上一段提到的 挂载 就是将一个分区与一个目录联系起来,那 卸载 自然就是去除这种联系。基本语法如下:
# 挂载-mount
mount 设备名称 挂载目录 # 如:mount /dev/sdb1 /newdisk
# 卸载-umount
umount 设备名称或者挂载目录 # 如:umount /dev/sdb1 或者 umount /newdisk
于是本节中实际需要执行的指令为:
mkdir /newdisk # 创建新目录/newdisk
mount /dev/sdb1 /newdisk # 将sdb1挂载到/newdisk上
实际的终端显示窗口内容为:
[root@CentOS76 ~]# mkdir /newdisk
[root@CentOS76 ~]# mount /dev/sdb1 /newdisk
[root@CentOS76 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 2e1b1edd-64e9-43f0-9362-138e2bd6adc5 /boot
├─sda2 swap 7e2d03c3-f47a-4721-b29d-1a7b9170fe61 [SWAP]
└─sda3 ext4 43bc1b00-e520-4cfb-8c4b-8f0afbde5dbe /
sdb
└─sdb1 ext4 af8f970f-db7c-4582-9ca2-a33a9c20027a /newdisk
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
上述lsblk -f
可以看到sdb1
的挂载点已经设置为/newdisk
。挂载完成后,以后在/newdisk
下存储的文件,其存储的物理设备都在sdb
上的分区sdb1
上。若卸载磁盘,那么文件都会相应的留在磁盘中。
【题外话,可不执行】最后演示一下如何卸载磁盘:
# 演示磁盘“卸载”
[root@CentOS76 ~]# umount /dev/sdb1
[root@CentOS76 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 2e1b1edd-64e9-43f0-9362-138e2bd6adc5 /boot
├─sda2 swap 7e2d03c3-f47a-4721-b29d-1a7b9170fe61 [SWAP]
└─sda3 ext4 43bc1b00-e520-4cfb-8c4b-8f0afbde5dbe /
sdb
└─sdb1 ext4 af8f970f-db7c-4582-9ca2-a33a9c20027a
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
# 显然,上面sdb1分区的挂载点消失
# 下面重新“挂载”回来
[root@CentOS76 ~]# mount /dev/sdb1 /newdisk
[root@CentOS76 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 2e1b1edd-64e9-43f0-9362-138e2bd6adc5 /boot
├─sda2 swap 7e2d03c3-f47a-4721-b29d-1a7b9170fe61 [SWAP]
└─sda3 ext4 43bc1b00-e520-4cfb-8c4b-8f0afbde5dbe /
sdb
└─sdb1 ext4 af8f970f-db7c-4582-9ca2-a33a9c20027a /newdisk
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
步骤5:设置“永久挂载”
上面4个步骤看起来已经很完全了,但仅仅使用命令行挂载,重启后会失效! 难道每次重新启动都需要重新挂载所有磁盘?这显然不现实,此时就需要“永久挂载”。通过修改/etc/fstab
文件可以实现“永久挂载”。下面是打开/etc/fstab
文件后的内容:
#
# /etc/fstab
# Created by anaconda on Thu Jul 13 17:06:52 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=43bc1b00-e520-4cfb-8c4b-8f0afbde5dbe / ext4 defaults 1 1
UUID=2e1b1edd-64e9-43f0-9362-138e2bd6adc5 /boot ext4 defaults 1 2
UUID=7e2d03c3-f47a-4721-b29d-1a7b9170fe61 swap swap defaults 0 0
显然该文件中的三行硬盘分区都属于之前已经挂载号的硬盘sda
。共有6列,含义如下:
- 第一列(Device):磁盘设备文件或者该设备的Label或者UUID,三者均可。
- 第二项(Mount point):设备的挂载点,就是你要挂载到哪个目录下。
- 第三项(filesystem):磁盘文件系统的格式,普通分区默认使用文件系统格式为
ext4
。- 第四项(parameter):就是
mount
时,所要设定的状态,如ro
(只读)或defaults
(包括了其它参数如rw
、suid
、exec
、auto
、nouser
、async
),可以参见「mount nfs
」。- 第五项:能否被dump备份命令作用。通常设置为“
0
”表示不要做dump备份。- 第六项:是否检验扇区。开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)。一般设置为
0
不需要检验。来源:自动挂载文件/etc/fstab功能详解
于是“永久挂载”的指令为:
vim /etc/fstab # 打开文件/etc/fstab
/dev/sdb1 /newdisk ext4 defaults 0 0 # 在/etc/fstab文件中添加一行分区描述
mount -a # 使上述修改即刻生效
reboot # 保险起见,可以重启一下
实际的终端显示窗口内容为:
[root@CentOS76 ~]# vim /etc/fstab
#######################################
# vim中yy+p拷贝并复制最后一行,然后将最后一行改成:
# /dev/sdb1 /newdisk ext4 defaults 0 0
# 然后保存并推出
#######################################
[root@CentOS76 ~]# mount -a
[root@CentOS76 ~]# reboot
# 下面是重启后
[root@CentOS76 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 2e1b1edd-64e9-43f0-9362-138e2bd6adc5 /boot
├─sda2 swap 7e2d03c3-f47a-4721-b29d-1a7b9170fe61 [SWAP]
└─sda3 ext4 43bc1b00-e520-4cfb-8c4b-8f0afbde5dbe /
sdb
└─sdb1 ext4 af8f970f-db7c-4582-9ca2-a33a9c20027a /newdisk
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00
此时就大功告成!完成了本文目的:在根目录/
下创建新目录newdisk
,并将一块新硬盘sdb
的第一个分区sdb1
挂载到/newdisk
上。