linux挂载新磁盘

1. 老系统查看

1.1 查看磁盘挂载情况

# df -h
Filesystem Size Used Avail Use% Mounted on
udev 3.8G 0 3.8G 0% /dev
tmpfs 770M 1.3M 769M 1% /run
/dev/vda1 59G 48G 9.0G 85% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
overlay 59G 48G 9.0G 85% /var/lib/docker/overlay2/6b555603eb9808afba38ff0e7785e1a88d912009b203b2fc81f58306ed89ce38/merged
overlay 59G 48G 9.0G 85% /var/lib/docker/overlay2/dcbc5f34c9114e23e12d01a69ea473d002e6bab878c4db586552fc7a4f01e388/merged
overlay 59G 48G 9.0G 85% /var/lib/docker/overlay2/4fa90b464fb5f403a0d6019b37b3130fecb3c01222e2e7e6caa2eaff534006d7/merged
overlay 59G 48G 9.0G 85% /var/lib/docker/overlay2/2e030df028cf8d55f6ae1718f7631cd4ced0d1b22fe14da8d07bc5baa0b5847f/merged
overlay 59G 48G 9.0G 85% /var/lib/docker/overlay2/36f372192a4e716b83c59259d65813f94e469b2f3e3ecc9fefed72bc59b7d5d0/merged
overlay 59G 48G 9.0G 85% /var/lib/docker/overlay2/a70f1dfe08cb468b21529d08c0883acd6fdb5bf4830d49d5306d45cfdef29f63/merged
overlay 59G 48G 9.0G 85% /var/lib/docker/overlay2/a5f8bc2e5f4cc7c26361f435e84534237397e86c1119a26d9b46fdca7d36e1eb/merged
overlay 59G 48G 9.0G 85% /var/lib/docker/overlay2/2013007d3af2694a5ad034d41ecedad5a22b286390f5af75666ae7454437f782/merged
tmpfs 770M 0 770M 0% /run/user/0

命令中显示的磁盘很多,实际上只有/dev/vda1是物理磁盘,其他都是虚拟的磁盘

  • tmpfs 好像是内存虚拟的磁盘
  • overlay 好像是docker虚拟的磁盘

1.2 查看当前分区情况

# fdisk -l
Disk /dev/vda: 60 GiB, 64424509440 bytes, 125829120 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
Disklabel type: dos
Disk identifier: 0x6e854653

Device     Boot Start       End   Sectors Size Id Type
/dev/vda1  *     2048 125829086 125827039  60G 83 Linux

1.3 查看设备文件系统类型

# blkid
/dev/vda1: LABEL="/" UUID="231436f6-d23a-466a-af98-6b11de4faaf7" TYPE="ext4" PARTUUID="6e854653-01"

blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。
blkid命令操作的是文件/etc/fstab

$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/vda1 during installation
UUID=231436f6-d23a-466a-af98-6b11de4faaf7 /               ext4    errors=remount-ro 0       1
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0

2. 插入磁盘

我是阿里云环境,即不是物理的磁盘,而是在原有的ECS实例上购买了一块云盘,就相当于插入物理磁盘了。
执行df -h磁盘信息没有变化
但是执行fdisk -l命令多了一行Disk /dev/vdb: 80 GiB

# fdisk -l
Disk /dev/vda: 60 GiB, 64424509440 bytes, 125829120 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
Disklabel type: dos
Disk identifier: 0x6e854653

Device     Boot Start       End   Sectors Size Id Type
/dev/vda1  *     2048 125829086 125827039  60G 83 Linux


Disk /dev/vdb: 80 GiB, 85899345920 bytes, 167772160 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

注意,/dev/vdb就是磁盘,还没有被分区,分区以后的名字一般为/dev/vdb1这种的
其中阿里云官方文档是这么说的:云盘挂载到ECS实例后,您在ECS实例中还无法直接使用云盘。例如在Linux实例中,通过df -h命令无法查看到新挂载的云盘信息。此时您需要继续为云盘创建分区和文件系统,使云盘变为可用。

3. 磁盘分区

3.1 磁盘与分区的原理

在Windows上一个物理磁盘分成多个分区(如C、D、E,虽然有时候叫C盘,但是其实是分区)。在传统的磁盘中,一个分区就是把磁盘按照扇区和柱面使用工具分成逻辑使用不同的区域。
linux上的磁盘/etc/vda也可通过fdisk分成多个区,这台设备现有的磁盘也只有一个分区/etc/vda1
下面新安装的磁盘/etc/vdb,也会通过fdisk分成一个区/etc/vdb1,本文最后通过mount命令把分区/etc/vdb1挂载到一个目录/root/docker/videos上。

  • fdisk -l就可以查看当前设备的所有分区
  • fdisk -u /dev/vdb中的参数/dev/vdb是磁盘,执行这个命令进入REPL模式,可以对磁盘/dev/vdb进行分区管理,包括创建分区与删除分区

3.2 创建磁盘分区

参考阿里云的这篇文档就行,操作的错了也不怕,在磁盘有正式数据之前,可以反复的删除和新建磁盘分区,包括反复的mount。磁盘分区有两种方式MBR与GTP

  • MBR,传统的分区方式,操作简单,但是只能分区2T以内的磁盘,这是本文使用的方式
  • GTP,可以管理2T以上的磁盘
    另外参考这个文档,我开始选择的是扩展分区,后面mount失败,后来选择主分区再mount就可以了
    本次实验中我创建了一个分区/etc/vdb1

4. 格式化

很多说法是为分区创建文件系统,按照我们日常的说话就是磁盘分区了以后要进行格式化,确定是ext3、ext4、ntfs那种文件系统。linux用ext4比较多,而且阿里云文档介绍的也是ext4格式

mkfs -t ext4 /dev/vdb1

5. 设置开机自动挂载分区

设置开机自动挂载云盘,需要在/etc/fstab中写入新分区信息,启动开机自动挂载分区。

cp /etc/fstab /etc/fstab.bak
echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /root/docker/videos ext4 defaults 0 0 >> /etc/fstab

每个分区都有一个UUID,可以通过blkid查看,挂载分区的时候要用这个UUID,把上面的语句截取一部分看/dev/vdb1分区信息

$ blkid /dev/vdb1
/dev/vdb1: UUID="24970c1f-3dd6-4070-b231-184cbb40c173" TYPE="ext4" PARTUUID="148b430c-01"

然后在看分区配置文件/etc/fstab信息,这个分区将来要mount的目录是/root/docker/videos

$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/vda1 during installation
UUID=231436f6-d23a-466a-af98-6b11de4faaf7 /               ext4    errors=remount-ro 0       1
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
UUID=24970c1f-3dd6-4070-b231-184cbb40c173  /root/docker/videos  ext4 defaults 0 0

6. mount挂载分区

在挂载分区之前,要确认上面mount的目录是/root/docker/videos,这个目录如果你没有需要去创建,也可以改成你想要的任何目录,然后就执行mount命令

mount -a

再查看磁盘信息

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.8G     0  3.8G   0% /dev
tmpfs           770M  1.3M  768M   1% /run
/dev/vda1        59G   24G   34G  42% /
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/vdb1        79G   24G   51G  33% /root/docker/videos
overlay          59G   24G   34G  42% /var/lib/docker/overlay2/36f372192a4e716b83c59259d65813f94e469b2f3e3ecc9fefed72bc59b7d5d0/merged
tmpfs           770M     0  770M   0% /run/user/0

上面的命令,新的分区/dev/vdb1,对应的目录是/root/docker/videos,大小是80G,已经挂载成功了

posted on 2023-06-17 18:22  Netsharp  阅读(78)  评论(0编辑  收藏  举报

导航