When you handle non-table files (CSV, JSON, images, config files, and so on) in Databricks, DBFS (Databricks File System) was the traditional choice. Since Unity Catalog arrived, however, Volumes are the new recommended standard. This article compares DBFS and Volumes across 5 axes and walks through the concrete steps to migrate from existing DBFS usage to Volumes.
DBFS is a filesystem abstraction layer built into the Databricks workspace. It mounts cloud storage (S3 / ADLS / GCS) under dbfs:/ paths and lets you access it as if it were a local filesystem.
dbfs:/mnt/data/sales.csv or /dbfs/mnt/data/sales.csvDBFS's biggest problem is the lack of governance. Because DBFS is managed by workspace ACLs, Unity Catalog permissions (GRANT/REVOKE) do not apply, and detailed auditing of who accessed which file is difficult.
Volumes are file storage that lives in the Unity Catalog namespace. Files are addressed under /Volumes/<catalog>/<schema>/<volume>/, and Unity Catalog's permission control, auditing, and lineage all apply to those files.
/Volumes/prod/raw/landing/sales.csv| Axis | DBFS | Volumes |
|---|---|---|
| Governance | None. Workspace ACLs only; UC permissions do not apply | Managed by Unity Catalog. Controlled declaratively with GRANT/REVOKE |
| Access Control | Workspace admin configures mounts. No per-file control | Per-volume control via READ VOLUME / WRITE VOLUME |
| Mounts | Mount cloud storage with dbutils.fs.mount() | No mounts needed. External Volume references the existing path directly |
| Path Format | dbfs:/mnt/... or /dbfs/mnt/... | /Volumes/catalog/schema/volume/... |
| Recommendation | Legacy. Not recommended for new development | Recommended. New features ship on Volumes |
# List all DBFS mounts
mounts = dbutils.fs.mounts()
for m in mounts:
print(f"Mount: {m.mountPoint} → {m.source}")
# List files in DBFS Root
files = dbutils.fs.ls("dbfs:/")
for f in files:
print(f.name, f.size, f.isDir())-- Register an existing S3 path as an External Volume (no data copy needed)
CREATE EXTERNAL VOLUME prod.raw.legacy_mount
LOCATION 's3://my-legacy-bucket/data/'
COMMENT 'External Volume migrated from a DBFS mount';
-- Create a Managed Volume for new files
CREATE VOLUME prod.raw.new_landing
COMMENT 'Managed Volume for the new pipeline';# Copy files from DBFS to Volumes
dbutils.fs.cp(
"dbfs:/mnt/old-landing/sales/",
"/Volumes/prod/raw/new_landing/sales/",
recurse=True
)
# Verify the copy
files = dbutils.fs.ls("/Volumes/prod/raw/new_landing/sales/")
print(f"Copied {len(files)} files")# Before: DBFS path
df = spark.read.csv("dbfs:/mnt/old-landing/sales/2026/*.csv")
# After: Volumes path
df = spark.read.csv("/Volumes/prod/raw/new_landing/sales/2026/*.csv")-- Read permission
GRANT READ VOLUME ON VOLUME prod.raw.new_landing TO `data-analysts`;
-- Write permission
GRANT WRITE VOLUME ON VOLUME prod.raw.new_landing TO `data-engineers`;# Unmount once migration is complete
dbutils.fs.unmount("/mnt/old-landing")Since 2024, Databricks has been moving toward restricting default access to DBFS Root. In a growing number of new workspaces, DBFS Root writes are disabled by default.
Data Engineer Associate
問題 1
The security team wants access to CSV files mounted from an S3 bucket to be controlled by Unity Catalog permissions. They are currently mounted at dbfs:/mnt/s3-data/. Which is the most appropriate action?
正解: A
Volumes are required to control file access with Unity Catalog permissions. An External Volume can reference the S3 path with no data copy and be controlled by READ/WRITE VOLUME permissions. DBFS has no dbutils.fs.setPermission() method. IAM policies fall outside UC management. UC permissions do not apply to DBFS Root either.
Should I retire DBFS mounts immediately?
You don't need to retire them immediately, but new development should use Volumes. Migrating existing pipelines from DBFS mounts to Volumes incrementally is the realistic approach. Databricks is gradually restricting DBFS usage — for example, DBFS Root writes are disabled by default in new workspaces — so it's a good idea to have a migration plan in place.
What's the easiest way to migrate files from DBFS to Volumes?
The easiest path is to copy from the DBFS path to the Volumes path using dbutils.fs.cp(). For large file sets, use a Spark batch copy or a cloud-provider tool such as the AWS CLI or azcopy. If you reference an existing S3/ADLS path directly via an External Volume, no file copy is required at all.
How does the exam test DBFS vs Volumes?
It appears on both Data Engineer Associate and Professional. The main patterns are: which is appropriate for storing governed non-table files (answer: Volumes), what are the drawbacks of DBFS mounts (answer: no UC permissions, no cross-workspace access), and the difference between /Volumes/ and /dbfs/ path formats.
Practice with certification-focused question sets
無料で問題を解いてみるNicheeLab Editorial Team
NicheeLab editorial team focused on data engineering and cloud certification learning. Content is structured around practical study needs and official exam domains.
Databricks Certifications: All 7 Exams, Difficulty & Study Plan (2026)
Complete guide to all 7 Databricks certifications — Data Eng...
Databricks Exam Difficulty Ranking: All 7 Certs Compared (2026)
Every Databricks certification ranked by difficulty, with st...
Databricks Study Guide: Fastest Pass Route & Time Estimates (2026)
How to pass Databricks certifications efficiently. Official ...
Databricks Data Engineer Associate: Complete Guide (2026)
Domain-by-domain breakdown of the Databricks Certified Data ...
Databricks Data Engineer Professional: Complete Guide (2026)
Tactics for the Databricks Certified Data Engineer Professio...