Làm cách nào để tạo và điều chỉnh phân vùng ext4 từ dòng lệnh?


41

THAM GIA (ví dụ fdisk)
Một số lệnh hữu ích được sử dụng để phân vùng ổ cứng bổ sung từ dòng lệnh là gì? Vì hầu hết các hướng dẫn được xuất bản đều hướng đến GParted và các tiện ích đồ họa khác, nên một bản tóm tắt về một số chuỗi dòng lệnh sẽ hữu ích.

CHẠY - THỜI GIAN ĐƯỢC ĐẶT LẠI, THỜI GIAN BẮT ĐẦU & TIẾP CẬN
Làm thế nào để loại bỏ không gian đĩa dành riêng được đặt sang một bên (theo mặc định) trong trường hợp ổ đĩa đã đầy 100%. Vì tôi là ổ đĩa thứ cấp chỉ đơn giản là 'dữ liệu', nên việc loại bỏ khu vực dành riêng đảm bảo toàn bộ ổ đĩa có sẵn để sử dụng.

Tôi cũng tò mò về việc ghi lại so với ghi lại và bỏ qua việc cập nhật thời gian truy cập (trên các tệp và thư mục) để cải thiện hiệu suất.

Câu trả lời:


64

Đầu tiên và quan trọng nhất:

!! CẢNH BÁO !!

Các lệnh này là VÍ DỤ . Xóa các phân vùng, hệ thống tập tin MODIFYING và FORMATTING phá hủy dữ liệu và / hoặc có thể ngăn máy của bạn khởi động. Tạo bản sao lưu. Sử dụng có nguy cơ riêng. Hãy thử trên một chiếc máy mà bạn không ngại mất tất cả dữ liệu. quản trị viên hãy cẩn thận.


Để nhanh chóng thiết lập ổ đĩa thành một phân vùng ext4 duy nhất ...

  1. Xem các thiết bị được phát hiện của lớp "DISK"

    lshw -C disk
    
  2. Xem (các) bảng phân vùng hiện có

    fdisk -l
    
  3. Chỉnh sửa bảng phân vùng cho thiết bị đã chọn của tôi (trong trường hợp này là "sdx")

    fdisk /dev/sdx
    

    Trong FDISK, nhấn:

    • d... để d elete phân vùng hiện tại

    • n... để tạo phân vùng n ew

    • p... để chỉ định nó làm phân vùng P RIMary

    • 1... để đặt nó làm phân vùng chính 1 ST

    • w... để w nghi thức sự thay đổi.

  4. Hiển thị bảng phân vùng mới:

    fdisk -l
    
  5. Định dạng hệ thống tập tin của phân vùng mới là loại ext4

    mkfs -t ext4 /dev/sdx1
    
  6. Tạo một thư mục mới nơi ổ đĩa mới sẽ gắn vào:

    mkdir /storage
    mount /dev/sdx1 /storage
    

CHẠY

  1. Xóa các khối dành riêng (nghĩa là được đặt thành 0%), vì ổ đĩa này chỉ dành cho dữ liệu người dùng

    tune2fs -m 0 /dev/sdx1
    
  2. Vì máy chủ đang ở trên UPS, Đặt ghi lại để các ứng dụng không chờ ghi đĩa thực tế

    tune2fs -o journal_data_writeback /dev/sdx1
    
  3. Gắn kết khi khởi động bằng cách sử dụng /etc/fstabvà cũng đặt chính sách ghi lại

    vi /etc/fstab
    
  4. Tìm (hoặc thêm) dòng liên quan vào fstabổ đĩa của bạn. Các tham số trong fstab được phân tách bằng khoảng trắng, ví dụ ổ đĩa được mô tả ở trên có thể xuất hiện dưới dạng:

    /dev/sdx1 /storage ext4 relatime,errors=remount-ro 0 1
    
    • Tham số đầu tiên xác định phân vùng (theo / dev / hoặc UUID dài);
    • Tham số thứ hai là đường dẫn phân vùng sẽ được gắn vào;
    • Thứ ba là loại hệ thống tập tin;
    • Tham số thứ tư chứa các tùy chọn;
    • Thứ năm là dumplịch trình sao lưu; và,
    • Tham số thứ sáu là số pass (được sử dụng để kiểm soát fsckthứ tự).

Thay đổi các tùy chọn (tham số thứ 4) thành:

noatime,nodiratime,data=writeback,barrier=0,nobh,errors=remount-ro

Khởi động lại để kiểm tra xem mọi thứ đã diễn ra tốt đẹp.
Hãy nhớ rằng các lệnh này là phá hoại! Có bản sao lưu và cẩn thận!


3
Cần có một khoảng trống giữa lưu trữ và ext4. Vì vậy, lệnh giống như / dev / sdx1 / Storage ext4 relatime, lỗi = remount-ro 0 1
Ganesh Krishnan

Hướng dẫn tuyệt vời! Sẽ thật tuyệt khi có một số tài liệu tham khảo ở đây về cách xác định các tùy chọn fstab phù hợp (chỉ cần một liên kết đến một danh sách nào đó sẽ rất tuyệt)
Sander

13

Sử dụng parted

Bên dưới các hướng dẫn để tạo phân vùng ext4 mới trên ổ cứng mới parted(được thử nghiệm trên Ubuntu 14.04.4 LTS x64). partedhỗ trợ Bảng phân vùng GUID (GPT) và sau đó có thể được sử dụng cho các phân vùng trên 2TB, không giống như fdisk.

Sử dụng sudo lshw -C disk *-diskđể xem tên logic của ổ cứng mới của bạn:

   description: ATA Disk
   product: ST6000NM0024-1HT
   vendor: Seagate
   physical id: 0.0.0
   bus info: scsi@1:0.0.0
   logical name: /dev/sdb
   version: SN05
   serial: Z4D30T30
   size: 5589GiB (6001GB)
   configuration: ansiversion=5 sectorsize=4096

Tên logic là /dev/sdb. Chúng ta có thể bắt đầu:

sudo parted /dev/sdb mklabel gpt # Creating the GUID Partition Table (GPT)

Với sudo parted /dev/sdb print, chúng ta có thể thấy GPT đã được tạo:

username@server:~$ sudo parted /dev/sdb print
Model: ATA ST6000NM0024-1HT (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

Chúng tôi cũng cần biết kích thước của đĩa (chúng tôi sẽ sử dụng MB làm đơn vị):

sudo parted /dev/sdb print unit MB print free

cái chỉ ra rằng:

Disk /dev/sdb: 6001175MB

Bây giờ chúng ta có thể tạo phân vùng chính để nó chiếm toàn bộ dung lượng ổ cứng. Để đặt nhãn phân vùng:

sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB 

(xem https://unix.stackexchange.com/a/49274/16704 nếu bạn muốn biết lý do tại sao chúng tôi sử dụng --align optimal)

Với sudo parted /dev/sdb print, chúng ta có thể thấy nhãn phân vùng chính đã được tạo:

username@server:~$ sudo parted /dev/sdb print
Model: ATA ST6000NM0024-1HT (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  6001GB  6001GB  xfs          primary

Sau đó chúng ta cần sử dụng mkfs để thực sự tạo phân vùng:

sudo mkfs.ext4 /dev/sdb1

Phân vùng đã được tạo, chúng ta cần gắn kết nó. Để làm như vậy sudo nano /etc/fstabvà thêm dòng sau ( /crimealà thư mục mà chúng tôi chọn để gắn kết phân vùng mới):

/dev/sdb1       /crimea ext4 defaults   0       0      

Chúng tôi tạo thư mục và tải lại /etc/fstab:

sudo mkdir /crimea
sudo mount -a # Remount /etc/fstab without rebooting in Linux

Bạn có thể thấy phân vùng được gắn mới bằng cách sử dụng df -h:

/dev/sdb1                      5.5T   58M  5.2T   1% /crimea

Trong sudo nano /etc/fstab, thay vì sử dụng, /dev/sdb1bạn có thể sử dụng nó UUID, mà bạn có thể tìm thấy với sudo lshw -C volume:

*-volume
       description: EXT4 volume
       vendor: Linux
       physical id: 1
       bus info: scsi@1:0.0.0,1
       logical name: /dev/sdb1
       logical name: /crimea
       version: 1.0
       serial: c3559307-795b-66db-9844-8e974c88a1cf
       size: 200MiB
       capacity: 5589GiB
       capabilities: journaled extended_attributes huge_files dir_nlink extents ext4 ext2 initialized
       configuration: created=2016-06-24 14:56:55 filesystem=ext4 lastmountpoint=/boot modified=2016-07-01 17:15:55 mount.fstype=ext4 mount.options=rw,relatime,data=ordered mounted=2016-07-01 17:07:19 name=primary state=mounted

Nếu không, bạn chỉ có thể làm sudo blkid /dev/sdb1:

/dev/sdb1: UUID="c3559307-795b-66db-9844-8e974c88a1cf" TYPE="ext4"

Dòng mới /etc/fstabsẽ là:

UUID=c3559307-795b-66db-9844-8e974c88a1cf          5.5T   58M  5.2T   1% /crimea

https://unix.stackexchange.com/a/137868/16704 giải thích lý do tại sao nên sử dụng UUID (liquidat, cc by-sa 3.0):

Ưu điểm của việc sử dụng UUID là nó độc lập với số thiết bị thực tế mà hệ điều hành cung cấp cho đĩa cứng của bạn. Hình ảnh bạn thêm một đĩa cứng khác vào hệ thống và vì một số lý do, HĐH quyết định rằng đĩa cũ của bạn bây giờ sdbthay vì sba. Quá trình khởi động của bạn sẽ bị sai sót nếu fstab trỏ đến tên thiết bị. Tuy nhiên, trong trường hợp UUID, nó sẽ ổn.


Tóm lược:

sudo lshw -C disk                # Checking the location of the new drive. It is /dev/sdb.     
sudo parted /dev/sdb mklabel gpt # Creating the GUID Partition Table (GPT)
sudo parted /dev/sdb print       # Checking that the GPT has been created
sudo parted /dev/sdb print unit MB print free # see 6001175MB size
sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB # Creating partition label
sudo mkfs.ext4 /dev/sdb1         # Creating the partition
sudo nano /etc/fstab             # Add line `/dev/sdb1 /crimea ext4 defaults 0 0`
sudo mount -a # Remount /etc/fstab without rebooting

thay vào đó os nói với MB cuối sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MBsẽ tốt hơn ext4 0% 100%để tránh Cảnh báo: Phân vùng kết quả không được căn chỉnh chính xác để có hiệu suất tốt nhất.
Pablo Marin-Garcia
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.