zoukankan      html  css  js  c++  java
  • Linux磁盘分区扩容

    随着业务的增长,aliyun数据盘容量可能无法满足数据存储的需要,这时可以使用“”磁盘扩容“”功能扩容数据盘。

    本文以一个SSD云盘的数据盘和一个运行Ubuntu 16..4 64位的 ECS 实例为例,说明如何扩容磁盘分区并使扩容后的容量可用。
    未扩容前的数据盘只有一个主分区(/dev/vdb1,ext4 文件系统),文件系统的挂载点为 /data,文件系统扩容完成后,数据盘仍然只有一个主分区。

    1.在阿里云控制台对指定磁盘进行扩容操作

    本次示例为50GB扩容到60GB

    2.创建测试文件

    先在原有分区内创建测试文件,扩容完毕后检查文件

    root@zstest:~# mkdir -p /data/test
    root@zstest:~# touch /data/test/20180327
    root@zstest:~# touch /data/test/20180327.txt
    root@zstest:~# tree /data/
    /data/
    ├── lost+found
    └── test
    ├── 20180327
    └── 20180327.txt

    3.卸载旧分区

    3.1.使用“umount”命令卸载分区。

    umount /dev/vdb1

    3.2.使用df -h查看是否卸载成功

    如果看不到/dev/vdb1的信息表示卸载成功

    root@zstest:~# df -h
    Filesystem Size Used Avail Use% Mounted on
    udev 3.9G 0 3.9G 0% /dev
    tmpfs 799M 3.0M 796M 1% /run
    /dev/vda1 50G 5.4G 42G 12% /
    tmpfs 3.9G 0 3.9G 0% /dev/shm
    tmpfs 5.0M 0 5.0M 0% /run/lock
    tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
    tmpfs 799M 0 799M 0% /run/user/0

    4.扩容指定的分区

    4.1.使用 fdisk 命令删除原来的分区并创建新分区

    运行命令 fdisk -l 罗列分区信息并记录扩容前数据盘的最终容量、起始扇区(First sector)位置。

    root@zstest:~# fdisk -l
    Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 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: 0xd6804155
    
    Device Boot Start End Sectors Size Id Type
    /dev/vda1 * 2048 104855551 104853504 50G 83 Linux
    
    
    Disk /dev/vdb: 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: 0x63c3e6e0
    
    Device Boot Start End Sectors Size Id Type
    /dev/vdb1 2048 104857599 104855552 50G 83 Linux

    过程原理:

    先删除原有分区表,然后重建分区表,保存退出

    创建分区表操作步骤:

    1)输入第一个可用的扇区编号:为了保证数据的一致性,First sector 需要与原来的分区保持一致。在本示例中,按回车键采用默认值。
    2)如果发现 First sector 显示的位置和之前记录的不一致,说明之前可能使用 parted 来分区,那么就停止当前的 fdisk 操作,使用 parted 重新操作。
    3)输入最后一个扇区编号:因为这里仅创建一个分区,所以按回车键采用默认值。

    对指定的磁盘进行操作

    fdisk /dev/vdb
    root@zstest:~# fdisk /dev/vdb
    
    Welcome to fdisk (util-linux 2.27.1).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Command (m for help): d
    Selected partition 1
    Partition 1 has been deleted.
    
    Command (m for help): n
    Partition type
    p primary (0 primary, 0 extended, 4 free)
    e extended (container for logical partitions)
    Select (default p): p
    Partition number (1-4, default 1): 
    First sector (2048-125829119, default 2048): 
    Last sector, +sectors or +size{K,M,G,T,P} (2048-125829119, default 125829119):
    
    Created a new partition 1 of type 'Linux' and of size 60 GiB.
    
    Command (m for help): wq
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.

    如果操作对象是指定的分区,会出现以下提示

    root@zstest:~# fdisk /dev/vdb1 
    /dev/vdb1: device contains a valid 'ext4' signature; it is strongly recommended to wipe the device with wipefs(8) if this is unexpected, in order to avoid possible collisions

    由以上内容可知,磁盘分区是针对磁盘级别进行的操作,而不是分区级别

    4.2.检查分区挂载情况

    保存退出后需要重新检测分区挂载情况,如果/dev/vdb1又被挂载上去就需要重新卸载该分区

    root@zstest:~# df -h
    Filesystem Size Used Avail Use% Mounted on
    udev 7.9G 0 7.9G 0% /dev
    tmpfs 1.6G 3.2M 1.6G 1% /run
    /dev/vda1 50G 5.7G 41G 13% /
    tmpfs 7.9G 0 7.9G 0% /dev/shm
    tmpfs 5.0M 0 5.0M 0% /run/lock
    tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
    tmpfs 1.6G 0 1.6G 0% /run/user/0
    /dev/vdb1 50G 52M 47G 1% /data
    root@zstest:~# umount /dev/vdb1
    root@zstest:~# df -h
    Filesystem Size Used Avail Use% Mounted on
    udev 7.9G 0 7.9G 0% /dev
    tmpfs 1.6G 3.2M 1.6G 1% /run
    /dev/vda1 50G 5.7G 41G 13% /
    tmpfs 7.9G 0 7.9G 0% /dev/shm
    tmpfs 5.0M 0 5.0M 0% /run/lock
    tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
    tmpfs 1.6G 0 1.6G 0% /run/user/0

    4.3.重新读取分区表信息

    1)检查文件系统

    e2fsck -f /dev/vdb1 

    2)变更文件系统大小

    resize2fs /dev/vdb1 

    注意:

    使用 e2fsck 时,由于系统需要检查并订正文件系统元数据,所以速度较慢、耗时较长,请耐心等待。
    正确使用 e2fsck 和 resize2fs 指令,不会造成原有数据丢失。

    root@zstest:~# e2fsck -f /dev/vdb1
    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/vdb1: 14/3276800 files (0.0% non-contiguous), 251700/13106944 blocks
    
    root@zstest:~# resize2fs /dev/vdb1
    resize2fs 1.42.13 (17-May-2015)
    Resizing the filesystem on /dev/vdb1 to 15728384 (4k) blocks.
    The filesystem on /dev/vdb1 is now 15728384 (4k) blocks long.

    5.挂载新分区

    5.1.重新挂载分区到指定目录

    mount /dev/vdb1 /data
    root@zstest:~# mount /dev/vdb1 /data
    root@zstest:~# df -h
    Filesystem Size Used Avail Use% Mounted on
    udev 7.9G 0 7.9G 0% /dev
    tmpfs 1.6G 3.2M 1.6G 1% /run
    /dev/vda1 50G 5.7G 41G 13% /
    tmpfs 7.9G 0 7.9G 0% /dev/shm
    tmpfs 5.0M 0 5.0M 0% /run/lock
    tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
    tmpfs 1.6G 0 1.6G 0% /run/user/0
    /dev/vdb1 59G 52M 56G 1% /data

    5.2.配置开机器自动挂载分区

    vim /etc/fstab 
    root@zstest:/data# vim /etc/fstab 
    ......
    /dev/vdb1 /data ext4 defaults 0 0

    6.重启系统进行验证

    检查文件,确认磁盘扩容成功

    root@zstest:~# tree /data/
    /data/
    ├── lost+found
    └── test
    ├── 20180327
    └── 20180327.txt

    注意:

    虽然操作是无损扩容,但是为防止无操作造成的损失,最好提前做好数据备份,或做快照

    阿里云提示的注意事项:

    1.磁盘扩容功能只能扩容数据盘,不能扩容系统盘或本地盘(本地 SSD 盘等)。
    2.挂载在实例上的数据盘,只有当实例处于 运行中 (Running) 或 已停止 (Stopped) 状态时才可以扩容。
    无论数据盘的状态是 待挂载 还是 使用中,都可以执行磁盘扩容操作。
    3.扩容这种数据盘需要在控制台上重启实例后才能使扩容后的容量生效,而重启实例会停止实例,中断您的业务,所以请您谨慎操作。
    4.建议在扩容数据盘之前手动创建快照,以备份数据。
    5.如果数据盘正在创建快照,则不允许执行扩容数据盘的操作。
    6.包年包月实例如果做过 续费降配 操作,当前计费周期的剩余时间内,实例上的包年包月云盘不支持扩容磁盘操作。

    经验分享:

    1.重新分区(创建分区表)并不会删除磁盘分区的数据,格式化则会删除,
    2.分区类型及个数最好不要调整

    完毕,呵呵呵呵

  • 相关阅读:
    C#经典书籍推荐 [转]
    ubuntu的ADSL拨号上网(主要是无线网情况下) [转]
    2007元旦粤北山区:我的“多背1公斤”
    Javascript中给动态生成的表格添加样式,JavaScript里setAttribute的问题
    Asp.net2.0的AjaxPro中不能使用Server.HtmlEncode()函数?
    去了深圳出差,到了珠海泡温泉
    2007元旦粤北山区:翻山越岭到乳源,半途而废云门寺,风雨兼程向瑶山
    很好很强大的FLEX控件
    PHP生成PDF文档的FPDF类
    Flex,事件,绑定,机制
  • 原文地址:https://www.cnblogs.com/tssc/p/8659140.html
Copyright © 2011-2022 走看看