Phân bổ theo dung lượng cố định và phân bổ theo nhu cầu: Sự khác biệt là gì?

Trong bài viết này, chúng ta sẽ đi sâu tìm hiểu về khía cạnh phân bổ trước dung lượng lưu trữ trong cài đặt đĩa ảo, đồng thời làm rõ khái niệm về phân bổ dày (thick provisioning) và phân bổ mỏng (thin provisioning), sự khác biệt giữa chúng, cũng như loại phân bổ trước dung lượng lưu trữ nào phù hợp hơn với hạ tầng của bạn.

Hãy thử NAKIVO Backup & Replication

Hãy thử NAKIVO Backup & Replication

Đăng ký dùng thử miễn phí để khám phá toàn bộ các tính năng bảo vệ dữ liệu của giải pháp. Dùng thử miễn phí trong 15 ngày. Không có bất kỳ giới hạn nào về tính năng hay dung lượng. Không cần thẻ tín dụng.

Phân bổ dày (Thick Provisioning)

Phân bổ dày là một hình thức phân bổ trước dung lượng lưu trữ. Với phương thức phân bổ dày, toàn bộ dung lượng lưu trữ của đĩa ảo sẽ được phân bổ trước trên thiết bị lưu trữ vật lý ngay khi đĩa ảo được tạo ra. Một đĩa ảo được phân bổ dày sẽ chiếm dụng toàn bộ không gian được phân bổ cho nó trong kho dữ liệu ngay từ đầu, do đó không gian này sẽ không thể được các máy ảo khác sử dụng.

Có hai loại con của đĩa ảo được phân bổ dày:

  • A Lazy zeroed disk là đĩa chiếm toàn bộ không gian của nó ngay tại thời điểm tạo, nhưng không gian này có thể chứa một số dữ liệu cũ trên phương tiện vật lý. Dữ liệu cũ này không bị xóa hoặc ghi đè, do đó cần phải “xóa sạch” trước khi dữ liệu mới có thể được ghi vào các khối. Loại đĩa này có thể được tạo nhanh hơn, nhưng hiệu suất của nó sẽ thấp hơn trong các lần ghi đầu tiên do số lượng IOPS (hoạt động nhập/xuất mỗi giây) tăng lên cho các khối mới;
  • Một Eager zeroed disk là đĩa được cấp toàn bộ dung lượng cần thiết ngay tại thời điểm tạo, và không gian này được xóa sạch mọi dữ liệu trước đó trên phương tiện vật lý. Việc tạo đĩa eager zeroed mất nhiều thời gian hơn vì các số 0 được ghi vào toàn bộ đĩa, nhưng hiệu suất của chúng sẽ nhanh hơn trong các lần ghi đầu tiên. Loại đĩa ảo thick-provisioned này hỗ trợ các tính năng cụm, chẳng hạn như khả năng chịu lỗi.

Thick provisioning

Vì lý do bảo mật dữ liệu, eager zeroing phổ biến hơn lazy zeroing với đĩa ảo thick-provisioned. Tại sao? Khi bạn xóa một tệp VMDK, dữ liệu trên kho dữ liệu (datastore) không bị xóa hoàn toàn; các khối dữ liệu chỉ được đánh dấu là trống, cho đến khi hệ điều hành ghi đè lên chúng. Nếu bạn tạo một đĩa ảo được xóa ngay lập tức trên kho dữ liệu này, khu vực đĩa sẽ được xóa hoàn toàn (tức là được ghi số 0), từ đó ngăn chặn bất kỳ ai có ý đồ xấu khôi phục dữ liệu trước đó – ngay cả khi họ sử dụng phần mềm của bên thứ ba chuyên dụng.

Phân bổ mỏng (Thin Provisioning)

Phân bổ mỏng là một loại phân bổ lưu trữ trước khác. Một đĩa ảo được phân bổ mỏng chỉ tiêu thụ không gian cần thiết ban đầu và mở rộng theo thời gian tùy theo nhu cầu.

Ví dụ: nếu bạn tạo một đĩa ảo 30GB được phân bổ mỏng mới và sao chép 10 GB tệp vào đó, kích thước của tệp VMDK kết quả sẽ là 10 GB, trong khi bạn sẽ có một tệp VMDK 30GB nếu bạn chọn sử dụng đĩa được phân bổ dày.

Thin Provisioning

Đĩa ảo được phân bổ mỏng tạo nhanh và hữu ích để tiết kiệm không gian lưu trữ. Hiệu suất của đĩa được phân bổ mỏng không cao hơn đĩa được phân bổ dày với quá trình ghi số 0 chậm, bởi vì đối với cả hai loại đĩa này, các số 0 đều phải được ghi vào trước khi ghi dữ liệu vào một khối mới. Lưu ý rằng khi bạn xóa dữ liệu khỏi đĩa ảo được phân bổ mỏng, kích thước đĩa sẽ không tự động giảm xuống. Điều này là do hệ điều hành chỉ xóa các chỉ mục trong bảng tệp tham chiếu đến phần thân tệp trong hệ thống tệp; nó đánh dấu các khối thuộc về các tệp “đã xóa” là trống và có thể truy cập để ghi dữ liệu mới lên đó. Đây là lý do tại sao việc xóa tệp trông có vẻ tức thì. Nếu đó là việc xóa hoàn toàn, nơi các số 0 được ghi đè lên các khối mà các tệp đã xóa chiếm dụng, thì quá trình này sẽ mất khoảng thời gian tương đương với việc sao chép các tệp đó. Xem hình minh họa đơn giản bên dưới.

View from the operating system

Các vấn đề có thể xảy ra khi sử dụng đĩa ảo được phân bổ mỏng

Việc sử dụng đĩa ảo được phân bổ mỏng không phải lúc nào cũng suôn sẻ. Có một số vấn đề mà bạn nên lưu ý và chuẩn bị để xử lý.

Hãy xem xét một ví dụ khiến các máy ảo không thể sử dụng được. Ví dụ, chúng ta có một kho dữ liệu 20GB với ba máy ảo đang chạy trên đó. Mỗi máy ảo có một bộ đĩa ảo được phân bổ mỏng với kích thước tối đa là 10 GB. (Thực hành này được gọi là “phân bổ dư” – chúng ta gán cho các đĩa ảo nhiều không gian hơn so với dung lượng vật lý mà chúng có thể chiếm dụng. Điều này thường được thực hiện vì nó cho phép bạn mở rộng hệ thống bằng cách thêm bộ nhớ vật lý khi cần thiết.) Kích thước tệp của mỗi đĩa ảo sẽ mở rộng khi dữ liệu được thêm vào, cho đến khi không còn không gian trống nào trên kho dữ liệu. Tình huống trở nên nghiêm trọng khi chỉ còn 1GB không gian trống trên kho dữ liệu, chẳng hạn như khi VM1 chiếm 8 GB, VM2 chiếm 7 GB và VM3 chiếm 4 GB.

Các phương pháp xóa tệp thông thường trong máy ảo sẽ không giúp thu nhỏ các đĩa ảo được phân bổ mỏng. Nếu có hơn 1 GB dữ liệu mới được ghi vào bất kỳ máy ảo nào trong số này, cả ba máy ảo sẽ gặp sự cố, và bạn sẽ cần di chuyển một hoặc nhiều máy ảo sang một kho dữ liệu khác để khôi phục trạng thái hoạt động của chúng.

Cách giảm kích thước đĩa ảo được phân bổ mỏng sau khi xóa tệp

Để có thể giảm kích thước tệp VMDK của các đĩa ảo được phân bổ mỏng, bạn cần biết cách làm trống các khối mà dữ liệu bạn đã xóa trước đó chiếm dụng. Hãy cùng tìm hiểu cách thực hiện việc này. Lưu ý: Việc thu nhỏ đĩa chỉ có thể thực hiện được nếu các máy ảo không chứa bản chụp nhanh. Ngoài ra, vui lòng cẩn thận và thực hiện các lệnh dưới trách nhiệm của chính bạn. Luôn sao lưu tất cả dữ liệu quan trọng trước khi thực hiện bất kỳ thao tác nào trên đĩa.

Thu nhỏ đĩa VMware được phân bổ mỏng trong Linux

Hãy xem xét một ví dụ: chúng ta có một tệp VMDK 10.266.496 KB (10GB) (chúng ta đã biết kích thước của nó bằng cách truy cập thư mục trên kho dữ liệu nơi máy ảo của chúng ta được đặt) và muốn thu nhỏ đĩa ảo mà hệ điều hành Linux khách được cài đặt. Chúng ta có thể thử xóa các tệp không cần thiết trên đĩa ảo này. Tuy nhiên, Linux không tự động xóa các khối sau khi xóa tệp; bạn sẽ phải tự thực hiện việc này. Bạn có thể thực hiện điều này bằng cách sử dụng công cụ ` dd ` (data duplicator) để sao chép và chuyển đổi dữ liệu. Công cụ này có sẵn trên tất cả các hệ thống Linux.

Lưu ý: Trước khi chạy công cụ ` dd `, cần đảm bảo datastore có đủ dung lượng để sử dụng (ví dụ: đối với máy chủ ESXi, bạn có thể kiểm tra dung lượng lưu trữ trong phần lưu trữ của vSphere Client – truy cập Configuration > Storage).

Hãy sử dụng tiện ích dd .

  1. Đầu tiên, chúng ta kiểm tra dung lượng trống trên máy ảo Linux khách bằng cách sử dụng lệnh df -h :

    root@test-virtual-machine:/# df -h

    Chúng ta nhận được kết quả sau trên giao diện điều khiển:

    Filesystem Size Used Avail Use% Mounted on
    udev 469M 0 469M 0% /dev
    tmpfs 99M 6,3M 92M 7% /run
    /dev/sda7 17G 8,8G 6,4G 58% /
    tmpfs 491M 116K 491M 1% /dev/shm
    tmpfs 5,0M 4,0K 5,0M 1% /run/lock
    tmpfs 491M 0 491M 0% /sys/fs/cgroup
    /dev/sda1 945M 121M 760M 14% /boot
    /dev/sda6 3,7G 13M 3,5G 1% /var/log
    tmpfs 99M 36K 99M 1% /run/user/1000

    Từ kết quả này, chúng ta thấy rằng phân vùng / (root) chứa 8,8 GB tệp tin.

  2. Hãy xóa một vài gigabyte tệp không cần thiết trong phân vùng root. Đây là những gì chúng ta thấy trên console khi chạy lệnh df -h / :

    Filesystem Size Used Avail Use% Mounted on
    /dev/sda7 17G 4,7G 11G 31% /

    Như vậy, phân vùng root của chúng ta hiện chứa 4,7 GB tệp. Tuy nhiên, khi truy cập vào thư mục chứa tệp VMDK, chúng ta có thể thấy kích thước của nó vẫn là 10.266.496 KB (10 GB).

  3. Bây giờ chúng ta sẽ lấp đầy không gian trống bằng các số 0 (trong trường hợp của chúng ta, chúng ta sẽ lấp đầy 10 GB trong tổng số 11 GB có sẵn). Đầu tiên, chúng ta gõ cd tiếp theo là tên thư mục mà phân vùng cần được lấp đầy bằng số 0 được gắn vào (trong trường hợp của chúng ta là cd /, vì chúng ta muốn điều hướng đến phân vùng gốc). Sau đó, chúng ta chạy lệnh sau đây, điều chỉnh các biến cho phù hợp với nhu cầu của mình:

    dd bs=1M count=10240 if=/dev/zero of=zero

    Trong lệnh này:

    • dd chỉ có thể được thực thi với quyền quản trị viên.
    • bs đặt kích thước khối (ví dụ: bs=1M sẽ cho kích thước khối là 1 megabyte).
    • count chỉ định số lượng khối cần sao chép (giá trị mặc định là dd sẽ tiếp tục chạy mãi mãi hoặc cho đến khi dữ liệu đầu vào cạn kiệt). Trong trường hợp của chúng ta, 10.240 MB là dung lượng trống mà chúng ta muốn lấp đầy bằng các số 0, do đó số khối 1 megabyte là 10240.
    •  if đại diện cho “tệp đầu vào”. Đây là nơi bạn chỉ định nguồn dữ liệu muốn sao chép. Trong trường hợp của chúng ta, đó là /dev/zero – một tệp đặc biệt (thiết bị ảo) cung cấp số lượng ký tự null tùy ý khi đọc từ nó.
    • of đại diện cho “tệp đầu ra”. Đây là nơi bạn thiết lập đích đến để ghi/dán dữ liệu (trong trường hợp của chúng ta, tên tệp là zero).

    Sau khi thực thi lệnh trên, kích thước tệp VMDK của chúng ta tăng lên. Đây là kết quả hiển thị sau khi lệnh hoàn tất thành công:

    10240+0 records in
    10240+0 records out
    10737418240 bytes (10 GB) copied, 59,4348 s, 181 MB/s
    Command has been completed successfully.

    Vậy, hiện tại kích thước tệp VMDK của chúng ta là 11.321.856 KB (10,8 GB), có nghĩa là nó đã được mở rộng. Ngoài ra, nếu chúng ta chạy lại lệnh df -h / , chúng ta sẽ thấy kết quả sau:

    Filesystem Size Used Avail Use% Mounted on
    /dev/sda7 17G 15G 569M 97% /

    Điều này có nghĩa là gần như toàn bộ phân vùng gốc (tức là 97%) đã bị chiếm dụng. Điều này là do chúng ta đã lấp đầy hầu hết không gian “trống” trước đó bằng các số 0. Bây giờ, đĩa ảo được phân bổ mỏng của chúng ta đã sẵn sàng để thu nhỏ.

Lưu ý: Để thực hiện việc thu nhỏ, cần phải cài đặt VMware Tools.

  1. Đối với các máy ảo đang chạy trên VMware ESXi hoặc VMware Workstation, chúng ta thực thi hai lệnh sau trong hệ điều hành khách Linux.a) Để đảm bảo phân vùng đĩa có sẵn, chúng ta chạy lệnh:

    root@test-virtual-machine:/# vmware-toolbox-cmd disk list

    Đây là kết quả chúng ta thấy trong trường hợp này (tức là chúng ta thấy danh sách các phân vùng có sẵn):

    /
    /boot
    /var/log

    Phân vùng gốc đã có mặt, vì vậy chúng ta có thể tiếp tục.b) Để thu nhỏ phân vùng, chúng ta chạy lệnh sau:

    root@test-virtual-machine:/# vmware-toolbox-cmd disk shrink /

    Đây là kết quả chúng ta thấy trong trường hợp này:

    Please disregard any warnings about disk space for the duration of shrink process.
    Progress: 100 [===========>]
    Disk shrinking complete.

    Bây giờ, kích thước của tệp VMDK đã thu nhỏ là 5.323.456 KB (tức là 5,08 GB – nhỏ hơn nhiều so với 10,8 GB trước đó).

Lưu ý: Nếu máy ảo khách của bạn đang chạy trên máy chủ ESXi, sau khi điền các khối bằng số 0, bạn có thể thực hiện các bước sau:

  1. Tắt máy ảo hoặc ngắt kết nối đĩa ảo mà bạn muốn thu nhỏ.
  2. Kết nối với máy chủ ESXi bằng trình khách SSH.
  3. Truy cập vào Virtual Machine Folder.
  4. Kiểm tra tình trạng sử dụng đĩa bằng du -h.
  5. Chạy lệnh vmkfstools -K test-virtual-machine.vmdk.
  6. Kiểm tra lại tình trạng sử dụng đĩa bằng du -h .

Giảm dung lượng đĩa VMware được phân bổ mỏng trong Windows

Giống như Linux, Windows không tự động xóa các khối sau khi xóa tệp. Để có thể xóa không gian trống của các đĩa đích trên máy ảo Windows của bạn, bạn cần tải xuống SDelete – một tiện ích miễn phí từ Bộ Sysinternals của Microsoft – và giải nén các tệp từ kho lưu trữ đã tải xuống vào c:program filessdelete

Sau đó, làm theo các bước sau:

  1. Chạy cmd
  2. Chuyển đến thư mục chứa SDelete Trong trường hợp của chúng tôi, đó là: cd c:program filessdelete

  3. Đối với mỗi phân vùng trong giao diện điều khiển, hãy sử dụng lệnh sdelete -z . Đây là những gì chúng tôi có trong trường hợp của mình:

    sdelete -z c:
    sdelete -z d:

    Các lệnh này sẽ xóa sạch mọi không gian trống trên đĩa được phân bổ mỏng của bạn bằng cách lấp đầy mọi không gian chưa sử dụng trên các phân vùng được chỉ định. Chờ vài phút cho đến khi quá trình hoàn tất. Tệp VMDK của bạn sẽ mở rộng đến kích thước tối đa trong quá trình này.

  4. Đảm bảo VMware Tools đã được cài đặt trên máy ảo Windows của bạn. Theo mặc định, VMware Tools được cài đặt tại c:program filesvmwarevmware tools

    Truy cập thư mục này bằng cách nhập:

    cd c:program filesvmwarevmware tools

  5. Để xem các phân vùng đĩa có sẵn, nhập:

    vmwaretoolboxcmd disk list

  6. Thu nhỏ các phân vùng đĩa cần thiết. Trong trường hợp của chúng ta, chúng ta đã chạy các lệnh:

    vmwaretoolboxcmd disk shrink c:
    vmwaretoolboxcmd disk shrink d:

    Chờ cho đến khi chương trình hoàn tất việc thu nhỏ đĩa.

Bạn có thể sử dụng phương pháp này cho các máy ảo chạy trên VMware ESXi hoặc VMware Workstation.

VMware Storage Distributed Resource Scheduler

Trên đây, chúng tôi đã đề cập đến một giải pháp để thu nhỏ đĩa được phân bổ mỏng theo cách thủ công. Tuy nhiên, còn có một cách nữa để quản lý đĩa ảo của bạn (cả đĩa được phân bổ mỏng và đĩa được phân bổ dày), nếu bạn sử dụng cụm kho dữ liệu trong vSphere. VMware cung cấp tính năng di chuyển đĩa ảo tự động trong cụm datastore để tránh tình trạng tràn bộ nhớ đĩa nơi chứa các đĩa ảo được phân bổ mỏng và để cân bằng tài nguyên I/O.

Nếu bạn có nhiều hơn một datastore được chia sẻ gắn vào máy chủ ESXi, bạn có thể thiết lập Trình lập lịch tài nguyên phân tán lưu trữ (Storage DRS). Storage DRS là một tính năng thông minh của vCenter Server giúp quản lý hiệu quả các hệ thống lưu trữ VMFS và NFS, đồng thời cung cấp khả năng tự động bố trí và di chuyển đĩa của máy ảo. Bạn cũng có thể thiết lập Storage DRS ở chế độ thủ công nếu muốn phê duyệt các đề xuất di chuyển theo cách thủ công.

Thực hiện các bước sau để kích hoạt Storage DRS:

  1. Truy cập vào cụm kho dữ liệu (datastore cluster) trong vSphere Web Client.
  2. Truy cập vào vCenter > Datastore Clusters.
  3. Chọn cụm kho dữ liệu của bạn và nhấp vào Manage > Settings > Services > Storage DRS.
  4. Nhấp vào Edit.
  5. Cấu hình các thiết lập tự động hóa, chức năng liên quan đến I/O và các tùy chọn nâng cao mà bạn cần.datastore-cluster
  6. Nhấp vào OK để hoàn tất.

Nếu không có cụm datastore nào trong môi trường vSphere của bạn, hãy thực hiện các bước sau để tạo và thiết lập một cụm datastore mới:

  1. Truy cập vCenter > Datacenters trong vSphere Web Client.
  2. Nhấp chuột phải vào Datacenter của bạn và chọn New Datastore Cluster.
  3. Nhập tên cụm datastore của bạn và đánh dấu vào ô bên cạnh "Turn On Storage DRS".
  4. Chọn các cài đặt tự động hóa, chức năng liên quan đến I/O và các tùy chọn nâng cao mà bạn cần.
  5. Nhấp vào OK để hoàn tất.

Kết luận

Trong bài viết này, chúng ta đã xem xét các loại đĩa ảo và đánh giá ưu nhược điểm của từng loại để hiểu rõ hơn sự khác biệt giữa thick và thin provisioning. Đĩa thick-provisioned được xóa ngay (Eager zeroed) là lựa chọn tốt nhất về hiệu suất và bảo mật, nhưng yêu cầu đủ không gian lưu trữ trống và mất nhiều thời gian để tạo. Đĩa thick-provisioned được xóa sau (Lazy zeroed) có thời gian tạo ngắn, nhưng không cung cấp tốc độ cao như đĩa Eager zeroed và ít an toàn hơn. Đĩa thin-provisioned là lựa chọn tốt nhất để tiết kiệm không gian datastore ngay tại thời điểm tạo đĩa.

Bạn có thể tạo một đĩa ảo với kích thước tối đa lớn hơn dung lượng vật lý hiện có (“overprovisioning”) và thêm dung lượng lưu trữ vật lý trong tương lai, nhưng hãy nhớ rằng nếu dung lượng đĩa vật lý đầy và đĩa thin-provisioned không thể mở rộng để chứa thêm dữ liệu, các máy ảo của bạn sẽ trở nên không thể sử dụng được – vì vậy đừng quên theo dõi lượng dung lượng trống. Chúng tôi cũng đã hướng dẫn các phương pháp thu nhỏ đĩa ảo VMware được phân bổ mỏng, trong trường hợp bạn không muốn thêm dung lượng lưu trữ và cần giảm dung lượng đang sử dụng.

NAKIVO cho sao lưu VMware vSphere

NAKIVO cho sao lưu VMware vSphere

Bảo vệ dữ liệu toàn diện cho các máy ảo VMware vSphere và các tùy chọn khôi phục tức thì. Các điểm sao lưu an toàn tại chỗ, ngoài cơ sở và trên đám mây. Các tính năng chống ransomware.

People also read