diff options
author | Henrik Edin <henrik.edin@mongodb.com> | 2017-08-15 12:58:30 -0400 |
---|---|---|
committer | Henrik Edin <henrik.edin@mongodb.com> | 2017-09-08 12:15:32 -0400 |
commit | 25e560be06f808b155d5ee372e3474ff24266cb2 (patch) | |
tree | 4253e8d83c2d16326aee8197201c4bdf278f0886 /src/mongo/db | |
parent | 2197cedd9cc61cba6ceb81affc348d3e3932c1b8 (diff) | |
download | mongo-25e560be06f808b155d5ee372e3474ff24266cb2.tar.gz |
SERVER-30759 Implement disk utilization stats for 'dbStats' command. Reports total and used space on the filesystem dbpath is mounted on. Respects --directoryperdb.
Diffstat (limited to 'src/mongo/db')
-rw-r--r-- | src/mongo/db/catalog/database_impl.cpp | 19 | ||||
-rw-r--r-- | src/mongo/db/commands/dbcommands.cpp | 4 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/mongo/db/catalog/database_impl.cpp b/src/mongo/db/catalog/database_impl.cpp index 22cf455fd66..d57e4352b90 100644 --- a/src/mongo/db/catalog/database_impl.cpp +++ b/src/mongo/db/catalog/database_impl.cpp @@ -406,6 +406,25 @@ void DatabaseImpl::getStats(OperationContext* opCtx, BSONObjBuilder* output, dou output->appendNumber("indexSize", indexSize / scale); _dbEntry->appendExtraStats(opCtx, output, scale); + + if (!getGlobalServiceContext()->getGlobalStorageEngine()->isEphemeral()) { + boost::filesystem::path dbpath(storageGlobalParams.dbpath); + if (storageGlobalParams.directoryperdb) { + dbpath /= _name; + } + + boost::system::error_code ec; + boost::filesystem::space_info spaceInfo = boost::filesystem::space(dbpath, ec); + if (!ec) { + output->appendNumber("fsUsedSize", (spaceInfo.capacity - spaceInfo.available) / scale); + output->appendNumber("fsTotalSize", spaceInfo.capacity / scale); + } else { + output->appendNumber("fsUsedSize", -1); + output->appendNumber("fsTotalSize", -1); + log() << "Failed to query filesystem disk stats (code: " << ec.value() + << "): " << ec.message(); + } + } } Status DatabaseImpl::dropView(OperationContext* opCtx, StringData fullns) { diff --git a/src/mongo/db/commands/dbcommands.cpp b/src/mongo/db/commands/dbcommands.cpp index 4036b6e0fa1..4ca970661b4 100644 --- a/src/mongo/db/commands/dbcommands.cpp +++ b/src/mongo/db/commands/dbcommands.cpp @@ -1108,6 +1108,10 @@ public: result.appendNumber("indexes", 0); result.appendNumber("indexSize", 0); result.appendNumber("fileSize", 0); + if (!getGlobalServiceContext()->getGlobalStorageEngine()->isEphemeral()) { + result.appendNumber("fsUsedSize", 0); + result.appendNumber("fsTotalSize", 0); + } } else { { stdx::lock_guard<Client> lk(*opCtx->getClient()); |