Mind Chicken Soup


不要着急,最好的总会在最不经意的时候出现.

阿里云ECS磁盘扩容

随着公司的业务不断增长,原有数据盘无法满足数据存储的需求,决定对磁盘进行扩容。

1、扩容前记录服务启动情况,便于扩容后做相关服务启动检查

[root@HKXJP-NODE-A1 coin_node]# netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0 0 0.0.0.0:8332 0.0.0.0:*               LISTEN      6097/./bitcoind
tcp        0 0 0.0.0.0:8333 0.0.0.0:*               LISTEN      6097/./bitcoind
tcp        0 0 0.0.0.0:80 0.0.0.0:*               LISTEN      17408/nginx: master
tcp        0 0 0.0.0.0:27732 0.0.0.0:*               LISTEN      4913/./qtumd
tcp        0 0 0.0.0.0:27733 0.0.0.0:*               LISTEN      4913/./qtumd
tcp        0 0 0.0.0.0:8088 0.0.0.0:*               LISTEN      17252/java
tcp        0 0 127.0.0.1:32000 0.0.0.0:*               LISTEN      10766/java
tcp        0 0 0.0.0.0:10050 0.0.0.0:*               LISTEN      28337/zabbix_agentd
tcp        0 0 0.0.0.0:802 0.0.0.0:*               LISTEN      17408/nginx: master
tcp        0 0 0.0.0.0:8899 0.0.0.0:*               LISTEN      17408/nginx: master
tcp        0 0 0.0.0.0:20100 0.0.0.0:*               LISTEN      21273/sshd
tcp        0 0 127.0.0.1:8005 0.0.0.0:*               LISTEN      17252/java
tcp        0 0 0.0.0.0:8009 0.0.0.0:*               LISTEN      17252/java
tcp6       0 0 :::8333                 :::*                    LISTEN      6097/./bitcoind
tcp6       0 0 :::27733                :::*                    LISTEN      4913/./qtumd
tcp6       0 0 :::10050                :::*                    LISTEN      28337/zabbix_agentd

2、记录相关服务进程

[root@HKXJP-NODE-A1 ]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1 0.0 0.0 43636 3312 ?        Ss   14:35 0:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root         2 0.0 0.0 0 0 ?        S    14:35 0:00 [kthreadd]
root         3 0.0 0.0 0 0 ?        S    14:35 0:00 [ksoftirqd/0]
root         5 0.0 0.0 0 0 ?        S<   14:35 0:00 [kworker/0:0H]
root         7 0.0 0.0 0 0 ?        S    14:35 0:00 [migration/0]
root         8 0.0 0.0 0 0 ?        S    14:35 0:00 [rcu_bh]
root         9 0.1 0.0 0 0 ?        R    14:35 0:03 [rcu_sched]
root        10 0.0 0.0 0 0 ?        S    14:35 0:00 [watchdog/0]
root        11 0.0 0.0 0 0 ?        S    14:35 0:00 [watchdog/1]
root        12 0.0 0.0 0 0 ?        S    14:35 0:00 [migration/1]
root        13 0.0 0.0 0 0 ?        S    14:35 0:00 [ksoftirqd/1]
root        15 0.0 0.0 0 0 ?        S<   14:35 0:00 [kworker/1:0H]
root        17 0.0 0.0 0 0 ?        S    14:35 0:00 [kdevtmpfs]
root        18 0.0 0.0 0 0 ?        S<   14:35 0:00 [netns]
root        19 0.0 0.0 0 0 ?        S    14:35 0:00 [khungtaskd]
root        20 0.0 0.0 0 0 ?        S<   14:35 0:00 [writeback]
root        21 0.0 0.0 0 0 ?        S<   14:35 0:00 [kintegrityd]
root        22 0.0 0.0 0 0 ?        S<   14:35 0:00 [bioset]
root        23 0.0 0.0 0 0 ?        S<   14:35 0:00 [kblockd]
root        24 0.0 0.0 0 0 ?        S<   14:35 0:00 [md]
root        31 0.0 0.0 0 0 ?        S    14:35 0:02 [kswapd0]
root        32 0.0 0.0 0 0 ?        SN   14:35 0:00 [ksmd]
root        33 0.0 0.0 0 0 ?        SN   14:35 0:00 [khugepaged]
root        34 0.0 0.0 0 0 ?        S<   14:35 0:00 [crypto]
root        42 0.0 0.0 0 0 ?        S<   14:35 0:00 [kthrotld]
root        44 0.0 0.0 0 0 ?        S<   14:35 0:00 [kmpath_rdacd]
root        45 0.0 0.0 0 0 ?        S<   14:35 0:00 [kpsmoused]
root        46 0.0 0.0 0 0 ?        S<   14:35 0:00 [ipv6_addrconf]
root        65 0.0 0.0 0 0 ?        S<   14:35 0:00 [deferwq]
root        98 0.0 0.0 0 0 ?        S    14:35 0:00 [kauditd]
root       228 0.0 0.0 0 0 ?        S    14:35 0:01 [kworker/u4:2]
root       233 0.0 0.0 0 0 ?        S<   14:35 0:00 [ata_sff]
root       244 0.0 0.0 0 0 ?        S    14:35 0:00 [scsi_eh_0]
root       245 0.0 0.0 0 0 ?        S<   14:35 0:00 [scsi_tmf_0]
root       246 0.0 0.0 0 0 ?        S    14:35 0:00 [scsi_eh_1]
root       247 0.0 0.0 0 0 ?        S<   14:35 0:00 [scsi_tmf_1]
root       249 0.0 0.0 0 0 ?        S<   14:35 0:00 [ttm_swap]
root       261 0.0 0.0 0 0 ?        S<   14:35 0:00 [kworker/0:1H]
root       265 0.0 0.0 0 0 ?        S    14:35 0:00 [jbd2/vda1-8]
root       266 0.0 0.0 0 0 ?        S<   14:35 0:00 [ext4-rsv-conver]
root       337 0.0 0.0 0 0 ?        S<   14:35 0:00 [kworker/1:1H]
root       338 0.0 0.0 55360 2908 ?        Ss   14:35 0:00 /usr/lib/systemd/systemd-journald
root       356 0.0 0.0 116596 1056 ?        Ss   14:35 0:00 /usr/sbin/lvmetad -f
root       366 0.0 0.0 44016 1536 ?        Ss   14:35 0:00 /usr/lib/systemd/systemd-udevd
root      1407 0.0 0.0 0 0 ?        S<   14:35 0:00 [edac-poller]
root      1579 0.0 0.0 0 0 ?        S<   14:35 0:00 [rpciod]
root      1580 0.0 0.0 0 0 ?        S<   14:35 0:00 [xprtiod]
root      1586 0.0 0.0 62032 1032 ?        S<sl 14:35 0:00 /sbin/auditd
root      1609 0.0 0.0 428300 2928 ?        Ssl  14:35 0:00 /usr/sbin/rsyslogd -n
root      1612 0.0 0.0 26376 1636 ?        Ss   14:35 0:00 /usr/lib/systemd/systemd-logind
root      1613 0.0 0.0 21652 1100 ?        Ss   14:35 0:00 /usr/sbin/irqbalance --foreground
dbus      1614 0.0 0.0 58072 2152 ?        Ss   14:35 0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
polkitd   1641 0.0 0.0 538404 7240 ?        Ssl  14:35 0:00 /usr/lib/polkit-1/polkitd --no-debug
root      1698 0.0 0.0 201616 3232 ?        Ssl  14:35 0:00 /usr/sbin/gssproxy -D
root      1707 0.0 0.0 25900 924 ?        Ss   14:35 0:00 /usr/sbin/atd -f
root      1710 0.0 0.0 126280 1600 ?        Ss   14:35 0:00 /usr/sbin/crond -n
root      1713 0.0 0.0 110092 840 ttyS0    Ss+  14:35 0:00 /sbin/agetty --keep-baud 115200 38400 9600 ttyS0 vt220
root      1714 0.0 0.0 110092 824 tty1     Ss+  14:35 0:00 /sbin/agetty --noclear tty1 linux
root      1911 0.0 0.1 573456 13744 ?        Ssl  14:35 0:00 /usr/bin/python -Es /usr/sbin/tuned -l -P
ntp       1981 0.0 0.0 29948 1756 ?        Ss   14:35 0:00 /usr/sbin/ntpd -u ntp:ntp -g
root      2065 0.0 0.0 31676 1632 ?        Ssl  14:35 0:01 /usr/local/aegis/aegis_update/AliYunDunUpdate
root      2178 0.0 0.0 122088 1320 ?        Sl   14:35 0:01 /usr/local/cloudmonitor/wrapper/bin/./wrapper /usr/local/cloudmonitor/wrapper/bin/../conf/wrapper.conf wrapper.syslog.ident=cloudmonitor wrapper.pidfile=/usr/local/cloudmo
root      2377 0.2 0.0 126572 4432 ?        Ssl  14:35 0:11 /usr/local/aegis/aegis_client/aegis_10_51/AliYunDun
root      2600 0.7 0.7 2516296 61520 ?       Sl   14:35 0:26 /usr/local/cloudmonitor/jre/bin/java -Djava.compiler=none -XX:-UseGCOverheadLimit -XX:NewRatio=1 -XX:SurvivorRatio=8 -XX:+UseSerialGC -Djava.io.tmpdir=../../tmp -Xms16m -X
zabbix    2751 0.0 0.0 80748 1240 ?        S    14:35 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix    2945 0.0 0.0 80748 1436 ?        S    14:35 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix    2947 0.0 0.0 80872 2004 ?        S    14:35 0:01 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix    2948 0.0 0.0 80872 2004 ?        S    14:35 0:01 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix    2949 0.0 0.0 80872 2004 ?        S    14:35 0:01 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix    2950 0.0 0.0 80880 1824 ?        S    14:35 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root      4438 0.0 0.0 110212 2464 ?        Ss   14:35 0:00 /usr/sbin/sshd -D
root      5226 0.0 0.0 74196 2188 ?        Ssl  14:35 0:00 /usr/sbin/aliyun-service
root     12400 0.1 0.0 0 0 ?        S    14:40 0:04 [jbd2/vdb-8]
root     12401 0.0 0.0 0 0 ?        S<   14:40 0:00 [ext4-rsv-conver]
root     12502 0.6 7.5 3643744 604764 ?      Sl   14:41 0:23 //bin/java -Djava.util.logging.config.file=/usr/local/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xms512m -X
root     13962 0.0 0.0 0 0 ?        R    14:50 0:00 [kworker/0:1]
root     14314 3.3 3.9 1463692 312980 ?      Ssl  14:51 1:34 ./bitcoind --conf=/disk/coin_node/btc/btc.conf
root     14493 0.7 3.8 1988272 309176 ?      Ssl  14:52 0:20 ./qtumd --conf=/disk/coin_node/qtum-0.15.2/quantum.conf
root     14951 126 9.9 1730648 795116 ?      SLsl 14:55 54:12 ./omnicored --conf=/disk/coin_node/usdt/usdt.conf
root     15796 0.0 0.0 0 0 ?        S    15:00 0:00 [kworker/1:0]
root     18584 0.0 0.0 0 0 ?        S    15:16 0:00 [kworker/u4:1]
root     18745 0.0 0.0 56616 1120 ?        Ss   15:17 0:00 nginx: master process /usr/sbin/nginx
nginx    18746 0.0 0.0 57168 2268 ?        S    15:17 0:00 nginx: worker process
nginx    18747 0.0 0.0 57168 2272 ?        S    15:17 0:00 nginx: worker process
root     19253 0.0 0.0 0 0 ?        S    15:20 0:00 [kworker/1:2]
root     20791 0.0 0.0 0 0 ?        S    15:30 0:00 [kworker/0:0]
root     22150 0.1 0.0 152004 5172 ?        Ss   15:38 0:00 sshd: prod-user [priv]
prod-us+ 22167 0.0 0.0 152004 2232 ?        S    15:38 0:00 sshd: prod-user@pts/1
prod-us+ 22168 0.0 0.0 115440 2028 pts/1    Ss   15:38 0:00 -bash
root     22204 0.0 0.0 197732 2912 pts/1    S    15:38 0:00 sudo bash
root     22205 0.0 0.0 115440 2128 pts/1    S    15:38 0:00 bash
root     22224 0.0 0.0 0 0 ?        S    15:38 0:00 [kworker/u4:0]
root     22225 0.0 0.0 155328 1884 pts/1    R+   15:38 0:00 ps aux

3、查看磁盘信息, 未扩容前/dev/vdb 是500G,接下来扩容到1000G, 即1T磁盘容量

[root@HKXJP-NODE-A1]# fdisk  -l

Disk /dev/vda: 21.5 GB, 21474836480 bytes, 41943040 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
Disk label type: dos
Disk identifier: 0x0008d73a

  Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048 41943039 20970496 83  Linux

Disk /dev/vdb: 536.9 GB, 536870912000 bytes, 1048576000 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

4、登录阿里云控制台-找到对应的ECS实例–>本实例磁盘,在要扩容的磁盘信息中选择磁盘扩容,输入要扩容的大小,购买后通过控制台重启ECS实例

5、操作前对磁盘打个快照时间点,避免出现意外情况,给自己留一手可退余地。注意:磁盘快照根据大小所需要的时间也不同,应该在未扩容前对磁盘进行快照。

6、使用fdisk -l可以看出新增的磁盘容量已经发生了变化,此时磁盘容量为1073.7GB

[root@HKXJP-NODE-A1]# fdisk  -l

Disk /dev/vda: 21.5 GB, 21474836480 bytes, 41943040 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
Disk label type: dos
Disk identifier: 0x0008d73a

  Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048 41943039 20970496 83  Linux

Disk /dev/vdb: 1073.7 GB, 1073741824000 bytes, 2097152000 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

7、卸载挂载点,检查文件系统,通知系统内核变更文件系统大小

[root@HKXJP-NODE-A1 ]# umount  /dev/xdb
[root@HKXJP-NODE-A1]# e2fsck -f /dev/vdb
[root@HKXJP-NODE-A1]# resize2fs /dev/vdb

8、重新挂载磁盘,新的扩容已经成功,接下来把上面记录的服务依次启动就行了。

[root@HKXJP-NODE-A1]# mount /dev/vdb /disk/
[root@HKXJP-NODE-A1]# df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G   11G  7.7G  59% /
devtmpfs        3.9G     0 3.9G   0% /dev
tmpfs           3.9G     0 3.9G   0% /dev/shm
tmpfs           3.9G  440K  3.9G   1% /run
tmpfs           3.9G     0 3.9G   0% /sys/fs/cgroup
tmpfs           783M     0  783M   0% /run/user/1001
/dev/vdb        985G  443G  493G  48% /disk

注意点:

1)磁盘扩容功能只能扩容数据盘,不能扩容系统盘或本地盘,并且只能扩大不能缩小。

2)如果磁盘未分区并格式化挂载到服务器,只需要执行e2fsck -f /dev/vdb和resize2fs /dev/vdb

3)如果之前划分了多个分区,需要把分区全部删除,然后重建。 一定要保持扇区的一致性。

 

 

上面说到不支持扩容系统盘,后面阿里云又进行了升级

 

扩容方法:

  1. yum install xfsprogs

  • 分区格式支持mbr、gpt

  • 文件系统支持ext*、xfs、btrfs

运行growpart <DeviceName> <PartionNumber>命令调用growpart为需要扩容的云盘和对应的第几个分区扩容。

示例命令表示为系统盘的第一个分区扩容。 vda 1  是第一个分区,注意中间要有空格。

[root@ecshost ~]# growpart /dev/vda 1
CHANGED: partition=1 start=2048 old: size=41940992 end=41943040 new: size=209710462,end=209712510

若运行命令后报以下错误,您可以运行LANG=en_US.UTF-8切换ECS实例的字符编码类型。

[root@ecshost ~]# growpart /dev/vda 1
unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]
[root@ecshost ~]#.UTF-8

运行resize2fs <PartitionName>命令调用resize2fs扩容文件系统。

示例命令表示为扩容系统盘的/dev/vda1分区文件系统。

[root@ecshost ~]# resize2fs /dev/vda1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 7
The filesystem on /dev/vda1 is now 26213807 blocks long.

说明 如果您使用的是xfs文件系统,运行xfs_growfs /dev/vda1命令扩容文件系统。