diff --git a/src/models/drive-file.ts b/src/models/drive-file.ts
index fc9c150724..0d0a6523de 100644
--- a/src/models/drive-file.ts
+++ b/src/models/drive-file.ts
@@ -8,11 +8,11 @@ import MessagingMessage, { deleteMessagingMessage } from './messaging-message';
 import User from './user';
 
 const DriveFile = monkDb.get<IDriveFile>('driveFiles.files');
-
 DriveFile.createIndex('metadata.uri', { sparse: true, unique: true });
-
 export default DriveFile;
 
+export const DriveFileChunk = monkDb.get('driveFiles.chunks');
+
 const getGridFSBucket = async (): Promise<mongo.GridFSBucket> => {
 	const db = await nativeDbConn();
 	const bucket = new mongo.GridFSBucket(db, {
@@ -93,7 +93,7 @@ export async function deleteDriveFile(driveFile: string | mongo.ObjectID | IDriv
 	}
 
 	// このDriveFileのチャンクをすべて削除
-	await monkDb.get('driveFiles.chunks').remove({
+	await DriveFileChunk.remove({
 		files_id: d._id
 	});
 
diff --git a/src/services/drive/add-file.ts b/src/services/drive/add-file.ts
index 30aae24ba6..279cdf0bc7 100644
--- a/src/services/drive/add-file.ts
+++ b/src/services/drive/add-file.ts
@@ -10,12 +10,12 @@ import * as debug from 'debug';
 import fileType = require('file-type');
 import prominence = require('prominence');
 
-import DriveFile, { IMetadata, getGridFSBucket, IDriveFile } from '../../models/drive-file';
+import DriveFile, { IMetadata, getGridFSBucket, IDriveFile, DriveFileChunk } from '../../models/drive-file';
 import DriveFolder from '../../models/drive-folder';
 import { pack } from '../../models/drive-file';
 import event, { publishDriveStream } from '../../publishers/stream';
 import getAcct from '../../acct/render';
-import { IUser } from '../../models/user';
+import { IUser, isLocalUser } from '../../models/user';
 
 const gm = _gm.subClass({
 	imageMagick: true
@@ -207,7 +207,34 @@ const addFile = async (
 
 			// If usage limit exceeded
 			if (usage + size > user.driveCapacity) {
-				throw 'no-free-space';
+				if (isLocalUser(user)) {
+					throw 'no-free-space';
+				} else {
+					//#region (アバターまたはバナーを含まず)最も古いファイルを削除する
+					const oldFile = await DriveFile.findOne({
+						_id: {
+							$nin: [user.avatarId, user.bannerId]
+						}
+					}, {
+						sort: {
+							_id: 1
+						}
+					});
+
+					if (oldFile) {
+						// チャンクをすべて削除
+						DriveFileChunk.remove({
+							files_id: oldFile._id
+						});
+
+						DriveFile.update({ _id: oldFile._id }, {
+							$set: {
+								'metadata.deletedAt': new Date()
+							}
+						});
+					}
+					//#endregion
+				}
 			}
 		})()
 	]);