Làm cách nào để thay đổi kích thước phân vùng windows mà không sử dụng gparted?


7

Giả sử tôi có bản cài đặt windows 7 (tức là đến từ nhà sản xuất) trên máy tính xách tay (với thiết bị SSD, bảng phân vùng BIOS / MBR nếu có vấn đề). Phân vùng trên thiết bị được phân bổ hoàn toàn và dành riêng cho windows.

Bây giờ tôi muốn cài đặt một hệ thống linux bên cạnh các cửa sổ và để làm được điều đó trước tiên tôi cần thu nhỏ phân vùng windows. Trong khi tôi có thể tìm cách để làm điều đó từ bên trong windows hoặc sử dụng gparted, làm thế nào tôi có thể làm điều này bằng cách chỉ sử dụng các chương trình dòng lệnh, như parted hoặc fdisk?

Câu trả lời:


7

GParted thường có giá trị sử dụng vì nó giúp tránh một số sai lầm khó chịu. Tôi đoán lợi thế chính của các công cụ dòng lệnh ở đây là có nhiều khả năng hiển thị chi tiết hơn. Điều này có thể hữu ích trong các tình huống mong manh bất ngờ (ít nhất một khi nó bị hỏng, các chi tiết có thể giúp bạn nhận ra lý do tại sao). Tuy nhiên tôi không khuyên bạn nên sử dụng chúng cho người khác trừ khi họ muốn có thể học hỏi từ những sai lầm cho đến khi "đĩa của tôi hiện đầy số không và tôi cần phải bắt đầu lại từ đầu".

Ngoài ra, quá trình cài đặt Linux trên máy tính để bàn sẽ cung cấp một công cụ thân thiện với người dùng để thay đổi kích thước phân vùng Windows. (Hoặc tài liệu chính thức). Đó là trường hợp phổ biến. Đây sẽ là khuyến nghị đầu tiên của tôi nói chung.

Tất cả các tùy chọn này sẽ khuyên bạn nên tạo bản sao lưu trong trường hợp có lỗi .

Một cách khó hiểu là bạn không nên sử dụng partedcông cụ dòng lệnh. Nó từng là một tùy chọn thuận tiện, nhưng các nhà phát triển không còn hỗ trợ thay đổi kích thước hệ thống tập tin với nó.


Mặt khác, bạn sử dụng ntfsresize, sau đó xóa và tạo lại phân vùng ( fdisk) với cùng các chi tiết ngoại trừ kích thước. ĐƠN VỊ BEWARE - MỘT SỐ CÔNG CỤ SỬ DỤNG MB; NGƯỜI KHÁC CÓ THỂ NÓI MB NHƯNG MEAN MiB. fdisksử dụng MiB và ntfsresizesử dụng MB. Cách lười biếng là ntfsresize nhỏ hơn nhiều so với mức bạn cần (ví dụ 2x), sau đó sau khi tạo lại phân vùng bạn chạy ntfsresize lần thứ hai mà không có kích thước rõ ràng.

Đối với cách khó, để chuyển đổi các đơn vị, bạn có thể chạy các biểu thức số trong bash. Ví dụ: để xem 10GiB theo byte : echo $((10 * 1024 * 1024 * 1024)). Bạn có thể sử dụng các biểu thức đó làm đối số cho các công cụ dòng lệnh như ntfsresize.

Tên phân vùng cho ntfsresize sẽ như thế nào /dev/sda1. lsblk -fsẽ liệt kê tất cả các phân vùng (bao gồm cả đĩa khởi động của bạn) với kích thước của chúng và cho bạn biết về hệ thống tập tin. fdisksẽ muốn tên của đĩa, như thế nào /dev/sda.

Đối với MBR, các chi tiết phân vùng cần tạo lại là: loại phân vùng và cờ "hoạt động" / khả năng khởi động, cũng như bắt đầu bù. [1] fdisksẽ hiển thị bù phân vùng trong các lĩnh vực theo mặc định. (Nếu không, có thể có các phân số không được hiển thị - có thể được biểu thị bằng dấu + ở cuối, nhưng có thể có một cái bẫy ở đó - bạn nên chắc chắn luôn luôn sử dụng fdisktrong chế độ cung).

Để tránh lỗi đánh máy bên trong fdisk, đôi khi tôi chọn số + dán chúng bằng nút chuột giữa. Điều đó yêu cầu X Windows hoặc trong chế độ văn bản bạn cần gpm . Tôi nghĩ bây giờ ít phổ biến hơn khi cung cấp gpm trên bảng điều khiển, nhưng nó ở đó khi tôi sử dụng Clonezilla Live. Thật tiện lợi, nhưng bạn có thể mất số đầu tiên. Vì vậy, có lẽ bạn nên viết phân vùng gốc bù xuống trước khi xóa nó.


[1] GPT sử dụng một định dạng khác cho loại, thêm một số cờ và UUID phân vùng. Tôi không nghĩ họ thường quan trọng; cờ sẽ không áp dụng cho phân vùng Windows chính và phân vùng UUID chưa được sử dụng nhiều.


13

Ở đây có một bản ghi nhớ để thay đổi kích thước phân vùng NTFS bằng cách sử dụng dòng lệnh với ntfsresize(từ ntfs-3g / ntfsprogsgói) và fdisk, nó sẽ hoạt động cho các phiên bản Windows XP-8. Lưu ý rằng GParted thực hiện tất cả các thao tác sau cho MBR / DOS cũng như cho các ổ EFI / GPT nếu ntfs-3g / ntfspross được cài đặt . Tài liệu tham khảo của tôi là ở cuối.

OK trong kịch bản này, tôi có một đĩa 149 GB được phân vùng MBR với một phân vùng NTFS duy nhất (Windows C :). Tôi sẽ thay đổi kích thước của nó thành 20 GB (Như @sourcejedi đã nói rõ: ĐƠN VỊ THƯỞNG) để có chỗ cho các phân vùng mới, ví dụ: Dữ liệu và / hoặc hệ điều hành khác.

Điều kiện tiên quyết

  • Làm sạch hệ thống tệp NTFS : Các công cụ NTFS dựa trên linux sẽ từ chối chạm vào hệ thống tệp NTFS trừ khi nó đã hoàn toàn phù hợp, để giảm thiểu khả năng mất dữ liệu. Nếu không, người ta phải sử dụng ntfsfix(từ Linux) hoặc chkdsk /f(từ Windows).
  • Sao lưu dữ liệu quan trọng (ví dụ: sử dụng ntfsclone như @peterph đã viết ở trên)
  • Biết thiết bị và phân vùng nào tôi muốn thay đổi kích thước, / dev / sdb1 trong trường hợp này.

A. Thu hẹp hệ thống tập tin

  1. Kiểm tra thiết bị để đảm bảo thiết bị đã sẵn sàng để thay đổi kích thước:

    ~ ntfsresize --check /dev/sdb
    

    Bất kỳ cảnh báo tại thời điểm này nên được giải quyết trước khi xử lý thêm.

  2. Kiểm tra kích thước hệ thống tập tin này có thể được thay đổi kích thước thành:

    ~ ntfsresize --info /dev/sdb
    > ...
    > You might resize at 16865632256 bytes or 16866 MB (freeing 112060  MB).
    > ...
    
  3. Kiểm tra cách thu nhỏ xuống 18 GB sẽ hoạt động (chúng tôi sẽ tạo 20 GiB đó trong một phút):

    ~ ntfsresize --no-action --size 18G /dev/sdb1
    > ...
    > The read-only test run ended successfully.
    
  4. Thay đổi kích thước thành 18 GB:

    ~ ntfsresize -v --size 18G /dev/sdb1
    > ...
    > Successfully resized NTFS on device '/dev/sdb1'.
    > You can go on to shrink the device for example with Linux fdisk.
    > IMPORTANT: When recreating the partition, make sure that you
    >   1)  create it at the same disk sector (use sector as the unit!)
    >   2)  create it with the same partition type (usually 7, HPFS/NTFS)
    >   3)  do not make it smaller than the new NTFS filesystem size
    >   4)  set the bootable flag for the partition if it existed before
    > Otherwise you won't be able to access NTFS or can't boot from the disk!
    > ...
    

Mẹo: nếu đĩa có các sự cố đã biết, chẳng hạn như các thành phần xấu, hãy thêm --bad-sectorstùy chọn ''.

B. Thay đổi kích thước phân vùng

Ở bước trước, chúng tôi thu nhỏ hệ thống tập tin, không phải phân vùng như chúng tôi có thể kiểm tra với:

~ disktype /dev/sdb

> Block device, size 149.1 GiB (160041885696 bytes)
> DOS/MBR partition map
> Partition 1: 149.1 GiB (138602266624 bytes, 8459611 clusters of 16 KiB, bootable)
> Volume size 18.37 GiB (20799750144 bytes, 1269516 clusters of 16 KiB)

Như bạn có thể thấy, kích thước âm lượng và giá trị phân vùng khác nhau, với Phân vùng 1 vẫn lấp đầy ổ đĩa. Ở giai đoạn này, cần phải xóa phân vùng và tạo một phân vùng nhỏ hơn để phù hợp với kích thước mới của hệ thống tệp NTFS. Vì đĩa của tôi có bảng phân vùng DOS / MBR, tôi sẽ làm điều đó với fdisk(@peterph có câu trả lời ở trên cho GPT):

~ fdisk /dev/sdb
  1. Xóa phân vùng

    Nhập 'p' để hiển thị các phân vùng trên đĩa đó và lưu ý cái nào chứa hệ thống tập tin đã thay đổi kích thước.

    Nhập 'd' sẽ hỏi phân vùng nào bạn muốn xóa

    > Command (m for help): d
    > partition number (1-3, last one by default) : 1
    
  2. Tạo lại phân vùng

    Bây giờ tạo lại phân vùng nhỏ hơn, giữ nó chính và đầu tiên theo thứ tự:

    > Command (m for help): n
    > Command action
    > e extended
    > p primary partition (1-4)
    p
    > Partition number (1-4): 1
    > First cylinder (1-31, default 1): 1
    

    Vì tôi đã thu nhỏ hệ thống tập tin xuống còn 18GB, hãy tạo phân vùng 20GiB:

    > Last cylinder or +size or +sizeM or +sizeK (1-31, default 31): +20G
    

    Chúng tôi biết hệ thống tập tin là NTFS, vì vậy hãy sử dụng lệnh hành động 't' cho loại và mã hex được liệt kê '7' cho NTFS:

    > Command (m for help): t
    > Selected partition 1
    > Hex code (type L to list codes): 7
    > Changed system type of partition 1 to 7 (HPFS/NTFS)
    
  3. Tiếp theo tôi muốn đảm bảo phân vùng vẫn được đánh dấu là có khả năng khởi động :

    > Command (m for help): p
       Device   Boot      Start        End      Blocks   Id   System
    /dev/sdb1               63      40644449  40644387   7  HPFS/NTFS
    

    Làm cho phân vùng mới có khả năng khởi động bằng cách thêm cờ khởi động:

    > Command (m for help): a
    > Partition number (1-4): 1
    
  4. Viết bảng phân vùng đã thay đổi vào đĩa và thoát fdisk bằng lệnh hành động 'w':

    > Command (m for help): w
    
  5. Bây giờ thay đổi kích thước cuối cùng của hệ thống tập tin

    ntfsresize không có công tắc 'size' sẽ đảm bảo nó sử dụng toàn bộ không gian có sẵn của phân vùng (toàn bộ và không còn nữa - cảm ơn @sourcejedi)

    ~ ntfsresize -v /dev/sdb1
    

Bây giờ chúng ta có thể kiểm tra xem các phân vùnghệ thống tập tin trên ổ đĩa có được ghép nối hay không:

~ disktype /dev/sdb
> ...
> Partition 1: 20.0 GiB (21474836480 bytes, 40644387 sectors from 63, bootable)
> Type 0x07 (HPFS/NTFS)
> Windows NTLDR boot loader
> NTFS file system
> Volume size 19.98 GiB (21453361644 bytes, 1269516 clusters of 16 KiB)

Người giới thiệu


2
Bản demo đẹp! Bạn đã để lại một số tiền ký quỹ nhưng chỉ 5%, nếu bạn đang cố gắng khắc phục lỗi đơn vị GB / GiB, tôi tin rằng đó là khoảng 7%. Tôi cũng đề nghị thay đổi kích thước cuối cùng mà không có kích thước rõ ràng, để tự động lấy lề - ít nhất là nó sẽ loại trừ một số khó hiểu trong tương lai.
sourcejedi

Vâng, thêm việc thêm một ntfsresize cuối cùng mà không có kích thước rõ ràng sẽ an toàn hơn. Chênh lệch 7% GB / GiB chết tiệt! Bạn đúng trên cả hai @sourcejedi, cảm ơn!
tuk0z

Tôi đã gửi một bản chỉnh sửa để đặt ntfsresize thứ hai sau khi viết fdisk, theo cách khác, vòng này không có ý nghĩa gì. nhìn tuyệt vời bây giờ + upvote :).
nguồn

4

Bạn cần ntfsresizetiện ích từ ntfs-3ggói, có thể thay đổi kích thước hệ thống tệp NTFS. Tuy nhiên, hãy chắc chắn sao lưu phân vùng trước khi bạn thực hiện bất kỳ thay đổi nào đối với phân vùng đó, vì đôi khi Windows có ý tưởng khác về phân vùng đã thay đổi kích thước sẽ như thế nào.

Việc sao lưu có thể được thực hiện thuận tiện với ntfsclonetiện ích (cùng gói), vì chỉ lưu hệ thống tệp (đó là nội dung tệp và siêu dữ liệu) chứ không phải toàn bộ phân vùng:

ntfsclone -s -o windows-partitinon.img /dev/sdXY

Nếu bạn không đủ dung lượng ổ đĩa và / hoặc có nhiều thời gian, nén hình ảnh là một ý tưởng hay:

ntfsclone -s -o - /dev/sdXY | xz -v -9 > windows-partitinon.img.xz

Xin lưu ý rằng đối với phân vùng hệ thống Windows đầy đủ vừa phải (không có nhiều dữ liệu người dùng), giả sử ~ 40GB, có thể mất vài giờ, tùy thuộc vào mức độ nén). Mặt khác, bạn cũng có thể đạt được khoảng 40-30% kích thước không nén.

Ngoài ra, hãy nhớ sao lưu bố cục phân vùng của bạn để có thể thực hiện khôi phục hoàn toàn. Nếu bạn đang sử dụng bảng phân vùng MBR mà không có bất kỳ phân vùng logic nào, tất cả những gì bạn cần là MBR của thiết bị bị ảnh hưởng:

dd if=/dev/sdX bs=512 count=1 of=mbr.sav

Nếu partitinos logic có mặt, ít nhất hãy lưu mô tả văn bản, ví dụ:

fdisk -l -u s /dev/sdX > partitions.sav

Đối với GPT bạn có thể sử dụng gdisk, có khả năng lưu dữ liệu GPT vào một tệp và sau đó tải lại.

Sau đó, bạn có thể chạy ntfsresizetrong chế độ ghi. Nó có thể sẽ yêu cầu bạn khởi động lại Windows (có thể vài lần), để đảm bảo các thay đổi được đăng ký bởi HĐH.

Chỉ sau khi tất cả điều này được thực hiện, bạn có thể thay đổi kích thước (các) phân vùng. partedcó lẽ tốt như bất kỳ chương trình phân vùng nào khác hiểu sơ đồ phân vùng được sử dụng trên ổ cứng đó.


Tôi cảm thấy mô tả "thay đổi kích thước phân vùng" bỏ qua chi tiết quan trọng cần xóa phân vùng và tạo lại một phân vùng nhỏ hơn. Nhưng điểm tốt về việc lưu bảng phân vùng trước đó.
nguồn

Cá nhân nếu bạn đang sử dụng fdisk / gdisk để sao lưu, việc gắn bó với chỉnh sửa phân vùng cũng có vẻ đơn giản hơn. printLệnh đặc biệt có vẻ mơ hồ về độ lệch, để xác minh loại công việc này (ví dụ: đối với các giá trị lớn, nó hiển thị toàn bộ GB gần nhất). Mặc dù rescuelệnh ("giải cứu phân vùng [đã xóa] bị mất gần START và END") có vẻ tốt. Tôi muốn sử dụng testdisk cho điều đó, nhưng thật tuyệt khi biết trong trường hợp bạn chỉ chia tay.
nguồn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.