Як встановити Ubuntu з кешуванням диска та кешуванням SSD


10

Я використовую Ubuntu у корпоративному середовищі, і в нашій політиці безпеки зазначено, що ми повинні використовувати повне шифрування диска.

У мене також є ноутбук з 32 ГБ mSATA SSD і 750 ГБ спінінг-іржі. Моя поточна установка використовує bcache для використання цього, встановленого за допомогою цієї процедури . Це забезпечує дуже приємне підвищення продуктивності без мене турбуватися про заповнення SSD.

Це буде надурене питання. Награда буде вручатися за:

  • Чіткий, надійний метод виконання нової установки Ubuntu
    • Будь-який випуск прийнятний, але 15.04 (Vivid) буде добре
  • Вся файлова система буде зашифрована
    • Перевагою тут є використання відповідного прапорець у програмі встановлення за замовчуванням Ubiquity (шифрування dm-crypt)
  • Файлова система буде кешована на SSD
    • Для переваги, метод ядра dm-cache / lvmcache див. Тут, щоб зробити це з Debian Jessie
    • Кеш також повинен бути захищений (тобто зашифрований)
    • Повинно бути чітке пояснення, чому кеш також зашифрований

Я вже спробував метод Debian Jessie вище, але він відмовляється завантажуватися для мене. Ще не спробували метод, описаний у коментарях тут .

Розміщені рішення будуть протестовані на VirtualBox VM з двома порожніми віртуальними дисками та копією випуску робочого столу 15.04 (випуск amd64). Bounty переходить до першого рішення, яке я приймаю, щоб перевстановити власне обладнання.

Будь ласка, напишіть своє рішення так, ніби воно переходило у вікі спільноти.


Я нагородив нагороду - я думаю, що все ще є потенціал для рішення "LUKS-on-LVM", який поєднує простоту затвердженої відповіді лише з одним паролем, використовуючи лише компоненти пристрою-картографа.


Як я розумію, ви не хочете використовувати lvmcache в LVM за замовчуванням на установці LUKS ubuntu, оскільки кеш буде незашифрований.
solsTiCe

@solsTiCe - наскільки я розумів, що lvmcrypt, будучи приємним простим шаром поверх dm-кешу, повинен бути також можливим узгодження з LUKS (LUKS є іншою справою-картографом пристрою, dm-crypt), просто важливо в який спосіб навколо вас шарують речі
Адріан

Ви повинні розуміти, що / boot-розділ, безумовно, доведеться розшифровувати. bcache був несумісний із grub на Ubuntu 14.04, і я вважаю, що все ще є.
Адам Річковський

@AdamRyczkowski Так, у мене зараз така конфігурація. Це прийнятно, але я вважаю за краще конфігурацію LUKS.
Адріан

Я не бачу, чому LUKS би виключав bcache ... Вони не залежать один від одного, і кожен може радісно сидіти один над одним.
Адам Річковський

Відповіді:


7

LVM на LUKS на bcache

Тут російська гра- лялька трохи глибша, з 3 стеками / шарами ...

Моя початкова ідея щодо цього питання полягала в тому, щоб використовувати встановлену Ubuntu за замовчуванням з LVM на LUKS та перетворити її в пристрій резервного копіювання bcache з блоками, але це не спрацювало для мене на моєму тесті з LVM.

Більше того, інсталятор ubuntu ( повсюдності ) занадто обмежений для встановлення всередині пристрою bcache, підготовленого заздалегідь (принаймні, з LUKS на LVM), тому ми переходимо до методу робити речі вручну.

Завантажтесь на живий CD / USB та оберіть "Спробуйте Ubuntu" та відкрийте термінал

Попередньо встановіть

sudo -i
# Define some variable to avoid confusion and error
luks_part=/dev/sda3
boot=/dev/sda2                    # boot partition
caching_bcache=/dev/sdb           # SSD or partition in SSD

# Do secure erase of encrypted backing and caching device (see Notes [1])
dd if=/dev/urandom of=$luks_part || dd if=/dev/urandom of=$caching_bcache
# Go and grab some coffe, this will take a while...

apt-get install bcache-tools
# Setup bcache caching and backing devices
make-bcache -C $caching_bcache -B $luks_part
# (Optional) Tweak bcache
echo writeback > /sys/block/bcache0/bcache/cache_mode

# Below we now create manually what ubiquity should have done for us
# Setup LUKS device on bcache device
cryptsetup --key-size 512 luksFormat /dev/bcache0
cryptsetup luksOpen /dev/bcache0 crypted

# Setup LVM on LUKS
# You can skip that part if you don't want to use a swap
# or don't want to use multiple partition. Use /dev/mapper/crypted
# as you root latter on
pvcreate  /dev/mapper/crypted
vgcreate vg /dev/mapper/crypted
lvcreate -L 1G vg -n swap
lvcreate -l 100%FREE vg -n root

Установка

Тримайте термінал відкритим і тепер запустіть інсталяцію. Виберіть "Щось інше" при розділенні та вкажіть

  • ваш завантажувальний розділ ( /dev/sda2)
  • ваш кореневий розділ ( /dev/mapper/vg-root)
  • ваш своп ( /dev/mapper/vg-swap)

і встановіть прапорець для форматування ваших розділів

В кінці інсталяції не перезавантажуйте, а просто натисніть «Продовжити спробу ubuntu»

Після встановлення

У нашому відкритому терміналі

# Install bcache-tools to add bcache module to initramfs
mount /dev/mapper/vg-root /mnt
mount $boot /mnt/boot
mount -o bind /sys /mnt/sys
mount -o bind /proc /mnt/proc
mount -o bind /dev /mnt/dev
chroot /mnt
# To get apt-get running in the chroot
echo 'nameserver 8.8.8.8' > /run/resolvconf/resolv.conf
apt-get install bcache-tools

# Create /etc/crypttab to add crypted bcached partition
echo "crypted UUID=`blkid -o value /dev/bcache0|head -1` none luks" > /etc/crypttab

exit
sync
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /mnt/boot
umount /mnt
vgchange -an /dev/mapper/crypted
cryptsetup luksClose crypted
sync

# Reboot & enjoy

Існує відома помилка перезавантаження Ubuntu 15.04 з Live CD / USB, тому вам, можливо, доведеться змусити перезавантажувати / відключати

Перевірити

Після завантаження ви можете перевірити, що /dev/bcache0насправді є розділом LUKS

if sudo cryptsetup isLuks /dev/bcache0; then \
    echo "crypted";\
    else echo "unencrypted";\
fi

Це тому, що це кеш вашого розділу LUKS, і тепер ви отримуєте доступ до своїх даних через пристрій, /dev/bcache0а не з оригінального резервного пристрою ( /dev/sda3тут)

Список літератури

http://bcache.evilpiepirate.org/

https://wiki.archlinux.org/index.php/Bcache

https://wiki.archlinux.org/index.php/Dm-crypt

bcache-статус поки офіційно не об'єднаний у bcache-інструменти. Ви можете мати його тут: https://gist.github.com/djwong/6343451

[1] Можуть бути кращі способи зробити це протирання


Переконайтеся, що запустити update-initramfs -uk allпісля створення криптовалюти та наступної exitкоманди.
дес

4

LVM на LUKS + LUKS / dm-кеш

Установник Ubuntu використовує конфігурацію LVM on LUKS для повного шифрування диска.

Якщо ви також хочете використовувати dm-кеш / lvmcache для підвищення продуктивності, вам потрібно буде розмістити свій кеш-пул у зашифрованому томі для підтримки безпеки ваших даних.

Кроки є

  • Створіть том LUKS на цільовому блоковому пристрої
  • Розширіть групу гучності за замовчуванням на новий зашифрований том LUKS
  • Створіть метадані кеш-пам'яті та обсяги даних у новому томі LUKS
  • Зв’яжіть їх разом як пул кешу
  • Прив’яжіть цей кеш-пул до кореневого обсягу
  • Переконайтесь, що новий зашифрований том можна встановити під час завантаження, додавши його в /etc/crypttab
  • Переконайтеся, що ваше середовище завантаження підтримує dm-кеш

Сценарій, наведений нижче, надає приклад і додасть зашифрований пул кешу до існуючої кореневої файлової системи. Він був розроблений для систем, які використовували опцію шифрування диска за замовчуванням у програмі установки Ubuntu - тобто; Весь диск розділений та зашифрований, немає спеціальних розділів тощо.

Зауважте, що у цьому сценарії дуже мало валідації або оборонного програмування. Якщо це знищує вашу робочу систему, це ваша відповідальність.

Телефонуйте таким чином:

# 1   2          3           4     5    6
sudo bash lvmcryptocache /dev/sdb 32M 1968M
  1. Потребує корінь для роботи
  2. запустити скрипт у bash
  3. назва сценарію
  4. блоковий пристрій, який ви хочете використовувати (протестується лише на цілому диску)
  5. розмір метаданих
  6. розмір даних кешу

Параметри розміру за замовчуванням у МБ: вам знадобиться співвідношення простору метаданих 1: 1000 до кеш-простору (наприклад, якщо ваш кеш-диск становить 180 ГБ, вам потрібно 180 МБ простору метаданих та 179820 МБ простору даних - можливо, ви захочете заокругнути метадані вгору трохи обережні. Існує нижня межа метаданих 8М.)

Вам буде запропоновано ввести пароль для обсягу кешу - вам буде запропоновано ввести паролі BOTH ваших дисків під час завантаження.

Список літератури


#! / бін / баш
#
# lvmcryptocache
#
# Додайте пул кешу LVM та додайте його до кореневого тома
# Включаючи шифрування LUKS
# Припускає, що ви використовуєте налаштування "все в корені"
# Якщо вас немає, адаптуйте його, якщо вам подобається
#
# Сценарій з ліцензією GPL3 або новішої версії
# © Адріан Вілкінс, травень 2015 року
#
# Передайте ім'я дискового пристрою, який ви використовуєте як кеш
# В ідеалі це повинно бути абсолютно порожнім, тому запускайте
#
# dd, якщо = / dev / zero of = / dev / $ {DISK}
#
# над нею на короткий час, щоб нуклеювати таблицю розділів

CACHE_DISK = 1 долар
META_SIZE = 2 долари
DATA_SIZE = 3 долари

DISK_NAME = $ (базове ім'я $ CACHE_DISK)

CRYPT_VOLUME = крипт $ {DISK_NAME} _
CACHE_PV = / dev / mapper / $ {CRYPT_VOLUME}

# Створіть об'єм LUKS на сирому диску

cryptsetup luksFormat $ CACHE_DISK
cryptsetup luks $ CACHE_DISK $ CRYPT_VOLUME

# Почав спробувати розробити вміст розміру диска, але це складно
# Зайдіть, якщо хочете, у мене не вистачає розширень
#
# DISK_SIZE = $ (fdisk -l | grep "Диск $ {CACHE_DISK}" | awk '{print $ 5}')
# 
# META_SIZE = $ ((DISK_SIZE / 1000))
# META_SIZE = $ ((META_SIZE + 512))
# MOD = $ ((META_SIZE% 512))
# MOD_OFFSET = $ ((512 - MOD))
# META_SIZE = $ ((META_SIZE + 512)) 
# META_SIZE = $ ((META_SIZE + MOD_OFFSET))
# 
# DATA_SIZE = $ ((DISK_SIZE - META_SIZE))
# 

# Створіть новий PV всередині зашифрованого тома

pvcreate $ CACHE_PV
vgextend ubuntu-vg $ CACHE_PV
lvcreate -L $ {META_SIZE} -n cachemeta ubuntu-vg $ CACHE_PV
lvcreate -L $ {DATA_SIZE} -n кеш-даних ubuntu-vg $ CACHE_PV
lvconvert - тип кеш-пулу --poolmetadata ubuntu-vg / cachemeta --cachemode пишеться через ubuntu-vg / cachedata --yes
lvconvert --type кеш --cachepool ubuntu-vg / cachedata ubuntu-vg / root

# Тепер додайте UUID пулу кеш-пам'яті Фізичний привід (/ dev / sdb) в / etc / crypttab
DISK_UUID = $ (ls -al / dev / disk / by-uuid / | grep $ DISK_NAME | awk '{print $ 9}')
echo "$ {CRYPT_VOLUME} UUID = $ {DISK_UUID} жодних луксів, відкинути" >> / тощо / crypttab

apt-get install - це інструменти з тонким забезпеченням

HOOK = $ (темпфіл)
# Додати сценарій гачка в initramfs, щоб додати потрібні інструменти та модулі

echo "#! / bin / sh"> $ HOOK
echo "PREREQ =" lvm2 "" >> $ HOOK
echo "prereqs ()" >> $ HOOK
echo "{" >> $ HOOK
echo "echo \" $ PREREQ \ "" >> $ HOOK
echo "}" >> $ HOOK
echo "case $ 1 in" >> $ HOOK
echo "prereqs)" >> $ HOOK
echo "prereqs" >> $ HOOK
echo "вихід 0" >> $ HOOK
відлуння ";;" >> $ ГОК
echo "esac" >> $ HOOK
echo "якщо [! -x / usr / sbin / cache_check]; тоді" >> $ HOOK
echo "вихід 0" >> $ HOOK
echo "fi" >> $ HOOK
echo ". / usr / share / initramfs-tools / hock-функции" >> $ HOOK
echo "copy_exec / usr / sbin / cache_check" >> $ HOOK
echo "manual_add_modules dm_cache dm_cache_mq dm_persistent_data dm_bufio" >> $ HOOK

cp $ HOOK / etc / initramfs-tools / hooks / lvmcache
chmod + x / etc / initramfs-tools / hooks / lvmcache

echo "dm_cache" >> / etc / initramfs-tools / module
echo "dm_cache_mq" >> / etc / initramfs-tools / module
echo "dm_persistent_data" >> / etc / initramfs-tools / module
echo "dm_bufio" >> / etc / initramfs-tools / module

# Оновити initramfs

update-initramfs -u

echo Тепер перезавантажте!

1. Ви пропонуєте очистити кеш-диск з нулем, але замість цього слід надійно стерти його з випадковими даними, якщо ви хочете розмістити на ньому зашифровані ЛУКСИ. 2. У налаштуваннях у вас є 2 розділи LUKS, тому навіть якщо ви використовуєте одну і ту ж парольну фразу, вам доведеться вводити її двічі, правда?
solsTiCe

1. Випадкове стирання диска трохи застаріло на сучасному апаратному забезпеченні - нулів достатньо, щоб вивести диск за межі більшості неакадемічних рівнів і, звичайно, поза комерційними лабораторіями відновлення диска. Якщо об'єм, який ви використовуєте, раніше зберігав конфіденційні дані, це зайве, оскільки всі блоки, записані до нього, будуть зашифровані; через алгоритми вирівнювання зносу ви взагалі не повинні використовувати SSD, на якому були чутливі дані. 2. Так, є два розділи LUKS, як я вже говорив у тексті, вам буде запропоновано обидві парольні фрази під час завантаження.
Адріан

випадкове витирання НЕ для надійного видалення даних на SSD, а для уникнення скрутани і неможливості відрізнити зашифровані дані від порожніх, наприклад 00000000zerazer000000000000. Тут ви можете побачити зашифровані дані в середині. це послабить ваше шифрування замість того, щоб воно було приховане посеред випадкового супу.
solsTiCe

Я закінчився цим маршрутом після того, як застряг у налаштуванні bcache. Схоже , що це працює досить добре: | cache_utilization_pct | 79.096846147 |. Однак topя бачу 20-50% постійних держав. Це може бути побічним ефектом буферизації?
Жан Йордаан

Я не можу насправді стверджувати, що знаю - але я здогадуюсь, що це може бути побічним ефектом від оптимізацій, пов'язаних з мінімізацією записів на SSD. Стаття про IOWait тут: thattommyhall.com/2011/02/18/iops-linux-iostat
Адріан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.