运维小白,在云服务器上部署了 Bitcoin Core daemon (bitcoind), 使用了主机的自带的 20G 存储。bitcoind 开始同步数据之后,第二天查看主机发现磁盘被用满了。
进入主机之后,敲命令时连自动补全都失效了:
cannot create temp file for here-document: No space left on device
悲催,之前一直以为某云服务商只要把硬盘加载到主机之后就会自动挂载。哎,智商捉急,然后开始了运维从入门到小白之路。
找到磁盘信息
sudo lshw -C disk
*-disk:0
description: SCSI Disk
physical id: 0.0.0
bus info: scsi@2:0.0.0
logical name: /dev/sda
size: 20GiB (21GB)
capabilities: partitioned partitioned:dos
configuration: logicalsectorsize=512 sectorsize=512 signature=d6ee97c2
*-disk:1
description: SCSI Disk
physical id: 0.0.2
bus info: scsi@2:0.0.2
logical name: /dev/sdb
size: 100GiB (107GB)
capabilities: partitioned partitioned:dos
configuration: logicalsectorsize=512 sectorsize=512 signature=5b9f9d07
可以看到有两块硬盘。
sudo fdisk -l | grep sd
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
/dev/sdb1 2048 209715199 209713152 100G 83 Linux
Disk /dev/sdc: 2 GiB, 2147483648 bytes, 4194304 sectors
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 41940991 41938944 20G 83 Linux
可以看到所有的存储设备,其中 sdb 就是我们即将要挂载到主机系统的硬盘。
挂载前设置硬盘
sudo fdisk /dev/sdb
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):
接着就是一些列命令行交互输入,输入 m 可看到所有的可用输入。大概知道了怎么操作之后,跟着下文的提示操作即可。
1.输入 p 查看 /dev/sdb 分区的状态
2.输入 n 创建 sdb 这块硬盘的分区
选 p primary => 输入 p
Partition number => 全部存储分一个区,所以输入 1
接下来选项默认即可
3.最后一步输入 w 保存并退出 Command 状态
分区成功之后,接着就是格式化硬盘。
sudo mkfs.ext3 /dev/sdb1
迁移旧的 home 目录文件到新硬盘
首先,你得挂载已经分区好的硬盘,然后把 home 目录下的全部文件拷贝到硬盘挂载的目录下。然后删除 home 目录,最后把第一步挂载好的新硬盘重新挂载在 home 目录下。下文是详细步骤。
这部分的内容得使用 root 用户登录主机,因为涉及到把 home 目录删除,所有的非 root 用户都会失效。
1.挂载设置好的硬盘
sudo mkdir /mnt/tmp
sudo mount /dev/sdb1 /mnt/tmp
2.同步 home 目录所有文件,删除之前的 home 目录下的所有文件
sudo rsync -avx /home/ /mnt/tmp
3.确定同步成功之后,删除旧 home 目录
rm -rf /home/* #deletes the old home
//卸载 /home
umount -l /home
4.重新挂载新硬盘并设置启动挂载
sudo mount /dev/sdb1 /home
设置系统启动挂载需要得到硬盘的信息
sudo blkid
/dev/sdb1: UUID="175ab25f-5190-4df7-8795-8a00a0f78fd6" TYPE="ext3" PARTUUID="5b9f9d07-01"
/dev/sdc: LABEL="YUNIFYSWAP" UUID="f490fae5-73c7-47a0-88df-084f3ed627e0" TYPE="swap"
/dev/sda1: UUID="5c51f0c7-6ad1-41e5-8026-a75466a07617" TYPE="ext4" PARTUUID="d6ee97c2-01"
获取到的 UUID 和 TYPE 在下文会用到。
接着编辑 /etc/fstab 文件,把以下代码添加到最后
UUID=175ab25f-5190-4df7-8795-8a00a0f78fd6 /home ext4 defaults 0 2
结束
运行 df -h 即可看到我们新挂载在 home 目录的硬盘设备
Filesystem Size Used Avail Use% Mounted on
udev 982M 0 982M 0% /dev
tmpfs 201M 12M 190M 6% /run
/dev/sda1 20G 2.8G 16G 16% /
tmpfs 1001M 0 1001M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
tmpfs 100K 0 100K 0% /run/lxcfs/controllers
tmpfs 201M 0 201M 0% /run/user/0
/dev/sdb1 99G 20G 75G 21% /home
tmpfs 201M 0 201M 0% /run/user/1001
/dev/sdb1 99G 20G 75G 21% /home 就是我们最终添加的,此刻可以退出 root 用户并用之前 home 目录下的用户登录主机了。