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,已经挂载成功了
作者 :秋时
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。