温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
一、背景
前几天介绍了华为公有云升级 Ubuntu 14.04 LTS 到 Ubuntu 16.04 LTS 的方法,今天以华为云 Ubuntu 系统为例介绍在 Linux 下如何挂载云硬盘。之所以单独开篇说这个,是因为云硬盘默认是不可使用的,即即使在控制面板上挂载了,但是在系统里仍然是无法识别这块硬盘的:
二、挂载
在硬盘附加到实例后,通过命令查看附加情况:
# fdisk -l
Disk /dev/xvda: 40 GiB, 42949672960 bytes, 83886080 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: 0x00054506
Device Boot Start End Sectors Size Id Type
/dev/xvda1 * 2048 75495423 75493376 36G 83 Linux
/dev/xvda2 75497470 83884031 8386562 4G 5 Extended
/dev/xvda5 75497472 83884031 8386560 4G 82 Linux swap / Solaris
Disk /dev/xvdb: 100 GiB, 107374182400 bytes, 209715200 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: 0x9df421d4
可以看到当前的服务器有两块磁盘,“/dev/xvda” 是系统盘,“/dev/xvdb” 是数据盘。
拓展:分区格式
硬盘分区有诸多格式(Disklabel type),可以根据需要在分区时选择恰当的格式,具体有:.
- bsd
- dvh
- gpt - this is a GPT partition table
- loop - this is raw disk access without a partition table
- mac
- msdos - this is a standard MBR partition table
- pc98 sun
设置命令:
# parted -s /dev/xvdb mklabel msdos
分区操作如下:
# fdisk /dev/xvdb //选定硬盘
fdisk /dev/xvdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n //新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p //设为主分区,e 为扩展分区
Partition number (1-4, default 1): 1 //第一个分区
First sector (2048-209715199, default 2048): 2048 //设置初始磁柱区域
Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): 209715199 //设置结束磁柱区域
Created a new partition 1 of type 'Linux' and of size 100 GiB.
Command (m for help): p //分区新建完成,验证一下
Disk /dev/xvdb: 100 GiB, 107374182400 bytes, 209715200 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: 0x9df421d4
Device Boot Start End Sectors Size Id Type
/dev/xvdb1 2048 209715199 209713152 100G 83 Linux
Command (m for help): w //确认无误,保存
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
分区建立完成,格式化并挂载:
# mkfs -t ext4 /dev/xvdb1
Creating filesystem with 26214144 4k blocks and 6553600 inodes
Filesystem UUID: 5927b99d-9de1-4494-a3d0-858e93567c84
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
# mkdir /data //硬盘挂载前必须先创建挂载点,如挂在 /data 下
//如果要挂载在已存在的文件夹下,注意要把文件夹下的文件先挪走。
# mount /dev/xvdb1 /data
# e2fsck -f /dev/xvdb1 //检查下分区情况
e2fsck 1.42.13 (17-May-2015)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/xvdb1: 11/6553600 files (0.0% non-contiguous), 459349/26213888 blocks
# resize2fs /dev/xvdb1 //调整大小
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/xvdb1 to 26214144 (4k) blocks.
The filesystem on /dev/xvdb1 is now 26214144 (4k) blocks long.
查看挂载情况:
# df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 393M 5.5M 388M 2% /run
/dev/xvda1 36G 3.7G 30G 11% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
cgmfs 100K 0 100K 0% /run/cgmanager/fs
tmpfs 394M 0 394M 0% /run/user/0
/dev/xvdb1 99G 60M 94G 1% /data
可以看到新硬盘已挂载成功,但是工作还没完成,因为这样就结束了的话重启后会发现 /data 又不见了,因此我们需要设置开启自动挂载:
# vim /etc/mount.sh
#!/bin/bash
mount /dev/xvdb1 /data
# chmod +x /etc/mount.sh
# echo '/etc/mount.sh' >> /etc/rc.d/rc.local
17/10/26 更新:
如果发现还是挂载不了,执行以下操作:
# chmod +x /etc/rc.d/rc.local //CentOS
# chmod +x /etc/rc.local //Ubuntu
自动挂载也可以通过修改分区表 /etc/fstab 的方式实现,但不熟悉的话建议尽量不要去动分区表。
fstab 挂载方法
# vim /etc/fstab
UUID=5927b99d-9de1-4494-a3d0-858e93567c84 /data ext4 defaults 0 0
UUID 可通过 blkid
命令查询。
至此,附加云硬盘已成功挂载,也实现了开机自动挂载。
参考文章:
1、数据盘初始化(Linux)- 华为企业云