Làm cách nào để phân bổ nhiều không gian hơn để hoán đổi và tăng kích thước của nó lớn hơn Ram?


8

Tình huống: tăng kích thước hoán đổi ( /dev/sda3) lớn hơn Ram (8 GB) khi
Động lực HD 128 GB : RAM 8 GB quá ít; Dung lượng trống 30 GB trong ổ SSD của tôi; Tôi muốn chuyển đổi 20 GB sang SSD
Đặc điểm của hệ thống

  • Trao đổi không thay đổi / thay đổi. Tôi không thể tìm thấy bất kỳ bằng chứng nào tại sao /mnt/.swapfilephải bất biến để bạn không cần thay đổi các thuộc tính tệp của tệp hoán đổi

    sudo lsattr /mnt/.swapfile 
    -------------e-- /mnt/.swapfile
    
  • Lệnh sudo fdisk -lu /dev/sdacho

    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
    
  • Lệnh df -hcho

    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
    
  • Phân bổ thêm dung lượng đĩa cho Hoán đổi /dev/sda3.

Quy trình làm việc không thành công của tôi cho tác vụ khi HD và Hoán đổi trên cùng một phân vùng, /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 và Hoán đổi trên cùng một phân vùng - Quy trình làm việc hiện tại [Ijaz, cas, FarazX]

Sáp nhập. Sử dụng fallocatengay từ đầu ddvì không cần đặt số không

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

Thêm dòng sau đây vào dòng /etc/fstabtốt hơn là thêm thứ đó vào runlevels của bạn ( /etc/rc.local), trong đó tôi đặt tệp hoán đổi /mnt/.swapfileđể duy trì triết lý Linux / Unix và duy trì tính toàn vẹn của các tập lệnh sao lưu hệ thống của tôi; Nếu đổi sang ổ SSD, hãy sử dụng discardtùy chọn để các khối được cắt bớt trong mỗi lần khởi động lại, vì vậy khôngsw

# 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

Nguồn

  1. Làm thế nào để tăng không gian hoán đổi? https://askubfox.com/a/178726/25388 Thảo luận chung về việc tăng không gian hoán đổi cho người mới bắt đầu.
  2. Phân vùng Linux HOWTO cho ổ cứng, không phải SSD: 4. Yêu cầu phân vùng. http://www.tldp.org/HOWTO/Partition/requirements.html Vì vậy, đừng đặt trao đổi của bạn vào các rãnh ngoài trên SSD mà hãy sử dụng defaults,discardcác tùy chọn để cắt các khối của bạn theo đề xuất của @cas.

Hệ thống: Linux Ubuntu 16.04 64 bit Nhân
Linux: 4.6
Mô-đun Linux: wl
Phần cứng: Macbook Air 2013-giữa
Ram: 8 GB
SSD: 128 GB


Đầu ra của fdisk -lu /dev/sda?
Stéphane Chazelas

Các tùy chọn đang thu hẹp fs trên / dev / sda2 và phân vùng lại (nhưng điều đó không thể được thực hiện từ hệ thống trực tiếp vì bạn không thể ngắt kết nối / dev / sda2 vì đó là hệ thống tập tin gốc: khởi động trên một số livecd là dễ nhất) hoặc sử dụng một tệp hoán đổi trái ngược với thiết bị chặn hoặc sử dụng hoán đổi nén hoặc ram nén
Stéphane Chazelas

1
Một vài trong số những cân nhắc về vị trí đó áp dụng cho SSD: vì chúng không có đầu hoặc rãnh như đĩa quay. Dải trên nhiều ổ đĩa có thể được áp dụng, nếu bạn có tải I / O rất lớn.
ilkkachu

1
@Masi Này bạn đời, tôi đã làm việc với hệ thống FreeBSD của tôi và một cái gì đó xuất hiện trong đầu tôi, chúng tôi có một lệnh được gọi chflagstrên BSD và OS X, và chúng tôi có một lệnh trên linux được gọi chattr, bạn có thể làm cho các tệp và thư mục của mình ngày càng an toàn hơn và bất biến bằng cách đặt một số thuộc tính, đây là hướng dẫn trên tecmint.com , tôi hy vọng điều này có thể giúp ích.
FarazX

Câu trả lời:


3

Bạn chỉ muốn tăng kích thước trao đổi trên hệ thống của mình bằng cách sử dụng khoảng trắng từ đó sda2. Của bạnsda2

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

Bạn có thể thêm không gian hoán đổi bổ sung vào hệ thống của mình bằng cách sử dụng tệp hoán đổi được tạo trên /đó sẽ sử dụng tệp của bạn sda2. Cứ làm đi:

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

và sau đó làm:

sudo mkswap /swapfile  
sudo swapon /swapfile 

và kiểm tra, bạn trao đổi không gian sẽ tăng thêm số tiền đó bằng cách sử dụng free -m

và có, để kích hoạt nó khi khởi động, thêm mục vào /etc/fstab

 /swapfile     none     swap     sw     0     0

3
Đúng, bạn sẽ có thể tính toán. Swapper sẽ thấy một bộ nhớ ảo lớn.
Lmwangi

3
@masi nếu bạn thêm một mục trong /etc/fstabbạn có thể tránh các mục trong rc.local. Đặt tệp hoán đổi ở đâu đó như thế nào /mnt/.swapvà bạn sẽ không cần phải lo lắng về nó quá nhiều nữa
roaima

4
  1. Quản lý bộ nhớ

    • Để hiển thị tóm tắt sử dụng trao đổi bằng thiết bị của bạn:

      $ swapon -s
      
    • Để hiển thị số lượng bộ nhớ vật lý và trao đổi miễn phí và đã sử dụng của bạn:

      $ free -h
      
    • Để phân bổ không gian cho / hoán đổi, bạn có thể sử dụng dòng dưới đây:

      $ fallocate -l 20G /swapfile
      % OR
      $ dd if=/dev/zero of=/swapfile bs=20480 count=1M
      
  2. Thay đổi quyền và tạo / kích hoạt trao đổi

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

    Bạn cũng có thể cải thiện bảo mật tệp của mình bằng cách thay đổi các thuộc tính tệp bằng cách sử dụng chattr. Tôi khuyên bạn nên đọc trang hướng dẫn của nó hoặc đọc hướng dẫn này trên trang web của Tecmint .

  3. Xác minh nó được kích hoạt bằng cách xem đầu ra của lệnh cat /proc/swaps, sử dụng freelệnh hoặc

    $ swapon -s
    
  4. Để kích hoạt nó lúc khởi động , chỉnh sửa /etc/fstab(thông tin tĩnh về hệ thống tập tin) để bao gồm những điều sau đây mà các lĩnh vực là fs_spec, fs_file, fs_vfstype, fs_mntops, fs_freqfs_passno, về mà bạn có thể đọc bởi man 5 fstab:

    $ vi /etc/fstab
    
    /swapfile     none     swap     defaults,discard     0     0
    
    • Trong tham số bốn fs_mntops , không chỉ sử dụng swkhi trao đổi với SSD mà defaults,discardđể các khối bộ nhớ được cắt bớt mỗi lần khởi động, hãy xem câu trả lời tại đây về Cách thực hiện Bẫy lỗi và Hoán đổi nếu Lỗi / Cảnh báo? Các discardtùy chọn chắc chắn hoạt động trên phân vùng.

2
@ Không, ngụy biện chỉ là dễ dàng, không cần đặt số không và thiết lập số đếm ddvì bạn có thể làm sai nếu bạn không biết những gì bạn đang làm, ddlà một lệnh siêu mạnh mẽ. Và không gian hoán đổi AFAIK trong Linux được sử dụng khi dung lượng bộ nhớ vật lý (RAM) đầy, và lưu ý rằng không có điểm gắn kết. Vì vậy, tôi nghĩ rằng nó không quan trọng ở đâu, chỉ cần điều chỉnh đến 600.
FarazX

1
@Masi niềm vui của tôi. BTW, bạn có thể đọc về các trường fstabbằng cách chạy man 5 fstab. Nguoi ban doi may man.
FarazX

@ Có tất nhiên rồi. Bạn có thể liệt kê các thuộc tính tệp theo lsattrvà như tôi đã đề cập, bạn có thể đặt chúng theo chattr. Chẳng hạn, nếu bạn muốn làm cho nó bất biến, bạn có thể sử dụng chattr +i /mnt/.swapfilehoặc trong BSD hoặc OS X bạn có thể sử dụng chflags uchg yourFile. Bạn có nhiều tùy chọn thuộc tính, ví dụ, khi một tệp có tập sthuộc tính bị xóa, các khối của nó sẽ bị xóa và ghi lại vào đĩa. Nhưng tôi khuyên bạn nên đọc trang hướng dẫn của nó và lướt mạng về. Nó không dễ như sử dụng chattr, và bạn nên biết những gì bạn thực sự sẽ làm!
FarazX

1
Thuộc tính cài đặt @Masi AFAIK tùy thuộc vào nhu cầu của bạn, vì vậy câu trả lời là không dành cho các hệ thống đa số. Nhưng bạn có thể tìm thấy một số hệ điều hành giống như Unix có một số tệp hoặc thư mục với các thuộc tính bất biến hoặc bị hạn chế được đặt theo mặc định, cho Instance, MacOS X.
FarazX

1
@Masi trên thực tế, không cần phải làm theo mặc định, vì vậy tôi nghĩ câu trả lời là không, vì Swapfiles hầu như được sử dụng tạm thời không phải là vĩnh viễn. Nếu bạn đang sử dụng phân vùng LVM, tốt hơn là tăng phân vùng trao đổi của bạn, thay vì tạo một tệp hoán đổi. Nhưng nếu bạn không thể làm điều đó và hoán đổi là lựa chọn duy nhất, không có vấn đề gì, nhưng nó sẽ ảnh hưởng đến hệ thống của bạn và làm chậm hiệu suất của nó. Không có sách quy tắc, mọi thứ phụ thuộc vào nhu cầu của bạn và những gì bạn có thể làm cho nó và mức độ an toàn mà bạn muốn hệ thống của mình đạt được.
FarazX

2

Bạn đặt câu hỏi, " Làm thế nào để phân bổ nhiều không gian hơn để hoán đổi và tăng kích thước của nó lớn hơn Ram? ", Không nói gì về việc thay đổi cách thiết lập hệ thống của bạn.

Fdisk và đầu ra miễn phí của bạn cho chúng tôi biết:

  • Bạn có một phân vùng aa (/ dev / sda3) dành riêng cho trao đổi. Nếu bạn chỉ thay đổi kích thước phân vùng đó, bạn không cần thay đổi bất cứ điều gì trong hệ thống của mình để sử dụng thêm không gian. (/ etc / fstab).
  • Bạn có một phân vùng (/ dev / sda2) có hệ điều hành trên đó. Phân vùng này có không gian trống 26G. Nếu bạn thu nhỏ phân vùng này thêm 20G, HĐH sẽ còn 5G để phát triển và sử dụng.

Phân vùng trao đổi không phải là phân vùng mở rộng, điều này làm cho việc tăng kích thước dễ dàng hơn một chút.

Công cụ yêu cầu:

  • Hệ điều hành có khả năng khởi động với gparted

Nhìn vào đây để biết vị trí của phiên bản miễn phí cuối cùng của Parted Magic

Hướng dẫn thay đổi kích thước phân vùng với gparted

  1. khởi động vào hệ điều hành khác có công cụ gparted
  2. Trong gparted; thay đổi kích thước phân vùng HĐH (/ dev / sda2). Thu nhỏ theo số lượng để quyên góp để trao đổi không gian. Điều này có thể mất rất nhiều thời gian vì tất cả dữ liệu trong không gian được giải phóng sẽ cần phải được di chuyển bởi gparted.
  3. Trong gparted; thay đổi kích thước phân vùng trao đổi (/ dev / sda3). Di chuyển và mở rộng để bao gồm tất cả không gian trống.
  4. khởi động lại vào hệ điều hành sda2.
  5. xác minh phân vùng trao đổi (/ dev / sda3) đang được sử dụng.

Hãy nhớ rằng bạn đang thay đổi đĩa và phân vùng ở mức độ thấp và bất kỳ lỗi hoặc sự cố nào cũng có thể làm hỏng dữ liệu của bạn.

Sao lưu dữ liệu của bạn trước.


Tôi nghĩ rằng bạn không cần gpartedở đây vì bạn có thể đặt tăm bông vào cùng một đĩa nơi hệ điều hành của bạn.
Léo Léopold Hertz

Đúng, nhưng sau đó bạn sẽ có 2 trao đổi. Tập tin trên / sda2 và phân vùng trên / sda3. Điều này trả lời một phần của câu hỏi đã hỏi "Phân bổ thêm dung lượng đĩa cho Hoán đổi trong / dev / sda3. Làm thế nào để lấy nó từ / dev / sda2?".
jc__

Liên quan đến tuyên bố: "Tuy nhiên, không chắc chắn vì tôi nghĩ / dev / sda2 và / dev / sad3 nằm trên cùng một phân vùng đĩa". /dev/sda2 /dev/sda3 là các phân vùng riêng biệt.
jc__

Vì vậy, bạn đang thêm một thiết bị khác có không gian trên đó bạn muốn sử dụng để trao đổi? Nếu có. Bạn có thể tạo một phân vùng mới của kiểu hoán đổi trên nó và khi cắm vào và sẵn sàng để sử dụng làm một swaponhoặc tương tự. Trên thiết bị loại bỏ làm một swapoffhoặc tương tự. Trạng thái trao đổi thiết bị sẽ không được ghi nhớ khi khởi động lại hệ điều hành.
jc__

1
mkfs sẽ định dạng một phân vùng với một hệ thống tập tin. (vfat, ext2, ext4, ntfs). chattr sẽ thay đổi các thuộc tính tệp của một tệp trên hệ thống tệp ext.
jc__
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.