Bagaimana Mengalokasikan Lebih Banyak Ruang untuk Bertukar dan Meningkatkan Ukurannya Lebih Besar dari Ram?

8

Situasi: menambah ukuran swap ( /dev/sda3) lebih besar dari Ram (8 GB) saat HD 128 GB
Motivasi: 8 GB RAM terlalu sedikit; 30 GB ruang kosong di SSD saya; Saya ingin mengubah 20 GB ke SSD menukar
Karakteristik sistem

  • Tukar tidak dapat diubah / diubah. Saya tidak dapat menemukan bukti mengapa /mnt/.swapfiletidak dapat diubah sehingga Anda tidak perlu mengubah atribut file dari swapfile

    sudo lsattr /mnt/.swapfile 
    -------------e-- /mnt/.swapfile
    
  • Perintah sudo fdisk -lu /dev/sdamemberi

    Disk /dev/sda: 113 GiB, 121332826112 bytes, 236978176 sectors 
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: gpt
    Disk identifier: 082F85CA-EE3E-479C-8244-858B196FA5BA
    
    Device         Start       End   Sectors   Size Type
    /dev/sda1       2048      4095      2048     1M BIOS boot
    /dev/sda2       4096 220323839 220319744 105.1G Linux filesystem
    /dev/sda3  220323840 236976127  16652288     8G Linux swap
    
  • Perintah df -hmemberi

    Filesystem      Size  Used Avail Use% Mounted on
    udev            3.9G     0  3.9G   0% /dev
    tmpfs           793M  9.4M  784M   2% /run
    /dev/sda2       104G   74G   25G  75% /
    tmpfs           3.9G   54M  3.9G   2% /dev/shm
    tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
    tmpfs           793M   64K  793M   1% /run/user/1000
    
  • Alokasikan lebih banyak ruang disk untuk Swap masuk /dev/sda3.

Alur kerja saya yang gagal untuk tugas ketika HD dan Swap pada partisi yang sama, /dev/sda3

masi@masi:~$ sudo -i

root@masi:~# swapoff /dev/sda3

root@masi:~# swapon
[blank]    

root@masi:~# dd if=/dev/zero of=/dev/sda3 bs=20480 count=1M
dd: error writing '/dev/sda3': No space left on device
416308+0 records in
416307+0 records out
8525971456 bytes (8.5 GB, 7.9 GiB) copied, 18.7633 s, 454 MB/s

root@masi:~# mkswap /dev/sda3
Setting up swapspace version 1, size = 8 GiB (8525967360 bytes)
no label, UUID=245cb42c-1d4e-4e21-b544-16b64af962d6

root@masi:~# swapon -p 99 /dev/sda3

root@masi:~# swapon
NAME       TYPE      SIZE USED PRIO
/dev/sda3  partition   8G   0B   99

root@masi:~# vi /etc/fstab 
...

HD dan Swap pada Partisi yang sama - Alur Kerja Saat Ini [Ijaz, cas, FarazX]

Penggabungan. Gunakan fallocatedi awal sebagai gantinya ddkarena tidak perlu menempatkan nol

masi@masi:~$ sudo fallocate -l 20G /mnt/.swapfile

masi@masi:~$ sudo mkswap /mnt/.swapfile 
Setting up swapspace version 1, size = 20 GiB (21474832384 bytes)
no label, UUID=45df9e48-1760-47e8-84d7-7a14f56bbd72

masi@masi:~$ sudo swapon /mnt/.swapfile
swapon: /mnt/.swapfile: insecure permissions 0644, 0600 suggested.

masi@masi:~$ sudo chmod 600 /mnt/.swapfile

masi@masi:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7925        1494         175         196        6255        5892
Swap:         28610           0       28610

Tambahkan baris berikut di Anda /etc/fstabyang lebih baik daripada menambahkan hal itu ke runlevel Anda ( /etc/rc.local), di mana saya menempatkan swapfile ke /mnt/.swapfileuntuk mempertahankan filosofi Linux / Unix dan menjaga integritas skrip cadangan sistem saya; Jika menukar ke SSD, gunakan discardopsi sehingga blok dipangkas pada setiap reboot, jadi tidaksw

# http://unix.stackexchange.com/a/298212/16920
# http://unix.stackexchange.com/a/298543/16920

# If swap is on SSD, trim blocks each time at startup.
/mnt/.swapfile  none    swap    defaults,discard      0        0

# If swap on External HDD, just use sw.
#/media/masi/SamiWeek/.swapfile  none    swap    sw      0        0

Sumber

  1. Bagaimana cara menambah ruang swap? https://askubuntu.com/a/178726/25388 Diskusi umum tentang peningkatan ruang swap untuk pemula.
  2. Linux Partition HOWTO untuk HDD, bukan SSD: 4. Persyaratan partisi. http://www.tldp.org/HOWTO/Partition/requirements.html Jadi jangan menempatkan swap Anda ke trek luar pada SSD tetapi gunakan defaults,discardopsi untuk memangkas blok Anda seperti yang diusulkan oleh @cas.

Sistem: Linux Ubuntu 16.04 64 bit
Kernel Linux: 4.6
modul Linux: wl
Perangkat keras: Macbook Air 2013-pertengahan
Ram: 8 GB
SSD: 128 GB

Léo Léopold Hertz 준영
sumber
Output dari fdisk -lu /dev/sda?
Stéphane Chazelas
Opsi menyusut fs di / dev / sda2 dan partisi ulang (tapi itu tidak dapat dilakukan dari sistem live karena Anda tidak dapat meng-unmount / dev / sda2 karena itu adalah sistem file root: boot pada beberapa livecd adalah yang termudah), atau gunakan file swap sebagai lawan dari blok perangkat, atau gunakan swap terkompresi atau ram terkompresi
Stéphane Chazelas
1
Beberapa pertimbangan penempatan berlaku untuk SSD: s, karena tidak memiliki kepala atau trek seperti disk berputar. Melucuti beberapa drive mungkin berlaku, jika Anda memiliki beban I / O yang besar.
ilkkachu
1
@Masi Hai teman, saya sedang bekerja dengan sistem FreeBSD saya dan sesuatu muncul dalam pikiran saya, kami memiliki perintah yang dipanggil chflagspada BSD dan OS X, dan kami memiliki perintah di linux yang dipanggil chattr, Anda dapat membuat file dan direktori Anda lebih dan lebih aman dan tetap dengan menetapkan beberapa atribut, berikut ini adalah panduan di tecmint.com , saya harap ini dapat membantu.
FarazX

Jawaban:

3

Anda hanya ingin menambah ukuran swap pada sistem Anda menggunakan ruang dari sda2. Andasda2

/dev/sda2       104G   74G   25G  75%  / 

Anda dapat menambahkan ruang swap tambahan ke sistem Anda dengan menggunakan file swap yang dibuat pada /yang akan memanfaatkan sda2. Kerjakan saja:

dd if=/dev/zero of=/swapfile bs=20480 count=1M

dan kemudian lakukan:

sudo mkswap /swapfile  
sudo swapon /swapfile 

dan periksa, Anda menukar ruang akan meningkat dengan jumlah itu menggunakan free -m

dan ya, untuk mengaktifkannya saat boot tambahkan entri /etc/fstab

 /swapfile     none     swap     sw     0     0
Ijaz Ahmad Khan
sumber
3
Yap, Anda harus bisa menghitung. Swapper akan melihat memori virtual yang besar.
Lmwangi
3
@masi jika Anda menambahkan entri, /etc/fstabAnda dapat menghindari entri rc.local. Letakkan file swap di suatu tempat seperti /mnt/.swapdan Anda tidak perlu terlalu khawatir tentang hal itu lagi
roaima
4
  1. Manajemen memori

    • Untuk menampilkan ringkasan penggunaan swap oleh perangkat Anda:

      $ swapon -s
      
    • Untuk menampilkan jumlah memori fisik dan swap gratis dan bekas Anda:

      $ free -h
      
    • Untuk mengalokasikan ulang ruang ke / swapfile, Anda dapat menggunakan baris di bawah ini:

      $ fallocate -l 20G /swapfile
      % OR
      $ dd if=/dev/zero of=/swapfile bs=20480 count=1M
      
  2. Ubah izin dan buat / aktifkan swap

    $ chmod 600 /swapfile
    
    $ mkswap /swapfile
    
    $ swapon /swapfile
    

    Anda juga dapat meningkatkan keamanan file Anda dengan mengubah atribut file Anda menggunakan chattr. Saya sarankan Anda membaca halaman manualnya, atau membaca panduan ini di situs web Tecmint .

  3. Verifikasi itu diaktifkan dengan melihat output dari perintah cat /proc/swaps, gunakan freeperintah, atau

    $ swapon -s
    
  4. Untuk mengaktifkannya pada saat boot , mengedit /etc/fstab(informasi statis tentang sistem file) untuk memasukkan berikut di mana bidang yang fs_spec, fs_file, fs_vfstype, fs_mntops, fs_freqdan fs_passno, tentang yang Anda dapat dibaca oleh man 5 fstab:

    $ vi /etc/fstab
    
    /swapfile     none     swap     defaults,discard     0     0
    
    • Pada parameter keempat fs_mntops , jangan gunakan hanya swketika bertukar ke SSD tetapi defaults,discardsedemikian rupa sehingga blok memori dipangkas setiap kali pada saat startup, lihat jawabannya di sini tentang Cara Melakukan Trap-trap dan Swapoff jika Kesalahan / Peringatan? The discardpilihan pasti bekerja pada partisi.
FarazX
sumber
2
@Masi tidak, fallocate hanya easire, tidak perlu memasukkan angka nol dan mengatur hitungan ddkarena Anda mungkin melakukan kesalahan jika Anda tidak tahu apa yang Anda lakukan, ddadalah perintah yang sangat kuat. Dan ruang AFAIK Swap di Linux digunakan ketika jumlah memori fisik (RAM) penuh, dan perlu diketahui bahwa tidak ada titik mount. Jadi saya pikir tidak masalah di mana itu, hanya chmod ke 600.
FarazX
1
@Masi kesenangan saya. BTW, Anda bisa membaca tentang bidang fstabdengan menjalankan man 5 fstab. Semoga beruntung kawan.
FarazX
@ Ya tentu saja. Anda dapat mendaftar atribut file berdasarkan lsattr, dan seperti yang saya sebutkan, Anda dapat mengaturnya chattr. Misalnya, jika Anda ingin membuatnya tidak berubah, Anda dapat menggunakan chattr +i /mnt/.swapfile, atau di BSD atau OS X yang dapat Anda gunakan chflags uchg yourFile. Anda memiliki banyak opsi atribut, misalnya, ketika file dengan sset atribut dihapus, bloknya akan di-zeroed dan ditulis kembali ke disk. Tapi saya sarankan Anda membaca halaman manual dan menjelajah internet. Ini tidak semudah kelihatannya digunakan chattr, dan Anda harus menyadari apa yang sebenarnya akan Anda lakukan!
FarazX
1
Atribut pengaturan @Masi AFAIK sesuai dengan kebutuhan Anda, jadi jawabannya tidak untuk sistem mayoritas. Tetapi Anda dapat menemukan beberapa sistem operasi Unix-Like memiliki beberapa file atau direktori dengan atribut yang tidak dapat diubah atau dibatasi yang ditetapkan secara default, untuk Instance, MacOS X.
FarazX
1
@Masi pada kenyataannya, tidak perlu melakukannya secara default, jadi saya pikir jawabannya tidak, karena Swapfiles kemungkinan besar digunakan sementara tidak secara permanen. Jika Anda menggunakan partisi LVM lebih baik untuk meningkatkan partisi swap Anda, daripada membuat swapfile. Tetapi jika Anda tidak dapat melakukan itu dan swapfile adalah satu-satunya pilihan, tidak ada masalah, tetapi itu akan mempengaruhi sistem Anda dan memperlambat kinerjanya. Tidak ada buku peraturan, semuanya tergantung pada kebutuhan Anda, dan apa yang dapat Anda lakukan untuk itu, dan seberapa aman sistem yang Anda inginkan.
FarazX
2

Anda bertanya, " Bagaimana Mengalokasikan Lebih Banyak Ruang untuk Bertukar dan Meningkatkan Ukurannya Lebih Besar dari Ram? ", Tidak mengatakan apa-apa tentang mengubah cara sistem Anda diatur.

Fdisk dan output gratis Anda memberi tahu kami:

  • Anda memiliki partisi (/ dev / sda3) yang didedikasikan untuk swap. Jika Anda hanya mengubah ukuran partisi itu, Anda tidak perlu mengubah apa pun di sistem Anda untuk menggunakan ruang ekstra. (/ etc / fstab).
  • Anda memiliki partisi (/ dev / sda2) yang memiliki OS di atasnya. Partisi ini memiliki ruang bebas 26G. Jika Anda mengecilkan partisi ini sebesar 20G OS akan memiliki 5G tersisa untuk tumbuh dan digunakan.

Partisi swap bukan merupakan partisi extended, ini membuatnya sedikit lebih mudah untuk meningkatkan ukuran.

Alat yang dibutuhkan:

  • OS yang dapat di-boot dengan gparted

Lihat di sini untuk satu lokasi versi gratis dari Parted Magic

Instruksi untuk mengubah ukuran partisi dengan gparted

  1. boot ke OS lain yang memiliki alat gparted
  2. Dalam gparted; mengubah ukuran partisi OS (/ dev / sda2). Kecilkan menurut jumlah untuk disumbangkan ke ruang swap. Ini bisa memakan banyak waktu karena semua data yang ada di ruang yang dibebaskan harus dipindahkan oleh gparted.
  3. Dalam gparted; mengubah ukuran partisi swap (/ dev / sda3). Pindahkan dan luaskan untuk memasukkan semua ruang kosong.
  4. reboot ke sda2 OS.
  5. memverifikasi partisi swap (/ dev / sda3) sedang digunakan.

Ingatlah bahwa Anda mengubah disk dan partisi Anda pada tingkat rendah dan bahwa setiap kesalahan atau kerusakan dapat merusak data Anda.

Cadangkan data Anda terlebih dahulu.

jc__
sumber
Saya pikir Anda tidak perlu di gpartedsini karena Anda dapat memasukkan swab di disk yang sama di mana OS Anda berada.
Léo Léopold Hertz 준영
Benar, tetapi kemudian Anda akan memiliki 2 swap. File di / sda2 dan partisi di / sda3. Ini menjawab bagian dari pertanyaan yang menanyakan "Alokasikan lebih banyak ruang disk untuk Swap di / dev / sda3. Bagaimana cara mengambilnya dari / dev / sda2?".
jc__
Mengacu pada pernyataan: "Namun, tidak yakin karena saya pikir / dev / sda2 dan / dev / sad3 berada di partisi disk yang sama". /dev/sda2 dan /dev/sda3 merupakan partisi yang terpisah.
jc__
Jadi Anda menambahkan perangkat lain yang memiliki ruang di atasnya yang ingin Anda gunakan untuk swap? Jika ya. Anda dapat membuat partisi baru bertukar tipe di atasnya dan ketika dicolokkan dan siap digunakan, lakukan swaponatau serupa. Pada penghapusan perangkat melakukan swapoffatau serupa. Status swap perangkat tidak akan diingat pada reboot OS.
jc__
1
mkfs akan memformat partisi dengan sistem file. (vfat, ext2, ext4, ntfs). chattr akan mengubah atribut file suatu file pada sistem file ext.
jc__