Bagaimana cara mengubah ukuran partisi menggunakan baris perintah tanpa menggunakan GUI di server?

45

Saya hanya memiliki akses ke server melalui terminal dan saya tidak bisa menggunakan alat grafis seperti GParted!
Saya ingin membuat partisi baru dari bagian root (sekitar 768mb) untuk swap.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         20G  1.3G   18G   7% /
udev             10M     0   10M   0% /dev
tmpfs           199M  4.9M  194M   3% /run
tmpfs           100M   12K  100M   1% /run/user
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
Hamid FzM
sumber

Jawaban:

37

Anda tidak dapat mengecilkan / mengedit partisi jika salah satu partisi pada perangkat penyimpanan dipasang. Jadi untuk meng-unmount dan mengedit sistem file root, OS perlu dimatikan. Kemudian boot ke sistem live dan edit partisi seperti dijelaskan dalam jawaban lain.

Solusi alternatif: swap file

Sebagai alternatif untuk membuat seluruh partisi, file swap menawarkan kemampuan untuk memvariasikan ukurannya secara langsung , dan lebih mudah dihapus sama sekali. File swap dapat plugable panas . yaitu dapat ditambahkan dan dihapus tanpa melepas / mematikan OS.

  1. Buat file 512 MB dengan nama /swapfile. Ini akan menjadi file swap kami.

    fallocate -l 512M /swapfile  
    

    ATAU

    dd if=/dev/zero of=/swapfile bs=1M count=512
    
  2. Tetapkan izin yang tepat (karena file swap yang dapat dibaca dunia adalah kerentanan lokal yang sangat besar):

    chmod 600 /swapfile
    
  3. Setelah membuat file berukuran benar, format untuk menukar:

    mkswap /swapfile
    
  4. Aktifkan file swap:

    swapon /swapfile
    
  5. Edit /etc/fstabdan tambahkan entri untuk file swap:

    /swapfile none swap defaults 0 0
    

Lebih detail di arch linux wiki .

totti
sumber
Saya pikir ini adalah jawaban yang paling mudah dan efisien =)! Apakah ada implikasi dalam menggunakan file daripada partisi?
Alaa Ali
2
Performa Sedikit Rendah jika file terfragmentasi. Tidak ada keuntungan kinerja untuk file swap atau partisi yang berdekatan, keduanya diperlakukan dengan cara yang sama.
totti
1
Saya pikir ini adalah solusi terbaik. Karena Anda tidak memformat, menyusut atau mengubah partisi (tabel), tidak ada risiko kehilangan data.
R110
28

Pertama-tama adalah penting untuk mengetahui bahwa Anda tidak dapat mengubah ukuran untuk mengecilkan partisi root Anda jika Anda menggunakannya (Ini disebut penyusutan online). Anda hanya dapat mengembangkannya secara online. Ini didukung oleh resize2fsperintah. Saya akan menganggap sebagai berikut:

  • Anda tidak ingin kehilangan informasi Anda di partisi root.
  • Anda tidak memiliki akses fisik ke hard drive untuk menggunakan LiveCD. Ini dapat diterapkan ke lingkungan virtual atau yang jauh. Dalam kasus yang virtual Anda masih dapat mengatur untuk boot dari LiveCD jika Anda mengatur VM untuk boot dari LiveCD. Ini dengan asumsi VM mendukung keluaran GUI Desktop dari tempat Anda menjalankan aplikasi Gparted untuk mengubah ukuran dengan mudah. Tetapi karena ini kecil kemungkinan saya menganggap Anda tidak bisa.

Ada 2 jenis partisi yang dapat Anda ubah ukurannya, partisi LVM atau partisi Logical Volume Manager yang mendukung pengubahan ukuran Online (Shrinking / Growing) sejak penciptaan galaksi dan partisi standar yang kebanyakan kita gunakan. Saat ini satu-satunya yang memiliki hampir 100% dukungan untuk mengubah ukuran online lengkap (Shrink / Grow) adalah sistem file btrfs (Yang masih dalam pengembangan). Saya akan menjelaskan bagaimana cara melakukan partisi normal yang kebanyakan kita gunakan di sistem file ext4.

Mengubah ukuran (Growing) Partisi

Untuk menumbuhkan partisi Anda, Anda dapat melakukannya dengan root yang dipasang. Untuk melakukan ini cukup lakukan:

sudo resize2fs /dev/sda1

Asalkan Anda sudah memiliki ruang kosong yang siap untuk digabung. Setelah itu saya merekomendasikan untuk me-reboot agar perubahan diterapkan dengan benar. Perintah di atas akan mengubah ukuran ke maksimum yang diizinkan. Jika Anda ingin mengubah ukuran ke ukuran tertentu maka cukup tambahkan ukuran di akhir:

sudo resize2fs /dev/sda1 25G

Perhatikan bahwa jika Anda ingin menentukan 25,4 GB, Anda tidak dapat menggunakan "." Anda harus turun satu unit ukuran. Dalam hal ini dari GB ke MB, jadi akan terlihat seperti ini:

sudo resize2fs /dev/sda1 25400M

Dengan cara ini Anda akan memiliki partisi 25,4G

Mengubah ukuran (Penyusutan) Partisi

Mengecilkan partisi adalah proses dua langkah yang melibatkan:

  • Mengurangi ukuran sistem file dengan jumlah yang dibutuhkan.
  • Mengurangi ukuran perangkat blok yang mendasarinya agar sesuai dengan sistem file.

Sebelum mengurangi kapasitas sistem file, Anda perlu mengurangi ukuran perangkat blok (Yang bisa berupa partisi atau volume logis). Karena ini tidak tersedia untuk semua sistem file * ext, Anda tidak akan dapat mengecilkannya dari 20 GB menjadi 19,5 GB untuk membuat swap 500 MB.

Bahkan Ext4 tidak mendukung penyusutan online. Jika Anda mencoba melakukannya, Anda akan mendapatkan yang berikut:

masukkan deskripsi gambar di sini

Satu-satunya taruhan Anda sejauh yang saya tahu adalah:

  • Instal versi Ubuntu lain di server yang sama (Di partisi lain) yang kemudian dapat digunakan untuk mengecilkan partisi root dari Server Ubuntu asli.

  • Instal server Ubuntu dari awal dengan ukuran yang Anda inginkan

  • Gunakan Ubuntu Server Live Image untuk mengubah ukuran partisi. Untuk kasus ini, Anda harus membuka layar ini:

    masukkan deskripsi gambar di sini

    Dan pilih opsi Resize seperti yang ditunjukkan pada gambar di atas. Dari sana Anda akan memilih ukuran baru karena dari sini Anda dapat melepas unit dan mengecilkannya jika diinginkan.

Sebagai bantuan tambahan di sini adalah file sistem gparted suppor http://gparted.org/features.php yang memberikan daftar yang sangat rinci dari yang didukung dan termasuk jika mereka memiliki ukuran online penuh. Btrfs ada di antara mereka.

Luis Alvarado
sumber
Saya ingin tahu, apakah ada sistem file lain yang mendukung penyusutan online? zfs atau btrfs mungkin?
Seth
Saya telah menambahkan tautan di bagian bawah. Kernel juga perlu mendukung ini jika sistem file ingin mengubah ukuran secara online dengan benar.
Luis Alvarado
Saya memiliki server ubuntu di mesin vmware dan ukuran disk-nya adalah 120G. Tapi setelah menggunakan solusi pertama, saya mendapatkan kesalahan ini: Sistem file sudah 27262720 blok. Tidak ada yang bisa dilakukan!
Dr.jacky
1
Terima kasih @ Tn. Hyde. Ada beberapa masalah dengan Workstation 10 dan bahkan 11. Saya akan merekomendasikan 12 dan untuk Ubuntu saya juga akan memperbarui baik ke LTS terbaru atau baru karena ada juga beberapa masalah. Dalam kasus saya, saya memiliki VMware workstation 12.0.1 dan Ubuntu 15.10 64 bit.
Luis Alvarado
3
Dari manual resize2fs:The resize2fs program does not manipulate the size of partitions.
ACK_stoverflow
6

Jawabannya tergantung pada apakah Anda dapat melepas partisi untuk menyusut, atau tidak. Dalam kasus Anda, Anda mungkin tidak dapat melepas partisi. Di Linux (UNIX / MAC OS), pemasangan partisi mengacu menggunakan sistem file dan memetakannya ke titik pemasangan (dalam kasus Anda /). Melepas berarti Anda berhenti menggunakan sistem file, dan menghapus pemetaan ke titik pemasangan. Anda tidak dapat meng-unmount sistem file yang berisi OS Anda yang berjalan.

Jika partisi dapat dilepas

Mari kita asumsikan Anda ingin mengecilkan partisi ext4 200GB di /dev/sda4mount ke /data. Saat ini berisi musik dan film atau sejenisnya, sehingga Anda dapat melepasnya untuk sementara. Anda ingin membuat swap 4GB.

sudo umount /dev/sda4

untuk melepas partisi.

sudo resize2fs /dev/sda4 196G

untuk mengubah ukuran sistem file ext4 ke 196 GB, dengan asumsi bahwa ada cukup ruang. Sekarang, Anda harus menyusutkan partisi. Saat ini saya percaya Anda perlu menggunakan cfdiskuntuk menghapus partisi yang ada, dan membuat ulang partisi yang lebih kecil di tempatnya. Anda kemudian dapat juga membuat partisi baru untuk swap.

sudo cfdisk /dev/sda 

akan memberi Anda gui berbasis teks untuk memeriksa tabel partisi Anda. Saya akan merekomendasikan Anda ke printtabel partisi ke file atau layar pada saat itu, dan perhatikan konfigurasi saat ini sebagai cadangan. Anda kemudian dapat memilih /dev/sda4dan deletepartisi. Sebagai gantinya, free spaceakan ditampilkan. Gunakan newuntuk membuat partisi baru dengan 196 GB di tempatnya, dan atur tipenya menjadi ext4. Kemudian, pindah ke ruang kosong tambahan dan buat partisi swap 4GB dengan tipe swap. Catatan: Saya tidak menguji perintah ini, karena saya tidak bisa bermain-main dengan saya /saat ini.

Jika partisi tidak dapat dilepas

Anda tidak dapat mengecilkan partisi ext3 / 4 yang terpasang (lihat halaman manual resize2fs). Saat Anda menjalankan OS dari /, Anda tidak dapat melepas /. Itu berarti Anda harus mem-boot OS lain (mis. Dari kunci USB) untuk melakukan perubahan.

Dalam kasus Anda, ini adalah server jarak jauh (pada KVM kemungkinan besar), jadi Anda mungkin tidak dapat mem-boot dari USB / gambar OS langsung. Mungkin ada cara lain untuk mengubah partisi dari penyedia vServer Anda melalui admin GUI. Saya percaya itu adalah taruhan terbaik Anda saat ini.

noleti
sumber