ubuntu挂载sd卡到分区目录+修改docker镜像存储位置
一、 挂载SD卡到/data
1、查看Linux硬盘信息
lsblk 或 fdisk -l
lsblk
新的硬盘,最好删除之前的分区,再新建分区/dev/sda1
删除分区:(都选择默认)
fdisk /dev/sda
输入:d
磁盘新建分区(假如/dev/sda是要挂载的硬盘):
$ sudo fdisk /dev/sda
输入m可查看命令帮助[可选操作]
输入n,新增分区,分区类型可选:p primary; l logic
输入p,分区号选择3或4,1和2系统已占用
输入起始扇区和结束扇区,一般默认即可。特殊情况下,需根据已有分区扇区使用情况确定。如上图中三个分区,那么起始扇区可以设置在 /dev/sda2结束分区之后,
/dev/sda2 结束扇区为 41940991,那么新分区的起始扇区需要比它大,如:41940995. 结束扇区默认即可
输入w,保存修改
$ sudo partprobe # 使分区生效
$ sudo fdisk -l # 查看刚才新建的分区
2、可以安装hdparm 测试一下磁盘的读写速率(可选)
apt-get install hdparm
hdparm -cdt /dev/sda1
3、格式化新硬盘(很危险,注意操作时确定硬盘分区的位置),ext4格式
(不格式化后续可能出问题,比如docker迁移到硬盘里面,运行不了)
mkfs.ext4 /dev/sda1
4、创建/data目录(/data目录为硬盘将挂载的地方)
创建一个目录,比如/data
mkdir /data
5、挂载分区
mount /dev/sda1 /data
df -h或mount命令查看:
df -h
mount查看详细挂载情况,ext4格式:
mount
6、lsattr查看挂载文件夹的可操作属性(大致就可以)
lsattr
7、搞个所有用户可操作,防止其它用户存不了文件
chmod -R +777 /data/
8、配置开机自动挂载
方法1:(建议不要使用,修改/etc/fstab的方式,配置不正确可能会导致系统无法正常启动,也就是说如果没有硬盘的话,硬盘拔掉的话,会导致开机启动系统起不来)
mount命令会在重启服务器后失效,所以要将分区信息写到/etc/fstab文件中让它永久挂载
$ vi /etc/fstab # 编辑 fstab 文件
# 在文件中加入下面代码
/dev/sda1 /data ext4 defaults 0 1
/etc/fstab文件的每一行都遵循以下格式:
修改/etc/fstab文件后,运行:
mount -a
方法2:(在启动脚本中挂载,推荐使用)
也可以通过开机启动脚本的方式配置开机自动挂载:
脚本示例:
vi /etc/rc.local
#!/bin/bash
#先停止docker服务
docker stop $(docker ps -aq)
systemctl stop docker.service
sleep 1
#再挂载硬盘到目录下
[ -e /dev/sda1 -a -e /data ] && mount /dev/sda1 /data
#最后再重启docker
sync && systemctl daemon-reload && systemctl restart docker
9、后续故障处理
后期发现挂载的磁盘变为只读,Read-only file system
这种情况通常都是由于系统发现磁盘硬件故障或文件系统中文件被损坏之后而采取的保护机制导致的。为了保护数据不破坏分区中已有内容,
Linux在挂载文件系统时就只用read-only只读方式加载了。**造成这个问题的原因大多数是因为非正常关机后导致文件系统受损引起的**,
在系统重启之后,受损分区就会被Linux自动挂载为只读。解决的方法是通过fsck来修复文件系统,然后重启即可。
先卸载挂载的目录:
umount /data
ext4文件系统分区,修复文件操作案例:
fsck -f /dev/sda1
修复好之后,重新挂载:
mount /dev/sda1 /data
二、修改docker镜像存储路径
docker安装之后默认的服务数据存放根路径为/var/lib/docker目录下,
var目录默认使用的是根分区的磁盘空间;所以这是非常危险的事情;
随着我们镜像、启动的容器实例开始增多的时候,磁盘所消耗的空间也会越来越大,
所以我们必须要做数据迁移和修改docker服务的默认存储位置路径;
有多种方式是可以修改docker默认存储目录路径的,但是最好是在docker安装完成后,
第一时间便修改docker的默认存储位置路径为其他磁盘空间较大的目录(一般企业中为/data目录),规避迁移数据过程中所造成的风险。
1、创建docker容器存放的路径
mkdir /data/docker
2、停止Docker服务并迁移数据到新目录
docker stop $(docker ps -aq)
systemctl stop docker.service
rsync -avz /var/lib/docker/ /data/docker/
3、修改Docker配置文件
方法1:-----------------------------------------------------------------------------
mkdir -p /etc/systemd/system/docker.service.d/
编辑文件:
vim /etc/systemd/system/docker.service.d/devicemapper.conf
添加如下内容:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/data/docker/
方法2:----------------------------------------------------------------------------------------
sudo vim /etc/docker/daemon.json #没有就创建
#在json串中添加内容如下
"data-root": "/data/docker",
4、重启Docker服务
systemctl daemon-reload
systemctl restart docker
5、查看现在容器存放的目录
docker info | grep "Dir"
会显示:
Docker Root Dir: /data/docker