Неизменные жесткие ссылки на ext3/4?

Хорошо, в конце мне удалось решить это использование следующего vcl файла. Обратите внимание, что я добавил несколько дополнительных битов для разрешения изящества истечения кэша, когда бэкенд умер.

Кажется, что мой основной отказ использовал unset req.http.Set-Cookie; когда я должен был использовать unset obj.http.Set-Cookie; в vcl_fetch раздел. (obj в vcl_fetch и req в разделе vcl_recv).

director rails_director round-robin {
  { 
    .backend = { 
      .host = "xxx.xxx.xxx.xxx"; 
      .port = "http";
      .probe = {
        .url = "/lbcheck/lbuptest";
        .timeout = 0.3 s;
        .window = 8;
        .threshold = 3;
      }
    } 
  }
}

sub vcl_recv {

  if (req.backend.healthy) {
    set req.grace = 30s;
  } else {
    set req.grace = 1h;
  }

  if (req.url ~ "^/login") {
    pipe;
  }

  if (req.url ~ "^/sessions") {
    pipe;
  }

  if (req.url ~ "\.(css|js|jpg|jpeg|gif|ico|png)\??\d*$") {
    unset req.http.cookie;
    lookup;
  } else {
    if (req.http.cookie ~ "user_credentials") {
      pipe;
    } else {
      unset req.http.cookie;
    }
  }

  # Only cache GET and HEAD requests
  if (req.request != "GET" && req.request != "HEAD") {
    pipe;
  }

}

sub vcl_fetch {

  set obj.grace = 1h;

  if (req.url ~ "^/login") {
    pass;
  }

  if (req.url ~ "^/sessions") {
    pass;
  }

  if (req.http.cookie ~ "user_credentials") {
    pass;
  } else {
    unset obj.http.Set-Cookie;
  }

  # cache CSS and JS files
  if (req.url ~ "\.(css|js|jpg|jpeg|gif|ico|png)\??\d*$") {
    unset obj.http.Set-Cookie;
  } 

  if (obj.status >=400 && obj.status <500) {
    error 404 "File not found";
  }

  if (obj.status >=500 && obj.status <600) {
    error 503 "File is Temporarily Unavailable";
  }

}

sub vcl_deliver {
  if (obj.hits > 0) {
          set resp.http.X-Cache = "HIT";
  } else {
          set resp.http.X-Cache = "MISS";
  }
}
3
задан 28 March 2010 в 15:36
3 ответа

Было предложение добавить новый системный вызов, reflink(), который сделал бы точно, что Вы хотите. До сих пор это не было принято; однако, ocfs2 (начиная с 2.6.32), уже имеет его как ioctl [1]()[2].

Несколько статей с мая 2009 на предмете:

Более старый вариант идеи назвали Ссылками COW.

2
ответ дан 3 December 2019 в 06:21
  • 1
    А-ч, который выглядит многообещающим! –  Dale Forester 30 March 2010 в 16:10

Мне поиском снимка WAFL-стиля кажется. Это точно не использует "неизменную жесткую ссылку", семантическую, но очень близко к нему.

1
ответ дан 3 December 2019 в 06:21

http://blog.interlinked.org/tutorials/rsync_time_machine.html http://rsnapshot.org/

оба будут работать с ext3/ext4.

Они не точно снимки, но, создадут новый каталог с hardlinks к предшествующему поколению. Удаление предшествующего поколения оставит новый каталог с корректными файлами.

1
ответ дан 3 December 2019 в 06:21

Теги

Похожие вопросы