扩容Seafile磁盘空间
因为默认Seafile安装位置额空间仅剩不到10G,所以需要扩展Seafile的数据存储空间
seafile使用容器安装在centOS7中,其数据存储在/opt目录下,在确定扩容方案前需要确定:
扩容前准备
1. 查看/opt目录占用空间大小
[nick@192 ~]$ sudo du -sh /opt
35G /opt
可以看到目录对应的占用的空间是35G
2. 确认剩余空间,查看目录分区类型,即/opt目录是根分区还是逻辑卷
- df -h查看挂载点
[nick@192 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 3.8G 18M 3.8G 1% /run
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/mapper/centos-root 400G 43G 358G 11% /
/dev/mapper/centos-home 57G 1008M 56G 2% /home
/dev/sdb1 1014M 192M 823M 19% /boot
tmpfs 775M 0 775M 0% /run/user/1000
在
df
命令的输出中,Filesystem 表示系统中已挂载的存储设备或文件系统的名称。它对应具体的存储单元(如硬盘分区、虚拟文件系统等),用于标识不同存储资源的来源或类型.
常见示例
- 物理设备
如/dev/sda2
、/dev/nvme0n1p3
等,表示实际的硬盘分区。- 虚拟文件系统
如tmpfs
(内存驻留的临时文件系统)、devtmpfs
(设备文件系统)等
- 继续查看df -h /opt挂载点
[nick@192 ~]$ df -h /opt
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 400G 43G 358G 11% /
从结果可以确认/opt目录对应逻辑卷挂载关系,挂载点为/,文件系统设备名/dev/mapper/centos-root,可用空间358G(扩容后的结果)
- 在 Linux 系统中,**
/dev/mapper
是逻辑卷管理(LVM)相关的设备映射目录,表示通过 LVM 创建的逻辑卷(Logical Volume)**。LVM 的核心组件:
- **物理卷(PV)**:指实际的硬盘或分区(如
/dev/sda1
)。- **卷组(VG)**:由多个物理卷组成的存储池。
- **逻辑卷(LV)**:从卷组中划分出的虚拟分区,对应
/dev/mapper
下的设备名(如/dev/mapper/vg_data-lv_root
)- 在
df
或lsblk
等命令的输出中,若出现/dev/mapper/xxx
形式的设备名,通常表示该存储单元由 LVM 动态管理,而非直接对应物理硬盘分区.- 当
df
显示/dev/mapper
路径时,表明该文件系统基于 LVM 逻辑卷创建,具有动态扩展、灵活调整存储空间等优势./dev/mapper
设备是对物理硬盘的抽象,实际数据可能分布在多个物理分区或硬盘上,可通过lvdisplay
或lsblk
命令查看逻辑卷的具体组成和关联的物理设备
- 使用lvdisplay查看逻辑卷
[nick@192 dev]$ sudo lvdisplay
[sudo] password for nick:
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID lk0Fm6-nUAf-Ip2Y-kV0F-EHuX-yaoz-HRMupP
LV Write Access read/write
LV Creation host, time localhost, 2020-08-22 16:26:33 +0800
LV Status available
# open 2
LV Size 7.75 GiB
Current LE 1984
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID H7Ww1G-cF4l-3bab-SehI-YzZN-ddvM-mR5zry
LV Write Access read/write
LV Creation host, time localhost, 2020-08-22 16:26:36 +0800
LV Status available
# open 1
LV Size 400.00 GiB
Current LE 102400
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/centos/home
LV Name home
VG Name centos
LV UUID y41Wdv-s19W-onBm-KFMm-xACp-tRJR-f9tZl8
LV Write Access read/write
LV Creation host, time 192.168.0.120, 2025-04-29 15:23:56 +0800
LV Status available
# open 1
LV Size 57.00 GiB
Current LE 14592
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
可以看到结果中的逻辑卷路径/dev/centos/root,逻辑卷名称root,卷组名称centos
- 使用lsblk查看磁盘列表和分区类型
[nick@192 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda2 8:2 0 11.8G 0 part
├─sda3 8:3 0 224.1G 0 part
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 225G 0 part
sdb 8:16 0 465.8G 0 disk
├─sdb1 8:17 0 1G 0 part /boot
└─sdb2 8:18 0 464.8G 0 part
├─centos-root 253:0 0 400G 0 lvm /
├─centos-swap 253:1 0 7.8G 0 lvm [SWAP]
└─centos-home 253:2 0 57G 0 lvm /home
sdc 8:32 0 238.5G 0 disk
├─sdc1 8:33 0 39.2M 0 part
├─sdc2 8:34 0 11.9G 0 part
└─sdc3 8:35 0 226.6G 0 part
可以从结果中看到共有3块物理磁盘sda,sdb,sdc,以及各自的分区,仅仅挂载了sdb
lsblk
用于以树状结构显示系统中所有块设备(如硬盘、分区、逻辑卷等)的层级关系和基本信息,适用于快速查看磁盘拓扑结构、分区布局及挂载点。TYPE为设备类型:disk
(物理磁盘)、part
(分区)、lvm
(逻辑卷)等
未挂载的硬盘显示为TYPE="disk"
且无MOUNTPOINT
信息(如/dev/sdb
)
- 继续使用lsblk查看/dev/mapper/centos-root的分区
[nick@192 ~]$ sudo lsblk /dev/mapper/centos-root
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
centos-root 253:0 0 400G 0 lvm /
[nick@192 ~]$ lsblk | grep -E "centos-root|centos-home"
├─centos-root 253:0 0 400G 0 lvm /
└─centos-home 253:2 0 57G 0 lvm /home
通过上面结果可以确认目录/opt
对应的设备/dev/mapper/centos-root
是挂载在物理磁盘sdb分区sdb2逻辑卷(LV)centos-root
上
3. 查看此分区设备/逻辑卷的文件系统类型
[nick@192 ~]$ sudo blkid /dev/mapper/centos-root
[sudo] password for nick:
/dev/mapper/centos-root: UUID="09df98d9-66a7-4b38-a9ec-37091905e36f" TYPE="xfs"
[nick@192 dev]$ sudo blkid /dev/centos/root
[sudo] password for nick:
/dev/centos/root: UUID="09df98d9-66a7-4b38-a9ec-37091905e36f" TYPE="xfs"
[nick@192 ~]$ sudo blkid /dev/mapper/centos-home
/dev/mapper/centos-home: UUID="7355112c-6763-4620-8f82-19c6edd8e516" TYPE="xfs"
以上结果可以确认文件系统类型是xfs
- XFS文件系统不支持直接缩减逻辑卷空间(
lvreduce
),强行操作会导致数据损坏。但支持在线扩展逻辑卷(lvextend
)后使用xfs_growfs
调整文件系统.替代方案:需通过删除原逻辑卷(lvremove
)→重建新逻辑卷(lvcreate
)的方式调整空间,扩展逻辑卷后,可直接通过xfs_growfs
在线调整文件系统,无需卸载分区。- EXT4文件系统调整需配合
resize2fs
命令
扩展方案
方案一,使用同一个硬盘另一个分区的空间扩容seafile所在分区(最终选择这个方法)
这个方案是把centos-home逻辑卷的可用空间扩展到centos-root中。
得益于该文件系统基于 LVM 逻辑卷创建,具有动态扩展、灵活调整存储空间等优势,但是由于文件系统类型是xfs,不支持直接缩减逻辑卷空间,所以第一个方案是删除原逻辑卷centos-home,之后扩展centos-root逻辑卷并扩展文件系统。
具体步骤如下:
一、数据备份与预处理
备份/home目录:
考虑到后续需要解挂载/home目录,所以先备份/home/目录内容
mkdir /backup
tar -zcvf /backup/home.tar.gz /home/*
新建backup并备份到其中
终止占用进程:
强制终止占用/home的进程
fuser -km /home # 强制终止占用/home的进程,`-km`参数会终止所有占用`/home`的进程,解决卸载时的“设备忙”报错
处理
fuser
命令缺失问题
- 安装
psmisc
软件包sudo yum install psmisc -y # CentOS/RHEL系统安装fuser命令
- 验证安装结果
which fuser # 检查命令路径,正常应输出`/usr/bin/fuser`
- 重新执行原命令
sudo fuser -km /home # 强制终止占用/home目录的进程
二、释放目标空间
因为不能使用lvreduce缩减centos-home逻辑卷,所以首先卸载/home并删除逻辑卷
卸载逻辑卷:
umount /home # 卸载/home挂载点
若提示
target is busy
,再次执行fuser -km /home
删除原home逻辑卷:
lvremove /dev/mapper/centos-home # 输入y确认删除
删除逻辑卷报错 Logical volume centos/home contains a filesystem in use.强制终止占用进程并卸载逻辑卷
- 终止所有占用进程:
sudo fuser -km /home # 强制终止所有使用/home的进程
- 再次尝试卸载逻辑卷:
sudo umount /home # 确认卸载操作
- 验证卸载状态:
mount | grep '/home' # 输出为空表示已卸载
- 执行逻辑卷删除:
sudo lvremove /dev/mapper/centos-home # 此时应无报错
操作注意事项
- 数据风险:强制终止进程可能导致未保存数据丢失,操作前务必验证备份完整性
- 服务影响:若发现关键系统进程(如
sshd
、dbus-daemon
)占用,建议在维护窗口操作 - 异常处理:若仍提示
filesystem in use
,需排查是否存在残留挂载点或NFS共享等隐藏依赖
- 终止所有占用进程:
三、空间重新分配
扩展root逻辑卷:
lvextend -L +350G /dev/mapper/centos-root # 增加350G空间
调整文件系统:
xfs_growfs /dev/mapper/centos-root # XFS文件系统适用
重建home逻辑卷:
lvcreate -L 57G -n home centos # 假设原home有407G,保留57G mkfs.xfs /dev/centos/home # 按原文件系统类型格式化
四、挂载恢复与验证
挂载新home逻辑卷:
mount /dev/mapper/centos-home /home tar -zxvf /backup/home.tar.gz -C /home/ # 数据恢复
持久化配置:
vi /etc/fstab # 确认home挂载条目设备路径正确
空间验证:
df -h /home / # 确认root增加350G,home缩减至57G
方案二,给主机添加新硬盘并将seafile的数据存储空间配置到新硬盘上
一、检测新硬盘
查看磁盘列表
lsblk
未挂载的硬盘显示为
TYPE="disk"
且无MOUNTPOINT
信息(如/dev/sdb
)
补充验证命令:fdisk -l
fdisk -l
用于列出系统中所有磁盘及分区的详细信息,包括设备名称、分区表结构、起始结束扇区、分区类型和文件系统类型等。该命令需管理员权限执行确认硬盘路径
新硬盘通常命名为/dev/sdb
、/dev/sdc
(按添加顺序命名),容量与预期一致
二、分区与格式化
创建分区
fdisk /dev/sdb
交互操作顺序:
n
→ 新建分区p
→ 主分区(默认覆盖整个硬盘)- 连续按回车接受默认值
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p # 选择主分区
Partition number (1-4, default 1): 1 # 分区编号
First sector (2048-20971519, default 2048): # 起始扇区(默认回车)
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +200M # 指定分区大小
- 创建LVM逻辑卷,设置类型为8e
Command (m for help): t
Partition number (1-3, default 3): 3 # 选择目标分区
Hex code (type L to list all codes): 8e # 设置类型为 Linux LVM
Changed type of partition 'Linux filesystem' to 'Linux LVM'.
w
→ 保存分区表13
Command (m for help): w
The partition table has been altered!
- 刷新分区表
partprobe /dev/sdb
之后可以新建物理卷并将新物理卷加入到之前的卷组中达到扩展
3. 创建新分区并加入LVM:
pvcreate /dev/sdb1
验证物理卷创建:
pvs # 简要查看PV列表
[nick@192 dev]$ sudo pvs [sudo] password for nick: PV VG Fmt Attr PSize PFree /dev/sdb2 centos lvm2 a-- <464.76g 8.00m
扩展卷组:
将新物理卷加入现有卷组vgextend centos /dev/sdb1 # 将新物理卷加入卷组
扩展逻辑卷并应用:
lvextend -l +100%FREE /dev/mapper/centos-root xfs_growfs /dev/mapper/centos-root # XFS文件系统适用
检查扩容结果:
df -h /opt # 确认空间已增加
**修改挂载配置(如路径变更)**:
echo "/dev/mapper/centos-root / xfs defaults 0 0" >> /etc/fstab
- 仅当挂载路径或设备变更时需修改
fstab
- 仅当挂载路径或设备变更时需修改
或者挂载为新的目录之后再修改seafile数据存储目录
3. 格式化分区
mkfs -t ext4 /dev/sdb1 # 格式化为 ext4 文件系统
(支持替换为 xfs
等其他格式,需与系统其他分区一致)
三、挂载硬盘
创建挂载目录
mkdir /mnt/new_disk # 目录名可自定义(需为空目录)
临时挂载
mount /dev/sdb1 /mnt/new_disk
验证挂载结果:
df -h | grep /mnt/new_disk
永久挂载
编辑/etc/fstab
文件,添加:/dev/sdb1 /mnt/new_disk ext4 defaults 0 0
执行命令生效:
mount -a
四、验证与维护
重启验证
reboot df -h # 检查挂载点是否自动加载
**权限调整(可选)**
若需指定目录权限:chmod 755 /mnt/new_disk # 设置目录权限 chown user:group /mnt/new_disk # 修改属主和属组
关键注意事项
- 分区类型选择
- 单个分区建议使用主分区(
p
) - 多分区需创建扩展分区(
e
)后再划分逻辑分区
- 单个分区建议使用主分区(
- 文件系统一致性
建议与系统其他分区使用相同格式(如ext4
或xfs
),避免兼容性问题 - 挂载目录要求
目标目录必须为空,否则原有文件会被隐藏但不会被删除